A journey of a thousand miles begins with a single step.

It’s a quote we have all heard at one time or another. It’s a simple concept, but maybe it’s not always so easy to implement. This web site, blog, whatever it evolves into is my first step in a journey I’ve been trying to move forward on for a long time.

For a while now, I’ve had the ‘vague goal’ of wanting to build websites, and when I say a while, I mean a while. This isn’t a lark that I happened upon in the past year or so. In one form or another, I have been trying to build enough skills and confidence to put my thoughts and ideas on the web for about 15 years.

At first, it was just a vague idea of building informational sites. Perhaps uploading some movie reviews or some thoughts on things I have interest in (see those links up above that don’t currently work as of this writing. I’m interested in all those things in various shapes and forms). Over time, ideas formed regarding scraping and analyzing freely available sports statistics, and I’m sure there were other thoughts and ideas in the past 15 years that have come and gone.

The point is, it’s been a long while to get to even this point.

I started in HTML with HTML Goodies (do you remember HTML goodies? have you heard of HTML goodies? You probably haven’t, like I said, 15 years). Back then fancy layout was done with tables in tables and CSS was still in its infancy. Over time, I tried various languages and learning methodologies in an attempt to be able to do what seemed like a simple goal. I mean all I wanted to do with ‘build websites’ right?

Over the years I tried various things like PHP, ASPX, Javascript, in various ways, Lynda.com, classes at the local community college, a plethora of books, primarily from WROX, and none of it stuck. Sure, I could follow the instructions, but when I was on my own, I’d forget, or I’d get stuck, and, well, back in the good old days, we didn’t really have the plethora of online community that there is now, so it was just me and my machine, and, well, I get easily frustrated sometimes, so my progress would stop, and when it stopped, it stopped for a while, so when I came back to it, I was kind of starting all over again. (Not for nothing, but that’s how it is with me and the video games I play when I play as well)

At one point, I was done with it. I had given up on the idea that I would ever be able to ‘build websites’ well enough for people to want to see them and use them for any consistent reason. Then, one day in 2008, I was reading a chat on ESPN.com from one of their more ‘sabremetrically’ minded writers who indicated he was looking for an intern to help him out analyzing the PitchFX data for a series of articles heading into the playoffs. Now, I’m a sports fan (see it up there) and a geek (see it up there too) so while I didn’t know much about sabremetrics (intermediate beginner remember), i did know databases really well, and though a little research I happened upon existing code (in Python) to download all the PitchFX data from the freely available information provided by MLB and to build the databases in MySQL to query the data. (I have no idea if this stuff still is easily accessible, if it incorporated HitFX data and if anyone ever built a ruby gem for it, but maybe they have, who knows.)

Did I know how to publish the data to the web? Not a clue. Could I make fancy heat maps and zone charts for batters? Absolutely not. However, lucky for me, all the ESPN writer really wanted was someone to work with the raw data and provide some basic numbers and percentages (in Excel worksheets no less). Heck, I could do that, writing queries and normalizing data is FUN for me (yes, go ahead, shake your head, but I love it). So, by some luck of the draw and a few emails I was chosen to be the ‘intern’ on this project. Of course, then I had to figure out how to use the Python stuff that I had never looked at before. Fortunately, my first experience with open source went smoothly. The python code was easy to follow and once I learn how to run the required python files (after building the SQL tables) all I had to do was change the date ranges to get the data.

So, after a few misfires (sometimes the data said an at bat would take an unreasonable amount of pitches, or other oddities. It’s when I learned that just because it’s free, and supposedly automated, doesn’t mean it will always be clean), I figured out the queries needed to provided the data required, and did that for a couple of years come playoff time. I don’t really know if the data was ever useful for the writer, and after a couple years he stopped asking for it, so I stopped doing it. I just let it fade away and didn’t build upon it.

That limited experience pumped my interest again not only to ‘build websites’, but now I had a goal. A ridiculous goal, but it was a goal none the less. I had the simple goal of doing for basketball what Bill James did for baseball. (I had no idea how how hard that would be or that really there was already a lot out there, but hey, at least I had a goal right?). At this point, I didn’t know that many people had tried such a thing and for various reasons it’s not as easy to revolutionize basketball (or football) statistics as it is baseball. This goal of course would mean trying once again to learn some sort of programming language. I knew enough to know that I had to learn something server side to interact with the client side to get the data I wanted and present it to users in various ways depending on what they wanted to see.

So I had experience with Python, and while many people like Python, I didn’t like Python. In one of the courses I took at the community college, learning Python was a module, and it was painful for me in terms of learning and the rigid structure, it didn’t work for me. So, while browsing for other options I happened upon Ruby. If I had to guess the connection it was the fact that Learn Ruby the Hard Way was the sibling of the Learn Python version.

So, once again, I started learning a programming language, on my own, without anyone to talk to or work with or ask questions of when i got stuck, so of course, I got stuck, and as was my history, I got frustrated and gave up. Though this time, I came back, but to other options. I tried Lynda.com, I tried Chris Pine’s Learn to Program and completed it twice. I tried Pragmatic Studio’s Ruby Programming videos, but, as usual, nothing stuck. I couldn’t think of anything I wanted to build in Ruby, and outside forces worked to sap my motivation, but then, I found Rails.

I don’t remember how I ended up with Rails, but like anything else, it took a while and many attempts to move forward. I tried Lynda.com, I tried the Pragmatic AGILE book (but I didn’t like scaffolds, too much extraneous stuff), I tried the Hartl tutorial that I’m sure many people have had great success with, but all of them were failures. The failures were mine. A combination of variety of factors that boiled down to me meant none of these would stick and my frustration would again take over, and then I finally found what worked for me. (I’m what is known as neuroatypical, so my brain probably works much differently than most of you.)

I can’t tell you why I decided to try again, or how I found the right combination for me, but I did, and that’s how we got where we are today. So what was that ‘magic formula’ that worked for me you might be thinking? (Or you might not be, I mean did you even get this far?). Well, just in case you were wondering, here it is, not in a particular order, just the order I remember.

Foundations of Object Oriented Design video course through Lynda.com

This course will not teach you a single programming language, which, as it turns out, was a very important first step for me. This course will teach you the fundamentals and principles of Object Oriented Programming languages. You won’t write a single line of code while taking this course, but if you absorb it you will learn about Classes, Abstraction, Polymorphism, Encapsulation, Inheritance, and more. You will learn many of the things that, in my opinion, you should know before learning any specific language. Anyone who asks me how to get started I point them to this course. (Lynda.com is not cheap, but if you sign up and stop half way through the signup process they will email you with a free 7 day trial. If you only want it for this course, you can do that).

Manning Publications

As I mentioned above, I’ve tried a lot of books by a variety of well known tech publishers. Books that, for a variety of reasons, never worked for me. Books that, I’m sure, have worked for a large amount of people, but never worked for me. I don’t remember how I found Manning Publications in general, but I have found that, for some reason, the structure and make up of their books is suited for me. I currently have quite a few Manning books in my online account, some of which I haven’t touched yet, but the two that are relevant now are The Well Grounded Rubyist and Rails 4 in Action. Now I will admit that I haven’t finished either of these books, but from what I have been able to finish, I got to the point of publishing this (albeit primitive) web site on my own.

Local Meetups

Again, I can’t tell you how I started looking at meetup.com, but I did, and I found a few local meetups that actually worked wonders for me. I connected with people at a variety of experience levels (some where I used to be and some where I hope to be one day) and that interaction, even if only every couple of weeks, with people trying to do the same things as me has helped. Just having someone to talk to face to face every once in a while does marvels for my morale even if I don’t always learn something new (but I often do). If you are struggling, feel free to ignore my learning suggestions, but check meetup.com and see what’s around you that might help. You probably will be pleasantly surprised.

The internet itself

And of course, last but not least, is the fact that there is now a large and easy to find online community of people to talk to and get help from.. Be it StackOverflow or just that fact that the Ruby and Ruby Gems have evolved, so that I can learn new things but not have to build everything from scratch, I’m now at a point where I feel like I can truly achieve something real with my plan to ‘build websites’.

So now, for those of you who are still with me, you know the basics of where I’ve been, and a general idea of how I got to this point where I’m writing this article. Here is my website in its alpha form, for lack of a better term. I can write drafts of articles, that you can’t see. I can publish them, and you can comment (anonymously for now) on them. I’ve created, while not spectacular, a layout that works to display information for now, and over time, I will make additions and revisions to make the web site hopefully easier to use and more function.

Well that’s all well and good you say, but why publish this now? Well, there’s a variety of reasons to publish now that I will list in no particular order:

  • To have a web site, no matter how small or basic, active on the web. I have a lot of ‘large’ ideas that I’m working on that will take a long time to be ready to be publishable, so publishing this, even in it’s alpha form, is a step forward, and that’s a good enough reason in and of itself
  • To share my progress, thoughts, and musings with anyone who finds this site and enjoys reading what I have to say. Now, when I make changes (like when I implement markup and liquid layouts for the purpose of making my articles more dynamic), and learn something new, I can actually write about that somewhere. I’ve found blog posts from people learning just like me in the past and they’ve been very helpful and motivational
  • I have a lot to say about a lot of things (see the categories above?) and why not say them here instead of chronically boring the few people in my life with my varied and voluminous opinions on things.
  • I’m sure other things will occur to me later, so there’s a bullet point for those future ideas

So, that’s where I was, where I am, and why this is here. Feel free to share (anonymously of course) any thoughts below.