Thursday, January 14, 2016

What are we going to do today, Brain?

Things are getting real. I mean literally: I am building my first Ruby on Rails (RoR) app. Ok, it's just a sample app, made by following along Michael Hartl's Rails Tutorial. It is a simple Twitter clone, but it's a real app nonetheless.

This tutorial takes you from a blank slate, all the way to deploying a finished, working product. It teaches test-driven-development, version control with git, setting up a development environment, Ruby, Rails, etc, etc. Every section of every chapter subtly reminds me of the massive amount of information I still have yet to learn. There are links to almost every topic that is covered that he expects someone like me to not understand. At first, this was a bit annoying and seemed cumbersome. Turns out I truly appreciate the thoroughness and consideration.

Aside from the tutorial, I am working on a couple of projects using WordPress. While these websites are relatively simple and I do not plan on mastering PHP, they are still great exercises in understanding file structure. Also, there is plenty of HMTL and CSS practice to be had. I am also making money while I learn to code, which is pretty sweet!

As if my plate was not overly full already, I finally found a fellow  programmer in training  who is willing to take Harvard's CS50 course on EDX with me. CS50 is an introduction to computer science course. I have to say this is extremely exciting because I believe that in order to ever be a great programmer, I need to learn the fundamentals of computer science. Ideally, I will get much further into this topic than just the fundamentals -but this is a good start, as far as I'm concerned.

I have been wanting to take this course for a while now, but after looking over the course syllabus and watching the first few lectures, I felt strongly (it is recommended) that two should play this game. Well, thank you Salem Hamidi! Turns out I went to high school and played baseball with him, and he is also an aspiring programmer. I won't put his life story on here, but props are due. Thank you sir!

If it seems like I have a lot going on, that's because I do. I also have a life to live, believe it or not. But right now becoming a software engineer is a high priority, and sacrifices have to be made sometimes. Until this point in my life, my priorities were all out of whack. Sometimes I feel like I wasted a lot of time and didn't think about my future enough. But then I remember: I actually thought about my future quite a bit, I just didn't do anything about it.

Today, me and my brain are working on a better future for the both of us.

Wednesday, January 6, 2016

This is my late New Year's post. I have a habit of getting things done late. Maybe I should make it one of my new year's resolutions to fix that. Maybe one should be to fix my grammar.

The truth is, there are so many things about me that I would like to "fix." There are so many, in fact, that to list them would turn this post into a sad diary entry. I have good news though: I am moving passed the HTML and CSS portion my programming adventure, and getting into the real stuff.

My next project is a Craigslist-type website, which I will be building using Ruby on Rails. Very Exciting! I also have a couple of smaller projects that I will be making using WordPress.

As I sit here, writing this post, I feel very determined. I sort of let myself slack off over the holidays. Even the short period of time away from the terminal has got me a little anxious. I know to never do that again. At least not for a while.

Time to set up my first RoR environment. Wish me luck...

Thursday, December 24, 2015

Squeeze every minute out of those 24 hours

Life is short, and days are shorter.

That's a good one. I may have come up with a proverb there. Maybe that will show up on one of those calendars with a daily motivational quote. Until then, how about I stop wasting time.

Currently I work full time, I have a family, I have certain social obligations, I am learning to code, and I need to eat and sleep daily. The thing that allows me to do all this is something I've never really had a good grasp on in the past: time management. It is quite simple when you put pen to paper. Just simply write out what you need to do. Next, prioritize those things. Finally, figure out an amount of time that is either required or that you hope to give to each thing.

I literally had to break everything down. I had to figure out how much of my time my job REALLY takes up. It isn't as simple as 40 hours a week. There is time spent getting ready, commuting, and so on. So when I applied this level of detail to everything on my list, I came up with a very clear plan. I also had to decide which of the things were not very important at this time in my life.

Now, my days have structure. I have a very good idea of where my time is being spent. Think of it like a budget, only the resource I am budgeting for is time instead of money. On a good day, I am about 90% in line with what I planned. But that's not all, as I've also definitively set priorities and distinguished the needs from the wants.

This is just one of the many changes I have made in my life these past few months. Ever since I decided that I wanted to learn how to code, each day has been a test. Each day that ends with a few more lines logged, is yet another day of proving to my self that I can and will do this. And yes, I had to actually prove it to myself. Any time I have had a new idea or found a new interest, it would just be a matter of time before I was on to the next. But not this time. This time I am for real.

One day I may be able to write well enough to get my thoughts and experiences down in a logical and entertaining format. One day I may be able to meditate for more than 45 seconds. One day I may even be able to run a full marathon. But one thing for sure is that one day I will be a paid software developer.

Thursday, November 19, 2015

Lift-off the Dock*

It's been too long. I am so bad at keeping up with this. So much has happened since the last post. I don't even know where to begin. But I can type almost as fast as I can think now, so I'm just gonna go with it. Stream of consciousness blogging. Is that a thing?

So, I have built a website. Not just one from The Odin Project. I wanted to put my newfound skills to real world use. I posted on Facebook that I was willing to build a website for a lucky someone. I believe I wrote about this in the last blog.

Anyway, I built the site: www.coilbutter.com. This was a fun project because I really like the e-liquid they make, so helping them get their name out there was fulfilling in itself, let alone the fact that I actually made the website. I used Word Press to make the site, which helped out a lot. It still took every bit of my limited knowledge to set up and customize the site. Man, I am only 4 months removed from not knowing a lick of HTML and CSS.

The great thing about learning programming is the instant gratification it gives me: I have a problem, I come up with a solution, I make it, problem solved. There are many missteps in between, but the end result is that a problem was solved. And the crazy part is that I haven't even got to the real programming yet. I just made a website. Not software or something that actually does anything.

But that all changed tonight. I have had this idea for a new way to shop for a certain product (sorry about the ambiguity there) and I am now in the process making it happen. I am lucky that I have someone to guide me along in this process, and I definitely recommend that anyone trying to learn a new skill find a mentor. Tonight we set up a virtual machine through Docker. It basically sets up a mini internet so that I can play around with the project I am building in real time. I wish I understood how it worked, and if you are curious, google it.

That brings me to something that has been on my mind all night. So many people have come before me and done some truly awesome things to make my life easier. I mean, aside from the fact that I don't have to hunt for my food or worry about dying from the water I drink. But these tools that are so freely available to me are remarkable. I hope that one day I can contribute something to this world that leaves a mark. It doesn't have to make me rich- it would be enough if it just made someone else's life easier.

I am sure there is plenty more that can be written to fill the gap between this post and the last, but for now, this will have to do.

Sunday, October 11, 2015

Finding a purpose

I have always learned best by doing. In elementary school they told me I am a kinesthetic learner. Turns out, that is a highly recommended way to learn to code: Do, break, fix, repeat! Match made in heaven.

Right now my schooling has me working on HTML, CSS, and Javascript. Unfortunately, I am fresh out of ideas for websites to build. So I posted on Facebook that I am willing to do some work for someone in need, and I ended up with a couple of projects to work on. This is exciting! Now I can use my time and energy on the code instead of spending it thinking of an idea or my own project.

While HTML, CSS, and Javascript are not languages I plan on mastering, they are an integral part of anything built online. What good is a piece of software nowadays if you don't have a website up to show it off to the world? So I am doing what needs to be done. The Odin Project -the online school I am using to learn code, and henceforth referred to as TOP- wants me to learn these languages, so I will learn them. Simple as that.

One thing I definitely want to point out is that there is no substitute for real world practice. I have completed every tutorial and read every word of every page that TOP has lead me toward, yet it took me almost 8 hours to set up my website on a server and to get it up and running. Nothing I previously learned had prepared me for that. I was constantly running into issues and had to search for answers. I am told this is also how a lot of work gets done by actual developers.

Either way, the payoff was well worth it, as usual. My website is up and everything is coming along smoothly. I am still enjoying every second, and I am learning so many things every day. This is something I can see myself doing for a very long time.

When I started out a few months ago, I honestly believed that it was too late. I thought I was too old, too far behind everyone else, and just had too much going on to dedicate the time to this. Now I realize what a terrible way that is to look at it. It's a terrible way to look at anything. I am a human, and that means I can do anything I set my mind to. Wasn't it the Egyptians who built those big buildings in the desert without machines? Yeah, I think I can figure this thing out. I just have to keep at it.

Thursday, September 17, 2015

Still Going Strong

I haven't posted in a while, which would usually mean that I have completely given up on whatever I was writing about. Nothing could be further from the truth!

Ever since I received that dreaded email from App Academy informing me that I did not get accepted into their program, I have been hard at work. I will admit that being rejected was a huge blow to the ego, however, I learned a few things about myself since then.

It turns out that I thoroughly enjoy programming. I actually love it. I love it so much that instead of drowning in my sorrows for weeks on end, I immediately sought out another learning tool to help me get to where I want to be. There are so many resources for aspiring developers, and each one has its own set of pros and cons.

For me, App Academy seemed like the best option given that I had little money to spend, and I wanted to be job ready as soon as possible. The thinking was that any sacrifices I would have to make during the bootcamp would be worth it in the end when I got a high paying developer job. This included a few assumptions of course. I would first have to actually finish the bootcamp. Then I would actually need to get a job, and quickly. Looking back on it now, I am relieved that I didn't get in.

So I did some research: first looking at other bootcamps. I checked out some online schools as well as open-source courses. Given my current situation in life, the best option for me ended up being a free, at-your-own-pace, online curriculum. It's call The Odin Project. You can get all the info you need about it at theodinproject.com.

I have been having a blast lately learning HTML and CSS, with Javascript coming up right around the corner. I must say that the tough application process for App Academy jump started my schooling, and I do not regret it one bit. It actually may be one of the best things I could have done early on. I got very deep into Ruby and learned about a lot of tools programmers use which has made life easier.

Still, this is some very challenging stuff, and sometimes it can be frustrating, but when I get the webpage or program to finally do what I want, the payoff is more than worth it. Experience has taught me that so many things in life are like that.

I plan on posting here once a week at the very minimum, so stay tuned! Whatever you are doing in life, do it with passion, or don't do it at all. I love my life,  and I am excited to wake up every day to see what is coming next.

Until next time...

Saturday, August 15, 2015

Rejected, but not Defeated

I did not get accepted to App Academy.  After a month of long nights, learning concepts that made my head feel like it was going to explode, and constant trial and error, it would appear as if I am walking away empty handed.  Turns out that is not the case at all!

This past month was amazing.  I learned a lot about what it takes to become a developer.  What's more, I learned a lot about myself.  I am going to be a developer.  Few things have been this clear to me in my lifetime.  The constant challenges, with solutions to be found at the finish line.  I love it.

Applying to App Academy jumpstarted my learning, and has only made me hungrier for more.  So now I am taking a step back to find my own path, but I have been blessed with some clear direction as a result of this past month's work.

I don't know exactly what I want to specialize in, or what type of company I want to work for, but I have a strong belief that I am headed in the right direction to find all of that out.  I am still learning the basics, trying to make things work together.  My morning was spent learning how to use git and Github so that I can start a Ruby track from TestFirst.org.  It was very frustrating, especially since I was having a hard time finding the help I needed on Google.

But thats what this is: trial and error, getting failure messages when my code sucks, and figuring out how to fix it.  And I love it!