Tuesday, January 29, 2013

JavaScript: The Beginning

In my missions statement on Why I'm Learning to Code I stated that early on in my journey I began dabbling in JavaScript.

To be more specific, it all began through the insanely approachable and free interactive JavaScript lessons at Codecadamy. Codecademy was still a fresh start-up, posting new JavaScript courses every week. It was exactly what I needed at exactly the right time.

But I quickly got hungry for something meatier. I found the remarkably enjoyable Eloquent JavaScript: A Modern Introduction to Programming before finally cracking into the textbook JavaScript: The Definitive Guide.

By then I was enrolling part time as a Post-Bac for Computer Science courses at PSU. Thanks to Codecademy I was able to skip a couple introductory classes, saving half a year and a handful of cash.

Now, a year later, Codecademy has a full array of courses across various technologies. Between terms, I still log in for a crash course in a new skill.

Thursday, January 24, 2013

A Complete Introduction to Command Line

I once heard an author say that when you are a child you use a computer by looking at the pictures. When you grow up, you learn to read and write. Welcome to Computer Literacy 101. Now let's get to work.
- William E. Shotts, Jr
If you've made it past the initial confusion of the command line, then you are likely beginning to see it's value as a programmers tool and are ready to start wading towards the deep end. This is the comprehensive text that will take you there: The Linux Command Line: A Complete Introduction.

And don't let the title scare you away if you aren't committed to Linux. A lot will be the same and all the concepts are still relevant for any UNIX-like system (OSX, Solaris, BSD).

Shotts' has also contributed his hard work to the free knowledge of humanity by releasing it under a Creative Commons license. You can download the PDF if you are student short on cash or just want to kick the tires.

Monday, January 21, 2013

Micks Death Valley Pepper Jelly

If you like a sweet and spicy kick to just about any food you eat, then this is a must buy. We sampled Micks jelly at Seattle Pikes Place market and walked away with a bag full of jars. All were easily above average, very well balanced and full flavors.

But the Death Valley Pepper Jelly is out favorite. Delicious whether it's with crackers and cheese, added to bland canned vegetables before serving, with any cold veggie you'd eat with cream cheese, or my personal favorite; on a simple piece of buttered toast with a side of cottage cheese.

Moss, Every CS Graders Best Friend

This term I have the exciting opportunity to be a grader for my favorite class so far in my formal CS education. It was the final class in the main track teaching C++/Java/Object Oriented Design. It was affirming to spend time polishing the fundamentals of these languages because it gave me the opportunity to reflect in how much I have learned. And the design process for increasingly complicated programs is proving to be a very satisfying experience.

I jumped at the opportunity because, as a grader, I will be able to pour over a immense amount of code. It's fun to explores various solutions and perspectives to the same problem; while also expanding my own frame of reference for approaching a problem.

There is a dark side to grading code. Plagiarism is extremely tempting because of the convenience with which is can be done. A software engineer at work, who also has experience grading, directed me to a plagiarism detection tool that Stanford facilitates: Moss (Measure Of Software Similarity).

It scans code, and generates a report on similarities between any number of source files. The algorithm is more sophisticated then just a line by line text comparison. It's actually looking for patterns (renaming variables and functions would be a vain effort) and rules out content that is expected to be similar (such as a common library).

It allows me to spend more of my time giving thorough feedback to the genuine effort of many, because I don't have to spend as much time weeding out the plagiarism of a few.

I did run in to some issues getting my Moss user ID generated. The instructions are rather terse, and the first time I sent the request I received no response. After a few more attempts I learned the trick is to make sure the email is in plain text (If you copy and paste the html text from the site the request won't go through).

Saturday, January 19, 2013

Command Line Confusion

One of my earliest childhood memories about our computer was a treasure chest full of secret codes scrawled on post it notes. They were actually chains of command line entries so I could navigate DOS and play my favorite games while he was at work. But without these cryptic commands, an abyss stood between me and DuckTales: The Quest for Gold.

For many who grew up in the 90's and later, even those as myself who are predisposed with an interest in technology, the concept of the command line evokes some colorful adjectives: Intimidating, Confusing, Antiquated.

When my first Computer Science class at PSU threw me head first into the command line I began to question my life goals. I endured, and a year later, is still feels foreign.

But I am at least now compelled forward with the understanding that the command line is a necessary step if you hope to pull back the curtain that shrouds technology in magic.

LinuxCommand.org has a great introduction to the command line concept and terminology. Then I recommend heading over to the UNIX Tutorial for Beginners (University of Surrey). It is the best tutorial I have found that is practical in it's scope and pace, without quickly overwhelming a reader who is truly a beginner.

Working at the command line places you at an intimate proximity to the heart of a computer. Understanding that the commands used are merely concise programs that operates on data, equips you with a new perspective. You start to see the foundation and basic building blocks that all software is constructed upon. More importantly, you begin to imagine how you could build more sophisticated programs with those blocks on that same foundation.

Wednesday, January 16, 2013


Why I'm Learning to Code had many purposes. One was simply to open wide the floodgate of resources and reflections I have been accruing over the last year. I will be tagging post categories and eventually plan to aggregate a reference guide for others who might find themselves somewhere along the path I am on. 

That's an around about way of saying you can expect to see me posting more frequently, and specifically on the topic of computer programming.

My apologies, dear reader, if this is not your cup of tea. I hope you can endure this season of life with me. If not, stop back by in a year or two.

Saturday, January 12, 2013

Why I'm Learning to Code

2011 was a year of self discovery; defined by voracious reading. Once I hit my stride I was consuming an average of 2.5 books a week. I was intentionally reading widely with the hope of finding signposts to guide my long term career goals.

One of the more pivotal moments was reading The Information: A History, A Theory, A Flood. In it James Gleick argues that our relationship to information transforms the very nature of human consciousness.

Historically, not being able to read and write rendered you a mere user of the social systems dictated by those who wielded the system for their benefit. Increasingly so, the systems we depend on are being shrouded behind a technological layer of "magic" (Apple/Steve Jobs first touted the iPad as "Magical"). Not having a basic literacy of the reality behind this curtain of magic relegates power to the few who understand and wield the magic.

By the time I read Program or Be Programmed: Ten Commands for a Digital Age, the author Douglas Rushkoff was preaching to the choir: "Computer Programming is literacy for the 21st century."

I began learning JavaScript, hoping simply to peak through the curtain. I was propelled by the basic conviction that this is a necessary basic skill for understanding, interacting, and impacting the world. I didn't have a plan beyond that, but what happened next radically changed the trajectory of my life.

It started small as I moved past "hello world." I began to be conscious of what was happening as I progressed into conditional statements and control structures.

But first to understand what happened next, a quick flashback even further to 2005. My senior year in high school.

All through high school I had my sights set on engineering. I focused all my energy on math and science. But my mind felt horribly off balance, and I decided to focus at least equal energy into history and writing; subjects I had always easily achieved A's with little to no effort. Reading, researching, and writing an essay on Crime and Punishment lit up a part of me that had been dormant. The thrill had me furiously flipping through stacks of books and kept me chained to my keyboard, hours on end, with my heart racing. I had experienced the writer's high.

It was the realization that I had power in writing. After learning and synthesizing new ideas; every word choice can carry immense weight in the transmission of an emotion or an idea to the reader. It's a thrilling endeavor, balancing creativity and logic.

Still I continued engineering for the first two years of college, but finally gave in to my deeper interest in social sciences. I had begun a journey out of the safe pastures of hard sciences, into the mysterious wilderness of liberal arts and social sciences like foreign language, literature, and sociology. I discovered the creative drive, and began awakening to the profound and subtle beauties in art. However, the deeper I went in social sciences, the more I understood the complexity to even understand the problems problems much less having the tools to solve them. In this disillusioned and wandering state I completed my liberal arts education in 2010.

Towards the end of 2011, by the time I was dabbling deeper in JavaScript I saw how everything I love about writing prose was true for coding; the research, the design, the logic, the editing for exacting simplicity and efficient clarity. But even further, the power to build tools.

In January of 2012 I began the year as if training for a marathon. I narrowed my focus and furiously launched into a holistic computer science education; a combination of home-brewed self driven learning and formal academics at Portland State University.

So 2013 marks the beginning of my sprint towards the intersection of technology and liberal arts.