This morning is day 5 of 21 rolling out of bed by 5 am. If you haven't been reading along, the idea came from a blog post I read a few weeks back, and looking at my schedule right now, it's the easiest time to guarantee time to study and work on my code.
It is interesting that it almost becomes easier to get out of bed everyday. Prior to deciding to try the 5 am challenge, I kept setting my alarm for 6 am and it became a morning routine to silence or hit the snooze and I'd tell myself "not today, you can go back to bed and I'll get up tomorrow" and I'd sleep until 7:30 or 8 in the morning and then get up and rush for work. Now it's becoming easier to pull myself out of bed promptly at 5 and then I grab a cup of coffee and sit down peacefully and distraction free to work.
This week I've been working on my game that I started way back in the summer which I kind of "forgot" about. It's gone through many iterations and started out as a simple JavaScript game that would run via a ton of window alerts. Then once I found out that wasn't a good idea, it started to evolve and it is now somewhat GUI based and includes HTML/CSS/JavaScript/jQuery. I think once I get a working version, my plan is to even transition the core JavaScript over to Ruby.
The challenge of being self-taught is that you don't always know when you might be doing things wrong. Your solution can work, but it doesn't always mean that the code is efficient or following best practices. It may work well for one user, but if you tried to scale it up to millions of users, things would start breaking or go incredibly slow. That's kind of where I feel like I'm at right now with some of the JavaScript/jQuery code. It seems to be working, but it's not as smooth as I'd like and I don't think it's very efficient yet either.
Even as I sit here typing, I just realized one major inefficiency and something I can do to improve my code! I was going to give a snapshot of part of the code as kind of a "before & after" look at how messy I feel the code is right now. Well there is a concept called DRY which stands for "Don't Repeat Yourself". That basically means if you have a chunk of code that you would have to type in multiple places, it's best to build one function or method that handles that code, and then call your function or method when you need it. The reason that is so effective is that if you later realize you need to add, modify, or delete some code, you can do it in one place rather than the 15 or 20 or 1000's of places you might use that code throughout your program:
In the highlighted text, you'll see two lines of code that I'm using a number of places in my code. As I went to take this screenshot, that "duh / ah hah" moment finally hit me.
Rather than writing each of these lines of code 5-7 places throughout my code base (basically once per each scenario or transition in my game), I'm going to create a Function to handle this for me.
New Function called "change_div" to reduce the amount of code re-use:
Now if I need to make a simple change or add a line, I can do it in this one spot.
Calling my new change_div function with the highlighted piece of code:
I nearly didn't write a blog post this morning because I wasn't exactly sure what to write about. However, I want to keep up with it and part of #my5amChallenge is to write about the things you learned or accomplished. Well I'm glad I sat down to write this blog as I just learned something very valuable about half way through!
That's kind of how it works with coding sometimes....you get stuck somewhere and try and try to figure something out, and then it all of a sudden comes to you at the most random moment. I wasn't really stuck there, but that change is much better for an "Object-oriented" programming style which is what I'm trying to learn.
Time to dive back in the code and work on building some more of the functionality out!
Showing posts with label coding. Show all posts
Showing posts with label coding. Show all posts
Wednesday, October 29, 2014
Saturday, October 25, 2014
Equality and Ruby Variables - a few of my learning's from this week
I've been trying to get up at 5 am everyday this week to work on my coding, and I actually did a pretty good job except for Friday morning. I'm a huge Broncos fan and we had the Thursday night game so I didn't make it to bed until nearly midnight. After getting up at 5 am for a few days, I was just too tired and needed the extra sleep.
I did make it up at 6 am today though (even though I'm not doing the 5 am challenge on weekends) and have been working on my problems. I wrapped up my first problem which was implementing a simple Array class in Java and Ruby that has "create, delete, search, and display" methods for working with the array. I thought I would take a few minutes to at least share the things I learned and a few of the "gotcha" moments.
When trying to implement the solution in Ruby, my first stumbling block was working with & declaring the right type of variables. In Ruby, you have global variables, class variables, instance variables, & local variables. I'm going to try to briefly explain them, but to help give context I'll give a simple example of classes & objects.
If I were writing a program to control working with vehicles, I would potentially have a "Vehicles" class, and two sub-classes called "Cars" & "Trucks". Classes help control behavior and allow you to create "Objects" which all share similar behavior. I would create certain behavior in the "Vehicles" class that would apply to both Cars and Trucks, and the "Cars" and "Trucks" classes would both inherit that behavior. The reason I would do this is that both Cars & Trucks have Tires and doors, and windshields for example, and rather than specify these features in both classes, I can type it once in Vehicles and let both classes inherit those features.
Now once I have my classes, I can then create specific objects. So I have a "Cars" class that outlines the features and behaviors, but then I create a "Car" object that is the actual car itself with its own unique make, model, color, etc.
Hopefully I made that simple enough and not too confusing, but not on to explaining the variables and where I got stuck.
Global variables - are just what the name suggests, they are globally available throughout your program. So if I have a Vehicles Class and Animal Class, I might declare a variable in one of them, but I could still access that variable from the other class as well
Class Variables - class variables apply to that class & the objects within that class. So if I have a Vehicles Class and a Animal Class, and I declare a variable within the Vehicles class.. any of the objects within Vehicle can use that variable, but the Animal Class & all of its objects cannot see or access that variable.
Instance Variables - Instance variables are accessible across methods for each instance of an object. So going back to the Animal Class, I might have a "make_noise" method and maybe I need to create a variable "noise" to store information. I could have a "Dog" object that stores "bark" in the noise variable and a "Cat" object that stores "meow" in the noise variable. So basically I can use the same variable name, but its a unique variable each separate instance of the object and can only be accessed by that object
Local Variables - local variables are only accessible within a single method. So if I had a "Dog" object, he could have different methods such as sleep, eat, walk, etc. If I declare a local variable within the sleep method, eat and walk cannot see that method. To help tie in the explanation, if I instead declared an Instance variable above, the variable could be seen and accessed in each of the eat, walk, and sleep methods.
Didn't meant to turn this into a long definition post, but sometimes I get carried away :) The main point of all of that is that when creating my Array program, I wanted to create an Array class that could create Array objects. I was trying to write my code similar to how it was in the Java code, but for Ruby I needed to create the scope for my variables. I needed an Instance variable that would apply across that object so that in each method I created, it had access to my Array object.
The second "gotcha" or stumbling block for me was equality. In programming, = vs == mean two completely different things. With a single = sign, you are setting something equal to something. For example, a = 5 will set the variable "a" to equal 5. Whereas with two equals sings "==" you are comparing two things. So with "a == 5" you could compare does "a equal 5". If it already does, one thing can happen, but if it doesn't something else might happen. I had a few different areas where I used a single equals sign instead of a double equals sign, and it created odd behavior in my program.
One thing I've found is that when learning to code, you are trying to absorb so much new information that it can be easy to slip up and miss one minor thing, such as a single = sign versus a double == sign. I suppose the bright spot is that I can at least identify and fix my error now rather than having to post to Stackoverflow for someone else to explain it to me!
Well back to coding for a few more hours before I get my weekend started!
I did make it up at 6 am today though (even though I'm not doing the 5 am challenge on weekends) and have been working on my problems. I wrapped up my first problem which was implementing a simple Array class in Java and Ruby that has "create, delete, search, and display" methods for working with the array. I thought I would take a few minutes to at least share the things I learned and a few of the "gotcha" moments.
When trying to implement the solution in Ruby, my first stumbling block was working with & declaring the right type of variables. In Ruby, you have global variables, class variables, instance variables, & local variables. I'm going to try to briefly explain them, but to help give context I'll give a simple example of classes & objects.
If I were writing a program to control working with vehicles, I would potentially have a "Vehicles" class, and two sub-classes called "Cars" & "Trucks". Classes help control behavior and allow you to create "Objects" which all share similar behavior. I would create certain behavior in the "Vehicles" class that would apply to both Cars and Trucks, and the "Cars" and "Trucks" classes would both inherit that behavior. The reason I would do this is that both Cars & Trucks have Tires and doors, and windshields for example, and rather than specify these features in both classes, I can type it once in Vehicles and let both classes inherit those features.
Now once I have my classes, I can then create specific objects. So I have a "Cars" class that outlines the features and behaviors, but then I create a "Car" object that is the actual car itself with its own unique make, model, color, etc.
Hopefully I made that simple enough and not too confusing, but not on to explaining the variables and where I got stuck.
Global variables - are just what the name suggests, they are globally available throughout your program. So if I have a Vehicles Class and Animal Class, I might declare a variable in one of them, but I could still access that variable from the other class as well
Class Variables - class variables apply to that class & the objects within that class. So if I have a Vehicles Class and a Animal Class, and I declare a variable within the Vehicles class.. any of the objects within Vehicle can use that variable, but the Animal Class & all of its objects cannot see or access that variable.
Instance Variables - Instance variables are accessible across methods for each instance of an object. So going back to the Animal Class, I might have a "make_noise" method and maybe I need to create a variable "noise" to store information. I could have a "Dog" object that stores "bark" in the noise variable and a "Cat" object that stores "meow" in the noise variable. So basically I can use the same variable name, but its a unique variable each separate instance of the object and can only be accessed by that object
Local Variables - local variables are only accessible within a single method. So if I had a "Dog" object, he could have different methods such as sleep, eat, walk, etc. If I declare a local variable within the sleep method, eat and walk cannot see that method. To help tie in the explanation, if I instead declared an Instance variable above, the variable could be seen and accessed in each of the eat, walk, and sleep methods.
Didn't meant to turn this into a long definition post, but sometimes I get carried away :) The main point of all of that is that when creating my Array program, I wanted to create an Array class that could create Array objects. I was trying to write my code similar to how it was in the Java code, but for Ruby I needed to create the scope for my variables. I needed an Instance variable that would apply across that object so that in each method I created, it had access to my Array object.
The second "gotcha" or stumbling block for me was equality. In programming, = vs == mean two completely different things. With a single = sign, you are setting something equal to something. For example, a = 5 will set the variable "a" to equal 5. Whereas with two equals sings "==" you are comparing two things. So with "a == 5" you could compare does "a equal 5". If it already does, one thing can happen, but if it doesn't something else might happen. I had a few different areas where I used a single equals sign instead of a double equals sign, and it created odd behavior in my program.
One thing I've found is that when learning to code, you are trying to absorb so much new information that it can be easy to slip up and miss one minor thing, such as a single = sign versus a double == sign. I suppose the bright spot is that I can at least identify and fix my error now rather than having to post to Stackoverflow for someone else to explain it to me!
Well back to coding for a few more hours before I get my weekend started!
Labels:
5amChallenge,
codenewbie,
coding,
dataStructures,
Ruby
Location:
Atlanta, GA, USA
Thursday, October 23, 2014
Feeling tired
Day 2 of my 5 am challenge and third day in a row waking up before 6 am. I'm EXHAUSTED this morning, but forced myself out of bed and am slowly feeling more alert. I have to start getting to bed on time so I get a full 7 hours at a minimum.
Anyway, I finished up the CodeAcademy Ruby tutorial yesterday and have the first parts of my current Data Structures problem complete. Here is a quick snapshot of my current code state:
Anyway, I finished up the CodeAcademy Ruby tutorial yesterday and have the first parts of my current Data Structures problem complete. Here is a quick snapshot of my current code state:
I also forgot to mention that if you're a developer or learning to be and use Github, my handle is austi003. I'm trying to work on keeping all of my work updated and I even have one collaborator (my mentor) on the Data Structures repo so that I can get used to pull requests and branches and all that good stuff.
Alright, enough writing this morning, time to start learning!
Labels:
5amChallenge,
codenewbie,
coding,
learning,
Ruby
Location:
Atlanta, GA, USA
Wednesday, October 22, 2014
5am Challenge - Day 1 (officially...)
Even staying up a little later than I typically do, I still managed to force myself out of bed around 5:05 this morning. It's actually not so bad once you actually stand up for a minute or two and force yourself out of the comfort and warmth of bed. I let the dogs out as usual, grabbed a quick cup of coffee, and now time for a quick update before I dive back into my studies.
One thing to mention for those that have been following along... I've heard some great advice from other bloggers (about code) that I thought would be useful and I'm going to follow a similar format. That is, I'm really writing these for me as a refresher, and if I'm able to provide value for other readers great! The basic idea is that I can blog about things I learn, and it keeps a running record of documentation (or notes) on topics and problems I encounter. That way if I run into something similar down the road I can think to myself..."aha..I wrote a blog post about that way back when..." and search back and find my notes.
I'm getting to the point with code where I can start to read and understand, but it takes me longer to actually write or come up with my own code. It's very similar to learning a foreign language, like Spanish for example. I took a few years of Spanish in high school, and while to this day I can read certain things and understand the gist, it is much harder to listen and understand a native Spanish speaker, and even harder for me to form more than a very basic sentence that even a 4 or 5 year old would say.
I'm currently working on Ruby because I'm trying to get the syntax down enough so that I can implement my Data Structures in Ruby as well as Java. Java is a lot more rigid and you have to directly state certain things, whereas in Ruby you can write less code and accomplish the same thing. Ruby reads a lot like pseudo code (very similar to plain English just explaining on how a block of code would work without worrying about exact syntax).
For example, here is one simple line of Ruby that anybody can probably guess what it does:
def greeting(name)
puts "Hello #{name}!"
end
greeting("World")
As you might have guessed, the output of this simple Ruby script would read "Hello World!"
I spent about 2 hours yesterday morning and another 30-45 minutes yesterday evening both working through the CodeAcademy (www.codeacademy.com) Ruby Tutorial as well as updated my first problem I'm trying to implement in Ruby. I at least got the first part working which is really just an Array class to construct my arrays from. I got to the Object Oriented section of the Ruby tutorial which really helped because it also reminded me of Instance variables and what scope I need to provide which variables. I'm pretty sure the reason my initial solution was not working was for this very reason. I was trying to call a variable from a different method that did not have access to that variable. Here is the little bit of code so far, but I should get a lot more of it done today:
One thing to mention for those that have been following along... I've heard some great advice from other bloggers (about code) that I thought would be useful and I'm going to follow a similar format. That is, I'm really writing these for me as a refresher, and if I'm able to provide value for other readers great! The basic idea is that I can blog about things I learn, and it keeps a running record of documentation (or notes) on topics and problems I encounter. That way if I run into something similar down the road I can think to myself..."aha..I wrote a blog post about that way back when..." and search back and find my notes.
I'm getting to the point with code where I can start to read and understand, but it takes me longer to actually write or come up with my own code. It's very similar to learning a foreign language, like Spanish for example. I took a few years of Spanish in high school, and while to this day I can read certain things and understand the gist, it is much harder to listen and understand a native Spanish speaker, and even harder for me to form more than a very basic sentence that even a 4 or 5 year old would say.
I'm currently working on Ruby because I'm trying to get the syntax down enough so that I can implement my Data Structures in Ruby as well as Java. Java is a lot more rigid and you have to directly state certain things, whereas in Ruby you can write less code and accomplish the same thing. Ruby reads a lot like pseudo code (very similar to plain English just explaining on how a block of code would work without worrying about exact syntax).
For example, here is one simple line of Ruby that anybody can probably guess what it does:
def greeting(name)
puts "Hello #{name}!"
end
greeting("World")
As you might have guessed, the output of this simple Ruby script would read "Hello World!"
I spent about 2 hours yesterday morning and another 30-45 minutes yesterday evening both working through the CodeAcademy (www.codeacademy.com) Ruby Tutorial as well as updated my first problem I'm trying to implement in Ruby. I at least got the first part working which is really just an Array class to construct my arrays from. I got to the Object Oriented section of the Ruby tutorial which really helped because it also reminded me of Instance variables and what scope I need to provide which variables. I'm pretty sure the reason my initial solution was not working was for this very reason. I was trying to call a variable from a different method that did not have access to that variable. Here is the little bit of code so far, but I should get a lot more of it done today:
Yes it doesn't look like much for over 2 hours, but it was more studying through CodeAcademy and then refactoring my code to make this first part work, so I'm proud of it! That's it for today...time for some studying!
Labels:
5amChallenge,
coding,
dataStructures,
learning,
Ruby
Location:
Atlanta, GA, USA
Tuesday, October 21, 2014
The 5 AM Challenge
5:40 AM - Tired! It's been quite a while since I've posted anything, and too be honest I haven't been very disciplined about sticking to my lesson plan either. About a week or two back, I read an interesting article about somebody that woke up every morning at 5:00 am for 21 straight business days (he did exclude weekends). The idea behind it was it takes 21 days to form a habit, but he also found that he is more productive early in the mornings. He was able to get up distraction free and do several hours worth of work before the rest of the world even wakes up. Emails, workouts, sunrises, etc.
It got me thinking and I've decided to try it myself as early morning is the best time to study and work on my coding completely distraction free. I didn't make it out of bed until 5:30 today, but it's at least a start.
So for 21 business days, I'm going to get out of bed at 5 am and from 5 - 8 am I plan to do something productive. Most days it will be studying and working on my coding problems, but I may try to mix in the early morning workout too. My plan is to write a blog post each day about something I learned or accomplished, but given my track record we'll see how well that goes :)
So here it goes...time for some Data Structures work!
It got me thinking and I've decided to try it myself as early morning is the best time to study and work on my coding completely distraction free. I didn't make it out of bed until 5:30 today, but it's at least a start.
So for 21 business days, I'm going to get out of bed at 5 am and from 5 - 8 am I plan to do something productive. Most days it will be studying and working on my coding problems, but I may try to mix in the early morning workout too. My plan is to write a blog post each day about something I learned or accomplished, but given my track record we'll see how well that goes :)
So here it goes...time for some Data Structures work!
Sunday, August 31, 2014
My lesson plan
It's been awhile since I've posted (or really been able to work on my coding for that matter) so I decided I would try to post an update today and lay out a general guide I plan to follow. As much as anything, this post is just to lay out my plan and to create something a little more concrete, but maybe you'll find something of interest :)
At the end of July I made a trip to Vegas and then the following weekend made a trip home & I pretty much got completely derailed. While I did do some studying this month, I got out of my routine for coding, and now its time to jump back into it!
A question I commonly hear from new developers that are trying to teach themselves is "Where do I start?" or "What language should I learn first?". There tends to be a LOT of confusion on exactly how to go about teaching yourself. I have the benefit in that I sit around a ton of bright software developers, and thus have a better idea of what I should be teaching myself. In the near future I have a whole other post on that topic so stay tuned.
For now here is my plan:
As much as I would love to spend countless hours each week studying & coding, I do have a full time job & other hobbies to balance as well, but I am hoping to dedicate on average 15 hours per week (min 10 hours per week) over the course of the next year (or however long it takes me). Two key areas I've been told to focus on - Data Structures & Algorithms, and Object Oriented Programming/Design. My focus over the last few months was to dive in on one topic until I completed it, but one of our Engineers brought up a good point last week; if you're in school you study multiple subjects at once, and he encouraged me to do the same.
I feel fairly confident that I can dedicate at least an hour and a half each night Monday - Wednesday with Thursday left open for Trivia and Friday is sometimes a go out night. That gives me between 4.5 - 6 hours between those three nights. Weekends will be heavier and I plan to spend 3-4 hours each day on Saturday and Sunday for another 6-8 hours total. Finally I'm hoping to have 30 minutes four days of the week either early morning before work or during my lunch break which adds up to another 2 hours. If I only hit the minimum on each of those time slots it still adds up to 12.5 hours per week of study time, but I do feel most weeks I can hit more.
Based on books I'm working on at the moment, my plan of attack is:
Monday - Data Structures & Algorithms in Java - 2nd Edition by Robert Lafore
Wednesday - Agile Web Development with Rails 4
Early Mornings/Lunch - I'll probably do either CodeAcademy tutorials or other light reading as I can't dive too deep in 30 minutes. But it will still be a good opportunity to refresh and read up on certain things.
I'm going to give this a go until I start to get through some of these books, and then I'll re-evaluate and see how its working out.
At the end of July I made a trip to Vegas and then the following weekend made a trip home & I pretty much got completely derailed. While I did do some studying this month, I got out of my routine for coding, and now its time to jump back into it!
A question I commonly hear from new developers that are trying to teach themselves is "Where do I start?" or "What language should I learn first?". There tends to be a LOT of confusion on exactly how to go about teaching yourself. I have the benefit in that I sit around a ton of bright software developers, and thus have a better idea of what I should be teaching myself. In the near future I have a whole other post on that topic so stay tuned.
For now here is my plan:
As much as I would love to spend countless hours each week studying & coding, I do have a full time job & other hobbies to balance as well, but I am hoping to dedicate on average 15 hours per week (min 10 hours per week) over the course of the next year (or however long it takes me). Two key areas I've been told to focus on - Data Structures & Algorithms, and Object Oriented Programming/Design. My focus over the last few months was to dive in on one topic until I completed it, but one of our Engineers brought up a good point last week; if you're in school you study multiple subjects at once, and he encouraged me to do the same.
I feel fairly confident that I can dedicate at least an hour and a half each night Monday - Wednesday with Thursday left open for Trivia and Friday is sometimes a go out night. That gives me between 4.5 - 6 hours between those three nights. Weekends will be heavier and I plan to spend 3-4 hours each day on Saturday and Sunday for another 6-8 hours total. Finally I'm hoping to have 30 minutes four days of the week either early morning before work or during my lunch break which adds up to another 2 hours. If I only hit the minimum on each of those time slots it still adds up to 12.5 hours per week of study time, but I do feel most weeks I can hit more.
Based on books I'm working on at the moment, my plan of attack is:
Monday - Data Structures & Algorithms in Java - 2nd Edition by Robert Lafore
- This is a pretty intensive textbook I plan to study through, but I will also be implementing the various algorithms in not only Java (which the textbook shows you how to do) but also in one other language, most likely Ruby. This will help me to not only solidify my understanding of the concepts, but also help me to pick up syntax of another language at the same time.
- Same general idea, study the textbook but work on implementing the solutions as well. I believe this book does a good job of giving you various problems & projects to work on.
Wednesday - Agile Web Development with Rails 4
- My plan is to go through the book once to build their Depot application, and then I want to go back through the book again to do my other app for storing recipes.
Early Mornings/Lunch - I'll probably do either CodeAcademy tutorials or other light reading as I can't dive too deep in 30 minutes. But it will still be a good opportunity to refresh and read up on certain things.
I'm going to give this a go until I start to get through some of these books, and then I'll re-evaluate and see how its working out.
Labels:
codenewbie,
coding,
learning,
RPG games,
Ruby
Location:
Atlanta, GA, USA
Sunday, July 13, 2014
Lessons learned
I've recently been working through the CodeAcademy JavaScript tutorials, so I randomly decided on Friday I would try to build a text based RPG game using the stuff I've been learning. Mainly, I've been learning about functions, arrays, objects, for loops, while loops, etc. I figured what better way to see what I've actually absorbed than to push my skills to the max by building a simple game that leverages these concepts. (If you aren't familiar with an RPG game - it means Role Playing Game. Essentially, my program provides you with a Scenario and then gives you various options. Depending on what option you choose, your game can have different outcomes).
Here are some things I've learned this weekend:
Here are some things I've learned this weekend:
- The internet is such a huge resource when you get stuck! I ran into an issue on Saturday that I worked and worked on, but could not figure out how to solve. I posted my question on Twitter and within 10 minutes had a conversation going with 4-5 other developers and I learned a few possible ways to solve it. The nice thing though, apparently my question wasn't a complete newbie question and actually posed some challenges to think about.
- While programming, when working on logic and flow statements, it's IMPERATIVE that you read your code with an empty & fresh mindset with no preconceived notions. If you think you know what the outcome should be, it can make it very difficult to effectively follow along in your code and troubleshoot.
I'll try to give an example in layman's terms, which is actually the problem mentioned above:
A user is presented with options 1, 2, 3, and 4 and each option routes to a different scenario. I wanted to ensure they selected one of the four options and didn't try to select 5 for example. My logical flow was:
if userOption is not equal to (1 OR 2 OR 3 OR 4) then that is a bad result
I spent at least 30 minutes reviewing through this line of code and trying to figure out why it was not working. And then finally the light bulb went off! My program was checking to see if userOption was not equal to any of those options; so for example, if I selected 3 (which I wanted to give a good result), it still compared it to 1, saw it was not equal to, and returned a bad result.
The correct logic is .... ("userOption is not equal to 1" AND "userOption is not equal to 2" AND "userOption is not equal to 3" AND "userOption is not equal to 4") then it returns a bad result.
That may look confusing, but the first one returned a bad result if "ANY" of the four were true (i.e. 3 is not equal to 1 --> true) and the second returned a bad result only if "ALL" of the four were not true.
- I learned how to use the "Inspect Element" to see where I was having issues with my JavaScript. Ok so this wasn't something completely new to me. I had been told about this feature and have used it some to review my HTML. However, after struggling all weekend to figure out which part of my code I broke, it finally hit me Sunday morning to review the "Inspect Element logs" which tell me exactly which line my error was on. This would have saved me a considerable amount of time if I had used it all weekend. Live and learn right?
Well that's about it for this weekend. Stay tuned for my CodeNinja Adventure RPG game! I've finished a lot of the basic flow but still have a lot to build out. I'm hoping to wrap up the game within the next week or so and I'm going to try to embed the code within my blog so you could just click a link and launch the game.
I definitely feel like my knowledge of JavaScript and troubleshooting errors has come A LONG way this weekend. Overall, I'd consider this weekend a success!!
Labels:
codenewbie,
coding,
javascript,
RPG games
Location:
Atlanta, GA, USA
Thursday, July 10, 2014
Episode #57
For anyone that watched Seinfeld, it was always famous for being about "absolutely nothing"! I thought that was kind of convenient for this post, because I really do not have a specific topic to write about, but it's been awhile since I've written and I want to try to stay consistent. So I'll just write about a few random things...
First & foremost, hopefully everyone had a wonderful 4th of July weekend! Some of my brothers and sisters came in town to go camping out at Stone Mountain. Thankfully we had nice cool weather for July and it was a very enjoyable trip. Here are a few pics from the trip:
Ok so on to a few things development related:
Coding is not like riding a bike
As much as I'm wanting to spend plenty of time working on my coding, I haven't had as much time to dedicate to it as I would like, especially this most recent week while I was out at Stone Mountain. One thing I've learned, if you aren't coding on a daily basis, you FORGET stuff! Things like "for" loops or "do while" loops, and "functions", etc. I learn how to do them, and then go back a week later and forget little tidbits of the syntax. Overall though, I am learning more every day and getting a lot faster on how to structure all of these coding fundamentals. I'm trying to bunker down and spend as much time as possible studying or practicing in one way or another.
Resources I'm using
I've been bouncing back and forth between a few resources lately, but the two most prominent are the work I'm doing on my Rails app, and then working through JavaScript tutorials on CodeAcademy. Overall Code Academy is a great resource for learning syntax; my biggest complaint is that I feel it breaks the problems down too much for you, and doesn't allow you to really push yourself on how to solve a complex problem. I am getting to a few parts in the tutorial where it offers some additional challenges to figure out on your own.
Status of my Rails App
I ran into a hiccup on my App. If you haven't been reading along, rather than doing the e-commerce app in the book, I'm trying to do an app where I can upload recipes I like and then pull them back up at random to help me decide what to make. I realized after the first main section that I was designing the wrong part of my app with their tutorial. I was designing the front end piece that you view the recipes from, whereas I was supposed to be designing the backend storage space where you can "Add, Edit, or Delete" new recipes and it also shows a view of all of the recipes (see snapshot below).
Once I realized the direction they were going, I changed up the CSS so the view would look like the picture above. It's not pretty yet, but a basic view for adding new recipes.
I think what I'm going to do now is dive into CodeAcademy to finish working through the JavaScript tutorial while reading ahead in the Rails book. Once I see how they plan to work through the e-commerce site, I think I'll have a slightly better idea on how to translate it to what I'm trying to do.
Well that's about it for tonight. Once again thanks for reading along!
First & foremost, hopefully everyone had a wonderful 4th of July weekend! Some of my brothers and sisters came in town to go camping out at Stone Mountain. Thankfully we had nice cool weather for July and it was a very enjoyable trip. Here are a few pics from the trip:
We hiked up Stone Mountain around dusk and I got this picture with the Atlanta skyline in the distant background
View of the water from near our campsite
My nephew is definitely cooler than yours! This picture is from the Ride the Ducks trip at Stone Mountain and he was not liking the life vest.
Ok so on to a few things development related:
Coding is not like riding a bike
As much as I'm wanting to spend plenty of time working on my coding, I haven't had as much time to dedicate to it as I would like, especially this most recent week while I was out at Stone Mountain. One thing I've learned, if you aren't coding on a daily basis, you FORGET stuff! Things like "for" loops or "do while" loops, and "functions", etc. I learn how to do them, and then go back a week later and forget little tidbits of the syntax. Overall though, I am learning more every day and getting a lot faster on how to structure all of these coding fundamentals. I'm trying to bunker down and spend as much time as possible studying or practicing in one way or another.
Resources I'm using
I've been bouncing back and forth between a few resources lately, but the two most prominent are the work I'm doing on my Rails app, and then working through JavaScript tutorials on CodeAcademy. Overall Code Academy is a great resource for learning syntax; my biggest complaint is that I feel it breaks the problems down too much for you, and doesn't allow you to really push yourself on how to solve a complex problem. I am getting to a few parts in the tutorial where it offers some additional challenges to figure out on your own.
Status of my Rails App
I ran into a hiccup on my App. If you haven't been reading along, rather than doing the e-commerce app in the book, I'm trying to do an app where I can upload recipes I like and then pull them back up at random to help me decide what to make. I realized after the first main section that I was designing the wrong part of my app with their tutorial. I was designing the front end piece that you view the recipes from, whereas I was supposed to be designing the backend storage space where you can "Add, Edit, or Delete" new recipes and it also shows a view of all of the recipes (see snapshot below).
Once I realized the direction they were going, I changed up the CSS so the view would look like the picture above. It's not pretty yet, but a basic view for adding new recipes.
I think what I'm going to do now is dive into CodeAcademy to finish working through the JavaScript tutorial while reading ahead in the Rails book. Once I see how they plan to work through the e-commerce site, I think I'll have a slightly better idea on how to translate it to what I'm trying to do.
Well that's about it for tonight. Once again thanks for reading along!
Labels:
camping,
coding,
css,
Ruby on Rails,
stone mountain
Location:
Atlanta, GA, USA
Saturday, June 28, 2014
One step forward...fifteen steps back
Saturday afternoon, world cup is on the tv, and I'm plopped down on the couch with my laptop & book in hand. My dog is fast asleep on the couch, but probably bored and wishing I would play with her instead of having my eyes glued on my laptop! I figured now is as good of a time as any to provide another update...
I've been trying to spend as much time as possible learning how to code and working on my app. As a refresher for anybody that has been reading along, I'm working through the book "Agile Web Development with Rails 4" by Sam Ruby, Dave Thomas, & David Hansson. The book provides an in-depth tutorial in which you create an e-commerce site for a fictional customer. My issue with tutorials is that a bulk of the code you need is already in the book, so I feel it doesn't challenge you as much as I'd like. So I decided to create my own app which will allow you to add & store your favorite recipes online, and eventually I'll add a randomizer to allow you to pick a recipe at random.
I'm really hoping to spend at least 10+ hours a week studying because I'm really enjoying it. I would love to spend more time than that, but I do have a full time job & other activities that keep me pretty busy. However, there is something about typing in a few lines of code, seeing something pop up on your computer screen, and thinking to yourself - "I DID THAT!". In addition, coding involves A TON of problem solving and I always enjoy the rush of finally figuring out something that I've been stuck on!
So that leads me into the main topic of today - I was starting to feel comfortable navigating to different parts of my Rails application and being able to troubleshoot and figure out issues...and then this happened...
Thankfully I recently stumbled across a great group on Twitter called CodeNewbie that has been extremely beneficial! It was started by Saron (@saronyitbarek) and Carlos (@carlosplusplus) and it's a great community of developers and developers in training that are always there to help out. I posted a screen shot and within 15 minutes already had a response from @carlosplusplus!
The answer ultimately ended up being me starting my app over, but I really wasn't that far in and it took me maybe 15 minutes to get everything back to the point I was previously at! Here's a screenshot of the current state of my app from the web browser:
Overall, it's a ton of fun every time I get to sit down and learn a little more about coding, even if it is a step forward and a few steps back sometimes. I'm very fortunate that I get to sit around close to 200 very talented Software Engineers at CareerBuilder and I can ask for help on an almost daily basis.
Hopefully in the very near future I'll have some good updates and screenshots of how my apps coming along. In the meantime, if you have any advice, words of encouragement, or are interested in hearing about a certain topic - please feel free to comment or email me at austi003@gmail.com. I'm hoping at least one person out there finds this blog interesting or gets some value out of it :)
I've been trying to spend as much time as possible learning how to code and working on my app. As a refresher for anybody that has been reading along, I'm working through the book "Agile Web Development with Rails 4" by Sam Ruby, Dave Thomas, & David Hansson. The book provides an in-depth tutorial in which you create an e-commerce site for a fictional customer. My issue with tutorials is that a bulk of the code you need is already in the book, so I feel it doesn't challenge you as much as I'd like. So I decided to create my own app which will allow you to add & store your favorite recipes online, and eventually I'll add a randomizer to allow you to pick a recipe at random.
I'm really hoping to spend at least 10+ hours a week studying because I'm really enjoying it. I would love to spend more time than that, but I do have a full time job & other activities that keep me pretty busy. However, there is something about typing in a few lines of code, seeing something pop up on your computer screen, and thinking to yourself - "I DID THAT!". In addition, coding involves A TON of problem solving and I always enjoy the rush of finally figuring out something that I've been stuck on!
So that leads me into the main topic of today - I was starting to feel comfortable navigating to different parts of my Rails application and being able to troubleshoot and figure out issues...and then this happened...
Thankfully I recently stumbled across a great group on Twitter called CodeNewbie that has been extremely beneficial! It was started by Saron (@saronyitbarek) and Carlos (@carlosplusplus) and it's a great community of developers and developers in training that are always there to help out. I posted a screen shot and within 15 minutes already had a response from @carlosplusplus!
The answer ultimately ended up being me starting my app over, but I really wasn't that far in and it took me maybe 15 minutes to get everything back to the point I was previously at! Here's a screenshot of the current state of my app from the web browser:
Overall, it's a ton of fun every time I get to sit down and learn a little more about coding, even if it is a step forward and a few steps back sometimes. I'm very fortunate that I get to sit around close to 200 very talented Software Engineers at CareerBuilder and I can ask for help on an almost daily basis.
Hopefully in the very near future I'll have some good updates and screenshots of how my apps coming along. In the meantime, if you have any advice, words of encouragement, or are interested in hearing about a certain topic - please feel free to comment or email me at austi003@gmail.com. I'm hoping at least one person out there finds this blog interesting or gets some value out of it :)
Labels:
codenewbie,
coding,
css,
Ruby,
Ruby on Rails
Location:
Atlanta, GA 30319, USA
Saturday, June 21, 2014
What on earth is a Hackathon?
It's Saturday morning now, and I've finally recovered from lack of sleep while participating in the quarterly Hack-a-thon that CareerBuilder hosts. First off I have to say, I work for an AWESOME company and am so thankful they basically let me take two days off from my day to day job to participate with the Site Technology team!
Since many of you reading are my friends and family that probably have no earthly idea what a Hack-a-thon is, let me quickly explain (or you can watch the Hackathon video from last quarter - highly recommended)
If you're choosing to punish yourself and read through my description, here goes! A Hack-a-thon is very popular in the Software Engineering community and is basically a concept where Engineers come together to "hack" (code, program, engineer) on something. Sometimes they take place over the course of a 24 hour period such as CareerBuilder's, or they can also take place over the course of a weekend. Hack-a-thon's can also take place within individual companies (especially popular in Silicon Valley), or any other type of event hosted by a college, organization, or technical community where people can come from all over to participate. CareerBuilder holds a Hack-a-thon once a quarter where from 9 am Thursday until 9 am Friday they give the full Engineering staff 24 hours to work on anything they want to and CareerBuilder provides tons of food, drinks, and games to help power people through. While some people choose to work on fun projects, we also get ton's of great ideas for our products from these events (I'd like to say my idea will hopefully be used as a new feature!)
So enough on that - as many of you know I'm an IT Recruiter at CareerBuilder. I sit with the developers and I know how to write a little code, so they let me participate. I thought I would take the time to share my experience of the 27 or so hours starting at 9 am Thursday all the way through presentations which lasted until Noon on Friday. I won't document hour by hour, but I'll share some of the cool things (you can also check out my Twitter feed for more cb_Shaun or check out the handle #cbhackathon)
I had a good idea for one of our product lines, but obviously did not have the technical "know how" to actually implement it. Thankfully two of our Engineers were nice enough to let me work with them; one of them sits in the Norcross office with me and we also partnered with one of our Engineers based in France.
8:30 AM Thursday - Joseph and I had to make the most of our time working with Clement (who is like 5 or 6 hours ahead of us in France) so the first thing we did was jump on a quick video conference to discuss our game plan of implementing this solution. I quickly learned how much I DO NOT KNOW :) I knew that there would be a lot of code I would not be able to help with, but I think I hoped there would be more I could research early on to be able to help with. Before we got too far along though, it was time for breakfast!
After breakfast, I spent my morning hours working on a brief PowerPoint for our presentation for Friday. Joseph and Clement were busy researching how to implement the idea and putting together the backbone of our feature. Learning Point #1 - As a Software Developer, you first spend a lot of time researching other people's ideas and solutions, and then you actually begin to code. I guess I always thought they learn the programming languages and then instantly know how to begin typing out the code. In actuality, a lot of their job is research and then learning how to use their knowledge to implement.
11 AM - First game of the day - Viking Chess out on the lawn. If you've never heard of Viking Chess, which I hadn't either, you can read up here. I didn't sign up prior so I wasn't able to actually play, but I did enjoy a few beer's and some sunshine out on the lawn behind our building.
As I mentioned, Joseph and Clement had a lot of work to do getting the backbone in place that was WAY above my level of knowledge or understanding, so most of the morning/afternoon went by in a fairly uneventful manner for me. I tried to look over Joseph's shoulder and he at least explained what he was working on. They have "rev up" stations around the floor where you can get candy, snacks, energy drinks, etc and they provided us a buffet lunch at 1pm. I also got a few games of Ping Pong in although I'm embarrassed to admit I've still yet to win a single game! Learning Point #2 - Jesse, one of the Managers that is a top Ping Pong player at CB, finally taught me a little about how to spin the ball and different attacks to beat different players - hopefully soon I'll finally get a Win!
4:15 PM - A good chunk of the business day is gone, and I've yet to get to contribute to the actual coding, BUT we are finally starting to come along. Joseph and Clement have come a long way, and we have one piece of the ultimate project done, we are successfully texting (I can't share our ultimate idea as I hope it is a feature we will actually implement)
5:00 PM - The day has flown by and I'm sure many of our Engineers brain's are fried by now! We got stuck on several occasions, but thankfully Clement & Joseph are very smart and kept things moving along. Now it's time for the Happy Hour and some more evening games! CareerBuilder brings in Peachtree Growlers and catered food, and we get a few hours to relax & have some fun!
6:00 - 8:00 PM - Evening games on the lawn. Yes I'm sure many of you reading this (including my brother that actually sent me a text saying so) think the day is all fun and games :) For me, quite a bit of it was because the technical aspects were over my head. However, for many of our Engineers, they've been at it for 8 hours now and need a break to refresh! My work was still yet to come a little later in the night.
The evening games included Water Balloon launchers, Angry Bird launchers, some video games, and a human size hamster balll track.
My first time I was horrible at the Hamster wheel, but I got the hang of it the second run down the track. The biggest surprise for all of us - it's a TOUGH workout! Run down the track once or twice in that thing and you are absolutely worn out. All in all it a lot of fun, but now it's time to head back inside.
8:00 PM - We are finally at the stage that I can begin to contribute! This is what I've been waiting all day for (and really what I've been waiting for ever since March when I witnessed my first Hack-a-thon) and I'm ready to start coding. Joseph was able to assign me a few tasks that I could start researching in order to learn how to do; the first being how to normalize a number.
What does that mean you ask? Basically we needed a number to be in the following format +1XXXXXXXXXX. However, we might receive numbers in any number of different formats including (123) 456-7890 or 123-456-7890 - you get the idea. So I had to figure out how to take in the number provided, remove any special characters that might exist, check to ensure it was a 10 digit number, and then add a "+1" before it. Here is a screen shot of the ultimate code I came up with, written in PHP:
I also learned the basics behind how to use the Twilio API and was successfully able to send myself a text message via running the code from my desktop! Learning Point #3 - Just about any code you need to write exists somewhere, you just have to know what to search for and how to implement it.
10:30 PM - Starting to get a little quiet around the office as not everyone stays the full 24 hours, and a lot of people have gone home. At this point, we've started working on the User Interface (how it will appear to our user) and this is the type of stuff I can actually help with! Joseph found some good examples to work off of, and he gave me the task of figuring out how to use it. Naturally it takes me a little longer as I try to research and understand the code, but HTML & CSS are the two languages I feel most comfortable in at this point.
2:30 AM - I've been at it for close to six hours now, although I have taken some breaks for the occasional nerf dart war, midnight pizza, and another game of ping pong. I've finally got a working prototype of how this should look for our end user. It doesn't actually handle the data yet, but provides the needed code for Joseph and Clement to work with. It's probably something our Engineers can figure out in like 30 minutes, but I'm feeling pretty proud at this point!
5:30 AM - Let me give a quick recap at this point. We've been at it for about 21 hours now (At least Joseph has :) More like 9 1/2 hours of actual coding for me). I've probably had 6,000+ calories between breakfast, lunch, candy, dinner, late night pizza, etc. I've had I don't know how many cups of coffee & energy drinks, and several beers. I'm now officially exhausted & hardly keeping my eyes open, but we are definitely coming along with our idea! Joseph is an absolute beast powering through to this point & Clement did a ton for us earlier on. Since he's hours ahead of us, he did take some time to sleep through the middle of the night our time. Learning Point #4 - The Energy Drink industry is kept in business in large part due to Software Engineers
6:30 AM - We have a working prototype at this point. There are a few things we'd like to clean up and make look better, but Joseph and I are both exhausted! We agree on a two hour nap and back at it at 8:30 am. We know we aren't the first to present, so we'd have a little time to clean things up. I find a nice huge bean bag chair near my desk and semi-sleep for about two hours.
9:00 AM - I enjoyed my nice two hours of light sleep although I was right outside of the office of the CTO & CEO and they had an early morning conference call, so that was going on from 7:30ish on. At 8:30 I got up, cleaned up a little and brushed my teeth, and headed upstairs to the Alabama Conference room for breakfast and to get ready for presentations to begin. There were a total of around 35 presentations (each given 5 minutes or less to present) and we were around number 21. Clement was able to do some last minute clean up and everything looks great!
12:00 PM Friday - Presentations are done! I feel our presentation went really well and I'm anxious to see how everyone votes! Everyone is given three votes and you can vote for what you feel are the top three ideas (or just your favorite), and you are allowed to vote for your idea. Some people vote on the silly games, but all in all I think some of the top ideas definitely won out. Unfortunately our project was not in the top 3, but I do think we finished in the top third of overall projects. My highlight was the CTO voted on our project and even told me I should get to raise my hand twice for it! Since I'm a recruiter and not a programmer, I think everyone was pretty impressed with my idea overall and the implementation I was able to help out with. All member's on the top 3 winning team's each win a brand new iPad Air! Hopefully I can win one in a future event :)
12:30 PM - Finally headed home to get some much needed sleep! It was a fantastic experience and I'll anxiously await the next event in September. I learned a ton, had a lot of fun, and got to work with and see the work of some very talented Software Engineers!
Since many of you reading are my friends and family that probably have no earthly idea what a Hack-a-thon is, let me quickly explain (or you can watch the Hackathon video from last quarter - highly recommended)
If you're choosing to punish yourself and read through my description, here goes! A Hack-a-thon is very popular in the Software Engineering community and is basically a concept where Engineers come together to "hack" (code, program, engineer) on something. Sometimes they take place over the course of a 24 hour period such as CareerBuilder's, or they can also take place over the course of a weekend. Hack-a-thon's can also take place within individual companies (especially popular in Silicon Valley), or any other type of event hosted by a college, organization, or technical community where people can come from all over to participate. CareerBuilder holds a Hack-a-thon once a quarter where from 9 am Thursday until 9 am Friday they give the full Engineering staff 24 hours to work on anything they want to and CareerBuilder provides tons of food, drinks, and games to help power people through. While some people choose to work on fun projects, we also get ton's of great ideas for our products from these events (I'd like to say my idea will hopefully be used as a new feature!)
So enough on that - as many of you know I'm an IT Recruiter at CareerBuilder. I sit with the developers and I know how to write a little code, so they let me participate. I thought I would take the time to share my experience of the 27 or so hours starting at 9 am Thursday all the way through presentations which lasted until Noon on Friday. I won't document hour by hour, but I'll share some of the cool things (you can also check out my Twitter feed for more cb_Shaun or check out the handle #cbhackathon)
I had a good idea for one of our product lines, but obviously did not have the technical "know how" to actually implement it. Thankfully two of our Engineers were nice enough to let me work with them; one of them sits in the Norcross office with me and we also partnered with one of our Engineers based in France.
8:30 AM Thursday - Joseph and I had to make the most of our time working with Clement (who is like 5 or 6 hours ahead of us in France) so the first thing we did was jump on a quick video conference to discuss our game plan of implementing this solution. I quickly learned how much I DO NOT KNOW :) I knew that there would be a lot of code I would not be able to help with, but I think I hoped there would be more I could research early on to be able to help with. Before we got too far along though, it was time for breakfast!
After breakfast, I spent my morning hours working on a brief PowerPoint for our presentation for Friday. Joseph and Clement were busy researching how to implement the idea and putting together the backbone of our feature. Learning Point #1 - As a Software Developer, you first spend a lot of time researching other people's ideas and solutions, and then you actually begin to code. I guess I always thought they learn the programming languages and then instantly know how to begin typing out the code. In actuality, a lot of their job is research and then learning how to use their knowledge to implement.
11 AM - First game of the day - Viking Chess out on the lawn. If you've never heard of Viking Chess, which I hadn't either, you can read up here. I didn't sign up prior so I wasn't able to actually play, but I did enjoy a few beer's and some sunshine out on the lawn behind our building.
As I mentioned, Joseph and Clement had a lot of work to do getting the backbone in place that was WAY above my level of knowledge or understanding, so most of the morning/afternoon went by in a fairly uneventful manner for me. I tried to look over Joseph's shoulder and he at least explained what he was working on. They have "rev up" stations around the floor where you can get candy, snacks, energy drinks, etc and they provided us a buffet lunch at 1pm. I also got a few games of Ping Pong in although I'm embarrassed to admit I've still yet to win a single game! Learning Point #2 - Jesse, one of the Managers that is a top Ping Pong player at CB, finally taught me a little about how to spin the ball and different attacks to beat different players - hopefully soon I'll finally get a Win!
4:15 PM - A good chunk of the business day is gone, and I've yet to get to contribute to the actual coding, BUT we are finally starting to come along. Joseph and Clement have come a long way, and we have one piece of the ultimate project done, we are successfully texting (I can't share our ultimate idea as I hope it is a feature we will actually implement)
5:00 PM - The day has flown by and I'm sure many of our Engineers brain's are fried by now! We got stuck on several occasions, but thankfully Clement & Joseph are very smart and kept things moving along. Now it's time for the Happy Hour and some more evening games! CareerBuilder brings in Peachtree Growlers and catered food, and we get a few hours to relax & have some fun!
6:00 - 8:00 PM - Evening games on the lawn. Yes I'm sure many of you reading this (including my brother that actually sent me a text saying so) think the day is all fun and games :) For me, quite a bit of it was because the technical aspects were over my head. However, for many of our Engineers, they've been at it for 8 hours now and need a break to refresh! My work was still yet to come a little later in the night.
The evening games included Water Balloon launchers, Angry Bird launchers, some video games, and a human size hamster balll track.
My first time I was horrible at the Hamster wheel, but I got the hang of it the second run down the track. The biggest surprise for all of us - it's a TOUGH workout! Run down the track once or twice in that thing and you are absolutely worn out. All in all it a lot of fun, but now it's time to head back inside.
8:00 PM - We are finally at the stage that I can begin to contribute! This is what I've been waiting all day for (and really what I've been waiting for ever since March when I witnessed my first Hack-a-thon) and I'm ready to start coding. Joseph was able to assign me a few tasks that I could start researching in order to learn how to do; the first being how to normalize a number.
What does that mean you ask? Basically we needed a number to be in the following format +1XXXXXXXXXX. However, we might receive numbers in any number of different formats including (123) 456-7890 or 123-456-7890 - you get the idea. So I had to figure out how to take in the number provided, remove any special characters that might exist, check to ensure it was a 10 digit number, and then add a "+1" before it. Here is a screen shot of the ultimate code I came up with, written in PHP:
I also learned the basics behind how to use the Twilio API and was successfully able to send myself a text message via running the code from my desktop! Learning Point #3 - Just about any code you need to write exists somewhere, you just have to know what to search for and how to implement it.
10:30 PM - Starting to get a little quiet around the office as not everyone stays the full 24 hours, and a lot of people have gone home. At this point, we've started working on the User Interface (how it will appear to our user) and this is the type of stuff I can actually help with! Joseph found some good examples to work off of, and he gave me the task of figuring out how to use it. Naturally it takes me a little longer as I try to research and understand the code, but HTML & CSS are the two languages I feel most comfortable in at this point.
2:30 AM - I've been at it for close to six hours now, although I have taken some breaks for the occasional nerf dart war, midnight pizza, and another game of ping pong. I've finally got a working prototype of how this should look for our end user. It doesn't actually handle the data yet, but provides the needed code for Joseph and Clement to work with. It's probably something our Engineers can figure out in like 30 minutes, but I'm feeling pretty proud at this point!
5:30 AM - Let me give a quick recap at this point. We've been at it for about 21 hours now (At least Joseph has :) More like 9 1/2 hours of actual coding for me). I've probably had 6,000+ calories between breakfast, lunch, candy, dinner, late night pizza, etc. I've had I don't know how many cups of coffee & energy drinks, and several beers. I'm now officially exhausted & hardly keeping my eyes open, but we are definitely coming along with our idea! Joseph is an absolute beast powering through to this point & Clement did a ton for us earlier on. Since he's hours ahead of us, he did take some time to sleep through the middle of the night our time. Learning Point #4 - The Energy Drink industry is kept in business in large part due to Software Engineers
6:30 AM - We have a working prototype at this point. There are a few things we'd like to clean up and make look better, but Joseph and I are both exhausted! We agree on a two hour nap and back at it at 8:30 am. We know we aren't the first to present, so we'd have a little time to clean things up. I find a nice huge bean bag chair near my desk and semi-sleep for about two hours.
9:00 AM - I enjoyed my nice two hours of light sleep although I was right outside of the office of the CTO & CEO and they had an early morning conference call, so that was going on from 7:30ish on. At 8:30 I got up, cleaned up a little and brushed my teeth, and headed upstairs to the Alabama Conference room for breakfast and to get ready for presentations to begin. There were a total of around 35 presentations (each given 5 minutes or less to present) and we were around number 21. Clement was able to do some last minute clean up and everything looks great!
12:00 PM Friday - Presentations are done! I feel our presentation went really well and I'm anxious to see how everyone votes! Everyone is given three votes and you can vote for what you feel are the top three ideas (or just your favorite), and you are allowed to vote for your idea. Some people vote on the silly games, but all in all I think some of the top ideas definitely won out. Unfortunately our project was not in the top 3, but I do think we finished in the top third of overall projects. My highlight was the CTO voted on our project and even told me I should get to raise my hand twice for it! Since I'm a recruiter and not a programmer, I think everyone was pretty impressed with my idea overall and the implementation I was able to help out with. All member's on the top 3 winning team's each win a brand new iPad Air! Hopefully I can win one in a future event :)
12:30 PM - Finally headed home to get some much needed sleep! It was a fantastic experience and I'll anxiously await the next event in September. I learned a ton, had a lot of fun, and got to work with and see the work of some very talented Software Engineers!
Location:
Norcross, GA, USA
Wednesday, June 18, 2014
Gotta start somewhere right?
So over the course of the last two weeks, I haven't quite updated my blog the way I hoped, or had much of a chance to do any significant practice or studying with coding. I did have a nice trip up to Chicago though and got to meet some co-workers and see an old college buddy. Being in Chicago gives me such an itch to pick up and move there as well - I've always been drawn to Chicago & NY.
Problem: I prefer to cook healthier options at home, but I never know what to cook
Anyway, I figured lunch today would be as good as any to type out a few thoughts in between bites. To be honest, today's topic is as much for me as it is for anybody that actually reads along :) I have an idea for an application I'm going to work on, and wanted to do a "before" post so that six months or a year down the road, I can look back and see where I started.
I mentioned to a few of the developers that I was interested in learning how to program, and the guys I sit around have a focus towards Ruby on Rails, so they recommended "Agile Web Development with Rails 4" as a good book to follow along with. I actually got the book about a month or two back, and have slowly started working my way through. Through a good chunk of the book, it lets you follow along with building an eCommerce site which they call the Depot application. However, this past weekend I decided on an idea for a new application that I would try to build while following along with their examples.
Problem: I prefer to cook healthier options at home, but I never know what to cook
Solution: Just for the fun of it, I want to build a site where I can upload the recipes I like, and then use a random generator to pull recipes. If I can figure out how to do it, I may add in features to choose between Breakfast, Lunch, & Dinner options, or maybe even choose between types of Dishes (i.e. Chicken, Pork, Fish).
I'm hoping to use some of the same functionality of the Depot project such as adding new products (new recipes). As I begin to progress, I'll upload to github (austi003) if you'd like to follow along or see my code. Hopefully I can get something working, even if it's not the most professional looking!
At this point, my experience is primarily the classes I took as a CS minor in college, along with 2-3 months of sporadic studying I've been doing, but I wanted to rate myself before I get started:
- HTML/CSS/JavaScript - (4 or 5) - I took a number of classes on HTML/CSS/JS in college, and have probably done the most work here. Especially for HTML/CSS, I know a lot of the basic syntax and can follow along with the code even if I can't write it all off the top of my head. For most projects, I probably know enough that between my knowledge, and using Stackoverflow or a google search, I can figure out how to do what I need to.
- Ruby (1 or 2) - This is the first object oriented language I'm learning, primarily because the developer next to me gave me a problem to solve in Ruby. I've at least started learning about the overall syntax and what methods & classes, & types of variables, etc. At this point, I would still consider myself very basic though. Here is a sample screenshot of my code, and once again you can find it on Github.
- Ruby on Rails (About the same) - I at least understand conceptually the whole MVC concept and hopefully will learn a lot more about Rails as I go
So that's my starting point and level of knowledge, let's see where it takes me! On one quick side note, our quarterly Hack-a-thon at CareerBuilder takes place tomorrow starting at 9 am - I'm working on an idea with two of our engineers and it's my first Hack-a-thon to participate in, so I'm pretty excited! Feel free to follow along on Twitter @cb_Shaun and probably the tags #careerbuilder or #cbhackathon - I'll try to post some pictures and updates throughout the day/night.
Tuesday, June 3, 2014
And so the journey begins
I must admit, I thought blogging was kind of a fad that went away years ago, but I've been inundated with messages lately encouraging blogging. I attended the May Atlanta Ruby Users Meetup Group and heard a good talk on the power of blogging, and I've randomly stumbled across a few other blogs as of late (Josh Kemp &Mal on Rails) - so I decided to jump on the bandwagon. I guess worse case it's at least a time capsule that ten years from now I can go back in time and remember whatever crazy ideas I had back then!
Funny thing tonight is that I found a link pointing to blogger.com and thought I would check it out - turns out I already did so back in 2007 (My 2007 blog)! I forgot all about that post but clearly never stuck with it. So here it goes, and I'll see if I can actually stick at it for awhile this time.
So why am I here? I've had a very successful career for the last few years as an agency IT recruiter and now corporate technical recruiter, and I've made very good money doing so. I'm not even sure at this point if I wan to leave recruiting or not. I have however, long had a desire and interest in IT, and coding in general. I remember as early as elementary school being in the computer club (yes I was a nerd) and making a basic football field simulation in Basic, and in middle school I asked my parents to buy me a copy of Visual Basic for Applications when we got our first family computer. I even minored in Computer Science in college and got my feet wet with HTML/CSS/JavaScript. I've just never taken the full plunge. Who knows, maybe it's just the childlike syndrome of wanting what you can't have. Now that I sit on the floor with our developers and see what they are doing all day, I think I want to do it because I'm not doing it now...
I've been bouncing back and forth for the last six months or so wondering if it is finally time to try to get into the IT field, and if I wanted to teach myself to be a developer. So about a month or two back, my then girlfriend and I were at Barnes & Noble, and I once again went over to the section with all of the books on programming, and asked her if I was nuts for wanting to buy a book to see if I really would enjoy teaching myself to code. She was of course very supportive and I'm now a few books in. I really haven't decided if I want to do this as a full time job, or if it's more just a hobby, but I've at least embarked on the journey. I do a lot of self-study at home and am working through the Agile Web Development with Ruby on Rails 4 book, but also get some interesting problems from the developers that sit next to me at work (working on a Ruby file that takes in a wave file and then gives certain information related to that wave file, plays it forwards/backwards, etc).
So what's my plan moving foward? This blog turned out to be a little long, and I plan to keep them short and sweet moving forward. I know I'm pressed for time and wouldn't read anything this long, so I don't really expect other people to have time to either. As I've seen suggested though, I'm going to try to make a few entries a week documenting different things through my journey. I may leave them strictly related to coding or I may venture out into other topics. Maybe I'll even share my knowledge in the world of recruiting to help people looking for jobs gain some insight into what recruiters look for. Stay tuned and hopefully I'll have something of value at some point! :)
Funny thing tonight is that I found a link pointing to blogger.com and thought I would check it out - turns out I already did so back in 2007 (My 2007 blog)! I forgot all about that post but clearly never stuck with it. So here it goes, and I'll see if I can actually stick at it for awhile this time.
So why am I here? I've had a very successful career for the last few years as an agency IT recruiter and now corporate technical recruiter, and I've made very good money doing so. I'm not even sure at this point if I wan to leave recruiting or not. I have however, long had a desire and interest in IT, and coding in general. I remember as early as elementary school being in the computer club (yes I was a nerd) and making a basic football field simulation in Basic, and in middle school I asked my parents to buy me a copy of Visual Basic for Applications when we got our first family computer. I even minored in Computer Science in college and got my feet wet with HTML/CSS/JavaScript. I've just never taken the full plunge. Who knows, maybe it's just the childlike syndrome of wanting what you can't have. Now that I sit on the floor with our developers and see what they are doing all day, I think I want to do it because I'm not doing it now...
I've been bouncing back and forth for the last six months or so wondering if it is finally time to try to get into the IT field, and if I wanted to teach myself to be a developer. So about a month or two back, my then girlfriend and I were at Barnes & Noble, and I once again went over to the section with all of the books on programming, and asked her if I was nuts for wanting to buy a book to see if I really would enjoy teaching myself to code. She was of course very supportive and I'm now a few books in. I really haven't decided if I want to do this as a full time job, or if it's more just a hobby, but I've at least embarked on the journey. I do a lot of self-study at home and am working through the Agile Web Development with Ruby on Rails 4 book, but also get some interesting problems from the developers that sit next to me at work (working on a Ruby file that takes in a wave file and then gives certain information related to that wave file, plays it forwards/backwards, etc).
So what's my plan moving foward? This blog turned out to be a little long, and I plan to keep them short and sweet moving forward. I know I'm pressed for time and wouldn't read anything this long, so I don't really expect other people to have time to either. As I've seen suggested though, I'm going to try to make a few entries a week documenting different things through my journey. I may leave them strictly related to coding or I may venture out into other topics. Maybe I'll even share my knowledge in the world of recruiting to help people looking for jobs gain some insight into what recruiters look for. Stay tuned and hopefully I'll have something of value at some point! :)
Subscribe to:
Posts (Atom)