Sunday, September 21, 2014

And Now Back to Our Regularly Scheduled Programming...



So about that long post that I was going to publish...yeah, that's not going to happen. :)

I had a little adventure going that didn't quite work out, but now I'm back to focusing on Ruby, Ruby on Rails, and the STE(A)M Truck app, which I plan to deploy for the initial test run at the end of the month. To that end, I have restarted my reading of  Pragmatic Agile Web Development with Rails 4, from the beginning and I'm on Chapter 4. I have also restarted reading Beginning Ruby From Novice to Professional, from Chapter 6. Because I've been learning so many different languages, I just want to make sure I have everything straight, before I start the actual coding on the STE(A)M Truck app, so I'm doing little small apps, exercises, and programs to test out my ideas. I'm pretty sure that I have it under control, the only thing that's really giving me a little trouble is allowing the users to add images to the projects and how to display them, but that's something that I'm going to work on after I get everything else in order. It would be cool if I had someone around my level to work with; It would be better if I knew someone who was already good at Ruby and Ruby on Rails that could answer my approximately 13 billion questions. Sometime I go on IRC to ask questions, but it's a little bit frustrating trying to get answers on there. Always helpful...but still, a little bit frustrating. Sometimes I think that people may not like that I only come on when I have a question, so that's a thing, too.

I started catching up in my Algorithms class, this weekend. I had only watched the intro lecture before yesterday, but I'm over half way through week one. I think that I'm learning a lot and some problem solving things are starting to clear up, but there are some math concepts that I really need to brush up on. I've also realized that I don't know enough Java to actually do the programming assignments for this class, but I'm going to still work through the class for the exposure to the material on algorithms and Java. It's not that I don't understand what's going on, I would just have to stop the video and figure it out, and I would rather start learning Java by reading books and doing tutorials, and take what I can from the class. I learned about Koans about a week ago, so I'm going to try those, as well. At this point I can take my time learning Java and just do the class for fun. I'm actually learning a lot about algorithms. I signed up for another Algorithms class at Stanford that starts in October, though. So I should definitely be ready for that. I just looked at my Coursera schedule, I have two more classes that start in 8 days. It's probably best that I'm not going to try to do the programming assignments and learn Java, too. I have a few Java books that I'm going to read. I'll probably start reading the first one on tomorrow; I want to spend today getting set up to get the app that I'm working on done in time.


OT: I don't know how I feel about the iPhone 6. I think that I have a free upgrade, but I'm just not excited about getting a new phone. For one thing, I don't know if I want the 6 or the 6 plus and I know, for sure, that I don't want anything that takes my fingerprints [pic related]. I don't really understand how people can still be so trusting of this kind of thing in the wake of the Edward Snowden leaks. Regardless of how you feel about what he did, we now know the types of things that our governments are doing with technology and surveillance and how companies are cooperating, forced or otherwise, with these efforts. While it may be unavoidable, I'm still not super comfortable with supplying bio-metric information to a large corporation that supplies governments and other companies with my personal information, know what I'm sayin'.

Another issue, is that Apple has been disappointing me since Steve Jobs left. It seems like I've been having all sorts of problems with my upgrades and iTunes. Last night, I upgraded to iOS 8. In order to do that, I had to erase all of my music...since the update required over 4 gigs of memory. I was okay with that. The problem was when I went to load my music back onto my phone, iTunes, on my computer, just assumed that I no longer wanted to enjoy that 4 gigs of music and deleted the whole playlist. So I would just like to thank the good people at Apple for allowing me to spend my Sunday morning rebuilding my playlist for the gym today: 'preciate that.

I don't know anything about Android phones, but I do know the frustration of trying do things on my friend's phones. I think that I'm probably not going to worry about trying to change phones, right now. I'm relatively happy with what I have since I got my music back on this one, for now.

In other news, this was pretty funny...so now I'm also reading The Soul of Man Under Socialism, by Oscar Wilde. I like this guy.


Sunday, September 14, 2014

Sabbatical...

I'm going to have a pretty big blog post coming soon that will encompass last week, this week, and next week. It's just not the right time to post. :) You can expect the next one in 7 days.

Friday, August 29, 2014

Learning Java...



I now know what they meant when they were saying that Ruby and Python are languages that are designed for the programmer vs. the computer, and how they make programming fun. Initially, I thought "how can programming not be fun?" However, after studying Objective-C and Java, I'm pretty clear on what they were talking about.

Java, from my understanding, so far, is a "lean" language, so you have to import "modules" that are already packed into Python and Ruby. In Java, you  have to write "import java.util.Scanner" to allow the user to input information, whereas you can just create a variable to accept the input in Ruby and Python. There are other little things like declaring types for variables and only being able to use one type of object in arrays, that make programming in Java...different.

The cool thing about declaring a type of variable, though, is that you decide what kind of variable you want to use ahead of time and you don't actually have to write your number in a decimal form, if they don't have numbers following the decimal. This is good for programming because you are thinking through the type of result that you want, which avoids using integers, when you want a float and having to go back and put in the decimals if you forget.

Another built in feature in Ruby and Python is the error messages. Although, you can resolve that situation by using an IDE, it comes built in to the other languages and coding in Java requires you to *sigh* download a IDE like NetBeans, free of charge and install it on your computer, when you're first getting set up.




Things that you can do using Java that you can't use Ruby and Python for? Compiling programs into .exe and other files that you can run as stand alone software (I think you may be able to do this on python, with some extra effort...Cython?) and building native mobile apps for android, which is huge. I think that with the popularity of mobile devices, not being able to use a language to build native applications for them is a pretty big disadvantage...if you like making stuff for other people to use. Even though there are plenty of things you can still build for people who are sitting in front of computers or for things that use Raspberry Pis or Arduinos. For me, the most exciting thing right now, as far as development is concerned, is making things that can be used no matter where they are on many different kinds of devices. I really hope that something can be done about this...and soon [ yes, I know about Ruby Motion :) ].

Challenges with learning2Java that aren't about the language itself:
  1. The writers of the books. I'm not literary expert or anything, but the way that they write/speak is hard to follow. The way they say things is not fun, at all. I don't know if it's just me or what, but I had such a hard time reading the books that I decided to watch youtube videos first so that I could get a general understanding of what's going on. It's not like I don't like to read or I just picked books at random, either. I did an internet search to try to find the best books to learn with, but yeah...
  2. Leaving this hanging: public static void main(String []args). Yeah, you really can't do that. It's not cool to tell me that you're going to explain something later, and then wait to talk about it at the end of the book. Sorry. I NEED to know. [ note to self: why haven't you googled this, yet? ]  How about walking me through it and then going into more detail later. I understand that "public" means that it will be available to other code, they explained that "main" means that this is the operating class that the compiler will look for, and from studying Objective-C, I think that "void" means that a function will not return anything, but I have no idea what that means for a class or if this is even the same thing in Java, and "static"? I need all of this explained and I need to be clear that I'm thinking in the right direction on this. That "String []args" part also needs to be explained, especially since I keep seeing those square brackets moved to different places in different code. How am I supposed to concentrate on what you're trying to teach me if this keeps coming up unexplained?
This probably sounds like a lot of complaining, but it's just my growing pains. I'm definitely going to take advantage of all opportunities to learn new things. [ ...especially Java, since it's the dominant mobile platform and I definitely want to develop for it...even though I have an iPhone ;) ]. I'm just getting started with Java and Objective-C, so if I start saying things, in the future, like "I don't see what people's problem with Java is" or "actually, Objective-C is pretty cool, I'm glad I learned it before I started Swift" don't be surprised. :)

I think that I'm going to go study a little Ruby now. 

...because Ruby.





Sunday, August 24, 2014

Coding and Stuff...



Last week, I started getting a little bored with programming in just ruby, so I decided to go back to learning a few other languages. I watched the Google Class on Python and I picked up the Code School Objective-C tutorial, again. I find that studying other languages gets me a away from the syntax of the languages and more into the larger concepts involved in programming. In the beginning, I just thought that you should just learn one language and get really good at it, and then maybe pick up some others a little bit later down the line. What I have found is that once you think you have a decent grasp on the basics of one language, it's productive to pick up another language, with the same paradigm [i.e. object oriented, symbolic, functional...]. This is works for me, because it forces you to really understand the concepts involved, it breaks up the monotony of studying the same thing over and over, and, pretty much, without fail, every author brings a unique perspective which leads to new insights on programming in general. Recently, I've had a chance to start reviewing the code of other programmers who are just starting out and it's made me realize how important it is to learn to actually program versus just being able to code in a language.

Speaking of which, I heard back from the company that I wrote the Mars Rover program for and I am happy to report that I have done my telephone interview and will be visiting the main office next month for the final stage in the process. I think that I am a very strong candidate for this company and I am super excited about the prospect of working there. On Friday, I went to the Atlanta office and meet one of the developers there. He was super cool and made me feel really good about the job and my chances of actually getting it, so...that was positive. Among the things that I love about this company are lots of travel, flat management structure, the fact that you have a voice in the things that you work on, and the people working there are "my type of people."   I can't wait to go up there. My entire experience with this company has been awesome. I can't think of a better place to be for my first, possibly only, programming job.


Which brings me to: I just started learning Java. I have to learn Java for Algorithms I, as well as for this new position, should I get it. The algorithms class starts next week, but if I get this job, they will also teach Java in training. This will give me a leg up for the job and also allow me to develop mobile apps for android, which is something that I'm definitely interested in.

Java is an object oriented programming language, so it's not a big departure from what I already know. The syntax and the things that it requires, such as the requirements for declaring variables, are a little bit uncomfortable after starting [restarting] my programming education using ruby and python. I'm pretty sure that I'm always going to prefer ruby and python to any other languages, but I'm learning to appreciate Java and at the end of the day it's more about the applications and building cool stuff.

Friday, August 15, 2014

The Mars Rover Project



Last time I posted, I was talking about upgrading my professional marketing materials, i.e. LinkedIn, because one of my friends told me about an entry level programming position. Well, they contacted me the next day and the interview process has begun. My first tasks are to watch a video, fill out a questionnaire, and choose one of three programming problems to solve. There were three choices, the first was one involving a transit system, the second was one that calculates taxes and tariffs on goods and prints out a receipt, and the last one was to write a program where you hypothetically help NASA track rovers on Mars. I think we all know which one I picked. :)

The first one, I skipped, because writing a program about a train system didn't interest me enough to stop there and the second one wasn't that exciting to me, plus I have two other friends in the process who are both doing that one. The last one was right up my alley: writing a program to plot the position of Mars rovers.

I love astronomy. The extreme speeds and grad scale of the universe is one of the most fascinating things that I can imagine. I took several astronomy classes as an undergrad and since then, I have kept up to date on most of what's going on in the field. So naturally, I jumped at the opportunity to pretend like I had a job with JPL. I've already started working on it and I am thoroughly enjoying it. When I first looked at the problem, it seemed a little bit overwhelming, but it is way too interesting and fun to not do it. Once I started working on it and breaking it down into smaller pieces, it became manageable and much less menacing and it is starting to come together.

I hope that I never stop getting excited when I get my programs working.  I like puzzles and I do many different types of them, but I never find myself getting extremely pumped because I solved one. It's way more fun to code. Don't get me wrong, I do feel satisfaction in completing puzzles, but when I make programs work, I get extra excited. It's more like scoring in sports, than solving a puzzle.

... I guess you had to be there.

UPDATE: I've watched the video and turned in my program and questionnaire.


Thursday, August 7, 2014

Pulling it all together...



I'm feeling good about where I am with my coding, I started a new book on Rails this week, called Pragmatic Agile Programming with Rails 4. I'm kind of wishing that I had done this before I repeated the Michael Hartl tutorial. This book is really enjoyable and I'm taking my time getting through it. I just finished chapter 6, today. The demo app that they started with in this book was different from the other tutorials and books that I have read, in that it was much simpler and clear.

I found out over the weekend that I can't dual boot Linux with my Windows 8. After being frustrated with the compatibility issues with Ruby Gems for Windows, I decided to do whatever it took to get Linux working. I spent the better part of Saturday morning and early afternoon working on this to no avail. I gave it a half-hearted attempt when I first got this computer,almost a year ago, but it didn't work out because, at that time, you had to disable the secure boot to get it operating and I didn't bother to do that. Apparently, this no longer an option. I really don't understand why Microsoft is doing this. Are they banking on all developers, that aren't currently using Apple or Linux, exclusively, to just switch over to using their development tools? I'm contemplating trying to switch my OS to Windows 7. At this point the only reason that I'm using Microsoft is because of Photoshop, Rosetta Stone, and the years of work that I have on my external hard drive that I carried over from the computer that had before this one.


A few months back a started taking a Stanford MOOC course on networking. I learned a lot about how networking works, in theory, but I started getting real world experience this week, when I had to change my password, because one of my neighbors has been leeching off my WiFi signal. I had been putting it off, because a.) it wasn't a serious issue, and b.) I didn't feel like resetting the passwords on every device in the house, but they finally forced my hand by hogging up all of the bandwidth, which led to additional googling and experimentation with my router.

I've also decided to start getting my professional stuff, like my LinkedIn and resume updated, so that I can seriously start looking for a job doing programming. I've been writing a real summary for my profile. Last night a friend of mine asked if I would be interested in interviewing for a position at ThoughtWorks, so that also forced the issue a little bit, although, I have been meaning to do this stuff for a while. The problem is that I enjoy programming so much, right now, that I just really want to keep learning it as a skill and I end up not devoting as much time as I should to the "career" side of coding. I'm starting to think that I may end up just doing freelance work.


PS- I didn't get that Code for America Fellowship. :(


Tuesday, July 29, 2014

Don't Mind me, I'm Just Being...Not Evil.



So...yeah, Google hangouts has some cool new stuff.


Earlier today, I found an excellent new book to up my programming skills. It's called Structure and Interpretation of Computer Programs, Second Edition and apparently, they've been using it to teach Intro to Computer Science at MIT since 1980. I'm only about 40 pages in, but so far, I'm really enjoying it. I hear the actual class is on youtube, but I have yet to confirm that information. I plan on confirming that information in a very soon.  [Update: information class on youtube confirmed and awesome]

The language used in the book is called Lisp, it's the second oldest programming language that people are still using and it's also supposed to be good for Artificial Intelligence.  So this should be fun. I'm actually appreciating the opportunity to get a look at a different language and actually working on my programming skills outside of web development and syntax.  


This week, I finished Michael Hartl's Rails tutorial, for the third time, and I am now learning about the carrierwave gem and using it to add user provided images to the Steam Truck app. I'm finally in a space where I am actually building stuff without training wheels, although mIRC #ruby has been a lot of help with my implementation of carrierwave. I'm still working on the finer points of using carrierwave on the app, but things are going well on this project. I'm currently in the process of setting up a meet up for the rest of the group this week.


[HEADS UP]: I got back in the gym, today.

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...

Sunday, June 1, 2014

National Day of Civic Hacking [post-event report]



This weekend I participated in the National Day of Civic Hacking at the the Atlanta Community Food Bank. The event started on Friday at 6PM and was catered by Chik-Fil-A. The first night they also had veggie wraps, but for breakfast and lunch, on Saturday, I had to work around the chicken based diet. It turned out to be a little bit too much for one of my vegetarian friends: those delicious chicken nuggets. R.I.P. vegetarian diet. This is the second week in a row that I've had my vegetarianism tested.

I had tossed a few ideas around in my head, but most of them involved being in D.C., so by the time that I got there, I was just really looking for a project to join that would allow me to work on my ruby and/or python skills. When we got there, the food bank already had about nine specific issues that they wanted to have addressed and 3 other people pitched ideas of their own. I ultimately joined a group that was addressing the need of the smaller agencies of the food bank to have a presence online. Best. Decision. Ever.


When I joined my team the first person that I met was Josh, a designer. Josh worked with the Mathew to get the overall design together and he was attending the event with his business partner, Morgan. When I met Josh the first thing I said was "this needs to be a ruby project." Luckily, that was what they worked with, so I was on board with the project at that point. [I had considered working on another project first, but I didn't for reasons that I won't go into.] Morgan was the backend developer for th business that he and Josh were partners in: Polar Notion. Morgan had wayyyyy more experience than I did and I had got an amazing opportunity to learn from him and gawk at how fast he could get stuff done. The other members of my team were Greg, Cashif, Vivianne, Mathew, Ben, and Jeff. Jeff was apparent excellent with mapping technologies, but unfortunately he didn't show up for the second day, so we didn't have a chance to leverage those particular skills.


Once we had the basic idea down, we split up into three groups: designers,
 a think tank, and developers. Morgan, Greg, and I were the development 
end of the operation, with Morgan acting as the team lead.


Morgan easily did over 90% of the coding, and that's probably understating it. seriously. He was getting things done really fast, helping me with my code, and contributing to the overall project at the same time. Morgan, also knew a lot about gems and API's and had lots of great advice. He's one of the coolest people I've ever met and just meeting him alone was an awesome part of my experience. However, my entire group was awesome, as well as the people attending overall.

What we decided to build was something that I called "foogler", even though that name is under dispute, because several people in the group wanted to call it "foogle." The biggest mistake people make in marketing is putting marketing decisions to a vote among non-creatives, imo. I'm pretty sure I was the only one on our team with a background in marketing, but that's the thing about marketing: everyone thinks that they can do it. :)

Anyway, what we made was basically a search engine to be attached to the food bank's website, that allowed smaller agencies to make a "profile"that was searchable by clients using zip codes. Other than my disagreement with the name, I feel like my team worked together extremely well. Everyone did their parts and pretty much everyone involved with the event was impressed with our team performance.


When the judging started, I was pretty confident that we were going to win, but then a team that did a SMS based application that allows people looking for food banks to connect with food bank agents through text messaging. This was really good idea, and I think that something like that would be ideal for places like Africa, where people use SMS for many commercial activities, already. I had seen this TED talk, so I immediately understood the impact that something like this could have. My only concern about that project was whether or not it had already been done in Africa by someone else. 

When the judges had finally made a decision the results were as follows:
  • Fourth Place: Originally, there were only supposed to be three winning groups, but one team took on the inglorious task of patching up a few bugs in the SQL database system and they were properly rewarded with the "Honorable Mention" award. [I'm so glad that these guys didn't get overlooked. Their work went into effect right then and will have an immediate impact.]

  • Third Place: Went to a group that did an Internet of Things project that was pitched by Concrete Jungle that involved placing sensors on fruit trees to determine when the fruit was ready to be picked based on bending of the branches. This would have been a fun project to work on had they had python developers and implemented Raspberry Pi. The reason that I didn't consider this one is because of their lack of coders and my lack of experience. This was definitely an interesting project, but it may have been a little bit much to take on for a project that had less than a 24 hour turnaround.

  • Second Place: Rightfully went to the SMS group.

  • First Place:  Team Foogler!!!!

front row(from left to right): me, Vivianne, Morgan
back row: Greg, Cashif, Josh, Ben
not pictured: Mathew and Jeff


The whole team got these sweet $50 gift cards:


After everything was said and done, we had an extra card. We're going to use that when we get together on Wednesday for drinks! I can't say enough about my experience and I'm going to stop now, but if you have a chance, you should definitely participate in the National Day of Civic Hacking next year and get involved with Code for America...I had a great time. Learning, using what I've learned to give back, and meeting new people was awesome; winning gift cards was just icing on the cake. 

Wednesday, May 28, 2014

Advanced Ruby Features



I have decided that buying a mac is going to be unavoidable. I never thought that I would own a mac, but Windows 8, their lack of interest in what's best for the user, and the inability to create apps for iPhones and iPads make owning one a necessity as a developer. Windows 8 even blocks you from running Ubuntu side by side with it and I'm still trying to decided whether or not I want to add this third party software to my system that will allow me to to this. [it's been 2 days] I'm seriously disappointed in Microsoft...shopping for macs online today was so depressing.


Two weeks ago I went to Octane and there was this chick there with a mac 
who sat on facebook for two hours...all of my nope, every bit.


I've been taking it kind of easy on myself this week, I think. That last chapter was a little bit taxing, interesting, but taxing. I had to take my time and take it in pieces so that I could retain as much as possible. The chapter that I just finished in my book was about advanced Ruby topics [whew!].  It took me a few days to get through it, just because I was trying extra hard to take everything in [probably not the best idea ever]. This is probably one of those chapters that I'm going to have to go back and read again...and again.  My favorite topics were probably the ones about Win32API and win32ole. I'm definitely going to have to learn more about that stuff.

Topics that I remain weak on are threads, fibers, and RubyInline, although RubyInline is awesome and I need to learn a lot more about that...and new languages. Being able to use C in ruby for hyperspace in your programs is sweet and I am also very interested in using any and all other languages with RubyInline. I'm extra excited about learning other languages now, even though I probably won't start anything new until 2015. It will probably be my New Year's Resolution. This year's resolution was learning to code[killing it, btw].

In the next chapter, that I've already started ;), I'm going to be making a bot, like Eliza. It's supposed to bring most of the stuff that I've learned in the book, so far, together, and it should be pretty interesting. I'm looking forward to working on it more tonight... after I do a little bit more Hindi. Hopefully, this will be great review for the things that I have already learned and clear up some of the topics that I was fuzzy on going through the book.




Tuesday, May 27, 2014

I Need A Programming Job



I feel like I'm finally at the point where I can get a job coding in ruby and ruby on rails, learn pretty fast, and be an effective member of a team. I'm on Chapter 11 of my book, Beginning Ruby: From Novice to Professional, and I took my python midterm yesterday. I'm at the point where the basics are just boring and it's really time to start building stuff. The only problem is that I don't like to leave things unfinished, so I need to finish this book, stat. However, I still don't know everything; I just have gotten the hang of how everything works, so nothing is surprising anymore.

One of the things that I was really excited about was using ruby, and python, with other information like files and the internet. I'm not saying that I'm the master of doing this, yet, but I do understand it. I took my python midterm last night and got a 95. The thing is, I didn't study and I didn't even go there to take the test...I just wanted to look at it. It's not due until Monday, but when I was looking at it, it was easy for me, so I finished it.

The thing that I'm really looking forward to, though, is the National Day of Civic Hacking, this weekend. I can't wait and I'm trying to learn as much as possible before Friday, so I can join a really good group and have a lot to contribute. I had a lot of fun at the last hackathon.

In other news, one of the guys I met at a meet up a few weeks ago is doing the Michael Hartl tutorial and ran into a jam. I have a love/hate relationship with jams. :) I'm going to get to that. I love coding. Peace.


Wednesday, May 21, 2014

Taking Time Off is Bad Business...



...especially when you're just getting started. I just took a weekend off and it's taking time to get back to a point where I'm actually moving ahead; I'm going to be up all night. I finished a semi-related book called The Talent Code, yesterday. It really gave me a lot of insight into the learning process. Since I've finished this book, I'm all about practicing my skills. I would highly recommend this book for anyone, but especially for anyone who is trying to learn something new.

Beyond that, I've been reading another book called Beginning Ruby: From Novice to Professional. I'm at the same point in my Ruby, that I always have trouble with: YAML. I just don't get it, and if you type in into irb exactly as it's written in the book, it doesn't work. I get frustrated with a lot of these books for this reason. The authors don't really realize that they're talking to beginners...or this beginner. There are also a lot of typos in the book, this is especially awesome if you're a grammar nazi. That being said, this is the best book that I've read so far about the Ruby language, for beginners. Everything in the book is laid out pretty well, and I definitely feel like this book has contributed greatly to my understanding of the language.

Someone on reddit solved that Project Euler problem that I was working on, but I still don't understand the answer. I want to solve all of the problems on that site, but..



I won't be moving to the next problem until I do(understand), and I can post my own personal solution in the forum. [/srs]

I've also been chugging along with my python skills. My home work for my python class was due on Monday, so that was the first thing that I worked on. On Tuesday night, I entered into another platform for learning python, that is showing promise. I've probably said this before, but once you have a solid start in ruby, if you start learning python, it's a good way to internalize both by your analysis of the differences between the two...and they both have great communities. 

...back to work.

Sunday, May 18, 2014

My Cousin's Wedding


I went to Houston this weekend for my cousin's wedding. Yeah...didn't get anything done. I can't wait to get back to work tonight. This is going to be an awesome week. The ruby boot camp starts this week and then there's this. That is all.

Thursday, May 15, 2014

largest_prime_factor:1: syntax error, unexpected end-of-input


number = 600851475143
largest_factor = 0

(0..number).each do |x|
if number % x == 0
if x == 2 || (x % 2 != 0)
prime_factor = x
if prime_factor > largest_factor
largest_factor = prime_factor
end
end
end
end

Learning to Ruby



I've had a pretty busy two weeks. Last week was Atlanta Big Data week, and event that was put on by Emcien. On Tuesday, I went to an event called How to Become a Developer, which featured a panel of developers who talked about how they got started. There was a lot of good information from the panel. It was a little annoying that so much of the Q & A time was taken up by people who just wanted to prove what they knew, but overall, it was a great experience.


The next event that I went to for Atlanta Big Data Week, was the two-day Hackathon that they held at hypepotamus. This was a really great learning experience for me, because I ended up being the team lead, which was odd because I have only been programming for a little over 1/4 of a year now. I was in way over my head on the project, but we had fun working on it, I met a lot of cool people, and was exposed to lots of new stuff. I'm going to stay in touch with those guys.

Hacklanta 2014

As a result of the How to Become a Developer event, Al Snow and Gerry Pass put together a meet-up called Career Planning for Ruby Newbies, where we got a lot of good information about learning Ruby on Rails and landing our first job. Afterwards, we all went to the monthly Atlanta Ruby Users Group meet-up, where John Saddington had a talk about blogging/social media, and how it can affect your career as a programmer and entrepreneur. Ruby on Rails rockstar, Obie Fernandez was also there and let us look at some of his code that involved using a gem called Wisper to do some publishing [it think?]. To be perfectly honest with you, though, I didn't really understand what his code did, but It was cool looking at it and just seeing how much it looks like mine. I was a good day all around.

Now, the plan is to get all of my ducks in a row: I will be blogging a lot more and getting my programming and development skills where they need to be. I'm going to re-do the Michael Hartl tutorial and instead of doing the application again, I'm going to turn the project that I've already done into something more personal. There is also a free 6-week web development boot camp that starts next week. I plan to meet up every Monday with some of the new people that I've met through this learning process to work through it. 

Another thing that I'm doing to work on my programming is Project Euler. I've completed the first two problems and I plan to do the next pretty soon. Over the past few weeks I've gotten lots of good information on programming and web development. If you're trying to learn, the meet-ups are a strong step in the right direction.

Code for America

The next event that I'll be attending is the National Day of Civil Hacking . I'm really looking forward to this. Probably the only short coming of the hackathon that I went to last weekend, for me, was that I was the best developer in my group. I hope to learn from some real coders at this one...but I sure I'll meet more awesome people as well.

Monday, April 28, 2014

I Am Not Going to My Job Today...

...and I haven blogged in a few weeks. Mostly because I knew that I had this job coming up and I was trying to get as much programming done before I went into training. Last week, I finished the RoR tutorial that I was working on: www.belozi1973.com, but I didn't get much else done.

I started reading Rails 3 in Action, but it was frustrating trying to read on the train with my connection going in and out and not actually being in front of a computer. Anyway, it feels right to be back on my program, again. I decided sometime between last night and this morining that I wasn't going back in. Don't get me wrong, the job was fun, the people were cool, and there was lots of money there to be made, but it was something that would have required me to put a lot of time in to learning and it was taking up way too much of my time to not be programming. I started learning to program because that is the field that I want to work in. Getting side tracked by something else is something that I'm not going to do. Also, it was a sales job that required me to sit at a desk and cold call people all day. Still it was a tough decision for me.

The plan now is to use the Michael Hartl RoR tutorial to build something new and read Rails in Action to get a better understanding of how to use it. This is probably enough for now. Time to get back to work.

Monday, April 7, 2014

Monday Morning Update #2

...strong week.



I've been working on the Ruby on Rails Tutorial and my coursera classes. I have to say, this tutorial is much better than the lynda tutorial. I would definitely recommend never, ever doing that tutorial, for any reason.

Using this tutorial, I have learned how to properly use git and github. I got jammed up for a minute there, I didn't realize that I needed to create the repository at the website before I could push things to it, but luckily the Web Applications Architecture Class on coursera really came through for me this week, in that regard. My github is starting to look respectable. I knew that it was a good idea to take that course along side my independent work with Ruby on Rails. The only issues that I have with this tutorial involves one of the gems: execjs. For some reason, I'm getting and error for this gem on everything that I work on. This is how you fix it:
  • Run gem install --version '1.2.4' execjs
  • Add gem 'execjs', '1.2.4' anywhere in your Gemfile.
  • Run bundle install
  • Start your server with rails s and your problem should be solved.
  • Part of the reason that I'm putting this here is for future reference. ;) 


     I wish that I understood exactly what is going wrong with this gem, so that I could fix it and not have to do this with every app, but se la vie, I guess.

    Speaking of the Web Applications Architecture Class, it is still kind of annoying me. The assignments are pretty basic and the class moves way to slow for me to use it as a stand alone instructional for ruby on rails...maybe if I worked ahead, though. He is posting the work 2 weeks ahead though. I just really don't like the class enough to spend extra time each week working on that when I have other resources. I wouldn't go as far as to say that you shouldn't take the class, if you're trying to learn, though. To each his own.

    The other class,  An Introduction to Interactive Programming in Python, is going great! This week, our project was to recreate the game "Rock, Paper, Scissors, Lizard, Spock" that was featured on Big Bang Theory. Me being me, I have to watch the first episode of the show; I had been avoiding it, but I'm willing to give anything a chance, especially since, apparently, the professors [there are 5] think that that show is the bees knees [I just said that]. I hate that show. Hate is a strong word. What I did do was go to their facebook page, see which of my "friends" like that show and proceeded to judge them for it [...not out loud or in text, of course :)]. Anyway, the game was pretty simple and not overly challenging. It's nice to have this class a strictly a programming exercise, while studying so my web development.

    I'm not married to the idea of making websites. My goal is to build useful for tools and entertainment applications. Don't get me wrong, I love the internet and I definitely look forward to being hands on in the deployment and management of my ideas, but just building websites in itself just doesn't do it for me. The underlying idea behind the website is where it's at.

    Monday, March 31, 2014

    Monday Morning Update #1




    The first week of my programming courses on Coursera was mixed. I like the Python class, but I'm really skeptical about the Web Application Architecture Class. It's taught at the University of New Mexico, and it has a community college feel to it. The videos are just good enough to not be funny and the professor doesn't seem very interesting at this point...but we'll see how it goes.

    The Python class, on the other hand, seems like it's going to be awesome. It's taught at Rice and our projects are making games...so that's going to be plenty awesome. The final project is an Asteroids clone. There are five professors that teach the class, I get the impression that most people who work with Python are pretty fun and have a sense of humor.  Exhibit A: the history of the name "Python." The teachers are not that funny, but they're trying, and keeping the class interesting. Neither of the classes are that demanding, yet. I did the first week's work for both classes on Monday.

    On the Rails front, I had to dump the lynda tutorial. For starters, the guy teaching it was moving at 900 mph; that I could tolerate, but the straw that broke the camel's back on that tutorial was the fact that he kept changing things in the application that he wasn't recording or explaining and I got tired of having to do detective work to keep up with the lessons.

    I have since moved on to this tutorial, which is awesome...so far. A part of me wishes that I had just gone ahead and done this tutorial, first, but I may be discounting how much what I learned doing the lynda tutorial puts me ahead of the game in this one. This new tutorial is more like a guide on a journey to learning to develop. Today, I got git all set up on my system and that was pretty cool. So in short, I've done another Ruby tutorial and I've been reading another book...one about git...along with the web design book that I started last week. So...right now, I'm still in the setting everything up phase.

    ...peep it:


    So now, I'm also working on my unix skills, as well. I am having fun, though. I really wouldn't want to be doing anything else with my time, right now. I'm looking forward to this weeks classes, and the next chapters and lessons in my books and tutorials.  

    In my spare time, I'm working on my Spanish and Hindi for 30 minutes a day each and taking Buddhism and Modern Psychology. Also, every week, or so, I take a day or two off and do absolutely nothing, but watch TV and maybe have a few beers. The bad/awesome news is my sleep schedule is completely flipped. I go to sleep between 7:00AM and noon everyday. 

    Monday, March 24, 2014

    Oh Snap!

    I almost forgot to blog, this week! :)





    I've been doing a lot of work with Ruby on Rails, this week. I've gotten a basic understanding of how everything works now, and I'm about half-way through the lynda tutorial. I'm finally at the part where we're actually designing stuff for the website that we're building. It's cool because I'm learning all about servers and databases and how to use them to run websites. I'm getting used to dealing with all of the files and the way things are done and really starting to enjoy it... looking forward to building my own site from scratch...in probably a few more months.

    In other news, I'm starting two new classes at Coursera, tomorrow. The first one, is called Web Application Architectures, and it teaches web development using Ruby on Rails. I'm really looking forward to this course, because while the lynda tutorial is getting me there, this class will give me a more current and interactive experience in Rails, and I can ask questions and talk to other students in the class that are at or around the same level, as I am, in web development. I think that this class is going to be good for the learning process that I have going.

    The other course that I'm taking is called An Introduction to Interactive Programming in Python, which is pretty self explanatory. It's part of a 3 course track that will take me through the Summer and allow me to work on my Python skills while I'm doing my Ruby stuff.

    I definitely wouldn't be doing both, right now, if I hadn't already gotten a decent amount of experience with both languages already. But on the plus side, the languages are pretty similar, and even the course syllabus for the first class says that what we learn on RoR is transferable to other platforms like Django for Python.

    Two more things, I started reading this book, to get an comprehensive rundown on web design, and because in working in RoR I learned pretty quickly that I need to refresh and expand my HTML and CSS knowledge. Once I get the programming/scripting side down, I'm definitely going to have to take some time to focus on the visual design and user experience aspect of web development, not so much to get a job, but for when I start working on my own projects. I can't wait until I'm comfortable enough with what's on my plate, now, to get into that. This new book is easy to read and I should be finished with it by next weekend.

    Another development, last week, was that I got a call about a job programming in Ruby. I did a phone interview that went well; the recruiter told me that he would be forwarding my resume along to the next step in the process. It would be awesome if that turned into a job where I could hone my skills in the near future, but I'll be okay, either way. ;)