I've always loved computers, even though I didn't always know that much about them. But when I was a kid and dad was gone on a trip, it was all up to me to
cd around in DOS if I wanted to play some Commander Keen.
So after years of playing video games, I ended up studying electrical engineering in high school, before switching to computer science later on in college. I sort of learned to write Java and C, but didn't much care for either of them.
Then later on, during an internship in a town far from friends and family, I found myself alone in a Barnes & Noble reading "Learning Perl". And loving it. Perl is a scripting language and so I decided: I wanted to work with scripting languages.
I started looking at other scripting languages like Python and Ruby before deciding that Ruby had to be my favorite. It's clean and expressive, as simple or as complicated as you need it to be.
I got to be fairly good at writing Ruby and used it routinely to write little scripts here and there to make my computing life easier. Eventually, I liked writing Ruby so much that I decided I wanted to get paid to write it professionally someday.
It turns out that the most common way to do that is to build web applications as a Ruby on Rails developer. So I bought Rails books. And read them. And followed along on my computer.
I didn't get it.
Time went on and I eventually ended up with a job out of a college as a front-end web developer at an ad agency where I had interned twice before. This time around though, they actually let me touch the code, which demanded that I actually understand how the Web works. More specifically: the job of the browser and what it expects from a server.
It's all in the book, you should totally read it.
I didn't really get it.
But I was getting paid to get it, so I learned. Once I got my bearings (i.e. knew what I was doing at my new job), I realized that a lot of what I had learned would apply to web application development and decided to give Rails another try.
So what was different?
Well, first of all, you need to understand that the technologies that comprise modern web sites and web applications cropped up as people wanted the ability to do progressively more complicated things; they weren't all created equally or initially. These technologies certainly all fit together, but getting to where we are today has been
complete anarchy rather haphazard.
So "where we are today" requires the cooperation of a multitude of concepts, languages, and protocols to bring you the Internet, as you know it, on your computer, your phone, and in your browser.
But the thing that equipped me to build web applications was that I finally had an understanding of all these moving parts, their roles, and their relationship to one another.
Where does one learn these things?
All over. That's the problem. You pick stuff up as needed to complete the task at hand, until one day you realize that you've got a pile of completed tasks and general understanding.
Time again went on and I started freelancing, doing Rails work for remote clients.
Then one day I reflected on my difficulty understanding web applications. I came to realize that I have yet to see a book that covers everything from the ground up, even today.
So I wrote my own.
This is the book that I wish I had when I first tried to learn to build web applications.
Strike that, all of the times I tried to learn how to build web applications.
Well, that's my story. I don't know where it goes from here, but I sincerely hope my work can be of help, as you write yours.
After a bit of bouncing around, I finally ended up at The University of Toledo, which is where I obtained my BS CSE (Bachelor of Science in Computer Science & Engineering). Though I didn't learn a single thing about Web development there, I did learn a lot of indispensible low-level stuff and they got my career off and running by setting me up with some great internships.
Well, I'd love to write a follow-up book about how I polished and launched this application.
I've also been looking for an excuse to better learn how to use NodeJS and would love to write a version of the book/application that uses a NodeJS framework instead of Rails. Python and Django could be interesting too.
If any of these topics sound particularly interesting to you, please let me know!