Showing posts with label school. Show all posts
Showing posts with label school. Show all posts

Saturday, September 26, 2009

I started college this week

Again.

No, I didn't start grad school (although I'm still thinking about it...). Instead, I started a Mandarin class. A few of us at work who travel to China wanted to be able to communicate at least a little while we're over there, so we signed up for a class from DeAnza College. It's five days a week for an hour during lunch, and it goes until mid-December.

Conclusion so far: I'm really bad at Chinese.

Other conclusion: college students are really young these days.

I studied Spanish for long enough that I'm reasonably fluent now, but it's really hard to start again at square one with a new language. Doubly hard when the language includes a bunch of sounds you've never made with your mouth before. Triply hard when its writing system is completely foreign to you.

Wish me luck.

Friday, December 12, 2008

Things to learn

Yesterday was a day of lasts:
  • I went to my last undergrad class (CS 431, compilers, with Dr. Mercer).
  • I turned in my last undergrad homework (a EE 380 problem set on the z-transform).
  • I turned in my last undergrad lab (a EE 380 lab on elliptic filters).
  • I turned in my last undergrad project (a peephole optimizer for my compilers class).
Next week I'll take my last undergrad final ever, and, with that, I'll be done with college.

I feel like I've just started learning, though. There are lots of things that I'd like to learn but haven't had time to because of school. Well, now's my chance.

Here's a sampling of things that I'd like learn about:
  • Global poverty and public health, and ways to improve things
  • Programming stuff: Cocoa programming in Objective-C, Android development, Haskell, AVR programming, MapReduce
  • China, India, and Africa
  • Spanish. I think I might take a class. I'm getting rusty.
  • Trad climbing
  • Medicine. I'd like to become an EMT or wilderness first responder.
  • Algorithms (especially graph algorithms) and algorithm analysis.
  • Maybe join a search and rescue team. Maybe.
  • Child development
  • Literature. I've learned a lot in college, but I've been too busy to read as much as I'd like. Time to get back to the books.
  • Cooking
  • Psychology
  • Probability, Bayesian statistics, and graphical modeling
  • Economics
That should keep me busy for a while.

Wednesday, November 26, 2008

Look Ma, I'm on TV!

Apparently I'm a TV star these days. My cousin Matthew is in town for Thanksgiving, and he mentioned offhandedly last night that he saw me on TV recently. KBYU filmed lots of footage of the rocket project I worked on, and they interviewed me and a few other team members, but I didn't think they were ever going to produce the segment since we never launched.

It turns out I was wrong. After a little digging, I found the 16 August 2008 edition of BYU Weekly, which featured the rocket. You can watch it below.



(The original video is available from BYU Broadcasting.)

Friday, November 14, 2008

Lectures

As a college student, I've been to my fair share of lectures—well over 2000 of them since I started, I reckon. Most have been regular class lectures, of course, but every once in a while I go to others, which often end up being the best ones. One of the things that I really like about attending a large university is that there are lots of opportunities to learn about things outside of my usual field of study.

This semester I've been to some interesting lectures:
  • Sustainable education in Cambodia, presented by an American woman who adopted a child from Cambodia, and ended up establishing a school there. She discussed how just giving money isn't enough, and can sometimes even be harmful; to make lasting progress, local people must support themselves.
  • Privacy implications of new technologies, and methods for making ethical decisions in areas where no rules have been established yet.
  • Peru at the Global Stage, presented by the Peruvian ambassador to the U.S. He talked about the challenges and opportunities that Peru faces as they become more prominent in the world.
  • History of Uganda over the past 150 years, presented by the Ugandan ambassador to the U.S. He detailed Uganda's transition from tribes to a British protectorate to an independent country.
  • Why You Should Go to Graduate School, given by my friend Chris Monson. Chris got his Ph.D in computer science a couple of years ago and now works for Google.
  • Social Robots and Human Social Development. This one was a really interesting look at how robots can be used in diagnosing and treating autism.
I also watched the Utah Supreme court hear a real case at the law school last week. That was fascinating.

If you're at BYU, I'd definitely encourage going to lectures, talks, and discussions on things that you're interested in. Part of the point of a university education is to gain a broad knowledge of the world, and BYU provides some amazing opportunities to do that. The university forums are almost universally excellent (with speakers including the Chief Justice of the U.S. Supreme Court and the Senate Majority Leader in the past year), and the devotionals are also usually great (although the quality there is more heterogeneous).

So where do you find about about interesting lectures? Since I'm interested politics and technology, I like the Kennedy Center Lecture Series and the Computer Science Colloquia. However, there are tons of other lectures all the time—just watch the walls of the buildings you walk through for posters. And if you hear about a lecture I might like, let me know. If I go to a few more extra ones, maybe I'll break 3000 before I graduate. :)

Saturday, October 11, 2008

Canyoneering in Baptist Draw (again)

This Thursday and Friday I went on a field trip with my canyoneering class. I took the same class last year, and this field trip was really similar to last year's field trip. We went to the San Rafael Swell in eastern Utah. We did Ding and Dang canyons on Thursday, which are easy, non-technical slots. Yesterday we did Baptist Draw and Upper Chute.

Baptist Draw was a lot of fun. There are a lot of cool people in our class, and the canyon was in great condition. The weather was a little cool while waiting at the "big" (80-foot) rappel, but it was perfect for most of the time. There was just one puddle in Baptist Draw, but the hike became a mudfest once we got into Upper Chute. There was one wade up to my chest, and most of the rest were thigh-deep or less. The recent water didn't smell too bad, and it had mixed with the fine dirt to make creamy, smooth, chocolatey mud. It was a lot of fun!

Here are some pictures and a video. You can see more in the full gallery.

Mudstone formation near our campsite

Campsite near Goblin Valley

Playing Sardines in the dark at Goblin Valley

Hiking toward Teepee Rock to get to the canyon the next morning

Kyle hanging out above the first obstacle in Baptist Draw (a little pothole), waiting for the traffic jam to subside

Camille at the end of Baptist Draw, rappelling 80 feet down to the floor of Upper Chute Canyon

Tristan helping Janni get set up for the rappel

All suited up, ready to enter the mudfest

It was a really muddy mudfest. :)

Adam swimming through some pristine water

Video of us playing in the mud

Kenna drinking some chocolate milk





I love these narrows!

Straight, skinny slot right before our exit. (As a side note, this looks strangely like the rock equivalent of a snow formation that I saw while climbing Lone Peak last winter.)

Hiking back up to the canyon rim

Back in Provo, putting away our mountain of gear

Saturday, August 30, 2008

Back from Europe, back to school

I got back from Europe on Tuesday, and I've been at home in Portland this week. It's been nice to relax. Traveling is hard work, it turns out, and being home has been great. I'll be posting blog entries about Europe over the next few weeks. 

John and I generated massive amounts of pictures and video on our trip:
  • 31 videos, totaling over 1 GB
  • Over 1500 pictures, which add up to more than 2 GB
No one in their right mind would want to look through all of that, so I've been going through all of the pictures this week, trying to choose the ones that are interesting. You can see the results of my sifting in my Europe 2008 photos when you get a minute.

I'm flying back to Provo today, and school starts on Tuesday. I'm excited to begin my last semester. It's funny: being on vacation for three weeks has made me really look forward to school. I'm excited to go back and be with friends, learn, and enjoy Utah's beautiful outdoors.

Thursday, July 17, 2008

Rocket science

I have a little secret: I'm a rocket scientist.

OK, so maybe that's stretching the truth a little bit. I don't do ballistics calculations in my sleep, and I barely know what a Rayleigh number is, but I have worked on the 20-foot-tall BYU ARES rocket for the last three years. The rocket has a custom-built composite airframe with aluminum cross braces. It is powered by a hybrid liquid-solid rocket motor, using a ceramic nozzle manufactured by ATK—the same company that makes some of the rockets for the space shuttle.

So, how does someone like me go from being an average Joe to a contributor to a big huge rocket? My roommate initially roped me into the whole situation. He worked on the avionics system (all of the computers and electronics in the rocket), and one day while we were hiking way up in the mountains, he convinced me to join the project. I've been working on it ever since—until last month, that is.

Last month was our launch date. I flew out from California to Utah and drove out into the barren desert near Green River, where there was a university rocket competition. The goal was to get as close as possible to 10,000 feet above ground level. At least, that's what the stated goal was. Our real goal was just to launch the thing. We had all spent lots of time (hundreds of hours for me) on the project, and we really wanted to see it fly.

Since I had to fly in, I showed up a little bit late. When I got there, everyone was really glad to see me, because there were some problems with the avionics system. Matt (the other avionics guy who was there) and I got things straightened out, and we did a dry run test of the launch. Things went almost flawlessly. It was too late in the day to attempt a launch at that point, so we were going to go first thing in the morning.

The next day we showed up, fastened down the final screws, and rounded up a big crew to lift the rocket from its support cart and slide it onto the launch rail. The plan was to slide it onto the rail, raise the rail so that the rocket was vertical, fill it with fuel, and then launch the rocket.

Reality turned out to be a little bit different. As we were sliding it onto the rail, someone smelled something funny. Then someone heard a hissing sound. We stopped sliding the rocket onto the rail, and Matt frantically unfastened one of the aluminum skins that covered the avionics system in the rocket. When he got it off, he found that the batteries were self-destructing, spraying electrolyte all over and getting really hot. He disconnected them (which wasn't an easy task, since the wires were all melting together at that point), and so the situation was under control.

After three years of work and 1000's of man-hours of work, we weren't too excited about the now very real possibility that we would have to scrub the launch. It was crunch time for me to determine if we could repair the system in a few hours.

The power supply system was almost completely destroyed, melted into one big blob of plastic and metal. A fuse was blown. A power connector on the data communication radio was melted into its socket. Things smelled funny. The batteries were completely destroyed. We were out in the middle of the desert without access to an electronics store. It wasn't looking good.

I determined the absolute minimum system that we would need to launch safely: a way to open the oxidizer (liquid fuel) system valve and a way to actuate the igniters.

We tried to find batteries to borrow from other teams. We soldered a new power connection onto the radio. We bypassed a lot of the power system. After all of that, though, we discovered that our main control circuit board was fried. There was no way to control anything without that.

As we considered our options, two ideas emerged: either "hot wire" the system directly to a couple of car batteries (borrowed from our vehicles) and launch the rocket essentially as missile with no way to deploy the parachute, or scrub the launch. We talked to our faculty adviser and debated for several minutes. Many of us were graduating, and this would be our last chance to see a launch. Our faculty adviser was moving on to another project, so things were losing steam. The arguments for just lighting the fuse and running were pretty persuasive. In the end, though, our adviser decided to not launch. That was the end of the road. We packed up and went home. We had seen several other schools launch their rockets, but our own launch just barely slipped through our collective fingers.

I feel really bad about the situation, because it was my system that failed. It failed, and I feel a bit like I failed. If my system had worked, all of the time that everyone spent on the project would have been culminated in a launch. It didn't work, though, so now there's a beautiful blue rocket sitting in a lab somewhere on BYU campus, waiting to hopefully fly another day.

I'm still not sure what happened. Obviously something shorted out the batteries, but what? And why? Why did our test the day before go almost perfectly, and then why did the system short when we were loading the rocket onto the rail? I'm going to do a postmortem in the fall when I get back to school, but we may never know.

The project may be "off" right now, but I'm hopeful that the big blue rocket will fly one day. Even if it doesn't, I've enjoyed working on it, and I've learned a lot from the project.

More pictures:

Friday, April 18, 2008

News coverage of our senior project

KSL, the local TV station, wrote up an article about our senior project last week. They also did a TV segment on it, which you can watch here:



(If the embedded video player doesn't work for you, try the watching the video on KSL's page.)

Monday, April 14, 2008

Robot obedience training

Over the weekend, Nick (one of my my senior project teammates) came in and worked on our robot for a few hours. Here are the results:



If you're interested in the technical details of how our robot works, take a look at our team web site.

Friday, April 11, 2008

My disobedient robot

My senior project this semester has been to build an autonomous robot racer with a team of four other people. Translated into English, that means that we take a remote control toy monster truck, stick a computer and camera on it, and make it drive around all by itself. It's been a lot of fun—and a lot of work. We had our final competition yesterday and fared horribly.

The goal of the project was to get our robot to use computer vision to drive a race course all by itself. The course was a bunch of orange and green pool noodles (we call them "pylons" to sound sophisticated) that were set up vertically and spaced out on the floor. Orange meant that the robot had to pass them on the right and then turn to the left; green meant the opposite. The robot was supposed to use its camera to find a noodle, drive to it, make a turn, and repeat until it had finished the course.

That was the idea, anyway. None of the five teams that competed in the project were completely successful. Our team fared the worst.

There are several components to a system that can autonomously control a racer:
  • A color segmenter that can identify areas in the image that are the specific shade of green or orange that we're looking for.
  • A feature extractor that can take those areas and identify the precise position of the pylon.
  • A vision-guided control system that uses the data from the feature extractor to control the robot's steering and throttle to drive toward pylons.
  • A dead reckoning control system that "drives blind" to control the robot while pylons are out of view.
  • A "mission control" computer program that runs on a desktop computer that communicates wirelessly with the robot. This program doesn't control the robot; it's just used to monitor its state, fine-tune parameters, and send an emergency stop command if the robot gets out of control.
Our robot could (mostly) successfully drive toward pylons, but it had a really hard time correctly executing turns. We got it working a week ago on a simple two-pylon course, but that's about the most advanced thing it could do. It was pretty disobedient, and our competition yesterday was an embarrassment.

What went wrong? A lot of things. Most of it boils down to poor planning and a rushed schedule.
  • We optimized prematurely. We tried to implement our feature extractor in hardware (VHDL) because we wanted it to run fast. Developing hardware is a lot trickier than developing software, and we spent three weeks trying to get it to work. We finally decided to cut our losses, and I wrote the object extractor in C and had it working in two hours. In hindsight, I should have written it in C to begin with, and only converted it to hardware if it was too slow. As it turns out, the software, running at 100MHz, was plenty fast enough to process images at the camera's full 35 fps frame rate.
  • We added too much complexity too quickly. When we finally got our feature extractor working a couple of weeks ago, we tried to throw everything else into the pot all at once. When you add a lot of complexity all at the same time, it's hard to tell where to look when something doesn't work. Instead, we should have tested each feature independently. When we were confident that a feature was working by itself, we could add it to the rest of the system and make sure that it works when integrated. That way it's a lot easier to isolate problems.
  • We didn't have a consistent schedule. With a semester-long project like this, it's easy to put it off and work on more pressing assignments for other classes. That hurt us in the long run, though. There were also several times when one person was assigned to complete an important part of the project by a certain day, and they didn't have it done. That then delayed everyone else who couldn't make progress until that part was in place.
  • It was hard to work in parallel. We had only a single development computer, so only one or two people could work on the project at once. That wasn't an issue for most of the semester, but when it was crunch time, it would have been really helpful to have two or three workstations.
  • Attitude. Most school project are very well-defined and self-contained. This project was different: it was very open ended, both in approach and schedule. This type of project requires more discipline and more creativity than typical school projects. It also requires a different attitude. When something doesn't work—and it seems that nothing works on the first try—you can either give up and say "I tried", or you can buckle down, try a different approach, do research, talk to others, and make things happen, even though the problem is hard. Some members of our team were better than others at taking the reins and making things happen. That's not mean to bash my team members, though; I feel like everyone contributed to meaningfully to the project.
I feel like with another day or two of work, we could have our racer driving courses pretty well. It's a shame that we didn't finish in time. However, I think that everyone on our team learned a lot, and the project was definitely worth doing. We accomplished in the last three weeks what took the other teams most of a semester to accomplish. I think that we have about 90% of the functionality of most other teams, but that last 10% is key to having a working robot.

I'm really happy with the work that everyone on our team did. I'm also really happy that I'll be able to get a little sleep again. :)