For the past year, I’ve made it a habit to publish my accomplishments and aspirations at the end of each semester. I do this, primarily, to track my progress with respect to my short-term goals and long-term growth. It also helps me keep in touch with my network, publicizing my accomplishments and inviting others to join in. Enjoy!
When people talk about their college careers, it’s almost always accompanied by a glassy stare and a tone of almost spiritual reverence. Although some of it can certainly be marked up to egocentric bias, I’ve always believed that there existed some grain of truth, hiding within these personal mythologies.
As I enter my last undergrad semester at Georgia Tech, I find myself looking back on my own tale — Lambda Chi Alpha, FAB, study abroad, dev clubs, internships, part-time gigs, game days, festivals, hackathons [to name a few] — awestruck at my fortune of opportunity, nostalgic for the good times had, and enlightened by the many lessons wrought.
With the sunset of summer, I finally feel I’ve ‘done’ college — I’ve checked the last box, turned in the last paper, and committed the last change. If I left now, I could look back in 40 years time and tell all the little whippersnappers that “I did ‘college’ and I did it well”.
But even though I can see (nay, taste) that light at the end of the tunnel, I know there’s still a lot to do and a lot to learn before I get there. Fortunately, I have kegs of confidence that my own mythology has prepared me to take that next step into the unknown and face the trials that await me.
If nothing else, I feel confident in my ability to fake it — at least as well as the guy next to me — ’til I make it.
International Business Machines (IBM)
GOAL: Expand mind through IBM
This summer I went to Austin, TX to participate in IBM Design’s Maelstrom Internship. The program derives its name from Poe’s A Descent Into the Maelstrom. In the metaphor, the program is the maelstrom and the Maelstromers (us interns) are the brothers attempting to brave it.
With that in mind, the primary take away from the story is thus:
- To move into the unknown with undue arrogance is to ask to get knocked off your ship [onto your ass]
- To allow yourself to be overcome/paralyzed by fear in the face of adversity is to commit suicide — roughly translating to handing over the pen to your own story
- To keep your cool whilst outside of your comfort zone, understanding that you may be in way over your head, yet accepting that all you can do is your best — and to then perform to that level —gives you, at the very least, a chance to achieve the best possible outcome as governed by the current circumstances. The approach doesn’t guarantee ‘success’, or even that a minute chance exists for a ‘successful’ outcome, but it does allow you to reach to your utmost limits, whatever they may be.
TL;DR The world is filled with challenges and wonders, approach them with passion, humility, and an open mind to achieve the best possible outcomes*
*Circumstance rules and regulations apply
There were 15 interns in the Maelstrom program. 12 came from design backgrounds — Research, UX, and Visual — and 3 from development backgrounds (that’s me).
Essentially, product leads from around the company came to the program to pitch their product/problem. Those selected were then handed to a Maelstrom team (4 designers, 1 dev) to revitalize with respect to purpose, audience, and direction.
Because of this, we spent a majority of our time iterating on our understanding of the problem, the needs of the users, and possible solutions. This means that I didn’t focus on code for the majority of the internship (until the last three weeks), but it also means that I took a deep dive into the world of design — or at least certain aspects of it — and got to see what made it tick from the inside out.
For me, that’s what internships are all about. Sure, they look great on resumes, bring in lunch money, and show you how a professional team operates, but those perks are eclipsed by their usefulness as a trial period — for both the company and the domain.
Over the past 2.5 years, I’ve leveraged my internship opportunities to work on five different teams at four different companies in three different states. My hope was to feel out as many different cultures, domains, and geographies as I could, so that I could best direct my efforts to maximize my fulfillment after college — based on the data I collected whilst there.
I still don’t know exactly what I want to do, but I have a much better idea of the things I don’t want to do, and those that consistently bring me fulfillment and joy, than I did when I first arrived.
Lessons from a summer with designers.
Interestingly, my biggest takeaway from the summer doesn’t have anything to do with design. To clarify, it still applies to design but has no special connection or root within it.
It’s a fact that you will never know everything. It could also be said that you will never know more than you don’t know, or you will always not know more than you do know. Our brains are only so big, our memory so good, and our time in this existence so long.
Therefore, it’s not only possible that you will face the unknown, but extremely probable, verging on certain.
My biggest take away from this summer is a mindset or attitude towards this inevitability. It boils down to something like this:
If you know something is going to happen no matter what you do, why not stop worrying about it happening and instead focus that attention and effort on what you do when it does?
To break it down even further, it’s being comfortable doing things you aren’t comfortable doing. I learned that much of this is sheer practice — stepping outside of your comfort zone fully and regularly, essentially desensitizing yourself to its sting.
But even more important than that conditioning is your attitude/perspective when you take that step as it more heavily dictates the growth/progress potential of doing so. The most important aspects of this point of view being:
- Humility — You’re going to be wrong because you don’t know everything. Others will be better than you and that’s okay — not everything is a pissing match. Be honest about what you do and don’t know and about what you can and can’t do, so that you may start building from a sturdy foundation of truth and understanding.
- An Open mind — You don’t know everything, so you’ve got a lot to learn. You don’t know everything, so you don’t know what you’ve got to learn. Listen to, entertain, and internalize new ideas — especially those that challenge your own understanding of our world. Failure to do so makes you vulnerable to overlooking entire worlds of possibility.
- Drive — If you don’t have the willingness to reach your goal, to do what is necessary to overcome the obstacles in your path, then you should expect your goals to remain goals. Great things seldom fall in your lap so it’s imprudent to bank on such occurrences. Instead, you should make plans to progress even in the worst of conditions so that your worst-case scenario still puts you moving forward.
If this sounds familiar, it’s probably because it’s a near carbon copy of the Maelstrom namesake that appears two sections above it [I don’t pen my sections linearly]. I didn’t realize this ’til I began proofreading from front to back, but thought it too coincidentally stellar to ‘mend’.
Other things I picked up, in no particular order:
- Problem solving lies at the core of design. The problems they solve and approaches they take often take vastly different forms than those I was used to, but they retain analytical underpinnings with a focus on outcomes and performance. And no, they’re not just corporate artists.
- Focus on the users. If it doesn’t work for them, it doesn’t work.
- Nothing is perfect, everything is an iteration. And that’s okay.
- Strong opinions, loosely held.
- Embrace the new, the unknown, and the uncomfortable. Through continuous contact you’ll learn extraordinary things about both the world and yourself.
- Every user is a person. All relationships are built on understanding. Taking the time to understand them [building empathy] will allow your products/solutions to be magnitudes more effective and make you a better person in the process. This is true both inside and outside the workplace.
- You are not your ideas, but far more. You can disagree with someone on a fundamental level and still respect them enough to build a genuine, lasting relationship. To understand all is to forgive all.
- CAMP RULE #1: ALWAYS HAVE FUN. If you’re not having fun, you’re doing it wrong.
I also took some fashion cues, although I have a strong suspicion IBM Design (at least Austin) is heavily biased towards the color black.
Warning: Small amounts of technical jargon ahead.
I’ve explained that the time devoted to code was short, but I was still able to get my hands on some cool technologies and strap a system together. Disclaimer: I can’t get too specific about the project I worked on, so I’ll focus on the tech I used rather than its overall purpose.
Being the sole developer on the team, I had total control (within IBM constraints) over the implementation of the system. This allowed me to focus on the technologies I wanted to explore, so long as it fulfilled our team’s goals.
Coming into the summer, I had my eyes set squarely on the React/Redux/Webpack tech stack. In previous semesters I’d heard alot about them through the online channels I frequent, hackathons I’ve attended, and interviews I’ve taken. With that amount of prevalence, I figured there had to be some merit behind the buzz.
You’ll notice Redux missing from my tech stack below. This is because I didn’t have time to learn and implement Redux during my work project, opting instead for a more standard and familiar Node scaffolding.
I’d never used a graph database before, which is the real reason I opted for it versus a more conventional data store. I pitched it to my team and stakeholders as having a veritable built-in recommendation system (or so I’d read). I mean if Amazon’s doing it… In the end, the graph database was a welcome respite from more traditional DBs and their relatively linear indexing schemes. And yes, I did get recommendations working, but I’ll admit the implementation was quite naive.
Icing on the cake: I got to use Watson. #throwsomebrainsonit
Frontend — CSS, Express, HTML, NodeJS, React, Webpack
Backend — Flask, IBM [Bluemix, Cloud Foundry, Graph, Watson APIs], Python
GOAL: Get weird in Austin
I like to describe Austin as a college town on a city scale. It comes complete with a booming tech economy, vibrant art scene, and a multitude of public spaces and events to explore and gather around.
The heat was intense, but it came without the sticky, lingering humidity of Hotlanta. This meant I could walk outside in 100+ degree weather without being immediately drenched in sweat — making the weather surprisingly bearable.
Driving around the city, you’d be hard-pressed to find a stretch of blocks bereft of a BBQ, burger, or taco joint (be it in food truck, dive bar, or swankified form). The happy hours were generous and omnipresent, making the restaurants, and their adjoining bars, attractive places to hang after work.
One of my goals for the summer was to leave Austin feeling like I’d actually lived there, not like I’d just taken an extended stay. To put myself on the right track, I set a habit to do 3 new/different things each and every week. While I know the quantity of experiences has no direct correlation with the progression of discovery, I knew it couldn’t hurt. More chances, more opportunity.
I’m not very diligent when it comes to logging social/relaxing activities by design. I think it defeats the point of doing them in the first place. When I’m doing at my leisure, I want to be in the moment, taking a break from my daily worries and responsibilities. I don’t want to be fretting about whether I missed something or if I’m taking it too easy.
As such, I don’t have much hard data to look back on to determine if I came anywhere close to that goal. I do, however, have the feeling that I thoroughly explored Austin with the time I had available to me, which is a lot better than feeling that I missed out.
For the sake of memory and my golden heart of sharing, here are a few of the more noteworthy adventures I embarked on:
- Alamo Drafthouse (x4)
- Blues on the Green (x2)
- Castle Hill Graffiti Park (x3)
- Coffee shops
- Dinner at Facebook
- Kingdom [Ekali, What So Not]
- Party Barge
- Pinballz (x3)
- Rainey (x4+)
- Rock Rose
- Round Rock Express
- Salt Lick
- Sixth [Dirty, East, West] (x6+)
- South Congress (x2)
- Torchy’s (x4+)
You may recognize some Tech faces in the above pictures: five of the eleven weekends I had in Austin included visitors from out of town. Exhausting, but worth it.
I spent a heap of time exploring, but I still devoted some to my own projects.
GOAL: Be interview-ready
Knowing that this Fall would be my last semester (and best/last chance to find a full-time job), I made it my goal to “Be Interview-ready by August 13th”. I’ve been using a lot of different resources to aid me in this process: classmates, CLRS, DPV, HackerRank, InterviewBit, InterviewCake, etc.
I planned to evaluate my readiness based on whether or not I could pass a Google interview. My thought was this: if I can pass the interview process at Google, I should be reasonably prepared to take on most others.
I kept my habit goal from the spring to do five questions a week (one each weekday). Here’s how I did:
9 weeks in Austin * 5 questions/week = 45 questions
Goal: 45 questions
Actual: 21 questions
21 actual / 45 ideal = 0.4666…
My compliance was abysmal. I understand why it sunk so low: I burned out halfway through the summer and prioritized other aspects of life over my interview preparation. But it doesn’t change the results.
Coming into the fall, I was the best computer scientist I’ve ever been. But I wasn’t as good as I wanted to be.
I wasn’t slaying interviews left and right. I was batting fantastically: thinking through problems, explaining the process, and analyzing new information and solutions with respect to performance and best practices. I was doing great, but I wasn’t perfect.
This past week, I was dropped from the second round of interviews with Big G. But looking back, even if I could change things knowing what I know now, I wouldn’t.
You see, I didn’t get into computer science to solve interview questions. I got into computer science to make an impact and build cool shit. I like solving real problems with an implementation that’s both practical and elegant — for those that know where/how to look.
My head-down charge to ready myself for the real world caused me to neglect the parts of code that I love most. It was like I was pedal to the metal but not making any progress, my wheels spinning impotently.
This is, I believe, what led to my burnout. I was going through the motions, but I had lost sight of my purpose and, thus, my passion. Without it, it was tough getting back on the mongoose and, I fear, my time in that state yielded growth rates far below my maximum potential.
I know I’m not where I want to be with respect to interview-readiness. But moving forward, I’ll be approaching my studies in a new light. My interview prep will exist as an offshoot of my true passion —solving real problems, building cool shit — rather than an independent entity altogether.
I’ll retain my interview prep habit (habits are the building blocks of progress, after all), but my direction and primary focus (my priority) will be towards doing the stuff I love. With any luck, this rediscovered paradigm will do wonders to increase my levels of fulfilment, reduce my chances of burnout, and multiply my rates of growth.
HAMY Codes has been the name of my tech blog for the past few (3?) years. When I run into a difficult/new problem that requires me to input a healthy amount of time/effort towards its solution, I log what that problem was and how I overcame it.
As previously mentioned, I love solving problems — especially if they’re hard || new. It’s part of the reason I started coding, you get hard/new problems every day.
That being said, I dislike having to re-solve old, tedious problems. Things like “why doesn’t my Bash shell have administrator access”, “how do I give my Bash shell administrator access”, and “how do I ensure my Bash shell keeps administrator access” aren’t problems that I’m particularly passionate about, but are problems that I’ve run into numerous times over the years.
Because of this, I began writing down the solutions I found so that the next time I, inevitably, ran into one of those issues, I wouldn’t have to waste time re-solving it. Instead, I could simply check my knowledge cache, pull out how I fixed it last time, and give it a shot. Less time spent solving problems I don’t care about means more time solving the problems I do.
As a side effect, my blog gains a hearty amount of meat for search engines to sink their teeth into. This means there’s more content for them to index and a greater chance people will find my site.
Last spring, I was attempting to get my blog to pre-move (I switched domains last summer) visitor stats but missed by a few hundred views:
Spring goal: HAMY Codes >= 1,500 views/month
Spring actual: HAMY Codes = 964 views/month
While not a focus of one of my goals this summer, it’s become a habit to keep an eye on my blog’s stats. I was pleasantly surprised when it finally met its pre-move numbers, even if it was a semester late in doing so.
As you can see, not just one but all three months this summer exceeded that pre-move bar of 1,500 views. Interestingly, my best month actually doubled that milestone, bringing in my blog’s best month ever.
Now, to be transparent, this wouldn’t have been possible — at least so soon — without Pokemon Go. No, that’s not a joke.
When Pokemon Go was first released, I was running into the same connection issues, seemingly, everyone else was. So, I wrote a short post detailing how I was able to fix it on my Android phone.
That move turned out to be extremely fortuitous. The post was my most popular in July (bringing in almost 5 times the number of views as the next best and even eclipsing my best performing spring month) with more than 1,000 views to its name.
Spring goal: HAMY Codes >= 1,500 views/month
Summer actual: HAMY Codes > 2,000 views/month
I’ve worked on and off throughout the summer recreating my site with the React/Redux/Webpack stack. But I’m not satisfied with it yet. When I do get it to a reasonable place, I’ll open Bill’s PC and release it into the wild. Until then, it stays at the daycare.
In the meantime, be happy with my old splash page and Phantsaver.
GOAL: Do an “Everyday” project
After my intense and technical spring semester, I wanted to explore some less “productive” pursuits that I had let fall by the wayside.
Last spring, I started a photography Instagram profile where I posted pictures of things I thought looked cool. But, as the semester wore on, it became more of a hassle than it was worth — drawing from my already over-taxed pool of time and energy — leading me to abandon the project.
Going into the summer, I pondered just how hard it would be to become one of those guys on JackThreads/Nordstrom/PLNDR et al. I also wanted a reason to spend more money bolstering my wardrobe. I pursued the experiment for literally three days (I even bought a tripod) before deciding I was bored of it and returning to the drawing board.
I looked back over my photos and saw that a significant portion on my Instagram feed and in my phone were focused around street art of one form or another. I had a smattering of tags, murals, and slaps from around Atlanta and had accumulated a surprisingly large collection since my recent arrival in Austin.
I couldn’t remember ever not liking street art, so I figured I’d give it a shot. The worst that could happen would be my phone running out of storage — which it has, several times — and getting weird looks for staring at telephone poles — which I have, several times. The best: free stickers and Instafame.
My benchmark for the summer was to create a series consisting of at least 30 items. At the time of this writing, I’ve posted 128 pictures from Austin. Needless to say, their street art scene is bumpin’.
I still have about a month’s worth of pictures left over from my explorations, so follow along if you’re interested.
I got so caught up in the whole thing that I actually bought myself a camera.
A Year of Reflections
This post is the fourth semesterly reflection I’ve created since turning it into a habit a year ago (My Summer 2015). I figure it’s as good a time as any to do some meta-reflection, so here goes...
Peace of Mind
My reflections give me a dedicated time to sit down and think about what I’ve been doing and how it stacks up to what I want to be doing. Because I know I’ll always do this, I don’t have to expend energy worrying about the big picture all the time.
Instead, I can focus on working towards the smaller goals that I’ve set for myself. This allows me to be more productive, pushing off the looming existential questions to a time and place at which I can face them with greater agency.
The semesterly intervals mesh conveniently with my school schedule, providing ideal pivot points to realign my overarching life vector. It provides a large enough window that I have time to progress, yet a small enough one that any derailing can be rerouted without too much confusion and delay.
The Power of Writing
As for the reflections themselves, I still think their main power is pulled from the fact that I write them. Writing helps me to know what I think. Words come quick and fast when spoken, often in one ear and out the other. Words written (depending on the medium) have a greater sense of permanence and power to them.
I don’t know what phenomenon causes this, but I’ve found that writing things down and then rereading them seems to cause false statements to jump off the page. It’s as if the simple act of taking an idea out of your brain and placing it on [insert media] allows you to view it objectively and on its own merits, rather than subconsciously defending it as if it were your own.
Meta-reflection over, let’s get to some numbers:
Views vs Reads
Time to Read vs Time to Write
Don’t have a great amount of data here, but I think it’ll gather interest as the reflections pile up. Here are some things I got from the limited analysis:
- People don’t like to read long things. I got almost twice as many views on my spring 2016 reflection as I did for fall 2015, yet the latter won out on reads. I’m going to blame this directly on the extra ten minutes of reading time.
- Interest in these reflections seems to be steadily growing, as shown by increasing views over time. I’m curious to see what the bounds of my network’s fertility are.
- If the trend continues, this post should get more reads than my last one as it’s ever so slightly shorter.
Future — Goals
This post is hugemongous, so I’m gonna keep my parting rants brief. These are some goals I’m trying to accomplish this semester, both so I can keep myself accountable and so I have a quick way to review them.
- Land a full-time position doing something I believe in with great people that will encourage growth, progress, and impact — I know there are plenty of companies out there that will be great fits and make me happy. I also know that nothing is perfect so the pursuit of it is indefinite — for better or worse. Therefore, I want to find a place that I can dive into whole-heartedly and that will help me grow as a human. Everything else will fall into place. What I want: great people (preferably smarter than me), real && challenging problems, a drive to improve, and a vision I believe in.
- Nail down the fundamentals of Machine Learning and Big Data — I’ve had the fortune of making a cursory pass over both topics through my projects last spring, but I still don’t fully understand the foundations on which they are built. This semester provides a great opportunity for me to feel out these areas while I still have near unlimited professional mobility. I want to understand the fundamentals, build something to prove that internalization, then utilize my experience to decide whether I’d like to pursue them full-time.
- College one last time — I’m back in college for one last semester, so I’d be remiss if I didn’t take advantage of it. I’ve got a full football season, social calendar, and city to experience. I’m gonna do just that.
- Wield my mighty text editor, slay the Balrog — I’m about as old as I can get without graduating. Unless I switch majors. KIDDING MOM!!1 I’d feel like a Twink if I didn’t know so many people that know so many things that I don’t know. Regardless, I’m planning on attending several competitions, hackathons, and club events to see how I stack up and do more of what I love. Hopefully I’ll show up like Gandalf the White, but I suppose the Grey wouldn’t be so bad either.
Holy frankfurter, this steak is almost over! I can’t believe how little college I have left, but I don’t have anything profound to tell you here, so check back in 3 months.
Until next time, I’m Hamilton Greene and that’s the way the cookie crumbles.
TL;DR Austin’s fun, I like making things, and these are my defining attributes:
P.S. Currently looking for great street art locations in Atlanta to combat my Austin withdrawals. Hit me up if you got da plug.
P.P.S. If you find yourself constantly worrying about something, take a minute to write down what you’re worried about and why. Immediately afterwards, list things you can do to help resolve it. That way you can, quite literally, see what’s bothering you, why it’s bothering you, and what you can do about it. Oftentimes it reveals you’re worrying about something you can do nothing about.