Thursday, September 19, 2013

On Learning

Summer term is over.  What was supposed to be a peaceful break between terms has is also very nearly over.  Of course I'm using the term "break" here pretty loosely here to mean working only 40 hours/week.   Oh well, I will take what I can get. 

The class I took this summer (Advanced Computer Architecture) was actually quite easy, by nature of its format: it consisted of reading technical articles, then talking about them.  Pretty hard to mess that up.  However, It was also made to be far less interesting than it cold have been.  Had the lectures been forums to discuss the materials we had just read, it could have been very interesting.  Instead, the classes were little more than the professor summarizing what we had read the day before and going into no greater detail than the papers already had.  This meant that many students (myself included, at times) tuned out during a lot of the lectures, and attendance as a result was abysmal.  This was really quite a shame because the material itself was fascinating, but the repetition inherent in the lectures meant that I was bored to the point of apathy by many of the 2.5 hour long monotonic recitation sessions.

With that out of the way, and with the beginning of the end of school squarely in my sights, it's reflection time.  Specifically, I have been thinking a lot about learning and education.  My relationship with learning has changed in the past three years, and I am still coming to terms with how it is now different.

There is no way not to sound arrogant here but isn't my goal. With that said, prior to going into engineering, school was never difficult for me.  Even going to a "good" school, the quantity of material covered was so small and the pace was so slow that learning it all was effortless.   In high school, I was not challenged by any of my classes.  Just showing up and paying attention was enough to graduate near the top of my class, and I did not study at home. The teachers covered the same topics so many times by the point we were tested on them that studying was not necessary.

My bachelors degree was marginally more challenging than high school, yet still easy enough for me to graduate with honors without trying too hard.  There main difference between high school and college was just that there was more material to cover in college; the skills to be successful are identical to those in high school: reading comprehension and the ability to write an essay.   In other words, skills I learned middle school language arts.  In my experience, if you can read a few articles/webpages/etc, pull out a some key sentences, and write a basic 5-paragraph intro-point1-point2-point3-summary persuasive paper, you can get through basically any humanities class.  Note that essay writing entails being familiar with English grammar, something that seems more rare every passing year... but that's another story.

The main point here is that college was only harder than high school for me because of quantity, not because the material was more difficult to comprehend:  It's still the same formula: extract, synthesize, express.  The subject matter changed, as did the quantity of work, but the process I followed to be successful did not. 

Everything changed in engineering school.  It's hard for me to say if this was because I was engineering classes specifically, or simply because I was not in humanities classes, but the formula I had trusted me entire academic life didn't work anymore.  I found myself awkwardly attempting to "study" for the first time in my life, and it didn't just take one pass over the material for me to understand it, sometimes it felt like hundreds.  I couldn't manage my time at all because I never knew when I would hit the next roadblock, and getting past these roadblocks took anywhere between 2 minutes and 23 hours. Everything was new to me.  I was walking into tests with a firm grasp on only a fraction of the material for the first time in my life, and it was terrifying.  Each time I completed a class, it felt like it would be the last time I could pull it off-- that now I was really in the deep end. 

It took me years to figure out what was going on-- why engineering school was so hard for me-- but now I think I understand.  I mentioned earlier that prior to engineering, the method for success never changed, only the subject matter did.  However in engineering, the main thing you should take away is new methods, and thus the skill that makes you successful is the ability to learn new methods.  Programming, as an example, is a process/skill/method that follows general guidelines much like essay writing, and just as a skilled essayist can write on a variety of topics, a programmer can create programs using a variety of languages, structures, and methodologies.  Debugging is another example: someone skilled at debugging in general can apply the skills to digital electronics, analog circuits, software, etc.  Maybe it's just me, but learning "how" is just a lot more difficult than learning "what".  

All my life people have been telling me that education is important, and all my life I had enjoyed learning (or doing what I thought was learning) because it was easy and people admired me for being successful at it.  But I would now argue that up to only recently, I was only really amassing information, I wasn't really learning.  I was gathering information, then doing things I already knew how to do with it: writing papers, giving speeches, taking tests.  I was getting book-smart. I was gaining knowledge, sure, but I wasn't learning how to do anything I didn't already know how to do.  

Now that I recognize what was happening, and I am getting more comfortable with learning how to learn new methods, skills, and processes, I don't want to stop.  I jump at the opportunity to pick up new skills not just because it will make me a more competitive employee, but because I actually enjoy the process of figuring out how to do something truly new to me.  I am picking my new projects and endeavors intentionally to include the necessity to do things I don't know how to, specifically so that I can learn something new.

Unfortunately, this is happening with only one term of school left.  As terrifying as going through engineering school has been, I am equally terrified now for it to end because I know that my rate of learning is going to fall drastically or stop completely once I am out of school and working 9-5 with a family at home.  I know that going forward, I will likely never again have the amount of time to dedicate to learning as I have in the past three years.  There are seminars and talks happening all over town.  There are resources like Coursera that are posting new content daily.  There are so many opportunities to learn now, and I am trying to come to terms with the fact that not only can I not learn it all, but with the amount I will have on my plate going forward, I may be lucky to learn any of it.  

O cruel fate, to turn fear into ambition, and bestow me the ability to learn but not the time required to do so.

Sunday, August 4, 2013

Spring Term Update

In an ongoing effort to bring everything back up to date, here’s an abridged summary of Spring 2013.

I knew it would be a crazy term far before it even began.  I am pretty sure that a first baby in the middle of ANY term would make things interesting.  But don’t think for a moment that things were only hectic after Amelia arrived.  I now know that the obstacle course that ends in parenthood (or perhaps begins with it) is a maze of constant decisions, multiple doctor appointments each week, absurd amounts of planning (for something which is largely unpredictable), more decisions, emotions, a few more decisions, a hearty amount of unfounded fears, and did I mention that there are decisions to be made every waking minute?  If it sounds like this is still a sore point it is because hands down, having to make decisions (especially between two unfavorable options, as is so often the case) is my least favorite aspect of adulthood.

Academically, I knew what I was getting myself into, which was both good and bad.  The good news was that there would be few surprises: I knew both of my professors and I knew that both classes would be useful, interesting, and fun.  The bad news was that the last term that I took courses from both Faust and Kravitz simultaneously the workload was incredibly heavy.

Amelia was born on April 18th, which I think was during week 3.  School hadn’t really reached full speed at that point, so most of what I remember from that period was a flurry of pre-delivery preparations (read: decisions) as well as an odd feeling of impending dadhood.  Because Amelia was breach, there was no choice but to perform a C-section, so in one of the strangest phone calls of our lives, Beth and I “scheduled” a baby for Thursday, April 18th.  I can’t tell the entire delivery story here, but suffice it to say the entire experience was completely unreal.  After hours of waiting pre-surgery, Amelia was out within about 5 or 10 minutes. The next 5(?) days in the hospital were also surreal, which was very likely due to the dizzying lack of restful sleep that comes with adjusting to a wake-up-every-two-hours schedule combined with the shock of a completely life-altering change.

Then I had to go back to school.  The way everything worked out, I miraculously missed almost no content in my classes, and though my professors were more than willing to offer accommodations, I don’t think I ended up needing any.

Before I knew it, finals were upon me.  My project for SystemVerilog was among the most insane projects I’ve ever done, and I am still shocked that we even pulled it off.  There were two groups of three and we decided to work together on one massive final project—we were going to synthesize a working Nintendo GameBoy, all inside an FPGA.  It was a large project, but the fact that someone had already written a working adaptation in Verilog (called FPGABoy), our task focused more around translation and verification.  My group was responsible for primarily the CPU of the system.  After weeks of struggling to even get the FPGABoy project to even open and run, we started to have doubts about the project.  The other group had run into similar issues, and by the time my group was really in the thick of it, they had dropped the idea of working with the FPGABoy codebase entirely.

We struggled and struggled, and after weeks of work we had the project somewhat running, and almost able to get the GameBoy to run in simulation—and that was after many extremely serious bugs were found and had been fixed.  We so doubted the functionality of FPGABoy after seeing the kind of errors that were present in the code that we did some research, and found (on the FPGABoy page) a message stating that the project was non-functional (which was printed in bold text).  A pretty major oversight on our part, and at that point we quickly decided to abandon the idea of getting the system working and focus only on the CPU itself, which was still a very large task.

Though FPGABoy didn’t work, the CPU used in it had been formally verified, and had actually been manufactured using the code we had access to, so we knew it had to work.  However, the project was tens of thousands of lines of code, and to make matters worse, it had been machine-translated from VHDL to Verilog—so while it was functionally identical, it was—simply put—not human readable.  Nearly every operation was on a single bit, and the code was just generally a complete clusterfuck.  Despite (or perhaps because of) the weeks of work we had poured into understanding this project, we knew that regardless of how long we continued to work on it, we could not finish it.

The turning point came less than 24 hours before the project was due, when the three of us—broken and beaten—looked at each other and decided we needed a change of plans. We had nothing to show for the 100+ hours we had dumped into getting the project working.   We started a new final project completely from scratch and didn’t look back.  We worked furiously through most of the night, hopped up on soda and panic, stopping only to eat shitty McDonalds food so we had sustenance to function.  It’s all still a blur.  The next day, we somehow had a project on our hands that rivaled the quality of most others in the class, yet was completed in literally one huge hack session that started less than a day prior.

I still don’t know how it all happened, but somehow I survived.  I built a (sort of) functional Skittles-sorting machine for my other class, but I actually still have plans to work on it, so I will have to wait until later to post anything about that.

Saturday, June 22, 2013

Winter Recap

Wow, it’s intimidating putting the first post after 6 months of radio silence, but it’s not like I don’t have good excuses or anything.  To (begin to) get everything here back up to date, here’s what’s happened Winter term.

Maybe I’ve just been battle-hardened by the insanity that was Spring 2013, but looking back I think Winter term was actually somewhat uneventful.

I worked a one-month internship, back with the same group I worked for last summer.  It was just before Winter term began-- through most of December-- but it gave me a credit towards Winter term so that I only had to take 2 core classes and no additional seminar.  The internship itself was great—Beth and I got a nice influx of money right when we needed it, there were tons of paid holidays during the month, and I pretty much had the Intel campus to myself.   It was like a ghost town, but I had some really clearly defined projects to work on, and I think I did pretty well.  

Academically, it was a mixed bag.  I’ll cover the low point first:

My professor from Post Silicon validation.
Post-silicon validation ended up being an enraging and nightmarish waste of time and money.  It was taught by a professor whom I had heard decent reviews about, but ended up being unorganized, unclear, and impossible to understand.  Cheating was rampant in the course and though he was aware of it, he did nothing to control or report it.   There was no syllabus for the course whatsoever, which I am almost certain is against PSU policy.  Deciphering his project assignments was simply impossible, and he actually forced me to repeat one of them because I did what was printed on the assignment and not “what he meant”.  His idea of homework (which was meant to prepare us for the tests and projects) was to say “make up some problems and then solve them, that is your homework”.   A lazy, unfair, incomprehensible, disorganized mess of a professor who actually beat out the previous worst experience I had had at PSU, and ruined post-silicon validation for me.  I brought up many of these issues with the department chair, who was upset to hear them yet powerless against the rule of tenure. To make matters worse, this class marred my otherwise perfect transcript.  So yes, I guess I am still upset.

Computer Architecture II, however, balanced things out.  The computer architecture classes are probably the most useful and enjoyable classes I have taken so far at PSU.  A large amount of surprisingly difficult and lengthy work and projects, but I think that every minute/hour/13-hour stretch/entire weekend that I dumped into them couldn’t have been better spent.  I got so much out of those classes, and I only wish that other professors (ahem…) could match their quality.   A nice added bonus was winning a prize for (third) best performing project at the end of the term, narrowly beating out some extremely brilliant engineers.

Another high point to the term was being a tutor at PSU.  The money was hardly noticeable, but I really enjoyed being more involved on campus and talking to students who were just getting started in their education.  I feel like I have a lot of information to offer—especially to postbac students, for whom the path from start to finish can be extremely confusing.  I enjoyed it much more than I anticipated I would, and I look forward to doing it again in the future.

I’ll have to pick up with Spring term in the next post, because there is a lot of ground to cover there…

Tuesday, January 8, 2013

No social worker can stop me!


     This seemed a bit too long for Facebook, so thought it should go here:

     None of my classes this term are in the Engineering Buildings, so basically that means that I have no idea where the hell anything is anymore.  One of the buildings I have a class in I have never even heard of.  This might not be much of a big deal to a normal person, but I am somewhat of a creature of habit, so I am less than thrilled at the prospect of re-learning where all the bathrooms, microwaves, garbage cans, etc are located.  However, my search for a place to warm up my lunch just resulted in this fantastic dialogue:
Me: Hi, I have class in this building and I'm wondering if there is a microwave I can use to warm up my lunch first? 
Her:  Well, we have one on this floor but it's only for employees. Let me think... 
Me:  It's fine, really.  I know where one is that isn't too far from here. 
Her:  Oh wait, hold on-- Go up to the sixth floor.  It's the Office of Social Work, and they have microwaves in their kitchen.   I'm sure you can just walk in and use one-- I mean, they're social workers; they aren't going to do anything to stop you.  
[emphasis added for hilarity]
     So not only did I learn about a new microwave location, I learned that social workers are apparently pushovers and reaffirmed my belief that simply acting like you belong is enough to get away with practically anything.  And furthermore, it's EXTREMELY quiet up there and they have some VERY comfortable couches, so I think I may have just found my new nap location...

Tuesday, January 1, 2013

Fall Term Recap

It's been about four months since my last post.  I would have liked to stay more active here, but that simply wasn’t possible.  Grad school… I know I was warned, but the amount of work required is just absolutely fucking nuts.  Then there’s Intel, who contacted me out of the blue on Monday of finals week, wanting to know how soon I could come in and work over winter break.  Then, while working, the holidays came.  Oh, and we have a baby on the way.  So it wouldn’t be wrong to say that free time has been scarce.  However, I want to get caught up on a few things before the next term starts and I disappear back into the void.

  Masters Program – First Term

  Many people had told me that a Masters Degree is a lot of work, but I don’t feel like a single person came remotely close to conveying the sheer amount and difficulty of work involved.  Saying that a Masters in Engineering is a lot of work is kind of like saying Bill Gates makes a lot of money.  Sure that’s true, but it’s a pretty underwhelming way of saying that taking a piss costs him over $8,000 dollars.  Maybe the people who told me that didn’t want to discourage me, or maybe they didn’t go to engineering school.  Maybe I took particularly difficult classes or maybe they were poorly planned; all I know is by about the 3rd week I was spending between 80 and 90 hours per week on school.  A normal day involved being to school by 7:30am, working all day (except for a 2-hour lecture) and leaving around 8:00pm.  Weekends were the same but without the lectures.
  I felt like I was barely hanging on the entire term. In one class (SoC design) I didn’t get a single grade until week 9 (of 10) so basically the entire term was a guessing game to try and figure out if I even had a chance, knowing full well that if I fucked something up it was too late to chance it.  The other class (Computer Architecture) was simply a grueling, crushing, consistently difficult struggle to seize any spare point I could.  In the end though, I somehow pulled a 4.0, thanks in no small part to consistently good partners.  And we built a pretty cool robot.


  And truth be told, the term wasn’t without a few highlights.  The robot above was awarded first place in my SoC class, and in my other class (Computer Architecture), the professor contacted us after the term to congratulate us on the quality of our project and ask our permission to use our code in future classes.  And I have to admit that as much as I wasn’t looking forward to them, the many late-night hack sessions with my group that were necessary to complete our final project were actually quite fun.

  Internship 2: Intern Harder

  During finals week, I received a sparse email out of nowhere from my old team lead at Intel.  He said that everything had already been cleared past HR, that they had enough work to fill up my entire winter break if I wanted, and he asked how soon I could start.  I had very mixed feelings; I was of course excited to be called back, and we really needed the money, but I was also… really, really tired.  I was beaten, bruised, and exhausted from the 10-week marathon of a term preceding that all I wanted to do was rest.  However I should have known that they would make it as easy on me as possible.  My inquiry about what hours/days they needed me to work received the response “Whenever you’re free”, and to my request for a couple days off around the holidays, they responded “That’s fine, we’ll just pay you for the month.”
I’m nearly done now, and the time back has actually been really nice.  My classes couldn’t have possibly been better preparation for my project there, so I actually feel like I know what I’m doing this time around. Furthermore, it’s very quiet and relaxing there this time of year.  Hardly anyone is there, with of all the vacations and working from home going on around the holidays.  Nearly every time I go to the bathroom or enter the lab, the lights switch on because no one else has been there all day, and I’m still startled every time I turn the corner and see another person in the hallway.

Going Forward

I made it through the term, I only have 2 days of work left in my winter "break" and it looks like I am still alive.  So a big thanks to everyone who kept me that way these last four months.    I have some other topics I would like to write about and post here, but I can't make any promises-- I might also just sleep.