Monday, December 2, 2013

What is the difference between :name and name: ?

To be honest, I was always confused by name: and :name in Ruby. I never fully understood the differences until I read about it in the Hartl Tutorial.

The Michael Hartl Ruby on Rails Tutorial is an excellent way to learn Ruby on Rails. The tutorial has been updated to Ruby 2.0 and Rails 4.0. I've been working through this tutorial to get updated on the new features and differences in Rails 4.0.

There are several ways to define elements in a hash using a literal representation of key value pairs. We are going to define a hash called pairings that will pair a coffee with a dessert that goes well with this coffee. We will use 3 different ways to assign the key value pairs.

1. Using a string and a hashrocket. The "=>" is called the hashrocket because doesn't it look like one?

  pairings = { "coffee" => "Columbian", "dessert" => "Flan" }

  Use the string as a key in pairings["coffee"] to access the value "Columbian"

2. Using a symbol for the key and a hashrocket. In the previous example the key was the string "coffee". We will replace this string with the symbol :coffee. A symbol is a string without the extra baggage. Ruby will create an almost unlimited number of string instances for all your hash keys, but will only keep one copy of a symbol in memory at a time.

  pairings = { :coffee => "Columbian", :dessert => "Flan" }

  Use the symbol as the key in pairings[:coffee] to access the value "Columbian"

3. "Good Guy" Ruby let's us replace the ":symbol =>" with just 'symbol:'. I kinda miss the hashrocket but I don't miss typing  all those extra characters.

  pairings = { coffee: "Columbian", dessert: "Flan"}

  Use the symbol as the key in pairings[:coffee] to access the value "Columbian"


Easy peasy... the name: syntax simplifies hash construction.
TL;DR Use coffee: to replace ":coffee => " or " 'coffee' => " when creating key value pairs for hashes.

Friday, July 12, 2013

A few weeks in ....


I wrote this 5 weeks ago but was too busy to post. As you can read, we are covering a lot of material in a very short period of time. They really put the I in WDI... it is an intense, immersive experience. Totally worth it.

By the end of the first week of WDI  I wrote a program that accessed three different Ruby gems to display (1) daily stock quotes, (2) random images from the web and (3) movie data from IMDB in a web browser.   I was over the moon the first time I pulled stock quotes from the web thru a Ruby gem. I had no idea at the beginning of the week I'd be capable of this kind of programming after 4 days in the classroom.

The pre-work for the class was my only exposure to web development and Ruby.  (The pre-work was comprehensive, a lot of work and absolutely necessary)

This class is continuing to move rapidly.  On Monday morning we reviewed javasript and jQuery. In the afternoon we wrote an "ATM" web app with checking and savings withdrawal  (including overdraft protection) and deposits. We built this using javascript, jQuery, html and CSS. Tuesday we covered Twitter Bootstrap. I think the plan is to cover databases this week
Yesterday we were invited to the project presentations of the WDI class that is 9 weeks ahead of us. Their projects were amazing. You can see an example of a class project at http://cssstache.herokuapp.com/  (an app to share CSS snippets). It is inspiring to see what we have ahead of us

Sunday, July 7, 2013

Admissions Process - Getting into a developers bootcamp

From Getting accepted to getting ready to learn 




web school

Submitting applications to the right academy

Finding the right academy to apply to takes a bit of research. I was lucky that there are some great resources on the web. Michelle Glauser has been maintaining a very comprehensive list, with special interest in those that focus on women.

I used Michelle's excellent list to develop my own list of code bootcamps. I looked at the following factors:
  • location (needed to commute without needing a car)
  • timing (as soon as possible)
  • curriculum (comprehensive web development)
  • percentage of students that get hired after camp (> 90%?)
  • payment options (flexible)
  • length (longer than 9 weeks)
So I applied to 4 different camps. I interviewed with 3 (withdrew from the 6th because I accepted a position before the interview with their org was even scheduled). The interviews focused on whether I had the drive and the chops to make it through the process. I ended up enrolling in GeneralAssembly's WDI .. Web Development Intensive. More on that next time. 

Thursday, May 2, 2013

codeacademy.com

codeacademy.com
Note: The codeacademy.com team has no idea that I am blogging about them. I was not asked or paid to write about them. This only reflects  my experience and I am thankful this resource is available.

About a year ago, one of my colleagues told me about a intensive coding school that he was going to attend. He had a great idea for a startup and wanted to build the prototype.

I remember thinking to myself, is that even possible? How can you learn enough coding to be competent in such a short time? Sounds crazy, I thought.  But a seed had been planted.

About that time I was introduced to codeacademy.com. I wanted to leverage my python learnings at work and I was offered a project.  The slight obstacle was the application was to be written in javascript,  a language I did't know.  It was recommended to use codeacademy.com to come up to speed on javascript and I gave it try.

The online training experience was so different from the traditional learning model. No sitting in a lecture and then going off and trying to implement what you learned. You code and you code right away.

First you are  presented a completed project. Run the code, look at how it works. Then the program is deconstructed and rebuilt concept by concept until the project is recreated. You build the application step by step.  With each step you are practicing how to code and learning a concept at the same time.

I was never left a lesson feeling confused and uneasy.  If I needed help I could post a question to the forum or look up information in the glossary. I could also scroll back to previous lessons to review.  I was enjoying learning programming again. It was fun.

The work project never got off the ground but it was worth it to learn about online resources like codeacademy.com.  I would rely heavily on codeacademy.com later.

Fast forward 9 months and I read this blog post  by Michelle Glauser on resources for learning to code. She posted a fantastic spreadsheet listing quite a few coding bootcamps.  I'll talk about the admissions process in the next post.






Tuesday, April 30, 2013

Why software development?


I can write scripts, SQL and configure Salesforce.com apps but I didn't code. I wanted to learn but found I had created a mental block about it from taking a C class years ago.   You probably know that the C  programming language is a lower level language that gives the programmer great control over the computer hardware.  Things like the Windows  were written in C (and C++).  But if you could give a rat's ass about how the hardware works then learning C is really challenging.

Here was my brain trying to read C code:
  Hey, I get this part but what does this symbol mean?
  What the hell is this code doing?
  Why the hell do I need this line of code?
  Is there any example code I can repurpose?
 
I would understand a few concepts then there would be this one little detail that didn't make sense. Pretty soon, there was a big backlog of stuff that didn't make sense and I was lost.  I was missing too much knowledge to grasp the concepts.  And being one of the few women in the class,  I thought I'd be made fun of if I asked for help. (silly me.. I should tested that theory and asked for help anyway).  I thought I was too dumb to code.

Then I attended a python class taught by a colleague. He was really good at  teaching programming concepts using python.  Python is a higher level language; less like machine code and more just logic statements.  I started to understand things that had baffled me before;  like arrays and objects.  An array didn't seem like some unknowable thing that you stuff variables into to.  I could create an array and read from it.  Arrays were actually useful.

I started to wonder if maybe programming wasn't so hard to learn.  I started to have hope.  But knowing Python was not enough. Users need a GUI to use a program.  How do I build a GUI?  Then there's the software program, where do you build it?  How do users access your code?  There are many parts and pieces that come together to make an app useful.  I didn't have the energy to figure it all out on my own.

Then along came Codeacademy.com. and the Web basics track.  More on this next post.





Monday, April 29, 2013

And so it begins....

Things are changing at Sassy Dumplings.  Not that there was much going on here, really. Well the post frequency is definitely going to increase. I am going to blog about my journey of going from a noob (newbie) to a professional web developer.

It's a big step to leave my job at the big High Tech Company. The significant other is stressed over the future reduction in the income stream. And the near future doesn't make him feel better as I will probably be getting paid as a junior developer rather than a senior program manager once I'm done.

But I want to be happy. I am tired of feeling my technical skills are obsolete. It's time to reboot.  It's time to become Sassy Dumpling 2.0.  I am attending the Web Development Immersive training class at General Assembly in May.

Go check it out.  About 50 hours of pre-work and 12 weeks of study. Then you can intern for another 3 months (at intern wages) and keep learning your craft.   6 months and you've changed careers, sweet.  All this without the student loans,  midterms,  finals and listening to boring lectures about soon to be obsolete technology.

More on why I decided to do this tomorrow....