bloc referral

If you are interested in learning to code with a mentor, try bloc and get $100 off.

Monday, May 4, 2015

End of an era

I will cut to the point: This will be my last post on this blog.

I have heard so many stories the past 18 months of people who attempted to learn code but never succeeded. I am blessed to be able to have kept up with my journey and focused on whats ahead.

This blog original served as an outlet for me to share my trials and tribulations while trying to learn to program. I believe I have more than exceeded that goal and have been wanting to improve the quality of my content here for quite some time. I have also started a podcast recently, which has taken the place as my outlet for sharing my journey into programming.

My previous attempts into improving this blog has included providing detailed tips in my code discoveries. I previously attempted to host these post on a hand built blog in rails, but found the idea of building the boat while you are trying to race with it, near to impossible.

Despite that, I now have the skill to maintain a blog built in ruby, I am still not convince rails is the best choice for this, but I will find that out the hard way.

I have created a brand new Middleman blog at blog.brianllamar.com and have new plans to craft well thought out blog post of my new discoveries into code with syntax hi-lighted code samples. One of my biggest gripes with blogger is the lack of syntax hi-lighting and flexibilty.

These post will hopefully help me with my new short term goal of doing more speaking publicly and my blog will basically be rough drafts for those opportunities.

I would like to thank you for readership all this time and look forward to you reading about my future blog posts.

Happy Hacking

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, April 15, 2015

JSON view chrome extension recommendation



If you are not building APIs right now, I highly recommend you dedicate some time to building one. With the popularity of JS frameworks and native mobile, having data that is accessible to multiple places; Now is the time to learn and become confident in building an API, not to mention it can be extremely fruitful to one's web developer career.

I just attended a meetup where the announcement of the {JSON:API} 1.0 was announced and that is my recommendation is to use that for output of an API, only because it is my only experience, but there are other choices.

If you have already been using JSON as API serializer, I highly recommend a plugin or extension that pretty prints it in the browser. For whatever reason, I never thought of downloading something for that, but a coworker recommended the JSONView chrome extension. The extension has made my time working with APIs very nice. I recommend installing this or a similar extension in your browser today.

*My current project is a Rails API, and I am considering building a new public facing API for a popular sports team.


Friday, April 10, 2015

JS frameworks in SF

These past few weeks have been extremely busy and challenging without a place to live but luckily I am now secure in a place and stable enough to writing blog post on the regular.

I have had the opportunity since arriving in the city of San Francisco to attend a number of meetups and training Sessions.

Ember:
I have been partial to Ember for the reason that I felt like focusing on one framework first prior to branching out, the main reason I chose Ember is because I actually personally knew people who used Ember in projects and could ask them questions. Even with Angular being a larger community; I just did not have an opportunity to meet any of them prior to starting my first frontend project.

Ember has a very impressive community in SF, and I had the opportunity to attend my first EmberSF and was very impressed with the caliber of talent that attended the event. I am still very pro Ember but like the fact of peeking/using other frameworks at different times.

Ember is great for teams because of its structure, no matter what Ember project you can, similar to Rails, know where important components are located and understand the basic structure.  This reason is due to the "Ember Way" of doing things is generally the same across the board. A

Another nice thing about Ember is they had an early adoption of ES6, which actually has helped me in understanding other frameworks like React and even the differences between node and io.js. There is a lot cool things happening with ES6 and I had the opportunity to learn it through Ember even while being very new to Javascript development.

Some things I am finding challenging with Ember is finding the libraries that match the newest way of package management with ember-cli. I know there is a ton of libraries out there but just not a ton of documentation due to "newness" of everything. With that being said, I am excited at the opportunity contributing to the community in that way while I discover different better practices.

Angular:
When I took the job at Bloc, I was made aware of the use of Angular in the project and began researching Angular right after I accepted the position. Probably due to my love for Ember, I did not find the excitement in learning Angular, as much I did with Ember. I however attended an all-day Intro-To-Angular workshop the second weekend I was in SF.

Now that I have gotten past the initial beginner phase with Angular, I have come to appreciate the stability of Angular and how has fast it is to get up and running in a project. Ember is big into separating the API from the concerns of the frontend framework, but Angular seems separate but still knowledgeable about everything.

In a conversation I had with neighbor while pairing at the event, Angular is still new to developing best practices in creating an app and it has been a struggle to newer devs to Angular. I believe things will be getting better when Angular 2.0 is rolled out and I have heard word that there will be a planned upgrade path for those on Angular 1.x, which is contrary to what was announce last year - which is good.

I do have to say it is nice knowing how to use a framework as popular as Angular and being able to contribute to the JS framework conversations. I also think it will take a lot to unseat Angular as the leader in the framework battler for the simple reason that chaos of how customizable Angular is probably one of its strengths. Ember has a lot of the conventional ideas of Rails and some of it own and it does not seem conducive for a non-ruby/ post-ruby dev to learn these conventions. If someone writes PHP or JAVA in a way and wants to apply Angular to a project, they can with their own special conventions.

I think the next year of Angular will be pretty interesting and I am appreciative that I know a bit of it and have gotten up to speed enough to be able to work with it on a day to day basis.

React

React is definitely a framework I have hardly any experience with but I did attend a react meetup last night and very impressive with what it can do. I do know some of the React creators were big Ember evangelist at one time and saw many similarities to Ember in the React 101 talk last night. I am definitely impressed with the speed of React and what it does on the View layer, but the idea of calling a "framework" doesn't seem right.

The React core team addresses the product as a "library",  which I will from now on. React actually should be thought of as a jQuery replacement tool. It does a lot of work to speed the rendering of your views and like the full-service frameworks react only needs your api, regardless of what language it is written in.

The other portion that makes React be considered a framework is Flux, a separate project that helps with data stores. When you receive an object from a JSON API (one of many options) the framework/library grabs the data and stores that object and attaches "observes" to watch for any changes to update. Flux is very similar to Ember-Data and js-data, actually js-data copies a lot of what Ember-Data does and Flux has a lot of similarities Ember-Data as well.

I envision that Flux and React to become synonymous with each other in the future to make that "framework" everyone is looking for. I have plans to actually start a React project soon and even take a chance React-Native with that same project, but per the presenters comments there are a lot of things to left to be desired in React as they continue to iterate on this new product.

Conclusion:
There is actually a lot to be desired in all the frameworks and in reality, I don't any framework will ever solve every known problem.  

As soon as I wrote about my experiences with Ember last summer I received a lot of feedback on why I did not choose Angular and I did not have a great answer other than fact that I didn't know any Angularist I could get feedback from. I understand there is a "Holy War" going on right now about which Javascript frameworks is the best, but that is dumb.

My recommendation is to pick one framework and learn it and don't be afraid to branch out to learn from other frameworks, because at the end of the day its all still Javascript.

P.S. I hear Meteor is by far one of the easiest to learn and though it was not mentioned here, I highly recommend reading up on that one too.

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

Middleman Blog in store

I finally completed a Middleman Blog from start to sort of finish. Middleman is an easy to use framework for building static sites. I have been in the need of transferring this blog elsewhere but do not want to get stuck in the rut of building a ship while you use.

My fear was always getting too involved in the process of building the blog and never writing blog post. That is why I am happy to start hosting my podcast there at first. FYI, developingstory.link is my middleman site.

I was actually able to get it started rather quickly using the middleman and middleman-blog gems.

Once the blog was set up I had no problem creating my first post and setting the bootstrap (yes I did it) template. The challenge will be migrating the post from here to the new site, but I am holding off until I am confident I won't be working on the bike shed color rather than writing post.

- I will definitely be looking forward to add syntax highlighted code samples to the blog.

Thanks for reading and checking out the podcast. The plan is to have episodes out every Friday, so look for the next one this week.

In the meantime checkout Middleman and checkout fellow a Ruby Newbie, Colby's, impressive Middleman blog


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 27, 2015

I had a go with GO

This past months has been full of me trying new technologies, not only with Ember but I also had a chance to try out GO. Thanks to the connections made with Steamrolers.com I was able to connect with a prominent GO developer and they were able to give me recommendations on tutorials to get an understanding of GO.

My goal for 2015 was to try out some lower level programming languages as well as some functional ones. My eyes have been on GO and Rust for awhile, but do to some unforeseen circumstances I was unable attend a CodeNewbie Code Club event on Rust. I did however complete a Tour in GO and got a very high level understanding of it.

GO basially reminds of C, not that I had much experience with it, but I did do some C work while completing the Havard CS50x course last year.

Some issues I had with GO was forgetting the "returns," With GO being a low level you have explicit call return in the functions as well as handle your own garbage collection. Ruby does so much for you and makes it very nice, especially when learning to program for the first time.

I successfully submitted some code exercism which I will not share in efforts to not give away the answer to the Leap Year kata in GO, but I have to say it was quite challenging passing my first test in GO.

Package management is also handle by you, and I made the mistake of setting my project package to "main," but had the test package as "leap." This took me awhile to figure, but once I did one test passed.

I then had the trouble trying to figure out to return interpolated strings with my Leap Year integer but later found that was unnecessary within the scope of the test, I only needed return the integer, because ethe test was already returning the string for me.

Altogether my experience was ok, but it has wet my appetite enough to want to see this through. I originally installed GO via homebrew, which I also found out that was a big NO! Only because some things that I have heard that there are a few things to be desired once you really get in to GO and homebrew does not provide everything. So while attempting to install GO the right way, I came across too many errors and currently taking a sanity break until I decide give it another go.

If you are learning GO or experienced in GO and would like to pair on my installation process, please reach out.


Thanks for reading and happy hacking!

Wednesday, February 25, 2015

Deploying my first Ember App

For every Rails app I have created and thought about creating I have used Heroku. I have never had a need to use anything else, as none of the apps I have developed had users and needed to grow beyond the same place of Heroku.

It is very apparent that Heroku has cornered the market on new Rails apps and most people I know don't think twice about running `heroku create <my-app-name>`, especially with the recent announcement from ninefold and their closing down their Rails service.

When it came time to deploy my first ember app I automatically assumed I would use Heroku, since I already had the Rails api waiting in a heroku dyno. Literally the day before I deployed my app I heard a coworker mention how another company in the Orlando area deployed their ember app to a lesser know company, Divshot.

I wasn't aware of their service to deploy static web pages, and also was aware of an ember-cli addon that makes deploying to their service so easily. I had some issues that with getting my rails api url to get included in the config, but once I got that figured out it was a breeze to deploy. The deployment was actually so easy that I have completely discounted the need for heroku and might even transition some of my more popular static pages to the Divshot service.

If you are looking into publishing your first ember app, I highly recommend giving Divshot a try and using the ember-cli-addon.


First Ember app complete...sort of

I spent some time in Ember tutorials and had plans to have an Ember project built and launch back in January, but some unfortunate life events got in the way.

I am now proud to announce that I have completed my goal of getting an Ember app built and launched in 2015. The app itself if very much in an MVP state and I am looking forward to finish the other features I have planned.

Some of my experiences while working Ember how impressingly fast it is to build a Rails API when you aren't concerned with the asset pipeline or views. Ruby is a great server side language and fast enough for me, but sometimes Rails can be a little much; I highly recommend reading my blog post on the Rails API gem, which makes building an api a breeze.

Most people I have spoken with get hung up with the fact that Ember is constantly changing, which developed a very steep learning curve for learning it. I personally completed the Vic Ramon, Treehouse, ember-cli-101 resources and found them to be enough understand the basics in Ember.

I also spent some time learning form the forms and docs, as wells as attended EmberOrlando a few times.

I was basically at a point where I needed to start an Ember project and start learning things outside a tutorial, which I found to be challenging but obtainable.

My first hiccup came when I tried to connect my sample fixture data. The solution was rather easy and actually kind of silly how simple it was.

My next hurdle actually came when deploying the application to Divshot. I normaly use heroku as my go to deployment vehicle, but heard of the great tools available for ember and more specifically ember-cli. The solution for this was not as simple but I figured it out with help from @robdel12 and @jgwhite.

Takeaways:

Now that I have finally moved into world of modern day "Full Stack Developing", I am exited at the idea of separating the concerns of the api and client-side. This will give me the ability to one day try out the ever so popular React.js or even use the api data to produce an iOS app.

I highly recommend everyone who has been in rails with their head down while Front-end frameworks have been popping like rabbits.

I plan on doing more detail post into Ember and its structure in the future, but if I could recommend one tutorial to get started, it would be the ember-cli-101 book. Its the most up to date and gives you a great understand to how Ember works. It also provides the generator commands similar to Rails, that will help you get started much faster.

If you would like to view the app live, its temporary home is here and will the code is here

Tuesday, February 24, 2015

Components not Controllers in Ember

Months ago I blogged about my experience with randomly pairing with a healthy hacker,  yesterday I concluded another random pairing and with an associate,  @jgwhite. Jamie leads the Ember UK meetup and I was looking for some ember help with my current project.

I am looking to create a database for diverse speakers in tech to share with the steamrolers community.

My specific task was looking to create a save function in my controller so when ever some one creates a new speaker with my speaker form, the createRecord function would fire. Unfortunately that was not happening and actually just throwing an uncaught error.













I spent a good part of my Sunday searching through stackoverflow and forum questions trying to figure out why functions were not working.

After a bout 10minutes of explaining my issue with Jamie, He was able to identify that my problem was due to my save action being nested in a SpeakerController and the form was calling it from the higher application layer. But it wasn't enough, just to replace the save action in the ApplicationController,he recommend to go a step further and create a Component.









I now understand that despite the common comparisons, Ember is nothing like Rails other than the fact they both have opinions. The Controllers work in entirely different ways and come Ember 2.0 the use of Controllers will be removed. I am now able to use the newly created speaker-form component to call my speaker.save() function and even add an a validations like containsInvalidCharater.

Ember is definitely a moving ship, just like all other well maintained Front-End frameworks. The learning curve is high and constantly moving, but the reward with easy prototyping client side applications is well worth it. I am looking forward to using the foundation I am building with this app to create more things with Ember.

If you are new to learning Ember, I would love to pair with you or chat about your app, in effort to pay forward the help I got with mine.

Tuesday, February 17, 2015

Rails API gem

I recently took on the task to create a Rails API gem for an Ember project I am working on. for STEAMrole. It is still very much in the beginning stages but I have both the Rails and Ember playing rather nice together.

Some noticeable differences in the way I started this project was I actually started with the Ember's client side application first. I wish I could say it was rather simple but I did have some hang-ups, specially while working with fixtures. The issue turned out be how was requiring the file,  it wasn't actually an Ember thing. More details here.

At this point I have been writing test and working with the Twitter API to gather some data that is needed for that app. One of the real wins for Ember and other Javascript frameworks is the separation of concerns. I am able to work on the Rails database without concerning myself with the Front-End and vice versa.

My overall experience with the Rails API gem, not only am I able to throw an api together rather quickly with scaffolding. It also sets up some simple controller test to assert true, unfortunately they were written in Minitest. I am not aware if they could be scaffolded into Rspec as of yet, as this is my first Rails API project and I didn't setup rspec-rails yet, but have decided just to follow through with Minitest DSL for this.

The coolest thing about using this gem is being able to see the JSON data in your localhost with not a lot of effort. I highly recommend this tutorial to get you started using the Rails API gem, feel free to skip the Ember stuff if that doesn't excite you.

I am not finished with my current project, but If you interested in seeing one of my Rails API project live, check out Interpersonal Movie Database.

To get started do the follow:


Friday, February 6, 2015

Updating your git on OSX

Do me a favor and type "git version" in your terminal

If your git is not later than 2.0, then you will need to the following:

I have updating my git so many time this past year and did not realize my mac was not recognizing it. This is because git is pre-installed in the mac dev kit installed with Xcode. I found a forum which describes this in answer.

I follow the instructions now mac is now using git 2.3.0.

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

Faker error

It's been a while since I used the Faker gem for anything and had an error I spent a bit of time on. I kept getting the error "TypeError: can't cast Array to string", but had no idea where that was coming from. I checked my image string and it was fine; I also tried adding in the an Active Model Serializer for my api (but that had nothing to do with it).













I discovered via this blog post, and found out my `Faker::Lorem` call was spitting out an array and I assumed it was a string. I switched it up to `Faker::Lorem.words(2).join(" ")` and all is well.

Simple solution I know, but I spent long enough on this to make sure it was in a blog post to prevent future mistakes.

Tuesday, February 3, 2015

I can open web pages in vim

I feel as if each day I use vim I use the trackpad even less. I just discovered about the command to open chrome and open specific webpages. I will be having a lot of fun with this, but thought I should share. 

My leader key is spacebar, so all I need to do is hit "spacebar + ggg" and out pops chrome which will be automatically directed to google.com

" open web pages in vim "
nmap <leader>ggg :! open -a "/Applications/Google Chrome.app" 'http://google.com/'<CR>






*Note: I know you can do the same in Alfred, but this is VIM!

Monday, February 2, 2015

The New Ruby Newbies

After 2 months of inactivity I have decided to take the Ruby Newbies group down a different path. When I first started the Youtube chats a year ago, I was looking for other individuals learning Ruby, like myself. I have succeeded in this and now work in Rails as well as other technologies.

The model of scheduling g+ hangouts on air worked before but now does not seem to be a great way to collaborate and chat on topics associated to Ruby. I am just unable to keep up with a consistent weekly schedule anymore, but still want to assist and collaborate.

I will be unveiling a new version of Ruby Newbies, in the form of a Slack Chat. This will gives us the ability to collaborate much faster and receive help when we are stuck on certain hurdles.

*Full disclosure, I plan to make this a paid community in hopes to keep out the lurkers and less driven learners. The fee will be small and one time, but until then I am opening it up to the first 15 people who sign up as a beta test. I will then officially open it up for everyone to sign up next Monday the 9th.

All future events and announcements will be posted within the slack chat community.

If you are interested checkout the new Ruby Newbie page.



Saturday, January 31, 2015

Making Custom User Names in Socket.io

A few months back I did a pairing session Chris Hunt and together we built a Node Chat app using the very convenient Getting Started Guide on Socket.io's doc page. We successfully completed the guide and deployed the app with minor hiccups.

Once a month here at work, we take part in a "hack day" where we can work on any project that is vaguely relevant to the business we are in or the company we work for. I took on the challenge to creating a new chat app and possibly implementing as a special feature at work.

One thing I noticed right after completing the app was the lack of user names displayed inline. While chatting with Chris on our app, it was easy to know which messages were not mine, but it would have been nice to know in case I needed to review the history.

Knowing the little node I knew I starting looking into the redis and socket.io-redis npm's and figure thats what I needed to save the username when prompted, but after a bit of time scaling the api and documentation it turned out it was only needed to save the printed chat messages for the session.

I was dissappointed when I did not find a blog post on the subject, but eventually found an old youtube video explaining exactly what I needed to know.

Each user can login with a session or socket and within each socket I needed to save their username. I was actually saving the username to late in the game and every message had the same user's name. I had to access the socket and save the username the same time as the message. Here is an example of the code:














*notice how I am prepending the chat name in the chat message while emitting the socket.

Here is the jQuery providing the chat in my view:

  












I create a new socket call to save my username that was collect from a javascript prompt and voila, the user's username got displayed each time they printed a message. I am pretty proud that I was able to complete and publish the chat app to heroku in time to present in our hack day presentation meeting.

*I made the dangerous decision of publicly displaying a chat to a projector screen.
















As far as redis, I only need that to save the previous chat messages, which for the purpose of my feature, it is not needed. There is still work to be done on the front end and how it will be render to make it a new feature, but I am pretty proud of this little guy - My Chat App.

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

Wednesday, January 28, 2015

Learn Javascript quickly with WatchMeCode Screencast

A few months back I sent out a tweet to Advi Grimm, trying to find a screencast service similar to Ruby Tapas, but for Javascript (If you write Ruby and do not have a Ruby Tapas subscription, you need to sign up today).

I actually did not get a response but actually got an email from Advi a few weeks later announcing special pricing for Ruby Tapas subscribers to the WatchMeCode screencast from Derek Bailey. I believe I signed up the next day and binged watched almost all the episodes during my 2 weeks off of work.

The videos were slightly longer than a Tapas but filled with a large amount of content on Javascript. I attempted to learn Javascript properly a few times in the last year and failed to grasp the concepts of Prototypes, Closures, etc. Things finally started clicking thanks to this unique form of sharing code through screencast. I would consider myself now moving away from the entry-level to junior programmer and this is thanks to screencast like these who have given the ability to implement new tricks into my development.

I have a couple node projects complete which knocks off one item from my 2015 goals. I now have my eyes on GO and Rust, as well as putting together my first Ruby Gem very soon. Stay Tuned

Tuesday, January 27, 2015

Custom Google Calendar links.

A few post back I wrote about how to create urls with Javascript and thanks to that post I was able to make a quick change to Steamrolers page.

This Thursday kicks off our first AMA with Maurice  Cherry at 6pm. Our designer added a cool trick to the page which creates a Google Cal event for you from the provided link.  I wasn't aware you could do that until now, but it makes sense and seems to be powered by Javascript in the background.

All that is needed is a generated link, which can do easily with some provided sights or you can just create a event on your account and copy the link to the url in your browser and use that link in the href or erb link.








I discovered all this when I went to test the functionality and saw that the generated date was off. Turns out the date code in the url just needed to be updated to what I believe to a UTC translation and voila it all works  just dandy.

So if you have any scheduling needs or events to share, now you know how.







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


Tuesday, January 13, 2015

Chron job in node

After my recent node battle, I knew the war was not over. I still needed to set up my node script to run in the background. I know with Javascript be an event based I should be able to create a chron job for checking when ever a new signup on the form happens, I should be able to send an invite.

I first started with the forever npm package but similarly with my original requirements for running the unstable version of node, I was unable to use that package, as it is not updated for that.

I then found a StackOverflow question on running the code in an interval. As I thought, this was pretty easy. I am impressed or frustrated with node at the same time, mainly because its not Ruby. In the same vain is not too bad and I can see myself using more in the future for small scripts as the community includes some of the smartest programmers out there and can only increase my experience knowing yet another server side language.

My Code:



Monday, January 12, 2015

node Battle: The integration of slack and typeform

This weekend was planned for the exploration of new territory. I have had a new idea for my first Ember app for quite some time and was ready begin from `ember new`.

I also recently joined up with a group to startup a new idea (more details in a future post) for a community. My first task for the group was to integrate slack into the app, sounds easy enough since there is a popular blog post on how someone did it in php. I am not exaggerating when I say I have had no php experience, but expected to learn it quickly enough to follow a blog post, well the blog post was not as clear as I would of thought it to be. I expected more steps and ideas on how to run a php script and the s/o questions and google searches made too many assumptions on my skill level in php.

After spending about an hour in php, I decided to search for a different solution and possible come back to php if needed.

Here comes the node

Now what I was doing is farely new and the blog post was only written 2 months ago, either there is not a need for this sort of slack integration or I am on the cutting edge. Regardless, when I tried searching only 3 implementations came up, and one was just a bot reposting the first php article.

Luckily the other choice was node, a version of Javascript I had some experience learning in. I stumble on the cleverly named slack-typeform-inviter, great for seo, and quickly enough of the code to realize it made sense. I forked the project and began inserting the needed API keys for Slack and Typeform.

I then Ran the code and boomed error, `SyntaxError: Unexpected token *`.  Hmmm, why would someone post code with syntax errors?

Actually it is not a syntax error, but actually a new syntax for the release candidate .11. Yep the code was written on an unstable version of node and I was an unstable developer at that point.

Now I wrote my solution in what took about 5 seconds for you to read, but it took about 3 hours of banging my head on the keyboard trying to figure out how to debug this code. I removed the "*'s"  from the deferred calls, which I found out to be to sort of like yields for arguments, but once those were removed I was getting errors on the yields.

I finally removed the yields and got the code fail everywhere there was a "request" or "response" call. This was weird, so I ended up emailing the contributor. In hindsight I recommend opening up an issue on github instead, I got a super quick response letting me know it was the newest unstable node code and a picture of the developer at a KPOP concert in Thailand. I felt bad to bother him but relieved that I could get the code to work.

But only if it was that easy, I did spend about 4 hours figuring out how to install an unstable version of node and debug why it was not working on my computer. Those fours plus probably more as I moved into the next day were spend installing dev tools on my wife's mac to test that the code worked. Luckily all I had to do was copy and paste my .vimrc, which is testament to VIM and why you should use it.

I ended up discovering nvm (similar to rvm) to install the "unstable" version of node and  switch back and forth when needed.

There was an incredible amount of troubleshooting this weekend, but it taught a deep understanding of how npm and node_module management works. It also gave a chance to write some production ready node code. Also the code works which is a relief.

Thanks to Chad Scira for being so responsive in email and originally writing the slack-typeform-inviter

*I have submitted a pull request to help anyone else who might want to use the node pack in the future. Which has already been merged!

Now I hope next weekend I can get past ember new.



Friday, January 9, 2015

VIM indent all the way to Oz

I am have been using VIM since Thanksgiving and definitely not looking back to Sublime. I really do believe that the myth that VIM is this big mystery/archaic of programming is not real. It's similar to the Wizard of Oz, where everyone thinks Oz is this great and powerful being and when it is all said and done, its turns Oz is a short white dude behind a curtain, but that short white dude is you just installing plugins into your dotfiles.

One thing I did miss with common IDE's like Sublime, is the ability to hit `command + [`for quick line indentation. Well it turn out getting that back was easy, all I had to do was add the following to the bottom of my .vimrc, voila.

Remember, If you can dream it, you can do it in VIM.

nmap <D-[> <<
nmap <D-]> >>
vmap <D-[> <gv
vmap <D-]> >gv
Take the plunge and try vim today but typing "vimtutor" in your unix terminal.


Wednesday, January 7, 2015

.gitignore cached files

I spent some time trying to figure out why my git would not stop add files I added to my .gitignore. I finally figured out there were files being cached, why? I have no idea, but I am glad I know how to removed them now. 

git rm . -r --cached
git add .
git commit -m "fixed untracked files"

Breaking down URLs with Javascript

I didn't think this would be a big deal but I had the worst time trying to get a date picker and a custom filter to work in my search form.

More Details:

I took on the task at work to create a dashboard of activities for users, Ideally you would be able to login and access list just as you would see anywhere else, equipped with dates, dollar amounts, and etc. This public activity list was easily created, needed the ability to be filtered down by some given params which are to be a date range and filter type.

Knowing how to build a form I created just that, that included an already built Javascript date picker, specifically Pickaday. One of the nice things about working on an app is all the decision of what plugins and gems have already been made, and for the most part they some of the best decisions to solve the problems at hand; All I have to do is engineer it all to work together.


"This all sounds pretty legit until I actually try it"


I did not take into account that my Javascript skills are still very amateur. I also didn't realize that I knew nothing about url's and query params. I actually only just learned today, after it was explained to me coworkers. Imagine spending your whole life and just now figuring out how to tell time, that's how I felt when I learned about query params.

So are you ready to learn about them?


http://theblackc000000de.blogspot.com/search?q=bloc


The url I provided above includes a query string, do you see it?
It begins with the "?" and includes everything after it. If I wanted more params in the url, I could add an ampersand(&) and include more, like so:


http://theblackc000000de.blogspot.com/search?q=bloc&from=Dec%207,%202014&to=Jan%208,%202015


Not actually valid for this page but hope you get the idea, I passed in to and from dates to limit the blog post that were returned. So now I have 3 params: to, from, and q

The JS file that includes the date picker already had working code, which actually works for to and from but no longer q, which a select box with multiple options.

I was creating a url with no issue but the forgot to pass in a param key in the url build; Once I added that everything worked as expected.

My Solution:

*The url is being created in the last line








*variable names were change to protect the innocent

Another plus with working with Rails, I am able to call debugger/raise in the controller to manipulate the provided data received from this param, i.e. where all the filtering happens. Another plus is Ember has a lot of this handle, which is explained in their documentation - but I am not quite there yet.

This was all new to me and quite an eye opener, I hope this post will anyone else in working with url queries.

More info on url queries.

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


Ember tutorials all completed (mostly)

I started learning Ember back in July, which seems like forever ago. I really wished I stuck with it then, as I would already have production ready apps built by now, but at that time I had just begun work at IZEA and felt as if my focus should be on Rails learning.

I am now approaching my 7th month working in a professional Rails environment; I am definitely at great place to learn new technologies, like Javascript frameworks and iOS programming in Swift.

My vacation ends after tomorrow and I had high hopes to learn and build new technologies, but that plan did not come to fruition. I like to aim high and fail with success and though I did not get to build that Ember app I planned on building, I did complete a number of tutorials and reading.

I mentioned the ember-cli book briefly on this blog and planned on writing summary/review but have been delayed numerous time due to errors/long debugging sessions while trying to complete. I am still very new in web development and compare my struggles in learning Ember very similar to learning Rails, with most of them being spelling errors. I have done a good on debugging issues thus far but have run into some issues managing packages, I believe I missed a step, other than that I highly recommend the book on getting a great intro to Ember.

I have completed the actual app portion of the book but have yet to complete the ladder part, which includes testing and the rest of the dependency management. I did however learn that in the 3 tutorials I completed this week, Treehouse Ember Course, Code School Express.js Soup to Bits, and Ember Guides.  

After all that I am in a great position to start an actual Ember project. My biggest recommendation for anyone learning Ember or any other framework is read he guides/docs, even if you skim them. I did this for Rails and now Ember and have to say Ember has one of the easiest documentation to read. I have a better understandings of the overall opinions in the framework and workflow.

I am looking forward to a future blog post where I can write about the completion of this Ember app I am planning.


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!

My goals for 2015

I now have big plans for 2015 and hope this year is as exciting as the last. In 2014 I not only learned Rails and earned a new job in that technology but I also expanded out into other things, like Ember and iOS. 

Throughout my entire journey into programming I have always had goals and even laid out my goals for 2014. In summary I completely missed the StackOverflow benchmarks I had for myself. I did however jump into iOS as planned and completed a Tetris tutorial app last month, just in time. 

My immediate goals for this year includes the following:

1. Write my first Ruby Gem
2. Complete a non-tutorial based JS app
3. Finally release Chuych to the actual users
4. Start the creation of a tutorial to share with others.
5. Begin learning Scala, Elixir, and/or Go

I am not going to break out my goals by quarter and I am avoiding StackOverflow, which is the only goals I will not be following through. I feel as if I need to complete more projects rather than spend my time diving deeper S/O. 

One mistake I feel I made a lot towards the ladder part of 2014 is spending way too much time in books and videos and not actually writing code. I hope to change that with these goals I have laid out. I am also aiming to be realistic with these goals, which means I expand on to #5 as I plan on completing all of these goals this year. This is definitely going to be a good year for me and I am excited to move into another level of programming.

What are your goals for 2015?