School has begun!

Alright, so I just took the last week off to get mentally ready for college. It’s been 7 years since I graduated from Rutgers! My way to get “mentally ready” was to just binge watch TV shows and movies and lay in bed a lot and pet my animals (2 cats and a dog). I’m sure hiking, meditating on top of mountains and swimming in lakes of serenity would probably have been a more efficient use of time, but hey, what’s done is done.

Today was my first day of school! After getting into one final class that I thought I wasn’t going to get into, my final schedule is… Intro to Computer Science, Internet Programming, Rails, C and Java. Yeah, that’s a lot of computer classes. Maybe I overdid it? NEVER!

The “internet programming” class is essentially everything taught in Treehouse’s front end web dev course…HTML, CSS, Javascript, Ajax, etc. This is probably the most directly applicable class for my flexible amoeba of a future career, but who knows! I’ll be taking a database course in the fall, and maybe that’s where my true passion resides. That’s why I’m glad I’m going the college route..it makes you take classes you wouldn’t ordinarily want to take. I don’t really get to pick and choose my way to the degree.

Ok homework time.

Fiiiiiine, I’ll make a web app

The other day, Apple officially slapped me in the face (rejected my iphone app). I was heartbroken (not really). Anyways, tonight I was bored so I adapted my iphone app into a web app!

I used python, Flask, deployed it to Heroku, and then pointed my personal domain’s DNS to the heroku site. At first, I was going to use a postgreSQL database to store all of the possible first and last names, but that got too dramatic. (I forgot how to do it), so I ended up just having one file.

First, I included a makename() function that had 2 lists (firstnames and lastnames). Then, I assign firstname to a random item from the firstnames list, and I did the same for assigning the lastname. Then, the function returned a concatenated fullname.

first_name = random.choice(first_names)
last_name = random.choice(last_names)
full_name = "%s %s" % (first_name, last_name)
return full_name

And here is the 2nd function:

@app.route('/')
def got():
    dj_name = make_name()
    return render_template('index.html', dj_name=dj_name)

So that was that! All I had to add into my index.html template was {{ dj_name }}! I also put a .css file into my static folder cause I like to get **stylish** 😀 For a good guide to walk you through creating a flask app that will successfully deploy to heroku, follow these instructions.

Javascript

So I spent a long time yesterday learning java, and today I decided to skip around and learn something else. While I have definitely dabbled with javascript, jquery, etc over the last 6 weeks, I decided to dive into javascript today.

The other day, someone told me that there’s a million jobs right now for people who are good at javascript. Sounds good! I’ll also learn node.js and angular. Might as well!

Whenever I catch myself on reddit for too long, I instead go to team treehouse and just pick a random course and learn. It’s probably the best habit I’ve developed this year. If I have nothing better to do, I always just keep learning.

Java

Ok so in a series of events, it turns out I will be taking Java this spring instead of Objective-C! I was instantly terrified, because I had heard people talk about how complicated Java was. So instead of remaining intimidated, I decided to take the Java Basics course on team treehouse, and guess what…it’s not so scary. So far, it just looks a lot like C. That’s something my friend Zed has been telling me this whole time, is that after you become comfortable with a bunch of different languages, you realize they are all pretty similar. They all do the same stuff. I’m sure the differences between them become more glaring when the codes become more complicated, but at this point in my education, I can just focus on the similarities.

Zed’s advice to me, and now my advice to you, is to learn as many languages as you can. The most important skill to learn early on is the ability to learn new things. It’s easy to google for the exact method you want in a language (wait… this is ruby…is it .touppercase? .toupper? .upcase? gah!) and no one expects someone to have everything memorized all the time. But I know to google “to upper case ruby”, and can very quickly get the answer and move on. That’s what’s important.

Efficient googling is a great skill to develop! Never be scared to google, and start recognizing Stack Overflow as your new best friend. If you end up getting an insane error in a program, just copy and paste that long error message into google. You will be surprised. A lot of other people have gotten that same error before, and there are answers!

Going to continue learning Java today, right now I’m still using team treehouse, but I’ll probably watch some lynda.com videos later.

The web app IS the web site…

Ok so the other night, I spent a few hours on the Ruby section of Code Academy. Even thought I’ve already been through lots of ruby tutorials, doing another can’t hurt! The best part of teaching yourself to code are the resources…everyone out there who is really good at coding seems to build their own “learn coding!” website, meaning that there are SO MANY websites that go over all of the different languages. Endless practice!

Right now I’m watching a video on Lynda.com about rails and how it creates pages dynamically. That was actually one of the biggest conceptual hurdles I had to overcome when learning Django (a python equivalent to rails). I had always written all my websites as static sites, and I didn’t know there was an alternative way. This means I would write the files (index.html, aboutme.html, anotherpage.html, etc) and upload all the images (bio.jpg, ottersholdinghands.jpg) and just upload them all to my godaddy file manager and tada! Website!

What I’ve since learned is that there’s an entirely different way to make a site: dynamically. This means that when someone goes to your site, the page is created by your framework right then and there. I thought that when I learned Django, it would mean that I would write a little poll app (using their wonderful documentation) and I would somehow install it on my regular, static site. This is NOT how this works, and it took me a good solid week of frustration to figure that out. I would be constantly asking my friend Joe “Wait so where do I put this web app?! I want to put it on my site!” and he was pretty confused. Fair enough! The web app IS the website.

If you’re going to be using a framework (django, rails, etc) to make a site, that means that everything about the entire site is going to be written using the framework. You’re not going to write your normal index.html file and then upload it anywhere. You’re going to write your index.html file and have it as a template for a view. This is why the MVC (model view controller) pattern is so important to learn early on.

Ok back to rails!

FizzBuzz, Odin, jQuery…

The first thing I did when I woke up today was code FizzBuzz. If you’re unfamiliar, it’s a popular script that every programmer should know how to code. I try and randomly write it from scratch every once in a while, because the best way to learn something is to 1) memorize it 2) see how long you can go without thinking about it 3) and then recall it successfully. That last part is the most important. So, for example, when I first learned FizzBuzz, I would code it from scratch once a day. When this wasn’t a challenge anymore, I changed the exercise to once a week. Now I do it about every 2 weeks. The longer you can go before you code it again (correctly) the better. However, if you go to write the code and mess it up, that means you waited TOO long, so relearn it, and then try again sooner next time.

But it is also important to remember that coding isn’t all about memorization. What I am trying to memorize during this exercise is not the exact wording, or the syntax, or even the language at all. I am trying to memorize the routine of coding. I am learning the way to code, the exact script I’m writing makes no difference. It is important for me, in this programming whirlwind, to maintain what I currently know and build upon it. The skill I’m working on when I do this is learning to solve problems using code.

This morning I wrote fizzbuzz using python, but I think I’m gonna do it in javascript, ruby and c in a little bit.

Something else I like to code from scratch every now and again is how to find prime numbers. Try it: write a program that takes a number from user input, and finds all the prime numbers between 0 and the given number. I tend to like math puzzles the best. If you ALSO like math problems, definitely check out Euler Problems.

Someone on Instagram this morning recommended using The Odin Project, so I decided to give it a shot! So far it’s great. It walks you through a ton of resources if you want to be a web developer. As a way to practice my HTML/CSS skills, I just spent the last 2 hours recreating the google homepage (as per their recommendation). Tada!

The next thing I worked on today was the jQuery course on CodeAcademy. You will soon realize that I jump around a LOT. This tends to keep my focus more, and I can only work on one subject for a couple hours before I start to fade. I’m gonna make a fun jQuery project tonight…

 

Treehouse Front End Web Development course

Ok so I thought a full rundown of my experience taking the Team Treehouse Front End Web Development course would be fun/helpful. This website has been CRUCIAL to my learning. It’s really kept me going when I felt like I didn’t know what to do next. If you’re currently trying to teach yourself to code, it is definitely in your best interest to join this site, join a track, and just chip away at it every day.

The first sections are HTML and CSS. At first I was like “no thanks, I’m not a designer, I’m going straight to back end development, I don’t need this!” and now I’m not so sure. Taking these first classes have helped me SO MUCH over the past month. When you’re working on templates in your Django app, totally understanding HTML is necessary. When you’re learning Javascript and JQuery later on, you NEED to know how the DOM works. Sass is amazing, but it means nothing unless you know CSS. Oh man, and learning Sass on Treehouse is amazing because the creator himself teaches the lessons and he’s hilarious.

The course then goes through basic programming and javascript. Even if javascript isn’t your main language (mine is python), it’s all the same stuff. Just slightly different syntax. Javascript has lots of {}s.

Then there’s kind of a random HTML forms course. It’s short, and good to know. Just take it and move on.

Nothing will make you want to learn JQuery more than first taking the “Interactive Web Pages with Javascript” course. Oh shit, if I remember correctly, THIS course was really hard. The instructor moves really fast, so if you don’t get it, DON’T WORRY. I barely made it through this portion, and still got out the other side. JQuery is waiting for you, and it’s beautiful. You must get through the Interactive course so you can get to JQuery, where your mind will be blown and the world will seem limitless. Funny enough, when I lived in the computer science house at RIT for 3 months, the creator of JQuery lived on my floor. Hey John!

Then there’s a couple more random HTML courses you should take just cause you should definitely know that stuff. And then AJAX! This was a great course, and if you do want to work in front end web development, basically all websites use this and you need to know it. It’s essentially a way for a website to send the user more info without them having to refresh the site. This will make sense to you, and it’s lovely.

Accessibility and Web Optimization left no real lasting impressions on me, I don’t even remember what was in there. But then comes Console Foundations. If you aren’t already comfortable using your Terminal (or command prompt), this is a very important step. Web dev takes place in the console, and that will be where you hang out, so get used to it. Typing commands into your Terminal also makes you feel like a hacker, so get ready to rollerblade to your nearest subway station and hack the world.

The last step of the track is “Git”. This is THE way to keep track of all your projects, and everyone uses it, and so will you. Also, go ahead and start a Github account and start uploading everything you do. It’s nice to have a place to go to look at all your old code and see how much you’re improving!

All in all, I would say DEFINITELY take this course. It’s free for the first 2 weeks, and $25 a month after. I got the free account thinking I was going to cancel it right when the free trial ran out, and now I view this site as a valuable tool that I use every day. Also, you can tweet to the teachers and request courses, which rules. Thanks Kenneth! (He’s the python teacher)

 

My first iPhone app! (more dreams are dashed…)

Two days ago, I made an app called “The Game of Thrones Random DJ Name Generator App”. The title basically explains it, and I posted a pic of it on my Instagram. I was really proud to have learned juuuust enough Objective-C to already have a working app. Understanding that MVC (model view controller) model has been super helpful. It’s everywhere!

I wanted to just throw my app online, but I couldn’t find a way to do that. Yeah, I guess I could have just uploaded the whole project to github, but then only the nerdiest of my followers would be able to figure out how to use it. No, I needed a better way. After asking around, I found out the only real way to do it is put it on the Apple app store.

I was like “Ok FINE, I’ll pay the $100 to get the Apple Developer license to do it.” I plopped down the money and went to find the upload button. Waaaaait, there’s no “upload” button. Oh I have to get this certificate? Ok fine. 30 minutes later, I’m all “OK LETS DO THIS!” Waaaait…I have to archive my project and have it validated? Alright… so let’s just do that then. NOPE. ERRORS EVERYWHERE. First, I had to make about 9 different sized app icons. None of them were ever the right size, and they were being denied left and right.

When I finally got the go ahead on the app icons, apple was like “Nope you need screenshots”. So I had to go and make 5 different screenshots of my app for different sized iphones. Might I remind you that my app is DUMB. Like, really dumb. If I had known how much work it would be to submit it to the app store, there’s NO WAY I would have done it. Which makes the whole thing even better. Ignorance was definitely on my side, this time.

After about 5 hours, and a few computer-out-window moments, it was finally submitted. Whew! Then I found out it takes 1-2 weeks to get accepted. Accepted?! You mean a human being is now going to look at my app and decide whether it makes it or not? Well, it was fun while it lasted. I feel like there is a 5% chance of my app getting accepted, but even if it get’s rejected, which it will, it’s still a start. And now I view that $100 deposit as a personal challenge. I WILL break even on my Apple developer fee this year. That’s a promise! Worse case scenario I’m out $100. Best case scenario is I’m a mother f-ing billionaire! I’ll take my chances, world.

Week Four

Alright so now I am up to the last week of January…which is when I switched over to C and Objective-C. I started off with Learn C The Hard Way, then I started taking the Objective-C course on Team Treehouse. The treehouse course moved way too fast for me, though, so I got a Lynda account and watched their amazing Objective-C Essential Training course. I HIGHLY recommend these videos, plus the narrator sounds like Liam Neeson, it’s incredible. So I spent a lot of this week bouncing around between LCTHW, Treehouse and Lynda, trying to absorb as much C as I could.

I also dabbled with Ruby this week, just to remember how it goes. I went back and forth between LRTHW and Treehouse. I find it much easier to learn a language using multiple sources than just one. It helps me figure out which parts of the code are essential/universal, and which parts are specific to that teacher/lesson. Ruby and Python are very similar to me, except Ruby has these things called “blocks” that I haven’t quite figured out yet. Luckily Treehouse just released a new course on blocks 2 days ago, so I’ll jump on that soon.

I haven’t been coding too much in Python this past week, but I feel like it’s still my main language. If you asked me to code a simple program right now, I would do it instinctively in Python. If I were allowed to use google, I could then redo it in Javascript, Ruby or Objective-C.

That pretty much catches us all up to where I’m at now! What a month! I feel like I’ve been incredibly lucky to have an entire free month to do nothing except code. I would say I spent about 10 hours a day on programming for 5 days a week. I generally took the weekends off. I treated coding like a full time job and it’s already really paying off. However, if YOU’RE just starting, don’t worry if it’s totally unrealistic to dedicate that much time. What I did this past month is basically insane. I would recommend 1-3 hours a day, if you can manage it. You can make really good progress in that time frame.

 

Week three!

My mental time line is getting a bit fuzzy, but I will just list all the things I did around this time.

I started a github! I started putting up all the little python scripts I was writing, including a few Euler problems and some Reddit Daily Programmer challenges. I look at my codes now and I see very linear programming, which works for small programs, but doesn’t scale up well. I use more functions in my programs now, but I still don’t usually use many classes/objects.

I continued using Team Treehouse for a few hours every day. Around week 3, I finally finished the front end web developer course. It took a lot of hours! And using my new HTML, CSS, Sass, and Ajax skills, I made this glorious Cat Site. I regret nothing if not bringing that cat site into the world a decade too late. By the way, none of those “cat forms” actually work, but the idea of people filling them out and trying to send them to me is beyond hilarious.

I was also looking at boot camps. I was browsing constantly, dreaming of summer camp coding scenarios where I make lots of “hacker” friends and we hack the world together ALA Hackers. But my good friend Zed, who knows a lot more about this stuff than I do, told me to avoid them. Am I good at learning by myself? Yes. Do I have someone that will let me ask endless questions? Yes (thanks Zed!) Do I miss being around other human beings? YEEEEEEES. Around week 3 is when the isolation of learning in my bedroom truly hit me. I wanted friends. I WANTED FRIENDS. So at Zed’s suggestion, I enrolled in community college. What a good idea! It’s a LOT cheaper than a bootcamp, it lasts for longer, and I’ll maybe make some real life friends along the way. Because of my previous physics education, I will be able to get my AS in Computer Science in a year! And then I will have an official, accredited degree. So as of Feb 16th, I will be going to Santa Monica Community College in LA, and I’m super stoked. I will be taking Intro to CompSci, Internet Programming, Objective-C and Rails.

If you are a La Sera fan, don’t worry, I will also be recording a new album this spring 😀