Friday, July 25, 2014

Fun with Ruby...and a Little Bit of Python

I'm still building stuff in Ruby. I think the more that I learn, the more interested I am in programming. I'm making progress on the STE(A)M Truck app and now I also have other people to help me, since I presented it at Code for Atlanta on Tuesday night. I'm the only back-end developer, which works well for me, because once I get it finished, hopefully by this weekend, I can learn from the UX and front-end developers.

The only issue that I'm running into on the STE(A)M Truck app is that my latest commits didn't get added to the heroku app. For some reason, the branch that I created for that session of coding also disappeared, also. I tried a couple of things, like re-pushing it to both github and heroku, but nothing worked, so I'm just hoping that when I push the latest commits the problem will resolve itself.

I started looking at django tutorials, as well, this week. Right now, and I have only just barely gotten past the installation instructions; I am the opposite of impressed. Hopefully, that will change, but I definitely want to learn it, or at least get a decent amount of experience with it, just in case I need to use it for...developing stuff.


on youtube.com

On the career front, I applied for a fellowship with Code for America and I completed step 2 of the process on Monday. I'm really hoping to get this so that I can move to San Francisco for a year to just work on coding and civic hacking. This would be perfect for me not only because I would love the experience, but if I get the fellowship, when it ends, I will have exactly 2 years of commits on github and the necessary prerequisites for a job in coding and web development. It would also allow me to just work on my coding, by working on personal and freelance projects, and go to the gym until it actually starts in January.  I took this year off from the gym to learn coding and I'm really looking forward to getting back in there in August.

UPDATE: The problem I was having heroku with the app has resolved itself. I did, however manage to break it again and spent a few hours resolving that issue, but it is working.

Tuesday, July 15, 2014

Building Stuff.



I just finished the Ruby on Rails Tutorial for the second time. This time was more fun, because I wasn't in such a rush to get through it. The first time, I wanted to see everything that I could do and complete the project. This time I was willing to go a little slower and change some things up. Although, I did feel myself trying to rush some parts so I could get through it.

My next step is to read the tutorial, again. I felt like I learned twice as much going through the tutorial the second time as I did the first, but I still feel like I have a lot to learn. I am going to use this next run through the tutorial to create my first real project using the base program that I made in the second run. This time through I made a few slight modifications, like using first_name & last_name, instead of putting it in one field. I also left out the gravatar image part, so the I can allow the users to upload their own photos going through it this time. I plan to complete all of the additional exercises this time, as well as change the user experience of the app, taking time to get a better grasp on CSS & html. Well, the html isn't to difficult, there are just some things that I hadn't seen before I did this tutorial and I want to have a better knowledge of what's available. I would like to work on my JavaScript as well, but I may save that until after I finish this trip through.

I have a couple of ideas as to what I want to make this app into, so I'm struggling slightly with the direction that I want to take it in. I do know, however, that I want to add a user_name and allow the users to upload their own profile pics. The other features that I will add will depend on the exact direction that I take the project, but I'm pretty excited.

I feel like I'm finally at a point where I know enough that I can kind of relax and take my time building things. I'm still going to keep coding every day, but I'm past the introduction stage and making my way into a more intermediate level of coding and developing. Even though I was told when I started that the best way to learn would be to actually start building stuff, I'm the type of person who needs to see the whole picture and what's available first, before I start going off on my own.

I also have a couple of side projects that I'm going to work on this time through, as well. I'm going to work on  STE(A)M Truck project and probably design my own blog app, which shouldn't be too complicated. I've already started on both, but I'll probably just restart the STE(A)M from scratch. This will let me practice on other projects while I think through exactly what I want to do with the one I'm working on now.

Monday, July 7, 2014

hmmm...




I haven't been blogging much lately, mostly because I'm doing the Rails Tutorial, again, for the second time. At this point I'm just trying to get good and get a firm grasp on everything in Rails. I'm about half way through Chapter 9, now. Everything just seems like nothing to really blog about at this point. There's nothing new to me anymore. The mistakes that  I'm making, I'm solving and correcting pretty quickly, and more than anything, I'm trying to internalize how everything works.

I'm building my own app this time, so I'm changing some stuff up as I go, which is really forcing me to understand what I'm doing. When I finish, I plan to go back through again to really customize my app. For instance, instead of using gravatar for profile pictures, I want to use CarrierWave, so that my users won't have to sign up for a different site to have a profile pic.

As much as I'm enjoying Rails and learning the backend, though, I'm really looking forward to customizing the CSS on this and adding my own look and feel to this app. I probably should take some time and just do some brainstorming on this and taking notes.


Wednesday, June 25, 2014

Programming for Everyone #PR4E


Last weekend, I did Goodie Hack ATL and found another project to work on: STE(A)M Truck. I like this project. My team is coming up with a technology solution to interact with the students, maximize the time at each school, and organize mentors; this is something that I plan to work on over the next few months, at least. We're going to start with a Ruby on Rails web app and an Android mobile app; it should be a pretty neat project to work on.

I really got back into Ruby on Rails, in earnest, this week. I restarted the Michael Hartl's Rails Tutorial, and I'm currently on Chapter 4. I'm finding that I'm able to complete a lot of the sample_app without using the code in the book for anything more than comparison. It's amazing how much more I understand what's going on in this tutorial the second time. I think that my biggest take away from learning to program, so far, is that no matter how enigmatic and mystifying something may seem when you first start, as long as you stick with it and do the work, it will eventually become clear to you. I was confident that I would be able to pick this up, but that doesn't mean that I'm not impressed by the difference in where I was when I started, and where I am now.

Dr. Chuck with one of his sweet tattoos

I also finished my first MOOC this week on Cousera: Programming for Everyone(Python) with Dr. Charles Severance. If you are interested in learning Python, or if you are interested in learning to program and you don't have a language in mind, then I highly recommend this course. The course was better than any of the other Coursera Python courses that I have taken because:


  • It was real world programming: there were no virtual environments. You set up Python on your computer and used it like you would in the real world. I have taken other Python courses that were based in controlled environments and didn't like it. In fact, I was taking one when this course started and I un-enrolled and concentrated on this course.
  • The assignments were appropriate: the assignments for this course were challenging and helpful without being so hard that they required an inordinate amount of time to finish. I only completed two exercises easily; one of them was the homework for week one.

  • Dr. Chuck is awesome: I enjoyed the lectures. He wasn't going over the top attempting to entertain the class, but he kept the videos pretty light and very informative. I also feel like he used the appropriate amount of time covering each topic, I'm not a fan of courses that go too slow and I have dropped courses for that reason. He also wasn't moving through so fast that the average person couldn't keep up [imo]. Another thing that I liked is that Dr. Chuck travels a lot and has office hours with the students in the cities that he visits. Although he didn't visit my city, I enjoyed the suspense of whether he would. If he had come to Atlanta, I definitely would have been there. [He travelled all over the would during this session]
Anyway, I finished the course, did all of the homework, and got 100 on my final. So I'm pretty stoked about the whole experience. The only draw back of the course is that there isn't a part two. If you are interested in taking this class, the next one starts on October 6th. 


Monday, June 16, 2014

Objective C and Other Distractions



So I've been working with Objective C since last week...and this is starting to get a little bit frustrating. Python was supposed to be my thing on the side and now I've picked up something else...and loving it.  I have found, and still find, Objective C to be a little cumbersome, but I'm also starting to like it. I  also feel like it's helping my overall growth as a programmer, but it's making me question learning languages like python and ruby, because you don't want to deal with languages like Objective C, afterwards.

I'm also being tempted by other things...like Java and JavaScript...and getting better with HTML and CSS.
Going to all of these hackathons and talking to other coders is  piquing  my interest in other things and just really getting me excited about coding. Coming in, I didn't really know about the limitations of languages as far as what they could be used for. My biggest surprises/challenges were:






      • not being able to use any language to make mobile apps
      • having to have an MAC to make apps for iPhone and iPad
      • having to learn Objective C to make apps for iPhone and iPad
      • having to learn Java to make apps for Android
      • not being able to compile ruby and python into executable files


To be fair, I read/was told/heard that the best way to go about programming is to decide what you want to make, and then learn the things that allow you to do that. However, no one tells you the above. I think that a major problem with learning to program is that the people who really know how to code don't really think or rememeber what it was like in the beginning. When I started learning, I was fascinated by programming, in general, and I wanted to make things...all kinds of things. For me, it would have been much better if I could have just used python or ruby to do whatever. Something that I also heard, in the beginning that maybe threw me off a little was that you can use any language to approach a problem, which is true, but misleading [see above]. 

But to get back to my original point, I have being hearing a lot of great stuff about JavaScript, like Angular.js and Node.js, and I'm really interested in learning more about it. At the same time, I want to learn about Java to make Android apps, and C/C++ so that I can make executable programs and because I also heard that execution was much faster than programs written in Ruby and Python...and this is just the beginning. My world is just opening up to this stuff. 

The frustrating part is that there is still so much that I still want/need to do and learn in Ruby, and like I said, I've just kind of been treating Python like a side project. I keep catching my self contemplating trying other languages [like the other day when I almost started that Angular.js tutorial]. 

I want to make an app or two using Ruby, and at the same time, I want to do some engineering things using Raspberry Pi. Oh well, I guess I need to just get back to it...

Sunday, June 8, 2014

Having to type "NS" and "@" is Front of Everything is Not Ok.


This weekend I attended a hackathon at the AT&T Foundry in Atlanta. As always, I learned some new things, got different perspectives on coding, and met some cool people. That was the good stuff, the not-so-good stuff was the way that the event was structured. This was only my third hackathon, but I have gotten used to all of the ideas being pitched and then being able to join that team and work on the idea that I liked the most. This was not that. When we got there, it was basically: find a team and make something, which meant finding someone to work with, agreeing on a problem to be solved, and then agreeing on the solution. I think that putting so much of the burden on the participants made for a much less productive event than it could've been.  Most of the people at the event spent the entire first night trying to find a team and come up with an idea. Personally, my team didn't even have a viable idea until 4 hours before the judging and we ended up not even presenting. 

One of the things that really struck me about this event, was people coming to the event in teams and being really secretive about what they were working on. This wasn't a widespread issue or anytihng, just something that stuck out. In an environment where everything is going to be open-sourced in the end, I think that this attitude in non-productive. I think that people do this for two reasons: a.) they want to split the prize "money" with as few people as possible, and b.) they overestimate their idea and underestimate what new perspectives and talents bring to the project. When people come to hackathons with this mentality, their time is wasted if they don't win a prize, and if they do win a prize they exposed their idea to others on the cheap. They don't learn anything new that they couldn't have gotten form just going to a coffee shop or other work-space and building the project, they open their ideas up to appropriation, and most importantly, they don't meet new people. Sucks to be them.

Anyway, I think that my most positive take away from this weekend was my need to either learn Java or Objective-C so that I can work on mobile apps. While I love Ruby and Python, I also think that being able to convert my applications to mobile apps is going to be important in the future. To that end, I have started learning Objective-C and I'm completely missing the point. I haven't gotten too far into it, yet, but from what I've seen, I can't understand Apple's decision to devote resources to build their own languages for their applications. Ruby and Python seem like way better solutions at this point and I just really don't see the appeal of Objective-C.

 Although, I am enjoying taking some time to look at a new language. I can't really see myself spending a whole lot of time on it, right now, but I'll be really ready to get something out of my study when I decide to. I'm going to start building stuff in Ruby and Python in the immediate future, but soon..

Also, I did manage to get some cool T-shirts from Crittercism this weekend, though. 


Thursday, June 5, 2014

Look, Ma! No Hands.


I wrote my first python program for my homework assignment, today, in about 3 minutes flat just going through and typing out how I think it should go. Besides accidentally using .strip(), instead of using .split(), I nailed it on the first attempt; when I looked at the output, I knew exactly what I had done wrong. My python skills pretty much just snuck up on me.


protip: .strip() was from last week's homework.

I've been focusing mostly on ruby and taking this python course and going to these meet-ups. It's funny looking back at how far I've come in my programming since January, but I also still have an amazingly long way to go...