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 😀

Week two…Django (or how I learned to use Flask)

The entirety of my second week learning to code was filled with anxiety and frustration. Every day, I would attempt a new Django tutorial online, and fail at making it work. I would follow along, step by step, and get SO CLOSE to finishing the app, and then my terminal would show “ERROR!” and theirs wouldn’t and I’d be stuck again.

I would then quickly move to a different tutorial and try again, only for it to end up the same way. Looking back (to 3 weeks ago), I think a lot of the problems I was having were related to not using a virtual environment while coding, and therefore my system just not being in the same state as the system in the tutorial. Makes a lot of sense to me NOW, but at the time I was definitely in throw-my-computer-out-the-window mode. I had no idea why commands were working for THEM and not ME. “My computer must know I’m a fraud…”

If you’re just starting out with Python/Django or Ruby/Rails or WHATEVER language/framework you’re using, do NOT skip all the virtual environment shit they want you to do. Turns out, it’s pretty important!

So I FINALLY have a Django app that I can successfully run on my local server and it totally works! By the way, this app was only HTML and CSS. No actual models or database or anything. But it was working! So I tried to deploy it to Heroku and…AND…

I had a few more days of throwing my computer out the window moments. Turns out, it’s really hard to write a Django app all willy-nilly style and then try and write the requirements.txt file AFTERwards. I couldn’t remember all of the libraries I had used, what’s a Procfile? And oh jeez if you google “what do I do?!” there are 1 million answers and they are ALL unique. At this point, I definitely had some “maybe this IS too hard for me” moments.

That’s when I found Flask. Whoa whoa whoa you just put @app.routes above the individual views and that’s that? Simply cutting down on the need for lots of separate files really helped me form my understanding of how Model View Controller frameworks operate. And hello wonderful Heroku tutorial that finally helped me launch my FIRST successful app! (Link has been temporarily removed for repairs) That heroku link is officially on my bookmarks bar forever. Yes, my app is silly, but it works! Also, if you post anything to the “blog”, it gets deleted after about an hour because I used a SQLite DB, and Heroku only supports Postgres (which I haven’t learned yet!) And the contact form actually emails me, which is really cool. (My web app is currently DOWN because I forgot that I was trying to install a snazzy login system and it wasn’t working, but I will update this with the link later!) I accidentally learned a lot about gmail smtp settings, from following some random tutorial on how to make a contact form.

I love accidentally learning things. I haven’t actually gone back and used Django since then, but I do feel like I have the skills to make it work now.

Also worth mentioning is that during this week, I was spending at least 5 hours a day on Team Treehouse, working on the front end web development track. It starts with HTML, and I was BEYOND bored for some of it, but I would definitely recommend starting there. It was a wonderful refresher and I did learn a few things that I’m glad I know now. When my Django frustrations were peaking, I would switch over to Team Treehouse and learn some css. It was CRUCIAL for me to be able to skip around and learn something else when I got frustrated.

It was also during this week that I did all of Codeacademy, learning javascript. Javascript has all of the same elements as Python, it just looks a little different. I think that’s been one of my favorite parts of this journey, cutting through all of the mystery and seeing what’s really there. It’s not as hard as I thought it would be. Once you understand loops, they are basically the same in every language. That was a wonderful discovery!

Week One…Python!

Alright so… December 30, 2014. My path begins with the Learn Python the Hard Way book. I go through it pretty quickly, because 3 years ago I had briefly learned Ruby, so it all seemed somewhat familiar already. It was pretty easy getting through the first 30-40 lessons, where I also got to make another game! I made the La Sera game in a day and put it online, so exciting! Nothing quite as fun as putting a new program online. I was still miles away from actually deploying my first real web app, so I just put the source code online for other programmers to download and run on their own terminals. At the time, that seemed like the only thing I would ever be capable of doing.

Also, my understanding of classes / objects / etc was still very limited (and still is!) I was using classes left and right, but a lot of the time I felt like I was just going along with the book and couldn’t think that I would ever be able to recreate any of this code on my own. I’ve been suffering from “Imposter Syndrome” from day one, and I know that it’s going to be an uphill battle for a long, long time. I’ve also heard that women are more susceptible to imposter syndrome, so I’ll let you know how that goes. “Still a fraud? Yup!”

I finished the python book after 7 days. The end of the book has us deploying an app online, but I was still very confused about frameworks, and I had NO IDEA how something like Django worked. Onto week 2…

Hello world!

So yeah, that’s a pretty generic title. In fact, it came along with my first sample blog post entry. But I thought it was a pretty appropriate start for this blog. Because…this blog will be my attempt to share with you my journey to becoming a web developer / computer programmer / database superhero / who knows! My journey ACTUALLY begins back in late December, and I really wish I had started this blog then. HOWEVER, better late than never…

This story actually begins a long time ago. When I was younger, I was super into making programs in Visual Basic, creating web sites, etc. When I originally went to college at RIT (for 3 months), I lived in the Computer Science house, even though I wasn’t a comp sci major, because I just LOVED computers. However, I was just never ready for an actual computer science course. I felt like they were all going to be too hard, and I would feel too dumb, so I just hung out with programmers instead of becoming one. I dropped out of RIT after 3 months because I wasn’t ready for school, but I went back to college for REAL a year later. I went to Rutgers in NJ, and got a Bachelors in Physics and a Masters in Education of Physics, all without ever taking a single computer course. Oh the regret! Don’t get me wrong, I love physics, but I would just much rather be a computer programmer right now than a physics teacher.

However, as soon as I finished my degrees, my band did kind of well, and I spent the next 7 years touring the world as a full time musician. What a crazy experience! It’s been super rewarding and amazing all around, and I’m excited to continue to write, record and release music for the rest of my life. However, a music career has left me with a lot of downtime. A lot of hours of my life have been spent binge watching shitty tv shows, wasting time on youtube, going on long walks to nowhere, etc. While this worked for a while, for the past few months, it was giving me a lot of anxiety. I felt like I was wasting time, but I didn’t know exactly what I should be doing, until a friend helped me figure it out.

3 years ago, while going through a difficult time, I found myself somewhat isolated in my bedroom with nothing to do. My friend Kate Dwyer suggested that we make a website! It was going to be some sort of music themed social media database of musicians and blah blah blah essentially a website that was WAY beyond our HTML skills. We tried to find a “coder” who would essentially just build this website for us for free. (AAAAH, now I can see why that wouldn’t be so easy to do…) But not wanting to give up, I decided that I would take one for the team and “learn to code”. That is how I found the Learn Code the Hard Way books. This was EXACTLY the style of learning that made the most sense to me, and I began going through the Ruby book. Zed Shaw, the author, was super helpful answering my email questions, and gave me lots of tips and tricks throughout. After I made a choose your own adventure game, located here: Vivian Girls Adventure Game, MTV actually gave me an O Music Award for “Best Artist/Digital Entrepreneur! I was on track to becoming an amazing programmer and then….tour. I had to go back on tour for the rest of the year. And the dream was lost…

Fast forward to a month ago. I’m sitting on gchat, browsing reddit, watching videos of otters holding hands and whatnot, and Zed Shaw suggests that I take up programming again. There was a lightning bolt moment where I realized that that was what I was supposed to be doing! It all made sense! I had to go back to my roots of computer nerd-ery and fulfill those long lost dreams.

That’s where I’ll cut this entry off… What I will do next is make a few entries that explain the different stuff I’ve learned over the past month. Once I catch up on all of that, I will let this blog become a time capsule into my exploration into programming. Onwards!