All posts by Drew

Unknown's avatar

About Drew

I am a gamer, Christian, father, husband, geek and now a code learner. Not necessarily in that order.

Over, Around or Through?

The past couple of weeks have been a long slog. Between personal struggles and coding roadblocks I have secretly been looking for a nice quiet rock to climb under. I knew full well when I began this coding journey that it would be slower and take longer than I would like and that reality has been needling me as of late.

Too busy to code. Too tired to code. Get a bit of time to code and then get stuck. The walls keep coming up.

I have entered the algorithm section of my studies and my previous experience with other courses have completely dried up. Up to this point, much of what I was working on I had at least seen in other contexts. No longer am I slinging some HTML around and tweaking it with CSS. No sir. This is finally some real, actual programming.

Many of the exercises revolve around string and array manipulation. I feel like I’m operating the late night JavaScript blend-o-matic. It slices. It dices. And if you order now we’ll even throw in the “Everyday JavaScript Cookbook” which lists every method known to man.

A few things have proved to be quite thorny for me. Namely when to use new variables and some miscellaneous syntax annoyances. One of the first challenges was to check to see if a string was a palindrome (can be spelled the same forward or backward). This actually took me two days to finish and I can clearly tell that my solution is a big ol mess.

I am embarrassed to say I used exactly seven different variables just to make it work. I found using regular expressions a bit of a pain as well. I would like to look up alternative solutions to this problem at some point but for now I had to simply accept that what I did worked and move on.

Not every challenge stumped me. I actually found the more mathy parts to come fairly naturally to me. It was a needed boost to knock out a few challenges on the first try. The other benefits I found to doing these problems was really ironing out how the syntax worked together. I threw my fair share of infinite loops and undefined variable errors but in the process learned all the great ways to “not” solve the problem.

I am also growing much more comfortable with reading the documentation as well as utilizing the log function to really understand what is actually going on. I was intimidated by google’s developer panel at first but now I am finding it impossible to work without it.
Looking forward, I am hoping to been finished with the last few algorithm challenges this week. Coming up will be a short section on JSON API’s and AJAX, then on to the next four projects. I have already been dreaming up some ideas for those which of course will likely insure that it will take three times as long as it should.

How my daughter taught me about accessibility

Spending the last few months learning about programming has been an eye opening experience. I have become painfully aware of how much there is to learn when faced with the seemingly endless number of technologies and concepts that go into even the simplest of things.

As I finally start to grasp the basic but necessary “how” portion of my learning I have begun to ponder the “who and “why” as well. I have learned that who will use the program or website I am building and why they would even need it are necessary to consider when attempting to make something useful.

A recent revelation has really put things into focus for me, and undoubtedly will shape some of my emphases as I continue down this programming path.

First some back story. I am the father of two fantastic young girls one of which was born with a condition called Periventricular leukomalacia. Her condition has several challenges associated with it namely cognitive delay, poor eyesight, some fine motor issues, speech impairments as well as seizures. While her symptoms are considered mild for this diagnosis, her main struggles are around her mental function.

She thinks and acts like a child who is many years younger. At eight years old she still struggles with letter and number identification among other things. For all her challenges she has a strong independent streak and an enviable drive. She doesn’t want to hear that she can’t do things her older sister is doing. She’ll try regardless of what we think she is capable of and often times impress us all with what she able to figure out on her own just by working at it continually.

My wife and I were in our basement recently working on our computers when we started hearing her little voice through the monitor. “Rockband” she said. There was a pause. “Rockband” we heard again. I went upstairs to see what she was up to and I found her tucked under the covers of my bed playing with her Nabi (tablet).

I asked her what she was up to and in her signature way replied “just nothing”. I walked over to see what she was doing on her Nabi and I noticed that she was on Youtube watching videos of the game Rockband (something we love to play together). Needles to say I was impressed. She isn’t able to read or write but she was able to find the microphone icon in the search bar and use it to bring up whatever she wanted.

Other than share what I saw with my wife I didn’t spend much time thinking about it the rest of the night. A few days later I was once again on my computer but this time she was sitting right next to me using my wife’s computer to play some Minecraft. I got a chance to watch her more closely this time and was no less impressed than before.

She clicked on the Google Chrome icon and was taken to the default home page where she proceeded to once again click the microphone icon and search for “toys”. It was right then that the concept of accessibility hit me like a truck.

In this wonderful moment of discovery I had learned the power that comes from breaking down a barrier and opening a world to someone that was previously reserved only for those fortunate enough to have certain particular abilities.  

When accessibility has been brought up in conversations that I have heard it typically centers around visual impairments. What was so instructive for me was seeing it play out in a totally different context. I thought to myself, “if this is something that can help people overcome their limitations, what else is out there?”

One really great resource I have found recently is the A11y project. The project bills itself as “A community-driven effort to make web accessibility easier”. It’s goal is to educate developers on many of the “best practices” of accessible web design. It not only tackles the practical how to’s but also explains how widespread the need really is.

The four main areas of accessibility listed are visual, auditory, motor and cognitive. Interestingly, I found my own daughter falling into three of those four main groups. When you really start to look into the range of people affected in some way by limiting factors you realize just how impactful accessible software can be whether on a website or a native application.  

Many people we would never have considered “users” of software are interacting and even relying on its very existence everyday. If we ignore these needs we are cutting off a staggering number of people that would want or possibly even need to interact with the websites and programs we create. Isn’t more users better than less?
As I progress through my studies I now have more than a passing interest in the concept of accessibility. I am fortunate in that I can merely glance over at my amazing little girl and see first hand the power and freedom that accessible software can provide. I can think of no better motivator to focus on accessibility than the promise of making a real difference in the lives of people who need it the most.

What I learned from helping others with code

There is a lot of great advice being shared all over the internet on the best ways to learn to code. As someone currently on this journey myself, I have been soaking it all in like a sponge. While the majority of it has rang true for me I recently discovered an awesome, yet never talked about method to enhance my learning.

I had just finished a project as part of the Freecodecamp (FCC) program and was looking to get some feedback from their community. FCC uses Gitter to connect the “campers” in a messaging/chat format and offer a way to get and give help with various issues. I linked up my project and got a thumbs up from someone else in the channel. While I was in the process of submitting my project, another person hopped in and started asking for help with the same project I had just finished. After a bit of silence I very reluctantly offered to try to help, but I felt the need to mention to her that I was only just learning myself.

I nosed around her code for a bit and was surprised by just how different her approach was. After a bit of digging I was able to figure out what was going on and help her sort through her issue. I allowed myself a mini fist pump and was preparing to log off when someone else typed out that they also needed some help. Again, I mentioned that I was also new but I would try to help him also.

All at once it became apparent to me that I had learned just enough to be helpful to people that were at, or nearly at my level. I also noticed that helping others solve their issues was enhancing my own understanding as well. I was hooked.

There are countless examples of code all over the internet but it’s rare for me to find works in progress. Helping others with their code gives me a glimpse into what they are thinking and how they are going about solving problems. Just seeing what classes they apply to their HTML can be instructive. I had never had a reason to study up about a parallax site until I was checking someone else’s code.

Our minds prefer familiar paths and thought process but when you are helping others solve problems you get to take an approach that you might not otherwise have taken. I firmly believe that trying new things or doing familiar things in new ways broadens your understanding and lowers your resistance to learning in the future.

Another benefit I discovered by helping others was a sense of accomplishment. Both in the sense of “ya, I did something” but also in the awareness of leveling up. It’s very hard to measure your skill level when learning something new. Helping someone else solve their coding problems validated me in a way that other subjective measures hadn’t. Just being able to answer some random questions felt like I had passed a mini test.  
While it may seem counter-intuitive to try helping someone learn while you yourself are still learning I assure you that there is more benefit than meets the eye. Don’t worry if you feel like you don’t have all the answers. Adding what both of you know to what you can figure out will likely get you to a solution. The reality is that you won’t be able to help everyone with every problem but what have you got to lose? If you try and fail you at least will have learned something. On the other hand if you are able to help them, you are multiplying your results and both of you will be better for it.

And on the home front, war rages on between Good and Good Enough

I have found myself in a quandary lately. It is clear to me now that I lack the ability to discern what is “good” and what is “good enough”. Trapped between these two similar yet profoundly different concepts I have been unable to finish a project I have been working on for the past several days. How far do I go? When is it enough? The answers to these questions and more have rendered me paralyzed. I feel trapped inside of my own creation. 

I do not purport by any means to be working in the realm of high artistic value, quite the contrary.  But what I am doing requires expressing myself in a way that feels oddly personal. The project in question utilizes many newly learned skills to construct a personal portfolio website. Not rocket science, I know. But the struggles I am sorting through can just as easily be applied to any creation that we draw out from inside ourselves and set out for the world to see.

The connection between the creation and it’s creator are linked in a way that judgments, both internal and external are reflected from subject to author. To call something finished and share it to the world takes a certain amount of confidence and faith or at the very least indifference.

Confidence is a very personal trait that not all of us have in abundance.  It’s usually displayed in a range starting from “George Costanza” at the low end,  all the up to “Muhammad Ali”. It may come naturally for some and can be a powerful enabler. For the rest of us, the lack of said confidence is more of a feeling to push through than a force to thrust us forward.

Faith on the other hand is an acceptance of the unknown. What will happen if I push this out? Will people care? Will they hate it or think less of me? We never really know the reaction we will get when we put ourselves and our work out there.

People can be unpredictable and often callus. In seconds a random person can crush a positive feeling we hold with nothing more than a dismissive or mocking remark. To make matters worse our imaginations can compile an almost sadistic future scenario full of every possible negative outcome far and above what anyone would ever actually encounter. Scary stuff for sure.

With all this potential pressure many of us are often forced to judge our own works through the lens of both ourselves as well as others.  Every decision is questioned. Every idea is measured against what others have done. Is it good? Does it need a bit more? Maybe less. I don’t know.

Good can be defined as “to be desired or approved of” or “having the qualities for a particular role.” In other words, when you’re satisfied with it. Speaking for myself only, I find this concept of “good” to be elusive. I don’t remember ever completing something and have been totally satisfied with it. It can always be a bit better. I could have always worked on it a little longer or added a few more things. Good is always just a few steps ahead of me.

If good represents satisfaction, then “good enough” would be more akin to acceptance. It’s that level you reach when you have met the basic requirements and it fits the general idea of what you had set out to make. There is nothing wrong with good enough. In fact some would argue that when the requirements are met you should stop right there. Anything more would be outside the scope of what you were trying to do. If it’s still not to your liking the best course of action would be to re-define your requirements.

It’s this middle ground between good and good enough that we should be aiming for. If we are trying to achieve our own personal idea of “good” we may be missing the mark and inflecting ourselves with an unobtainable goal.
If I were to offer up any advice for someone also struggling with this internal conflict, it would be to clearly define what your hoping to create. Be specific. Picture it in your head and then write it down. The better you understand what you’re hoping to accomplish the more likely you are to recognize the space between the unattainable “good” and your true goal of “good enough”.

On your marks, get set…GO!!!

These last two weeks have been a complete roller coaster ride for me. After starting up at freecodecamp.com (FCC) I have been surging with ups and downs. Fear and joy. Even full on nausea (OK, that part was actually from the flu). Needless to say it has been quite exciting. I’ll try to refrain from drifting into fanboy territory but so far I am highly impressed with what FCC has to offer. It truly is the most well thought out and compete course on programming I have tried as of yet. As part of the curriculum, you are required to take steps that are merely suggestions in other courses. They have you sign up with Linkedin, Medium, CodePen, Reddit, Github, Twitch and even their own Gitter group. While this seems like a ton of things to plug into, they are all concrete resources that will aid you in your transition to a real programming career. On top of all the ancillary things, the actual course work is really good. Real coding using real tools making real things. I haven’t felt this empowered in a long time.

All of the courses involve reading about a concept and then immediately practicing it. At the end of each section there is a project that utilizes the skills you have learned as well as pushes you to add in your own style. It was during my very first project that some realities started to finally settle in for me. Up until this point, I had been following along nicely with the lessons and learning a few new tips and tricks along the way. I was taking notes as I went so I could better lock in all the new information I was learning and I even watched a few video’s on things like Bootstrap when I wasn’t working on the assignments. My confidence was high and I felt ready to jump into whatever they would be asking me to make for my project. The first project they have you build is a tribute page for a famous person you admire. All of this would be done on Codepen so there wasn’t anything stopping me from jumping right into the coding. I picked my person, none other than the great Sir Isaac Newton, wrote up a description of the project and then…blank.

I probably only stared at my computer screen for all of three minutes but in my mind it felt like an hour. My hand went to my chin and my eyes drifted off, unfocused to the side of my screen. “Why am I confused by this?” I though. The instructions seemed easy. The example was simple and straightforward. What’s the deal? Slowly I began to realize that I was no longer in my comfortable, familiar surroundings. Somehow the road I had be traveling down had taken me somewhere altogether foreign. I felt like I was standing on the moon. I quickly tried to retrace my steps to remember where I was supposed to begin. I re-read the instructions and in the start of the video explaining what to do I noticed that the instructor used a div with a jumbotron class…”Ok, what’s that?” I though. Off to google. I found a couple of sites explaining that class and how I could use it. Great, now I need a title. “H1, I remember that one.” Now for an image. “Images are easy, but how do I get the sizing and such right?” And on and on this went. I literally talked to myself the entire time. I did feel like I needed to look up a lot of things that I already learned and a bunch that I didn’t.

The most surprising thing for me during this whole experience is finding this awkward junction between what I can do and what I want to do. It’s one thing to have someone say, “Just copy what I did.” And quite another to say, “Here is how you can do it but feel free to make it your own”. “Do what I did” means follow these steps and when you’re done you have something to directly compare it to. “Make it your own” means the world is yours, go look for all the things that look cool and try to learn them but when you’re done you’ll have to judge how well it turned out on your own. The licence to try things outside of the basics is great but the number of options available is almost paralyzing. The possibilities are endless. Ultimately, it’s this freedom to explore that will likely teach me more than any pre written lesson ever will but it can also feel like a never ending series of rabbit holes to go down.
I think the best metaphor I can come up with to describe how this project went would be to imagine being on a bicycle, completely stopped and then try to take off in the highest gear. Your whole weight coming to bear on the pedal only to move the bike ahead so slowly that you are thrashing your handlebars back and forth to keep yourself balanced just long enough to get some momentum. While I never felt like I reached even a decent speed I was able to bike all the way to the finish line and maybe next time I’ll remember to start out in a lower gear.

Hurry, the villagers need your help!

Learning to code takes time, endurance and often can lead you down some interesting and unfamiliar paths. It will be frustrating but it’s the challenge that keeps us going. The promise is that if we just continue to attack the problem we will eventually overcome it and we can move on to the next challenge stronger and smarter than when we started. The concept of “gamification” has become a popular way of building skills and keeping people engaged in what can be a very long a difficult process. The premises is simple, give people small challenges that push them to grow in some way and reward them often for doing it. The modern MMORPG (Massively Multiplayer Online Role Playing Game) is a clear example of how a series of challenges that rewards players in a meaningful way can keep people engaged for a very long time. Allow me to go full on nerd here and draw some parallels between the MMO world and the challenges of the budding programmer.

Leveling up is one of the core principles of gaming world. Typically players start out at level 1 and earn experience points (xp) in a variety of ways pushing them ever closer to the next level. In an MMO players gain xp for killing enemies, exploring new areas and completing quests. The higher your level the more your stats increase (intelligence, strength and agility just to name a few). The higher your stats are the more powerful you become and the more capable you are of taking on bigger enemies and tougher challenges.  In programming we are also leveling up. We gain xp from exploring the lands of a new language, slaying coding problems (our enemies) and completing quests, often in the form of real world problems that need our help to solve with code. The entire time we are gaining xp we are also increasing our stats. We gain more knowledge (intelligence), we learn to smash through challenging tasks (strength) and develop a wide variety of skills that give us the flexibility to tackle a problem in many different ways (agility).

Combat systems in an MMO can be akin to the processes used to create programs. Functions and algorithms become our spells and weapons. As players level they are granted new abilities that are effective in different situations. When an enemy arises you will need to use the right abilities at the right time to slay him. Take the Compile monster in the land of Java for example. When you try to charge at him he might just laugh at you and hit you back with the mighty “Hammer of Null Exception ”. If charging is all you know you will never defeat him, infact he may send you retreating to your base camp to recover from your wounds. In order to defeat this particular enemy you might try casting the “Spell of Null Check” to render his attacks useless. There are also the Div Trolls. These wily creatures can be quite frustrating. They possess the ability to dodge your attack by moving to a different place on the screen or turn altogether invisible. If you picked the CSS talent you could strike them with the “Illumination” ability (.illumination { border: solid red 1px;}) to break their invisibility and allow you to properly line up your attack. There are countless examples but the path to becoming a powerful coder will require the mastering of many different abilities and the understanding of when and where to use them.

Exploration can be both exciting and terrifying at the same time. In an MMO we typically begin our journey in one of many different starting areas depending on what type of character we choose. These starting areas generally ease us into this new world and get us comfortable with the way the game is played. While this can be a good introduction and an enjoyable experience, players will typically get bored with the basics and wonder what is further down the path. In the same way, new programmers have a variety of starting points from which to choose. No matter what you start with you will typically begin in the most basic areas trying out simple commands and building from there. The landscape is all new and seems mysterious at first but you will quickly become familiar with your surroundings and start to wander further and further from where you started. While you may choose to stay in your original lands and become the most powerful player in that zone, more than likely you will charge off a new direction looking for your next adventure.

Questing might well be the hallmark of MMO genre. Players interact with virtual characters that will enlist your help for a variety of tasks. Sometimes they will send you on a simple errand to gather needed supplies and other times they will plead for you save their entire village from the relentless torment of a nearby dragon. No matter the request, you are the one responsible for making their pixelated lives better and improving the world around you. Typically there is a reward given for completing the quest but ultimately the glory of being a hero and the experience gained will outway any gold earned or loot received. In the same way that helpless villagers will implore you to help them in their desperate hour, people in the real world are also looking for a hero to rescue them from their particular problems. Quests can come in all forms in the programming world. People have more needs than they can count and often the solution can achieved through some well reasoned and carefully constructed code. They might send you on a simple cat photo gathering mission to brighten their day or ask you to change their lives forever by bringing them specific health information at just the right time. There are quests everywhere to be completed from the mundane to the seemingly impossible. It is up to us to accept these challenges and slay those real world problems with the power we obtained through programming.
If you are just beginning your adventure and are overwhelmed by the vastness of your new surroundings, take a minute and remember that everyone starts out here. No one is born knowing how to code or play an MMO. We all have to go through the same starting areas and build our skills gradually. The key is to load up, login and get playing. There is only one way to get better and that’s simply to work at it. Get out there and slay those monsters, save those villagers and it won’t be long until that starting zone and your low level self are nothing more than a quaint memory of a powerful warrior.

Who’s up for some camping?

My mind has been occupied recently with the idea of starting a new online course. At this point, I am no stranger to online learning but so far have not felt like I have found a course that feels complete enough or has worked well for my particular needs. I have been most of the way through a Udacity course on Java, completed a few different frontend courses on Codecademy and started several video tutorials from various sources. I have learned a lot from each of these but I have been mulling the idea of starting something more focused. Something that has a clear and complete path forward. Something like Free Code Camp (FCC).

I first heard about FCC from an interview on the CodeNewbie podcast with the founder Quincy Larson. The host Saron, talked to him at length about the his beginnings, the state of code learning and his ambitious project to provide a learning platform that is both comprehensive and totally free. As a former educator, Quincy has a passion for empowering people through learning and his FCC organization promises to deliver a rigorous web focused curriculum and helps out non-profits at the same time. After hearing him talk about his concept and philosophy I was intrigued.

The idea behind FCC is that there are many hurdles that people face when trying to learn to code. Many people do not have the opportunity to pursue an intensive college course or boot camp due to financial reasons or family obligations. His goal is to breakdown as many barriers to learning as possible and allow people to better themselves with a marketable skill set. The icing on the cake is that when you have completed this lengthy program you have the option to do actual work helping a non-profit and gaining real world experience. The course is not geared toward the “learn it in a weekend” crowd. In order to complete all four certifications it would take a hefty 2,080 hours. Not exactly for the faint of heart.

What really spoke to me was the honesty of it all. Learning to code is not easy. It does take time and lots of effort. Many places can make the “learn X programming language in a month” claim but how well can you actually learn by force feeding knowledge into your brain as fast as possible? I’m not saying that it can’t be done but for me it doesn’t sound particularly effective. I don’t mind putting in the hours as long as the end result is a solid understand and usable skills. As an avid player of massive multiplayer online role play games I have an odd love for the long slow grind. Incremental improvement, building towards a powerful state of being is what I’m all about. Only question now is…should I pack my “bug” spray?  #dadjokes

Why am I so itchy?

I had previously alluded to the fact that I have been bouncing around between many different programming languages and classes in an attempt to test all the waters. Never actually committing to anything specific is both fun and frustrating. It feels like everything that I want to try involves learning a whole new syntax and thought process. The obvious “you’re doing it wrong” comes to mind a lot for me. I suppose the main redeeming value for me are the lightbulb moments where the new thing I’m doing is almost exactly like the old thing with a different look (think loops). So far it has helped to cement the underlying concepts, likely at the expense of more actionable knowledge.

I have heard many times that “scratching your own itch” can be a great way to go when you’re looking for direction. Taking that advice to heart has lead to an interesting little side project recently…game addons for World of Warcraft. I have been an avid WoW player for many years now and have been the consumer of addons but never the creator. For those who are outside the gaming loop, addons are small scripted programs that function inside of the game to change the look, give you reminders of things to do at the right time or provide some other additional functionality that is not included in the main part of the game.

As many do, I went to YouTube to check out some tutorials and found an awesome series by a YouTuber named Mayron. Up until now I have played around with some Java, Javascript, HTML, CSS, and even a touch of Ruby. World of Warcraft uses the Lua scripting language as well as XML so starting in on this I was once again hitting the basics to get going. I followed along with the video’s and was really getting excited by the progress I was making. The example addon he was creating in the video was designed to tracks “buffs” (temporary abilities that players get) and change settings via a configuration screen. I had gotten to a point where I could add a UI (user interface) frame to the screen that contained buttons, sliders, and checkboxes. Things were looking good.

The method he used strictly involved using the built in API (application program interface)and pre made frame elements to avoid using any XML code which greatly simplified things. With my confidence high I went to bring up the next video in the series only to discover that the project had been abandoned. Queue sad trombone music. It turns out that Mayron had intended to continue making these videos but couldn’t find the time as he was in his third year of university and totally swamped with school work. So what to do now? Should I move on to the next thing, look for other tutorials in the same vain or maybe just dig deep and try to learn on my own? It is clear to me now that his video’s got me just enough of an early win to push me further on my own.

Unlike some of the more widely used languages, lua for warcraft addon’s is quite specific and doesn’t have a ton of up to date information. I was able to dig through some sites geared toward beginners as well as opening up several other similar addon’s to learn just enough to get some basic functionality. I can’t say that I understand everything that went into the program but in the end I had used a default UI frame, implemented a random number generator that pulled phrases from an array, added some custom slash commands to the game, enabled the frame to be moved and the position saved for the next login. In other words…I made an addon that worked and it did what I wanted it to do! Even a week later I am grinning just writing this down. 

It’s a funny thing this. Nearly as soon as I finished the addon I immediately thought of three more things I wanted to add to it. My mind reels from all the possibilities. After this little side project I can say now that the world has been cracked open a little wider for me and I’m loving what I see 😀

Programming is the Devil’s Tower

I have spent the last couple of months poking at the edges of this new found passion and a few things are quite apparent to me now. The world of programming is in some ways everywhere and all around us and in other ways totally hidden. When I look at a program, game or website I see a polished interface, some pretty graphics and neat functionality. Until very recently I was never able to look “under the hood” and see what all went it to making these things work. I knew there was “code” but the complexity and nuances were never apparent from its beautifully skinned exterior.

Having finished a few courses on codecademy and listened to many many hours of podcasts on the subject I am finally starting to put the pieces together. It seems at this stage of the learning game the more you learn the bigger the world gets. Every door opens to ten more. When asked about what it takes to get into programming, my brother-in-law told me to keep pulling the string that unravels the sweater (poorly paraphrased). I never realized how big that sweater really is.

My family took a road trip one summer from our home in Iowa, up through the Dakota’s and much of the northern parts of America. While there were plenty of brochure stops and long stretches of open expanse, one place intrigued me more than the rest. Devil’s Tower, in Wyoming is one of the more unusual sights that I have ever laid eyes on and when you first catch a glimpse of this volcanic monolith, you notice immediately that it stands in near solitude. Rising nearly straight up from the ground it is the only real visual for miles around.  It’s apparent driving up that this is what you came to see.

Walking up to the base of the mountain, you notice immediately the long hexagonal columns that make up the entire face of this spectacle. Many of these long columns extend from the boulder field surrounding the base all the way up to the top. As you might assume, climbers treat these vertical tracks as a pathway to what I can only imagine is a spectacular vantage point. As a boy on a giant playground of sorts I immediately started shimmying up the first crevice I came across, only to realize after about fifteen feet of ascension that free form climbing was more challenging than I first thought. The reality of the situation kept me grounded but didn’t deter me from dreaming of what the top of that mountain must look like.

There are many hiking trails surrounding Devil’s tower and it was on one of these trails that I discovered a curious pit stop. Just off of the trail (to the best of my recollection) there was a small, fixed sight scope. When looked through, it pointed the eye to the remnants of a wooden ladder consisting of pegs attached to the side of one of the columns. This was reported to be left from the first people to ever summit the mountain. I remember vividly the “ah ha” moment when I suddenly realized how someone could scale such a thing. I witnessed many a climber make the trip up using various routes and equipment but this…this was something that I would have dreamed up to get there.

I now stand once again at the base of this mountain (metaphorically this time) searching out my path of ascension. Programming appears to me to be this giant mountain with many different paths and unique challenges on all sides. So far I have continued operating in much the same way as the boy I once was, running up to any small crack and crevice and climbing up fifteen feet or so before coming back down. I don’t feel stuck like I can’t make it all the way up but it’s always the next path down that looks like the right one . Every time I try something new I learn a bit more and I am growing stronger and more confident with each attempt. I have come to the realization recently that at a certain point I will get just high enough that coming back down will no longer be an option but until then I am content to circle the mountain looking for the scope that points to the path that is right for me.

Best crap in town

I’m relatively certain that I am not the first person to start a blog about the journey of a code learner. When I think of the sea of other bolg’s that are also out there I am reminded of a trip I took to Mexico many years ago.

It was in the bustling boarder town of Nogales that we were wandering through the noisy shops and street vendors. It was obvious that most of the shops offered a very similar selection of goods and there was little to set each vendor apart except “the pitch”.  Some pleaded, others pushed but my favorite were the jokesters. One such purveyor caught my attention and had a pitch that I will likely never forget and often quote. In a loud and boisterous voice, a proud(?) middle aged man would stand out in front of his shop waving his arms and shouting “Come check out my crap…Best crap in town”.

Needless to say his self deprecating jokes and (truth be told) complete honesty were enough to make me laugh and draw me in for some guilt free tourist shopping.  This image was firmly in my mind while considering what would make someone wonder over to my corner of the interwebs. My intention for this blog is to be both a tool to document my learning process and a place to share my thoughts.  This is primarily for my own satisfaction but if someone else can learn a bit from my experience then I guess we both win.