Monthly Archives: November 2012

Hold on — I need to check my phone

While preparing for the final debate in my Computer Science ethics class today, I was unnerved by a personal revelation. But, let me start from the beginning.

It was case study #24, or ‘Brain’ as dubbed by my professor. In the synopsis there was an odd set of instructions. He gave  the link to a New York Times article,  directions to write down each time and by what I was distracted, and wrote a little blurb about how he had his teenage daughter conduct the same experiment.

To my surprise, it was the most interesting case study I had read in the class. It discussed the decreasing ability of students to focus because of the mass of electronics and information at their fingertips. As instructed I kept a brief journal of each time I was distracted. I noticed something intriguing while reading the article. Like clockwork, I had glanced at my phone every five minutes to see if I had received a text or an email. Similar to how we train ourselves to wake up at a given time each morning this seemed more automated than anything. And what’s worse? I’m still doing it while writing this review even though I’m now aware of it.

On numerous occasions, I have heard it takes 21 times to make an action habitual. I wonder how many times I told myself to glance at my phone for updates before I stopped realizing I was doing it. I also wonder how I ‘glance’ at various things to check for something. More importantly, I wonder how much time I have lost as a result of losing my focus throughout each day. Oh, and remember my professor’s daughter? She sent 337 texts while ‘reading’ the article.

Time to turn off the phone.


Tagged , , , ,

An Exorcise in Masochism: My first programming competition

Last Saturday I attended my first programming competition. It was the ACM Mid-Atlantic regional competition held at Duke. It went terribly.

Toward the beginning of the semester, the president of my local ACM chapter mentioned the then upcoming completion and asked if anyone was interested. Seeing this as another opportunity to hone my algorithm writing skills I put my name down on a list at started thinking of potential teammates.

I suppose it was natural to choose two friends from my classes that I had worked with quite a bit over the past several semesters. I knew “Bob” and “Sue” were both smart, hard working, and pretty good at coding. Sounds good enough, right? Wrong.

First of all, we didn’t practice. Not even one time. Shortly after getting approval from the department we had a regional ‘qualifier’ to test our skills. The day of the qualifier “Bob” says he wont’ be to make it and “Sue” is going to be late if she comes at all. So, I spent two and a half hours working my hardest and knocked out two problems by myself. To my surprise, I couldn’t even figure out how to start any of the remaining problems. Time to reassess things, right? Also wrong.

Bolstered with false-confidence after knocking out two problems solo, I told myself, “Well, even if we can’t find time to practice I should be able to get some problems at the real competition by myself.” Wrong, wrong, wrong.

The problems competitors are given require a wide set of skills and the ability assess difficult issues, design algorithms to solve them, implement them quickly, and account for huge data sets and odd edge cases. I love “Bob” and “Sue”; however, we all have very similar skill sets. As such, we weren’t the best choice for a strong, versatile team even if we had practiced. Not practicing just made things much, much worse.

Facing eight problems to solve, with one computer, and a time crunch was like riding the Titanic down after the life boats had already departed. To be completely honest, we worked poorly together, got stumped on simple stuff, and spent entirely too much time on all of the wrong things. After five hours of bashing our heads against desks and a whiteboard we walked out to greet the other teams with our heads hung low. Normally, this would be enough for someone to vow never to enter a similar competition, right? Still wrong.

I will be back for round two next year. I will also go better prepared. Many mistakes were made and many lessons learned.

First, a well rounded team is a must. Ideally, I would like my team to consist of: A very strong, experienced programmer, a master of data structures and well known algorithms, and a math-lover. Second, practicing problems that are similar to what is to be expected is vital. I don’t think this is because we will ‘learn’ solutions but rather, we will learn how to tackle problems together. Finally, I will not be blinded by false confidence or delusions of how easy, or difficult, the problems will be.

I can’t lie, the results of the competition have been hard to swallow. Failing is not something I do very often. But, I have come out of everything with a renewed passion for knowledge and a better student.

“We learn from failure, not from success!” – Bram Stoker, Dracula.


Internships, Interviews, and Mentors

Internships — Lots of people seem to have opinions about internships but very few people I have spoken with have had one. Last summer I had an internship with a local software company, ideacode. Yes, it starts with a lowercase ‘i’. While, I only worked part time (20-ish hours/week), as I was also taking courses over the summer, I was exposed to new software, development environments, programming languages,  and most importantly real software engineers coding real world applications.

But, it could have just easily not happened.  I actually met my mentor, Bishop, by happenstance. I was pulling some hiking gear out of storage for a trip when I saw a mass of programming books on a bookshelf. I could have walked by but I didn’t. Instead, I struck up a conversation. After giving my elevator speech and shaking hands I had a business card and a chance. The first thing I did upon returning from my trip was email him my resume and shortly thereafter I had an interview lined up. What is the moral of this story? Never skip an opportunity.

Interviews — There is a lot of thought about how to prepare for and act in an interview. However, after numerous military boards my interview was a nice treat in comparison. I should take a moment to emphasize that by ‘treat’ I meant enjoyable, not easy. I met Bishop and John, a coding guru, at a local Barnes & Noble. The setting was informal and we were seated at a square table surrounded by a dozen or so other customers who were reading or chatting amongst each other. Perhaps one of them was in an interview as well.

I was well dressed and I thought well prepared. However, the opening salvo of questions Bishop shot my way was not what I expected. He wasn’t trying to determine how well I knew my data structures or programming languages (at least not yet) he was trying to get a feel for who I was. He wanted to know if I would ‘fit’ well with the company. I answered to the best of my ability and tried not to sweat.

He continued with a series of situational questions, asked my thoughts on business organization and best practices, and finished by having me slap together some basic data structures on the table with sticky pads. After all of that they thanked me for my time, we shook hands, and went our separate ways.

A week later I received my first contract offer in the software development field. It felt great. If I could lend any advice from my limited experience it would be this, relax. Start by doing some research on the company you are applying for, review relevant material you think you might be asked about and above all be friendly and honest. Anyone can lie their way into a position but in the end all they will have accomplished is wasting their and their eventual ex-employers time and resources.

Mentors – Bishop was a great one. Clarifying what I mean by ‘great’ is easy when someone gives you many instances to draw from. First off, Bishop had a way of always asking questions that rode that fine line between what I know and what is too far beyond my ability to learn quickly. By asking these questions, the right questions, my knowledge in several expanded rapidly. Within a month of work I was zooming around a Linux server remotely, writing test cases in PHP, and creating advanced bash scripts to manipulate hundreds of source files simultaneously.

For the most part, I worked remotely and foresaw communication being a potential issue. But, Bishop quickly put my mind at ease. He continually responded to my emails/IMs quickly and always giving me just enough information to nudge me in the right direction without explicitly giving me an answer. This is exactly what I needed and exactly why I grew so much in such a short amount of time.

But there are two main things I will take away from my work with Bishop and ideacode. First, programming is an art as well as a science and problems should be taken on with compassion as well as deep thought. And finally, it gave me an appreciation for how beautiful complex code repositories can be. Just as whorls of tree trunks tell stories not just about the age of a tree but also climate, forest fires, and floods; peeling back the layers of code tell a story of their own.

Thank you, Bishop.

“Shallow men believe in luck. Strong men believe in cause and effect.” — Ralph Waldo Emerson


Tagged , , , ,

Well, it’s about time…

After a long back and forth battle with myself I’ve decided to go ahead and just start blogging. This past June I was fortunate enough to attend a Google Scholar’s retreat in San Francisco. While there I met many like minded individuals, attended fascinating tech talks, and explored Google’s amazing headquarters. In short, it was the one of the best adventures I’ve had thus far in my short existence.

Almost every time I tell people about the trip they want to know what Google was like. To keep my explanation as concise as possible I normally say something along the lines of, “It’s like if an engineer and an artist had a baby with all of their talents and a seemingly endless bank account.” This by no means does justice to how magnificent what I saw was. Imagine going to work being given the room to pursue your interests, explore routes to solutions for assigned problems, and access to unlimited coffee. Good coffee. Oh, now surround yourself with nothing but other smart, like minded people who WANT to be there. That’s how I picture Google. I will work there.

One of the individuals I met there, a fellow Harry, was a great inspiration to me. He has accomplished so much while giving so much back and maintains a humble, professional, and warm demeanor. He recommended I start blogging. So, Harry, this may be a bit late but here we go none the less.

Whether this turns out to be something useful/interesting to others is yet to be determined.

“Hello, world.” — Countless programmers