Tuesday, March 31, 2015

Recovered at last.

[This is a backdated post, one I never got around to publishing.]

Two weeks ago, I finished Hack Reactor. Six days a week, 14 hrs a day, I lived and breathed code for a long, long time. I did little else -- feel behind on emails, on exercise, on reading, on journaling, on spending time with lovely people. I chose willingly to live out of balance for a period of time in order to grow immensely as a software engineer.

I'd say the gamble paid off. I'm able to build real stuff now. My job search starts in a month, but recruiters and contacts are already bookmarking the opportunity to interview. It's humbling and I'm deeply grateful for the positive job market -- such a shocking difference from my search as a construction engineer. I feel confident in my talents and ability, while equally excited for all the things I have yet to learn, the vast ways in which I can grow. 

Immediately after graduation, I departed to Europe for another teaching tour. But before hitting the road in earnest, I spent a relaxing two weeks in Scotland with a dear partner. The time was exactly what I needed -- respite from my breakneck pace of life.

Even before HR, I was on the move constantly. I had been on a six-week tour of Europe right before heading to HR. The tour came on the coattails of a particularly inspiring (and consuming) internship with Carbon Lighthouse. Immediately before that, I had been on a three-month tour of Europe. My transitions from one life phase to another, as you can see, are generally non-existent. 

While grateful for the fullness of my life, it does wear me down, particularly these past 6 months. Just no time to relax, to read a book, to have an entirely open schedule. This is mostly by design -- too much of the above makes me feel uninspired, even depressed. Like a shark, I have to keep swimming, even when asleep. 

Happily, I got the perfect dose of rest in the past couple weeks. I read books, ate nothing but home-cooked meals (after three months of eating out twice a day), played badminton (a surprisingly popular sport in the UK), slept a lot, practiced yoga, did programming when I felt like it, cleaned out my inbox, and completed a slew of tasks that had been neglected for a long while. 

I feel restored, reset, grounded once more. Clean and refreshed, I'm ready to take on the world. Good thing, too, because life is about to resume its usual intensity. 

There was one tragic casualty during my time in Aberdeen. My travel mug broke from thermal shock (despite never having trouble before), the bottom popping cleanly off as I poured in boiling water. 

unknown-2015-03-31-08-57.jpg

My mug, a memento from a particularly meaningful event called the Chautauqua Retreat, has been with me on my adventures around the world. It has seen me become a full-time international dance instructor, caffeinated me through late nights of dancing and programming. It has been my wake-me-up black tea mug, my breathe-deeply jasmine green mug, my lets-get-silly whisky mug, my all-purpose water mug. But most importantly, it was a mug that reminded me of home, the home created by me existing in the hearts of wonderful people, my family, my tribe. 

It is merely a Thing, and I've grown quite good at letting go of Things -- a necessity when you live in a suitcase -- but the few Things you always have with you gain even greater significance. They go with you through a lot. So the death of my mug was sad, even heart-breaking. 

Happily, I can still carry Home with me, even without a focus symbol. So I move forward, on in my journey in life, walking along a path not frequented, designing my own life and loving the adventures I find myself on. And now, with my spirit fully restored and my body on the recovery, I am ready. 

Tuesday, February 10, 2015

The calm before the storm.

Roughly five weeks to go. Life continues to move at a breakneck speed. Over the past two weeks I have build two full-stack webapps, learned a ton about project automation, practiced using tools that improve collaboration on a project, and cut my teeth on testing techniques. I've traveled to Portland and back, visiting friends and family. I've made a new résumé for the programming world and customized my website's template to include extra links about me. And those are just the high points.

The second half of the course is far less structured; as seniors we're mostly left to our own devices while the attention of staff shifts to the new crop of juniors. We're not totally abandoned, of course -- access to guidance and technical mentors remains the same -- but we don't have the same relentless pace of learning some specific new technology every two days. Our learning is now largely guided by our own choosing. The world is our oyster. 

I've been thinking long and hard about ideas for the thesis project, the project that will occupy our attention and drive for the next four weeks. I want to do something innovative and useful, to solve a meaningful problem. (Then again, who doesn't?) I think it would be amazing to find a project at the interesting of building design and programming -- somehow incorporating Revit (the industry's de facto software for building modeling) perhaps. Or maybe take a more frivolous route and create an integration with my Myo armband, build an entirely new curated experience of interacting with the web. 

We learn about our project teams for the first time today, we'll meet and begin hashing out project ideas. The choices of this week will weigh significantly on the direction and -- possibly -- success of our team. It will chart the course by which we will sprint for the next four weeks.

Right in the middle of it, I'll skip off to Seattle for the weekend to teach at Rain City Blues. I'm excited for the event -- had a wonderful time last year. It'll be a lot of work, as I'm skipping an entire day of HR, working through the weekend, and taking a redeye flight to make it back in time for Monday. For all the work it'll be, I have high hopes it will prove grounding as well, since I will be back in my community. Through the course of Hack Reactor, though it has been a mere 1.5 months, I am already feeling degrees of disconnect from the world of dance. It's surprising how quickly it seems possible to fade out from the scene.

After graduation from HR, I immediately return to Europe for another tour of six weeks. Copenhagen, Spain, and Stockholm. It'll be less intensive by design -- squeezing in a few weeks of break (which will likely still include a healthy dose of solo programming) will be a welcome restoration. I look forward to actually being a tourist for a bit.

Then it's back to the US to initiate my job search. The whole world is open to me. Maybe I'll find a dream job doing programming in the sustainability sector. Possibly I'll search along the west coast to find a gig that lets me work remotely. Maybe I'll broaden my search to include Europe. Right now there's a whole lot of unknowns that will dramatically shape my next (at least) couple years of life. That seems to be par for the course with my life, though. 

Tuesday, February 3, 2015

Dealing with failure [redux].

The link I provided previously was incorrect -- copy fail! It’s now fixed.

I wrote (what turned out to be) a short essay about an experience at Hack Reactor. It was an emotionally powerful experience, one that shook me up but ultimately proved valuable. Hope you enjoy it.

Dealing with failure.

Thoughts and discussions welcome as always.

Monday, January 26, 2015

Desiderata.

By Max Ehrmann.

Go placidly amid the noise and haste, and remember what peace there may be in silence.

As far as possible, without surrender, be on good terms with all persons.

Speak your truth quietly and clearly; and listen to others,

even to the dull and ignorant; they too have their story.

Avoid loud and aggressive persons, they are vexations to the spirit.

If you compare yourself with others, you may become vain and bitter,

for always there will be greater and lesser persons than yourself.

Enjoy your achievements as well as your plans.

Keep interested in your own career, however humble;

it is a real possession in the changing fortunes of time.

Exercise caution in your business affairs, for the world is full of trickery.

But let this not blind you to what virtue there is;

many persons strive for high ideals,

and everywhere life is full of heroism.

Be yourself. Especially do not feign affection. Neither be cynical about love;

for in the face of all aridity and disenchantment it is as perennial as the grass.

Take kindly the counsel of the years, gracefully surrendering the things of youth.

Nurture strength of spirit to shield you in sudden misfortune.

But do not distress yourself with dark imaginings.

Many fears are born of fatigue and loneliness.

Beyond a wholesome discipline, be gentle with yourself.

You are a child of the universe no less than the trees and the stars;

you have a right to be here. And whether or not it is clear to you,

no doubt the universe is unfolding as it should.

Therefore be at peace with God, whatever you conceive Him to be.

And whatever your labors and aspirations, in the noisy confusion of life,

keep peace with your soul. With all its sham, drudgery and broken dreams,

it is still a beautiful world. Be cheerful. Strive to be happy.

Monday, December 29, 2014

Accelerating the visualizations project.

Remember that project on visualizing data structures and algorithms I mentioned from earlier today? Yeah, it's getting real. 

After blazing through the core requirements for our sprint on AJAX, XSS guarding, and jQuery, my pair partner and I placed on hold the eventual refactor into Backbone that we'll commence tomorrow. We've both done the Backbone tutorials on CodeSchool, so it should progress quickly as well. 

Finding ourselves with "free time" around 9:30pm, I rounded up my partner-in-crime for the data visualizations project for a kickoff meeting. In the process, I roped in my pair partner for the current sprint, because he was hanging around, seems vaguely interested, and is a really intelligent and capable coder. It was fun playing the role of networker and team recruiter. 

Our first meeting last night went better than I could've hoped. We spent the entire hour discussing our personal goals and motivations for the project, which led into establishing a mission statement. We have a fairly clear understanding of the project's scope and intention, about which we can organize and rally. Such discussions often strike (less wise?) people as unnecessary and a waste of time, but I genuinely think these early conversations can make or break a project. Clear mission can prove invaluable to motivating a team. I'm so glad that others valued it equally, as evidenced by the sincerity with which they engaged in the conversation. We didn't settle for an "-ish" mission statement -- we wanted to know exactly our goals. 

I'm feeling very excited about this project. It will not simply be a random collection of notes and thoughts. It will deliver high-quality learning tools for understanding fundamental building blocks of CS: data structures and algorithms. We are building something to show to potential employers with pride, and to share with the broader community to improve learning. In the process, we will develop mastery of the topics we feature. 

I'm impressed it took so little time to settle upon an interesting pet project idea, one that has great potential. I'm so glad that I could recruit a couple others to my project, because I'm genuinely interested in it and am so happy that others are too. There's something gratifying about watching others get on board with your project idea, or at least with your leadership -- the last part is to acknowledge the idea's invariable morphing upon the inclusion of others. This happened once before -- at Stanford with Engineers for a Sustainable World. It's been a while since I was in a project leader role, and it feels good to be back. We'll see if that role remains necessary, but at the least I'm happy to provide the initial leadership. 

Maybe one day it may become a monetizable idea, or it may not; either way, we are committing to creating high-grade professional code. Building a better quality product is good for us -- it feels good to take pride in what you build -- and good for our bottom line -- be it as a portfolio piece or a monetizable website. 

I had to drag myself away from the building at 10:45pm, acknowledging the 60-minute commute that awaited me (night trips generally take longer). All I wanted to do was delve into the finer points of project architecture, our next steps in development, and setting up the scaffolding that will support our collaboration. My mind is alight with excitement. I hope I'll be able to sleep. 

Sunday, December 28, 2014

A restorative break.

One week off from Hack Reactor for Christmas provided some welcome respite. Often to sleep early, late to wake up, I was investing in sleep the way a squirrel stockpiles nuts for the long winter. (Boy, do I have a long winter ahead.) My time was well-spent and naturally balanced: friends, family, self, work, I did a little bit of everything.

(And now, a little side break for adorableness…)

---

Eureka, the family dog, was something of champion of cuteness. Here she was, lounging on our family room couch in front of the fireplace. Under regular circumstances, dogs have always been prohibited from resting on furniture. She has a good life. 

unknown-2014-12-28-08-48.jpg

1__%252524%252521%252540%252521__unknown-2014-12-28-08-48.jpg

She now has a knack for opening presents. Give her a wrapped box and permission to open it, she will work her way into it, much like a kid.

2__%252524%252521%252540%252521__unknown-2014-12-28-08-48.jpg

And, attacking the toy monkey hidden inside:

http://youtu.be/Lx7b-uHd09k

 

---

Much of my Christmas break was spent in the family room, planted squarely next to the fireplace. I love fires, had a healthy appreciation built up from my days in Boy Scouts.

I remember one year when an ice storm hit Portland and knocked out the power for a couple days. We navigated rooms with candles. My brother and I were tasked with tending the fire through the night to keep the house a bit warmer. We traded shifts. It was wonderful.

Naturally, one of my favorite activities at home is to do my computer work next to a fire. I would set myself up in the morning, get it going, and then keep that spot as something of a home base for the day's remainder. Sometimes I would do actual work, sometimes I would lie on the couch and gaze at the fire, or at the Christmas tree. The hearth brought a pleasant warmth to the room, though it was hardly necessary thanks to the modern luxuries of HVAC.

Definitely ready to get back to Hack Reactor. The break was welcome and restorative, but now I'm itching to challenge myself yet again. Very soon we will cross into unfamiliar territory, so I'm eager to learn stuff that is absolutely essential and completely unknown (e.g. AJAX).

A fellow cohort member has taken interest in my project visualizing data structures and algorithms. (I wrote a blog post about my project.) He wants to collaborate. While I've enjoyed having this as a pet project, I suspect more will be learned and accomplished by having a hacker in crime. We'll be working mostly in parallel, so it will offer us a valuable opportunity to practice collaborating on the same coding project in a small, low-stakes environment. Project and process management -- my favorite.

The next four weeks will be a relentless onslaught of learning. I'm averaging 85 hrs / week at Hack Reactor -- which includes meals, because those are typically spent talking about code or reflecting upon our work. By the end of it, I'll be building full-blown apps as a full-stack developer. 

Friday, December 19, 2014

Challenges.

We covered algorithms yesterday, as it applied to the n-queens problem. (For the uninitiated, it asks how many ways can n number of queens be placed on a chess board of n x n size.) 

I've done the problem before in CS106B, the C++ class. Even with familiarity, and partnered with someone with a CS degree, it took us a solid four hours to implement the solution. I believe we solved it faster than anyone else, but it was disappointing how long it took. Even with the answer more-or-less understood, we ran into classic errors in logic. We were quick about dissing them about, but... Dang, the brain is bad at programming. 

Today we worked on parallelizing the problem. (That means splitting the problem into subcomponents and running them on separate threads. (In fact, this is not what actually happens with JavaScript; it only simulates the behavior.)) We successfully grasped the implementation of web workers over the morning session.

While implementing the web workers to solve the n-queens problem, however, we ran into a roadblock. Web workers have exceedingly limited access to the rest of the program. We knew this, but we didn't foresee the logistical implications until we were about to implement the solution. Then we realized that we were stuck. After some unsuccessful rabbit-hole exploring to find a workaround, we assessed our options. 

We could proceed to implementing a bit-wise solution (a super efficient and clever solution, but also challenging to understand), or we could refactor our entire code to work in the web workers. Both seemed like exercises that would add little value to our learning. So, we took a break, then shifted gears to work on more common yet challenging data structures.

The wind had already been sucked from our sails, however. It was hard to get motivated. We were so set on solving a problem. I'm proud of our ability to step back and assess the value of different paths, but unfortunately we couldn't fully commit to the new course of action. We both wanted the original problem solved, which we had been building up toward for the past day and a half. (No wonder people have a hard time shifted gears when design requirements change.) In the end, we made minimal progress and called it an early night. 

Well, more like we didn't call it a late night. I still left around 9pm. Laurie Voss, the CTO of npm (a heavyweight in the industry, a popular code package manager for JavaScript) gave a presentation on "all the stuff everyone knows but you." It was a grab-bag review of grips and advice from senior developers, and what they wish the juniors could do. He never actually explained anything (which he disclaimed at the start of the lecture). It was essentially a list of things we should go learn about and understand. Sometimes he would capture the high level idea so we'd have some context, but the implementation was never covered.

Some people didn't like this scattered style, but I loved it. Also, he had quite a lot of jokes, and his slides were excellent visual aids. I especially like the premise of the presentation: trying to capture all the things that people assume you know, but never teach you. 

And again, advantages of Hack Reactor shine through. The evening presentations have been some of the most valuable material I've encountered. From building a web app from scratch to see how the different frameworks interact, to delving into Unix/Linux, to the most recent presentation, I have consistently learned so much. In addition to material, I am constantly driven forward. Left to my own devices, I would certainly get stuck on the topic of algorithms. Instead, I move on to learn about D3, a handy data-visualization package.