Robertson Hall is about some computer geeks in college. Read chapters 1-6 in this thread.
There may be some heavy geekery in some of the upcoming chapters (this one’s a start), but there will be some fun non-geeky outings too.
Chapter 7: Project
Monday morning I awoke to Keith returning from the shower. “Morning Kei,” I said as I stretched and sat upright.
“Hey you,” he said, putting his things down. “Have you been feeling okay?” He came and sat on the bed, so I scooted over to give him room.
“You kinda kept to yourself this weekend.”
“Busy with ValOS for the robotics team. Did I tell you, I got it accepted as a G-job for Micro-controllers and OS Engineering?”
“G-job?” Apparently he didn’t know the term.
“Government job. Where you can do personal projects at work. I do this for the robotics team, then get credit in both classes.”
“Schweet…” he said, imitating Cartman’s voice and giving me a double-thumbs up. “Breakfast?”
“Let me dilate and shower first.”
Given I was back to class schedule, and not distracted by being pissed off, I made it through the day without setting the overflow bit on my diapers. After classes, I found Keith in the room with some spare laptops out– he had a couple of junkers that were too archaic to be useful, but they had ethernet, so he’d occasionally get them out for generating some kind of network performance analysis.
“Hey Li, can I borrow Val?”
“Sure. What’re you testing?” He replied in networking lingo; I caught ‘ethernet’, ‘ip’, ‘tunneling’, ‘asynchronous’, `heterogenous’ and a couple other buzzwords. He proffered me a network cable, so I plugged it in and created a user account for him. “Do you need to install software?”
“Yes. Do you have a C compiler on there? I don’t have a Mac binary.”
“Yep,” I replied as I enabled root privs for his account.
Jane and Dale showed up first for dinner. “Hi Keith. Hey Lisa. Did you finish that project you were working on this weekend?” asked Dale.
“No, but I got a lot done. Check this out…” and I launched into an explanation of ValOS. “I’m hoping to convince the robotics team to use it as a platform for the robotic competition this year,” I finished.
“That’s pretty awesome, Li. What do you do for an encore?” he joked.
“A memory manager. And device drivers.”
“Have you heard the objective this year yet?”
I shook my head. “No, but I think we’ll find out at the meeting tonight. Wanna come?”
During dinner, I persuaded Tim to join Dale and me to the robotics team. It was Dale’s first time; Tim had “tried out” as a freshman but didn’t have enough experience, so he’d eventually bailed out. With his internship experience this past summer, he would probably now be one of the leads. As for me, I’d been on the team the last two years, but I’d only managed to write a few device drivers. I never had time to do more, since I had been working as many hours as I could get in campus food services to save up for surgery. This year would be different.
“Welcome. This year’s specs,” Roger greeted as as we entered, sounding strangely normal. He must have been trying not to scare of the newbies.
I looked at the fuzzy photocopy of the specs. Building advanced robots, check. Printing legible copies of an electronic document, not so much. I scanned down and read the objective: ‘Collect the balls and place them in a hopper.’ “Roger, this is last year’s project.”
He shook his head. “Read on, missy, this isn’t your father’s pick-up balls project,” he said, sounding like dialog from a ‘30s talkie. I was glad to hear this; I enjoyed his quirky, if stupid, way of emulating different movies or shows.
“Gee, Lisa”, Dale chimed in, “I don’t know if you’re allowed on this project, what with all the time you spent getting rid of balls.”
“Whoa!” Tim exclaimed, his way of asserting he’d just heard a charged statement. When he saw me grin at the joke, he broke into his loud laugh.
The specs were indeed different from last year. Or at least they would be. The starter project for the first round was the same as last year, picking up ping-pong balls, with one crucial difference: it was supposed to be automated instead of remote-controlled. Additionally, there was a laundry list of possible enhancements we’d need to make for the second and third round. Things like handling different sizes, shapes, or weights, or maybe having to sort them on some criteria.
The three of us read, discussed, and brainstormed for about 15 minutes before the faculty advisor, ‘Jimbo’, arrived in his typical late form.
“Jimbo, have you seen these specs?” someone else asked before we managed to.
“Yes I have. How do you all feel about them?”
There was a lot of hemming and hawing along the two lines of ‘how do we build something when the spec isn’t clear?’ and ‘how do we automate eyesight?’
“The Challenge this year wanted to simulate industry, and in industry you’ll be expected to make product enhancements in a timely manner,” Jimbo explained. “Industry robots have also been getting more advanced, and the committee thought it was time to step up the objective.”
“Yes, but all this?” someone objected.
“No, not all that. I sent in some questions of my own and got an e-mail this afternoon. The clarifications are as follows:” He pulled out a sheet of paper and read. “Handling: you will in the future need to implement one handling other sizes, shapes, or weights– not all three. Sorting: There will not be more than two sizes, shapes, or weights at any time, and differences will be ‘reasonably distinctive’. Therefore, you will be sorting on one criteria, with a maximum of two options. Scoring: Scoring will be based on the number of objects the machine correctly picks up and puts in the hopper. If– when– sorting is a required feature in the future, objects incorrectly sorted will incur a penalty.” He looked up and said, “That’s right minus wrong, people”, before looking down and continuing. “Enhancements required for each round of competition will be announced after the prior round’s trials.” He put the paper down. “So, since there are 3 rounds, there will be 2 enhancements.”
“So one will be handling, the other sorting,” I said, to clarify the dodging around the issues the rules had done.
"Dude, it took us all friggin’ last year to build one robot. How are we going to make three? Plus automated control?" someone complained.
“We don’t have to make three. We just have to make one extensible, and we can start with last year’s project.”
“How do we make it extensible when we don’t know what’s required?”
“We know sort of what the future requires.” The discussion went on.
After an hour of debate and brainstorming, we were slowing down. During one interval, I remembered about ValOS. “Oh, hey, I built an operating system for the robot.”
“We don’t need an OS, we need an embedded system.”
“And before an embedded system, we need a plan,” someone else kvetched.
“No, we don’t,” I started. “A stable platform to manage memory, coordinate processes, and modularize the system is always a plus. Look,…” and I went into my spiel.
“Yes, but the robot still crashes when there’s a bug.”
“No it doesn’t!” I explained; hadn’t he heard what I’d been explaining? “Well, not if I do my part right,” I qualified. “Your process crashes, and ValOS restarts it.”
“But the process is in a bad state now.”
“No, it’s in a fresh reset state. Which is better than a crashed state.”
“Then everything’s lost. We need to issue a recalibrate.”
“Yes, on that subsystem,” I argued. “The rest of the systems stay up and retain context. And, since it’s a multiprocessing system, all the processes work independently.” That was a recursive definition, I realized, so I clarified, “So while the motivation process wants to move to a new location, the arm can be in motion too. Without having to write insidious concurrent multi-axis movement code.”
Someone grunted, nodding. He must have written something like that.
I didn’t managed to convert them all, but I was gaining ground and even had a majority when Jimbo finally weighed in on my side. The remaining resistance fell.
We hadn’t decided on a final design for the mechanics, but we had three general plans. We divided the 17 attendees into 3 groups: one with a vacuum lift-arm idea based on last year’s design, one with a claw-and-sensor plan, and one with a scoop and internal hopper– which I was on. Dale was one of 2 other coders, so he got assigned to the vacuum system to even out the teams, even though he liked the other two better. Tim also liked both new designs, distrusting the adaptability of the vacuum system in the future, but was assigned to claw-and-sensor.
We arrived back at the dorms around 22:00. I needed a break, so I borrowed Kei’s Sennheisers and listened to Copland’s Appalachian Spring while dilating.
Before bed, I made one last decision for the day: after going 12 hours on Saturday without dilating, without permanent repercussions, I could cut back on dilation frequency. After release from the hospital I had been aiming for the suggested 7 - 8 sessions per day, 40 minutes each. Since starting classes, it had dropped to 6 times, typically 20 minutes each. But if I could go 12 hours without serious repercussions once, I could get away with one 8 hour interval per day. I’d still have to get in 4 or 5 sessions daily– maybe a little longer per session to compensate– but at least I could sleep through the night.
I deleted the late-night alarm cron job on Valerie, and went to sleep.