bloc referral

If you are interested in learning to code with a mentor, try bloc and get $100 off.
Showing posts with label journey. Show all posts
Showing posts with label journey. Show all posts

Monday, April 20, 2015

Miami Effect: Dev Recruiting

* This was a rought draft of a CFP I was planning to enter at a local Rails Conference. I never submitted it due to me moving to SF. 

In the 1980's Howard Schnellenberger knocked door to door in neighborhood homes in Miami-Dade county. Recruiting football players that nobody wanted. He took a chance on the local community and built a dynasty that dominated football in the NCAA.

Not only was the University of Miami unknown as a private college, their primary focus was trying to be part of the Ivy League of the south. Coach Schnellenberger knew he had no chance getting the top talent to not sign with Oklahoma, Texas, or even Florida and Florida State.

His thought was to grab the unwanted talent from the neighborhoods you would drive your Miami Porsche Convertible through. Most prospects had troubles that the top schools did not want to deal with and despite that Miami was able to build and grow a team from their very own community. The result was this simple change in recruitment turn the community into die Miami fans, because the boys from the neighborhood all played for the school, which increased ticket sales.

In addition to the increase in increasing fans, The team began to win. A new form of untapped talent was accessed and developed into a NCAA powerhouse. Another pro to this recruiting style, was the talent became virtually endless because the younger brothers and fans eventually grew up to play for Miami because of their loyalty to the neighborhood.

Miami went on to win 4 National NCAA Championships in only 8 years after being relatively unknown prior.

Why so much talk about Miami?

I read an amazing blog post from Ashley Nelson-Horenstein that gave a simple answer to the metaphor that you should check out. Everywhere you look you see post for Senior Developers, recruiters are bending over backwards to catch the big fish out there while completely ignoring the junior-mid level talent.

Their efforts are very understandable, Tech companies want to win championships and build products quickly. The opportunity to make money in tech is huge and there is a huge sense of urgency for companies to iterate and hire quickly, but what happens when a company drops everything to obtain these talented individuals?

Look at the Miami Heat; no longer a powerhouse they once were.

What if tech companies put more effort in recruiting and developing the potential talent eager to learn and hungry for growth in their career? I am sure in return they would receive the same loyalty from that same home grown talent, the way Miami received.    

There is an overwhelming thought that there is just not enough developers out there to do the work that needs to get done, but there is a whole opportunity to teach new people. The framework I work in, Rails has reached the stage of maturity where people can now be taught how to build a blog in 15mins or with enough experience, craft a MVP in a weekend.

I believe that there could be potential in the local community for more growth. If a focus is put in helping the self awareness of the under represented groups in tech to lead the charge in encouraging their communities to take the opportunity to learn such a coveted skill.

Rails has actual done a great job in leading the charge in closing the Gender gap with organizations like RailsBridge and RailsGirls. Making sure that the overall community is one that is inviting and accepting of people of all walks of life.

I began learning how to program in 2013 and decided as a way to keep myself accountable, I kept this blog of my efforts. I also re-emerged myself on twitter. Previously I was a twitter lurker, but I found it was a great tool to engage actual established developers.

As time went by and while I continued down my journey towards proficient programming, I started noticing people reaching out to me and asking me questions, like what do you think about this or how do you do this... sort of thing. I of course answered them and moved on. I eventually started noticing something similar between the majority of the people that reach out to me and it was they were a majority black males.

My hope is to reach other minorities in Rails and encourage them to share their story to encourage others, but also reach out to the community as a whole to let them know to encourage minorities who might not necessarily speak up due to impostor syndrome or other false limitations.

The Pitch
There is a great deal of work closing the gender gap, and it has been accepted into the community with open arms. I believe the community ready to talk about closing the cultural gap in tech now. As Black male I am encouraged to share my experiences to others, and hold myself to have the personal responsibility to be my own spokesperson.

What happened to all of the Black and Hispanic computer scientists out there? Are our struggles, voices, and efforts now irrelevant, because we don't have the notoriety of a Steve Jobs, Zuck, or Larry and Sergey? Aren't each of us the best representations of how to not only survive, but thrive in a field where the odds are against us from the start?

Outcome: I am part of Steamrolers, which is a slack chat community open to all people interested talking about diversity and closing that gap in tech. 
I hope to also encourages to reach out to their community just as DeVaris Brown in the Tenderloin

Wednesday, March 18, 2015

Are programming bootcamps worth the price?

The past week has been very busy and included two trips to move my stuff from Orlando to Tampa to prepare to eventually move to San Francisco. While picking up my uhaul the Uhaul employee noticed a shirt I was wearing which happened to have the logo for Extreme Networks, a vendor I worked with at Tech Data (in sales). I explained it was a networking company and he mentioned that he was looking into going back to school for networking engineering and asked me if it would be worth it.

The individual was probably around my age and I asked him why he wanted to do network engineering? He explain that it probably paid well and he was always interested in computers, and with my keen ear for hearing the customer and closing a sale I just had mention my story and how I got into software in less than 7 months. 

He was definitely intrigued and I told him about my new employer and how we teach interested individuals how to become a web/mobile developer.

This got me thinking while I drove across the state of Florida, this uhaul employee was going to go back to school for probably 15-30k in tuition for the hope in making more than what he was getting paid at Uhaul. I paid 5k for the opportunity to learn via Bloc and in person bootcamps for less the tuition and dedicated 4 years. 

While at IZEA I watched countless interviewees walk in for interviews out of college with Computer Science degrees but no real experience and no real portfolio to prove their ability develop code. 

In the United States it is preached that once you have a degree you will have a great job, but I worked at a job out of college for 24k a year because I couldn't get a job in finance.

So my question before I answer original question is, Is getting a college degree even worth it? I have Finance Degree from an accredited state school and have yet to use that piece of paper or even provided a copy of it to any of my employers. To be honest I haven't even removed it from the cardboard envelope it came 7 years ago (What a waste of $48, the cost to send it to me).

I now work at a job making more than twice as much as I my base pay in sales and a significant amount higher than my salary even with a highest received bonus'd month. When I share the amount I paid to learn via Bloc's mentorship program and discuss the cost of bootcamps with others, it is very common to hear that rebuttals to how expensive the cost is, but when you talk with the same population of people  about going back to school, there is not even a second thought about that cost. 

For some perspective: I am currently rooming with someone who made the decision to drop out of a very well known and expensive College in Nashville to pursue his dream with DevBootcampSF, which really sparked me to write this blog post. Instead of paying for 150k+  in tuition after graduation, he is now only what it would cost for one semester in College.

So are bootcamps worth it?

My response is obvious, it yes, but I truly believe if you are looking for an experience that you get when going back to school where you can just breeze by and get a job when its over, you might as well just go back to school. Bootcamps are definitely worth it, but you need to be driven and be willing to experiment with different tools, build a portfolio outside the curriculum, and be willing to attend meetups get involved in the community to eventual get that offer that truly makes it worth, but more on those details in a future post. 

Bootcamps, including Bloc, all have payment plans to help cover the cost up front. Some bootcamps even offer financial assistance for the exceptionally driven individuals.

Best of luck on your journey and your decision to learn to code. 

Monday, March 2, 2015

I made a podcast

I made a podcast over the weekend, something I have wanted to do for awhile. The podcast itself will just be me, no interviews, chatting about my story into developing. I have completed about 16 months in learning myself and with a mentor, with 9 months of that working professionally.

I am now embarking on a new journey and felt as if a podcast would be a goo platform for that. I am still continuing to blog on my coding discoveries here, but will eventually move it over to my new site.

Please check it on at DevelopStory.link


Friday, February 6, 2015

RVM

I wrote this tweet during my first month into web developing learning. Looking back now I can laugh at my ignorance, because I absolutely love RVM and being able to switch my rubies on the fly. It took some time but I now feel a lot better at working in the command line and installing package like RVM.

I recently spent some time pairing with a fellow Code Newbie and found RVM to be very helpful in debugging their issues.

If you are using or learning Ruby I highly recommend the use of RVM.

Use this path to install RVM:

$ \curl -sSL https://get.rvm.io | bash -s stable

*If you ever want to find old tweets, use this link

Friday, January 30, 2015

Marked HAML

I spent quite some time in my developing learning avoiding HAML, SLIM, and all other template alternatives, but recently I took on the task of working on a project that was exclusively written in HAML.

HAML is a template language that is meant to make writing html less of a drag. It was very common for myself to forget closing brackets and div tags which always annoyed me greatly, but I avoided the simplicity of HAML because I wanted to force myself out of that bad habit. HAML does not require any brackets and works with spacing and indentation to convert the valid html.

I initially reaction when started the project was to convert the existing HAML into/erb right away, but I then read an article from Hashrocket and found they used HAML exclusively and it got me thinking, maybe it's time for start learning this.

Here is an example of html converted to haml:

What annoyed me the most was the errors received due to the sensitivity of spacing. If your indentation is off HAML will tell you. If you write invalid code, HAML will tell you and there is less flexibility with how much Ruby logic you can place in your template.

Learning Ruby/Rails first introduced me to erb and I love it and understand it, which is another reason why I avoided HAML.

I have since stopped work on this project but did walk away with some more experience in this templating language. I can't say I would go for HAML at the start of a project but I don't think I need to avoid it anymore. I will definitely give it another shot on one for my smaller projects, especially since I am pretty sure this is not the last I will see of it.

If you come across HAML somewhere I recommend learning it and use tools like hamle2erb or htmltohaml

Monday, January 26, 2015

Saying goodbye to my biggest cheerleader

10 days ago I received an unexpected phone call from my brother letting me know my mother had past away. My entire world completely stopped while I took time to grieve.

My mother was the hardest working woman I ever knew and I am very grateful for what she has done for me and my brothers. Despite being a single mother, I was able to not only grow up in a decent neighborhood and attend great schools; I have also been given a chance to follow my dreams.

When I began my programming journey, my mother was one of the few I told of my decision to go down this path and encouraged me everyday. She read my blog post and even retweeted my tweets even thought none of it made sense to her. 

In support of mothers who are also going down the same journey as myself, into programming, I have given a donation to MotherCoders in her honor. 

I will miss you mom, thanks for all you have done. 

















Thursday, January 15, 2015

An opportunity for friends to help friends

About a month ago I was approach by someone to gauge my interest in a staring a community. This community was to be one that represent the underrepresented individuals in the Tech Sector.

When I first began learning to program I dove head first into tutorials and code samples, I did not really take anytime to look around and didn't realize the proportions of Women and Minorities in tech were extremely. I didn't know as I trail blazed into a career, that I would be on of the few minorities working in my new position. 

It is very easy for companies, like Y Combinator to look back and say the reason for this is because women and minorities are not interested in Web Development or Design, and based on the talent pool applying for these jobs is proportionate to the culture make up of who is currently working in the field. Based on their article their outreach efforts will be strengthen, but I am not sure that is enough. What if there more communities like BlackGirlsCode and RailsBridge to source this talent from?

The term friends want to hire their friends comes up a lot and I find no problem with that statement or practice, because I think that this community has the potential the individuals who are hiring and recommending tech jobs to their friends to now make even more friends. 

I am proud to announced that I have joined a community of SteamRolers prepared to changed the talent and support each other in their desire to shake up the cultural make up. 

If you are at all interested in this, please check out our new site where the conversation has already started. Steamrolers.com


Monday, January 5, 2015

Remembering my time at Bloc and how I got here.

Was Bloc the stepping stone that prepared me to be become developer I am today?

This is a question at least once a week and I usually answer via email in great depth, but thanks to the recent Code Newbie podcast and Scott Hanselman I am going to share my response with everyone.

I graduated out of the Bloc Apprenticeship officially March 17th 2014, and for those wondering my mentor was Adam Louis, for more details about my Bloc can be found on their site, I have my own experience page.

But lets get back to the originally question; for a quick answer, yes is the answer. I work developer in Rails the same technology I learned while learning with my mentor. I not only followed the unique Bloc curriculum, but I also tried things outside of the curriculum. Bloc gave me the ability to try new and different things to set apart from others. I got into testing very early, which is something I think too many Code Newbies avoid.

One of the first things discuss my thrice-weekly Bloc session was, I was going to "learn how to learn." All these bootcamps out there now are not really teaching you how to write code, but they are really teaching you how to learn how to write code and how to look things up for yourself.

I have only ever gone through Bloc and can't really speak to the experiences in live in person bootcamps, but what I can say Bloc is a one-on-one intensive mentorship, where you can learn as much or as little as you want. You are able to ask your craziest questions and really go on tangental learning experiences.

How about another question:

Did Bloc give you the ability to write functional applications?

That answer is another yes, I spent a lot of time... specifically 30-40 hours a week building sudo-client ready applications, based on feature wish-list provided.

All the apps I created were in the Minimal Viable Product state, but they perform the minimum functions required and with a little more help on the design  side they could be pretty presentable apps.

I completed the Rails/Fullstack curriculum, but there are also Design and Front-End curriculums, as well as Android and iOS.

Now with Javascript Frameworks becoming bigger and would I opt to go through the Front-End course instead of the Fullstack/Rails course?

It's crazy to think that when I started all of this Angular/Ember/Meteor...etc were barely on the radar. I haven't even heard of Node and when I did, it was about people complaining about how it wasn't Ruby.

Even though I am now excited about Node/Ember/Express. I would still go through the FullStack curriculum. I fell in love with Ruby and got really excited about Rails before I knew that Bloc was a thing. The community surrounded by Rails is still great and very instrumental in me continually advancing in my knowledge.

Ruby is hands down a great language to learn for new programmers.

For someone who has zero programming  and design experience, I still recommend the Ruby/Rails path. I also do not think Rails is going away anytime soon and even this newly indoctrinated "Javascript all the things" world there will still be a place for Rails.

*Seriously if I hear another person tell me how the MEAN stack is the Messiah to web development and Javascript should be written everywhere and on all things - those people are crazy.

Does Bloc help with finding you a job?

Bloc announce to a new Job Prep portion back in November, which I have not gone through, for obvious reason ( I already have a job) and did not offer anything like this during my time with them, but from what I hear its pretty .

Bloc does connect you with alum and lets you in their alumni network you can network for next job, but at the end of the day, getting job is the continuation of your hard while in the apprenticeship.

I personally hit the street and networked at local meetups and conferences to get where I am today.

*If anyone who has tried the Bloc Job Prep section wants to chime, please let us know your experiences.

-------
I think that about covers the most common questions I get, but feel free to send email and I can answers anything that wasn't covered in the blog post.

Saturday, January 3, 2015

Ghost Express/Ember app set up

I have turn my Javascript learning into some kind of renaissanceas of recent. I originally began learning Ember and quickly realized I did not know enough Javascript. I then proceeded to learn Ember and realized I didn't know enough about Node. I then learned Node and Express and glad I did.

Later I took on the challenge of forking the discourse project, which is a large Rails/Ember app and failed getting the pg database started. I gave that up after attempting to get it working after a long week.

I recently attempting the same task with Ghost, a blogging platform, and happy to report I got it up and running. I originally started using the Ghost hosted portion their blog platform 9 months ago, before it was cool. I had hopes of doing what I did today, host a blog on my own, but never got around to that till recently.

Ghost is built with node.js with Ember driving the

Javascript frameworks are new to me and very exciting, and my hope is to move closer towards the "full stack" web developer level.

The task of actually forking the project and following the instructions were very easy especially thanks to this blog post.

Some of the issues I came across was installing postgres in an express.js app, which actually wasn't that bad. All I had to do for that was `npm install pg --save` in the terminal., for some reason I thought had to update the package.json file directly which was not the case. Heroku has a great documentation on pushing a node app, which also helped.

Rails traditional does all that work for you, or at least I think it does.

Finally I push this blog to a public repo and was worried about putting my db info out there for everyone to see, so I searched and found the dotenv node package, which works exactly like the ruby gem.

I am enamored with npm, node, and express and really liking the possibility. As a Rails developer some might think I am jumping ship, but that is very far from the case. There are so many possibilities in app creation and I plan on going into more detail them in a blog post soon.

Check out my work on github


Thursday, January 1, 2015

Vacation time made me ready for the new year.

I am truly blessed to be employed at a company that gives 2 weeks paid time off for Christmas and New Years. Other than the birth of my son, I have never taken that amount of time off since I began working after college.

My plans including some extreme learning in programming, but reality hit in a big way. I discovered I much rather spend the free time with my family during the holidays and have not posted a blog post or sat down to write any serious code in 2 weeks. I have some extreme goals for this year and a strong desire to learn but it is also nice to sit back enjoy a break from code.

I feel refreshed and code looks even more exciting to me. I am looking forward to sitting down this weekend and create things.

Thanks to all the my readers for a great 2014 and looking forward to 2015!

Tuesday, November 25, 2014

I am IZEA (video)



The company does a lot of work web influencers and bloggers in the social media space and has created a number of showcase what IZEA is all about. I was approached as an employee of IZEA to be the focus in one of them and would like to share it with all the readers of my blog.

The posts on this blog is a representation of the hard work I put in to finally get a job as a Ruby on Rails engineer. Thank you for all the support you have given me while I have been on this journey.

Wednesday, November 12, 2014

My Baby Steps into VIM

I have spent a lot of time attempting to complete the challenging Vim-Adventures, but have found solving the integrated puzzles more challenging actually learning VIM. I am actually still stuck on level 9, I found I needed to learn VIM faster and actually completed vimtutor twice.

Vim-Adventures is definitely one of the best ways to learn muscle memory, as you tend to learn how to move around without even thinking about it. The vimtutor tutorial is definitely one of the best tutorials and covers a lot in a short amount a time. I imagine you can complete the entire tutorial in less than an hour on your first run through.

The entirety of my VIM learning was completed while running the test suite at work, which unfortunately takes about 30mins each time (something we are working on in making better). I decided last week that after spending 2 months learning VIM in small spurts, it was time to actually start using it.

I got a very brief walkthrough after my last TDD  practice session. I got to see tmate.io (actually tmux and not vim, but still a cool tool) working in the wild and even install the JANUS VIM package. Last week I attempted to work on a feature using VIM but quickly found out despite my extensive research and practice, the previous tutorials do not have sections on working through the file system.

I moved on to learning through the free Vimcast and Vim Novice Tutorials which has helped in learning the VIM workflow, like splitting windows and entering and exiting the file system.

I am not yet ready to use VIM at work but I have been working through the Javascript Koans. I am finding that koans is a nice and safe way to learn how much I would rather be using VIM at work. My goal is to switch over when I complete the the entirety of the Koans and become a little more proficient.

If you are at any level interested in try out VIM, either type vimtutor in your terminal or checkout Vim-Adventures. Warning, once you get the initial muscle memory down, you might get addicted.


Monday, October 27, 2014

Concentric Circles in Learning

When I was younger one of my least favorite cartoons was the Road Runner.  One of the main reasons that I did not like the cartoon because of Wile E. Coyote. In his effort in catching the Road Runner he never kept at it with the same tools, and always thought he had to try something new.

In the beginning of my learning to program journey, I tried everything. I tried a lot of languages before I finally settled on Ruby. I actually first started with C, but when that got boring I quickly jumped into to Ruby after spending a brief time in HTML/CSS, but years prior I attempted to learn JAVA with much failure.

I also tried a lot of different tools to learn Ruby and built up quite the backlog of things to complete, including books, videos, and course. My thought was to blow through each learning tool quick enough to learn the next, but I very rarely did things twice.

My entire outlook on learning has completely changed now that I work as a web dev, but I feel like it is for the better. I now spend more time on one learning resource at a time and actually find myself revisiting things I have already completed.

I heard of the term, Concentric Circles in Learning from a fellow Odinite, Afshin. The idea comes down to making your learning cyclical by repeating going through learning materials multiple times. My biggest complaint with Code School is that I did not understand the material the first time through. I then avoided learning Rails through the Rails for Zombie course, but when I revisited months later after completing a number of Rails Tutorials, it made much more sense.

One of the biggest recommendations I heard when going through the Rails Tutorial is to go through the same tutorial again. I met an individual at local meetup who loaned me a copy of the The Well-Grounded Rubyist after going through it 3 times. There is a lot of truth to learning more the second time around.

I now actual read books multiple times and repeat chapters as well as complete the problems in the book(Eloquent Javascript). I have been slowly working through Vim Adventures while running my test suite at work and feel VIM has become second nature because of it.

Before I felt like I was cramming for a test before an exam every time I learned something new, I now leisure read through material not worrying about capturing everything in my brain because I can always capture on my second of third time through.



I highly recommend going through resources multiple times and don't give up just take a break.

What are your thoughts on this? Do you re-read and run through videos multiple times or do you try things once?

Thursday, October 23, 2014

Practicing Code [Global Day of Code]

A year ago I embarked on a journey into learning how to program. I spent 550 hours of hard work across 7 months towards a goal of being proficient in writing code. The word proficient is very subjective and as I think if I am or not, I think of what areas I need practice in.

I have been playing my entire life, began at the age of 9, and as a musician I understand the importance of practice and trying different things. As many children I group listening to fair bit amount of music but never really got into classic rock and crazy guitar solos until I got into college. It was never an area of music I appreciated until college, but once I discovered that genre, I was able to increase my musical ability exponentially.

I have volunteered to facilitate the Global Day of Code, because just as in music I understand the need for practice to strengthen skills. The Global Day of Code is meant for developer who does not have time to try new things or appreciate other languages because of time constraints and deadlines. Due to these constraints we generally stick to the techniques that we have proven and avoid the risk of trying something new.

If you are looking to get into a new programming language or just strengthening your programming skills, the Global Day of Code is for you.

The structure of the day is broken up into 40 min pairing sessions with different developers throughout the day. There is a very good chance you will pair with a developer who has a different idea of how to write code and solve the problem, which open up the door for you to learn.

The problem laid out for the pairs is Conway's Game of Life and is a fairly straight forward but very unlikely to be completed in 40minutes, during each pairing session a new constraint is provided to challenge the pairs, For example one session I was given the constraint where I person writes test and the others write the code to pass the test, without talking. This was rather difficult since I had never tested in Ruby prior and had the luxury of also pairing with someone using VIM, which I also had no experience with.

The entirety of experience at the code retreat was only 1 month into my journey towards learning code and I still took away a ton of information. It actually began my attempt into testing in Ruby and is the main reason why learned it early in my programming journey.

If you are interested in joining a Code Retreat near I highly recommend and if you are in the Orlando area, I highly recommend joining me on November 15th.

Tuesday, October 21, 2014

One Year Into this.


This happens to be a pretty big milestone week for me. This is actually the week I started learning how to program. I remember waking up in the hospital and having the idea of learning how to program.

A year ago I was only in my first class of my MBA and I wrote my first MBA paper on Google. I had recently got interested in them after reading the book In The Plex. The book got me thinking of starting my own journey into programming and thus began my deep dive, feet first.

I had an idea for an application to search churches based on location. I had previously tried to find a church from google but failed to  find any decent results. I had the idea; I jut had no idea where to begin. I thought about getting into iOS but previously attend Android development years ago but lost interest very quickly after realizing you had to learn JAVA. I decided to start in C programming, since it was the most basic, and I used a free course called Computer Science for Everyone. This course seems to be no longer available on the internet, but I do know it is available in questionable places for torrenting, but I rather not link there.

After 2 weeks of that I blew through the basics of C and Computer Science but stumbled upon a video on youtube about learning Ruby/Rails in only a month. I couldn't jump ship any faster, I love this guys drive to learn so quickly and after a quick read on Ruby, I found it to be significantly easier to read. I signed up for his course and that begin my journey with Ruby.

Learning to code is probably one of the best decisions of my life. It not only gave me a new career but also gave an opportunity to use a multitude of my skills.

I have completed an Apprenticeship, started an online community, and even completed the building of applications. I am definitely excited to see what is store for this next year. 

Thursday, September 25, 2014

My 37k dollar mistake: ilikerobot.com

If you listened to my interview on the Code Newbie podcast I mentioned briefly that I had a slight debacle with my AWS key to the tune of 37k dollars. I feel like I should write a public service announcement about it to help others, so here it is:

Coming close to almost a year, I started my journey November of last year. I began a few tutorials and online resources, but the first complete tutorial that I finished was One Month Rails and it was an awesome experience. In only two weekends I followed the instructions step by step to create the site ilikerobot.com. I was so excited about it I even convinced others to use it.

At that time I did not use github at all and barely knew how to use git, but fast forward to the beginning of January and I had mastered the process of pushing to github, so much that I pushed all my projects to public repositories. Little did I remember the warnings from the OMR videos to not publicly posting any files with sensitive information.

You see the sample application is a Pinterest clone which requires users to sign in and post a picture of a robot. In order to save these upload pictures, you need a tool like AWS's S3 service to store these pictures. AWS provides a secret key and bucket names and 1 year free access to this. After the year you will need to pay, but at the rate I was using it, it might of been pennies.

When I pushed the repo to github I neglected to hide all the sensitive information and did not realize until I received a phone call from Amazon out of the blue letting me know my keys were published on github, this was back in May at the time I was interviewing for jobs, so my focus was not this project I created months ago. I had the key inactivated and I deleted the specific file on github (this is not enough) and moved on with my day. Little did I know that there actual charges made to the account from an attackers that scrapes github for all sensitive information, actual clever and I am sure very easy due to the amount of new programmers.

I only found out about the charge because I have been making an effort to update all my old apps and bring them up to speed with Rails 4 in addition to writing previously non-existent test suites. I lost access to the photos on the site and could not log into my AWS dashboard. After getting my login access back I noticed the large bill and had a phone call with Amazon the next day.

I am very pleased with their understanding and effort they put in to having the charges reverse. They also protected my account even with the root of the problem actually being my ignorance. I would highly recommend them to others looking for simple cloud hosting, I do recommend a few things below.

My recommendations to protect your projects:

I am still all for making code public in repos on github but I recommend everyone learn about `.gitignore`. This is something I learned about after OMR but did not put into practice with my first app. You simply create the file in the root folder of your app and place all private file paths there. Git will know to never save these files and you will be responsible for saving your login info outside the repo in a secure location.

I also recommend the figaro gem for Rails projects on heroku. Their github readme is more than enough to get started using it, but it is also helpful in protecting sensitive information like API keys.

*Update: I also suggest this GoRails video on Environment Variables


Tuesday, September 23, 2014

Code Newbie Podcast

For those interested, I was on a Podcast call CodeNewbie and shared my story of how I got into web developing in Ruby. The podcast itself is on Itunes or via RSS from the site.

Saron is definitely an amazing host and I am glad I had the opportunity to do this.


Friday, September 19, 2014

Why I am using git flow and you should too

I have learned many things in only 3 months real Rails Engineer(not just on tv) and I have been a slacking a bit on sharing those skills due to the increase workload I continue to take on. I did want to take the time and share on `git flow` and why I am using it on my overhaul of my breakable toy app, Chuych.

While attempting to work on my chuych app in the past 3 months I have notice that my commits are a bit all over the place and I lack the focus to complete anyone thing, for example sticking to one design. This is why I have taken it upon my self to use git flow (What is git?).

 My goal has been to give my personal projects more of a focus lately since they have been ignored. I spent a lot of time trying to get up to speed in Ruby, Javascript, and even learn iOS on the side. I can say I really lost focus on maintaining my own code portfolio. I have however been taking work home and spend a couple hours on the weekend working through refactoring and bug tracking in my work code.

I have slowed down on my learning of new skills and languages and restricting myself to only learning things that will increase my productivity at work and make my chuych app more robust (This will not effect my iOS learning). I have spent the past 2 weekends building out my test suite and it is at a point where I can no just add test when I implement new things.

Git flow  is feature of git where you can speed up your workflow, in the command line, by creating structure in your branches/commits with shortcuts. This feature will create a branch, merge a branch, and close a pull request in 2 commands. It is not uncommon for someone to work on their personal app and commit and push everything on their master branch. There is no shame in this if you do so; I was doing this up until last month. I am now using git flow to create separate branches to organize my thoughts and focus on one feature/fix at a time. This really helped me finish the last of my testing and will hopefully help me build out my design stylesheets.

If you learned rails through any tutorial they team you to commit as soon as you are done with a full feature or full programming thought. They sometimes briefly teach you about branches, but from my recollection, it gets abandoned rather quickly in the tutorial, or at least I abandoned it. It really isn't necessary to be so verbose in your branching your commits, but for apps you would like to keep around for awhile, structure is what will keep your sanity.

My recommendation is to try using `git flow` for one feature of your site, if you are not already using a similar method, it will bring sanity back to your app development just as it has mine.

The Process:

To begin you will need at least 2 branches created in your app. I named one master and the other develop, but feel to use any naming convention.

  Master Branch - This branch is standard, especially using github and coming from tutorials. I believe most Rails developers and even possible back-end git users use this branch name. If you are using heroku or another deploying method, it can be deployed from here.

  Develop Branch - This is the branch where all you code will be merged to first and tested.

It is important to keep master separate in case you merge a breaking changes or something goes wrong, the merge history should be primarily merges from develop unless its a hotfix (to be explained later).

You can also create staging, release, and QA branches but I am keeping it simple for now and suggest the same.

Install:

There are complete git flow installation instructions on the web but I will provide the cliff notes.

Start by type `git flow init` in the command line and proceeding with the steps prompted in your terminal. They will ask what branch your feature will be merged to, my recommendation is to use the defaults on the screen and the develop branch to merge to.

Workflow:

Again there are many workflow examples on the web but I will provide the cliff notes.

In my current we follow the current structure.


  1. Create a feature branch `git flow feature start <desired_feature_name>` while on the develop branch. What ever branch you are on will create the new feature branch, so make sure you are on the correct one.
  2. Push the branch to git `git push origin <new_feature_branch_name>`  this will create the branch on github, be sure your git remote is set or you will be prompted the first time. 
  3. Open pull request, on github you can use create a pull request compared to develop for peer code review. Instructions on creating a pull request.
  4. After feature is complete `git flow feature finish <chosen_feature_name>` this will merge your branch to develop and delete your feature branch locally only. 
  5. Now the final can be of your choosing, but you eventually need to merge to master and then deploy once tested. At work we would now create a release branch using `git flow release <release_number>` and repeat steps 2-4, replacing the final merge to master instead of develop.


*a hotfix is a pressing bug that will actually be merged to the master branch instead of the develop first. You will create these off master and follow the same steps 2-4.

Why:

So why do it this way? My answer is again to stay focused on feature at a time; it will also help when I actually get my app built out, I can work on multiple feature at a time if I get stuck or choose to work with another developer. I also will start using release cycles once my app hits 1.0 (i.e. has some sort of front end design).

If you are reading this and still learning rails in hopes to get a job doing it, I recommend trying this out, if it doesn't work for you, you can always delete the extra branches continue to push changes directly to master. If you do decide to do this, it would help you in the eventual interview since most companies use this or a similar technique in the development.

If you have questions or if something was unclear, please shoot me an email or leave a comment.





Thursday, September 4, 2014

Finally building a complete test suite for chuych

Now with 10 weeks of real work experience I have gained more experience than I could have ever imagined.

I am shocked to find that my first commit to github for my chuych wasa whole 3 months later. My previous goal was to gain enough knowledge after beginning work to keep up with my daily workload and I feel I have just reached that point.

My second goal as of August was to start committing to my personal projects once again. I have succeeded by providing my first commit August 10th.  My hope is now to complete my test suite by Sunday, which will include Features and Models (using Rspec).

I am looking forward to writing a complete test suite to ensure my app is free of most bugs. I will be focusing some future blog post to my current work in testing. Once I complete this task I can move on to improving the front-end design, which has been lacking since it's inception.

TDD? More and more people I come encountered with do not use TDD and it's not a mystery that I do not use this form of testing, but the concepts I have learned from thoughbot's upcase TDD workshop has been more than enough to learn the idea of testing in Rspec. Whether you test before or after, testing is still the same, and I highly recommend learning TDD is you are interested in writing better test.

Testing small has made it easier for me to get the ball running and getting an overall idea of what needs to developed next. I currently have tests for 3/4 of my existing models and plan to move on to Integration/Feature test which will tighten up the functionality of my app. I have found that the geo-searching was very buggy and the rendering of the Javascript was also hit or miss, by testing this will help identify the problem and fix it.

For a tip:
My recommendation is to start with validation testing to help get past the awkward part of testing,  I have an example of that below.

Tomorrow I will write a post on setting up your test environment.





Wednesday, August 13, 2014

Some times things just can't be engineered: The email validation saga ends

I briefly wrote a blog post how I defeated the email validation on the server side and the possible idea on created my first Ruby gem to do so in the future. I also through in a quick picture of my success in creating client-side validation in JS, I felt pretty proud till I realized I was going to suffer the same emails string pains I did with Rails.

It is surprising that there are so few blog post/resources on working with validating emails, luckily I found a lot more examples in JS then I did in Ruby. It seems there are not many people creating modals using bootstrap to take multiple emails separated by commas.

I received the recommendation to use the jQuery Validator, which was easily implemented once I learned how to reference the proper id's. I had limited jQuery experience prior and most was copy and pasted, without much realization of what I was doing. I did a lot of catching up in learning jQuery thanks to treehouse and can now say I have  working knowledge of it. I was surprised to learn that jQuery is basically a powerful form of CSS for Javascript and not much more.

Even after learning what was needed to know I discovered, with the help of multiple coworkers, that the jQuery Validator does not work well with Twitter-Bootstrap. I was unaware, but not fit to explain, there are many limitations with bootstrap and many advanced features in front-end development are limited because of it.

Bootstrap is a great tool for individuals looking to get a decent front-end design quickly and focus more on the back-end program. I have quickly realized there will always be a point where tough decisions will be made. There is a Bootstrap Validator, but similar to many other tools, it does not handle multiple emails in a string.

Bootstrap prevents the validator to activate until a valid email is entered, which is the opposite functionality in this JSfiddle. This is absolutely mind-boggling, but forced me and the team to make decision to move on. There are just too many factors, the fact this is a modal, using bootstrap, and the need to validate a string of emails separated by commas.

It came to a point where no more time could be sunk into this feature and the executive decision was made to move-on without client-side validations. If this was a personal project, I would of walked away sooner, but the determination to implement all features a requested caused me to spend more than time than needed on this.

This was an experience I will not forget and for future failures I hope to find a solution, or realize a stopping point sooner. I stand here defeated but with the advice, you can't engineer everything.