Sunday, December 11, 2016

How to automate everything - part 3

The world is changing faster than ever!  When I started learning how to code things were changing fast... now it's changing at warp speed!  Things I have told you as a fact in the past, I am now seeing changing.  You have to stay up to date or else get swept down the tech stream.  I always keep my eye on emerging technologies, but the most important source I keep my finger on is tech job apps.

When they change, I change.  If your goal is to stay employed you need to stay fresh with your tech skills.  In my opinion there has never been a better time to get into QA than right now, this article backs me up as well:

https://www.jibe.com/ddr/the-top-5-skills-and-occupations-in-demand-right-now/


I found this article very interesting for anyone wanting to get into QA:

https://www.qualitestgroup.com/blog/future-of-software-testing/the-qa-job-market-is-a-killer-would-you-stand-a-chance/

One thing that is awesome about the QA field is that it is changing over to to automation at a rapid rate!  What does that mean to you?  If you are just out of a coding bootcamp and find the junior dev field crowed by a lot of other coding bootcamp students, than think about the QA field.

Test automation is at least 50% writing code, 50% manual testing.  One of the best ways to learn more about testing and automation is to start listening to "test talks", I listen to them on the way to work everyday:

test talks podcast

What if you are a manual tester who can't write a single line of code ( many of QAs are in this boat )?I suggest you start writing automation, - doesn't matter what you automate,it  doesn't matter how crappy the code, just start writing!  Push all of your code up to Github so you can start building a little portfolio for potential employers to see.

As an example do what I did, while watching some Netflix in the evening with my wife, I wrote a basic script to automate the process of earning points youlikehits.com site.  I don't need the script, don't really care about the script.  The point is to practice writing code and slowly improving your automation skills over time.  Check out my script...laugh... cry, write better code than I did and send me a pull request :-)

you_like_hits_auto_points_collector

I am learning to write my scripts more organically as of late.  I start writing the basics of what I want to the script to do, I start refactoring as the script starts to annoy me and starts getting painful to work with.

Instead of sitting and staring at a blank text editor and trying to write perfect code from the start, simply start writing and pay close attention to the "pay points".  NOTE: this is not good advice if you are a full blown developer.  I am speaking about people who are new to writing code.  When I follow my own advice I find myself feeling more free to actually just start and enjoy the process of writing code.

Isn't that the whole point?  I mean if you hate writing code and stress out every second you are working, why do it?  Let me know what you think of my script :-)  Next up,  I might try and write a script to automate a job on Fiverr!  Give me some ideas, tell me something that is painful for you.
joshuakemp85@gmail.com

Monday, November 7, 2016

How to automate everything - part 2

Want to be more productive at your job?  You don't have to learn how to code just yet to increase your productivity.  Remember we want to automate anything that we have to do 3 times, we don't necessarily have to write the code to do it.  If you use the internet in your day job and a web browser then listen up, I'm going to show you 2 tools / plugins that I use everyday.



Auto Text Expander - Chrome Addon.



I use Auto Text Expander when I am writing test cases in Jira.  Some people keep track of old test cases and try to reuse them.  I find it easier to make common "snippets" and reuse them.  For example I like to be able to type: "red" and have Auto Text Expander instantly auto type: "{color:red} {color}".  This is a small example but there are many more examples that I use at work that are project specific.  The whole key to getting started with automation is learning to become more aware of things that you repeatedly do everyday.  If you are constantly typing the same long phrase, make a shortcut and have auto text expander do it for you!



Autofill - Chrome Addon.


If you have to create dummy accounts or fill out the same forms everyday, do yourself a favor and download Autofill.  I use Autofill to fill in my Test Executions in Jira among other things.


You may not think the above are actually automation, but they are.  Anything you do 3 times in a day you should try to automate.  Which leads me to my last tip:

Never sign emails again!

I hope you are already doing this, but if you aren't using your emails auto signature you need to now!  Don't just read this post, download the addons and START using them :-)

Monday, October 17, 2016

3 reasons why you're not hired.

You want to know why you aren't hired?  It's really simple actually, three things.  See if any one of these is your personal kryptonite.


Not studying 21 hours per week:

It doesn't matter if you are self studying, going through Free Code Camp, or an online boot camp.  If you are not on your computer every night for at least 3 hours, you will never have the technical skills required to land an entry level tech job.  This is the most common mistake I see with people who are trying to break into the tech scene.  Sitting on Twitter or coding chats for 3 hours, sharing "great resources" is not studying.  It's okay to do occasionally, but if that becomes your pattern, you won't get hired anytime soon.


Don't have good people skills:
Only 50% of getting hired for an entry level tech position is technical ability.  The other 50% is people skills and knowing how to market yourself.  The best birthday gift I ever receiveed was a used worn out copy of "How to Win Friends and Influence People" by Dale Carnegie.  My Aunt gave me the book and 1 stick of Wrigleys chewing gum for my 14th birthday.  I guess I was a rude bad breathed teenager :-)  That book changed my life, I always get compliments about my ability to connect with people.  How can you nail interviews if you can't connect with people or you come across as rude?  What's the sweetest sound to any person?  hint: it's in the book ( and no I don't get any kickbacks )


Don't know how to sell yourself:
I learned this skill from listening to an interview of Robert Kiyosaki.  He talked about how he wasn't a great writer, but he was a best selling author!  He made it very clear that he wasn't going to ever challenge the great works of fiction.  He talked about how important it is to understand selling, if you ever want to make serious money.  I am always shocked by how many technical people are way under payed.  I have worked with senior level architects for test automation that were just terrible, yet highly paid.  On the flip side I know many talented and skilled developers who make far below what they are worth.  If you don't learn to sell yourself and abilities, you won't be able to nail interviews or even get interviews in the first place.


There are obviously other things that are important to know, but the above 3 are the most common issues that I see.  It's not rocket science or magic to land a tech job.  People all over the U.S. landed tech jobs today, you can join the ranks by following the above list!  Don't give up, you can do this!

Monday, October 10, 2016

Why Free Code Camp is only for the elite 1%



Everyone loves Free Code Camp, why shouldn't they?  Quincy Larson basically devotes his life to keeping Free Code Camp up and running and constantly growing, for that he should be very proud.

However if you are currently going through Free Code Camp's curriculum, hoping to one day land a job.  You should stop as soon as possible.

Why?

Free Code Camp is a great free resource for people, but it is lousy at getting people jobs.  The entire Internet has too many free resources!  The fact is that if your goal is to land a junior dev job by taking Free Code Camp's curriculum, you have about a 1% chance of doing so.

If you look up Quincy Larson's profile on Quora he says over 300,000 learn to code and build projects for non profits.  According to their home page Free Code Camp has gotten 2,000 people developer jobs.  Let's do some basic math here:

That's a dismal 0.67% of people who start Free Code Camp actually get a paid dev job!

I also clicked on the link on Free Code Camp to read the camper's stories, maybe I am wrong, but many of those stories aren't actually hired as devs or even in a real "techy" job.  Click on the Linkedin profile and you will see things like "freelance developer".  The point is maybe these aren't the 2,000 they are referring too, but still if only 1% of people get hired that is really low!

Again I think it is a great collection of free resources, but I don't think it is a great way to go about getting a dev job.  Think about it, do you think you are the 1%???  Now of course if you want to devote the next 2 years of your life to the program instead of going to college, that's cool.

Quincy has a really good answer on Quora about this idea actually that I like:
Quincy's Answer

Literally your chances of getting hired with free code camp are slim to none. If you want to do Free Code Camp to get badges, and look cool, that's fine.  If however you have legit bills to pay or people you have to provide for financially then you are mainly wasting your time.  If you want to have a tech job actually making money, a company paying you in the shortest amount of time than you need a clear plan to make that happen.

Quincy is being honest with what he does, it clearly admits No one has ever finished Free Code Camp, as of January 2016

According to this answer by Quincy Larson on Quora:
How many people have finished Free Code Camp so far?

I just think that the average person who signs up for Free Code Camp really believes that if they do the course work they will land a job.  The truth is your chances are slim to none with Free Code Camp, you need to learn how to market yourself, not just write code.  Remember this:

"Only 50% of landing an entry level tech job is coding ability, the other 50% is people skills and knowing how to market yourself!"

Don't just do coding tutorials and think someone will see your cool computer stickers one day at Starbucks and offer you a job.  Figure out a way to be different, don't do what millions of other people are unsuccessfully doing.  You can learn to code and you can get hired, but you need to set yourself apart from the rest of the crowd by being remarkable and unique!







Monday, October 3, 2016

How to automate everything series starting

The world is changing faster than ever, you need to be different than everyone else just to stay ahead.  I've said it before, you should learn to code but don't become a developer, at least not at first.  The fastest way into the tech field is through a QA position.

Even if you don't want to be a QA or Dev, you should learn more about coding, it can only help you.  I believe one of the best fits for people who want to write code is to get a test automation job.  What better way to practice automating stuff than in your own life?

I am starting a series called: "How to automate everything!"  Even if you have no interest in being a QA or Dev, you know that learning more about coding will only help you.  This isn't going to be scary, we'll take it in small bite sized pieces.  Pick one thing at work that you do multiple times a day and try to automate it.

If you do something 3 times, you should try to see if there is a way to automate it.  

I know that may seem ridiculous to some, but what I do at work is to keep a list of anything that I do 3 times or more a day.  I have a huge list to automate, I may not even get to them all, but what you will notice is that when you start keeping track of things you repeatedly do everyday, you will want to try and automate them.

All of the things I will use or show you will be are free, I want to help anyone from day one who wants to automate something.  The reason I am going to be showing you how to automate everything is so you can follow along and find a task of your own to automate!

If you want to dabble with code I personally find sooo much more motivation and passion if it is a real problem that I am trying to solve.  If you can make your job a little bit easier by automating one tiny aspect of it, why not?  In the process you will learn some things about coding and how code works, as well as some free tools to check out.

I will tell you a real life story of something that I automated to help my brother make more money.  My brother is a salesman at a well known store that mainly sells T.V.s.  The T.V.s aren't cheap, and he was constantly having this issue:

A person would come in, like a T.V. and tell my brother the following:

"If that T.V. drops in price by $100 in the next month call me, I'll buy it!  Here's my email and phone number."

What happened was my brother would write down phone numbers on pieces of paper, than after time he started adding them to an excel spreadsheet.  Spreadsheets of the SKU numbers of the T.V.s and a list of people interested in them.

I wrote a very simple script that checks if the price in the spreadsheet has changed ( it gets updated weekly from the company ).  If the price had changed my script would then grab the SKU number of the T.V., and search the list of people who wanted a call if the price dropped.  If the SKU number matched, it would send my brother an email with the person's name and tell him to email them about the price drop.  This is a simple example, that actually can make more money.

If you automate something drop me an email and I can tell others about it or share a link to your blog.  If you are super lazy or way over your head with not understanding code or how to automate something but need it automated, maybe you can hire me to do it for you :-)  Feel free to shoot me an email.

Follow along as I show useful ways to automate things, I will be using the easiest language to learn and use, Ruby.  I don't care about showing you the coolest ways to automate things, I will show you how to get stuff done using simple scripts and tools!

Thursday, September 22, 2016

Bash Aliases - Why you should use them and how to make them.




I will be giving a free 30 minute Google hangout session showing people why to use bash aliases, how to make them, and some more uses for aliases that you may not have thought about.

The first 7 people to email me and who can make the Google hangout time ( I will email it to you ), will be invited to the hangout session.  Bash aliases are super useful and not hard to use, once you see how powerful they are you'll be making some of your own!

I will be showing you some of my alias so you can follow along with me, you should have a Linux or Mac.  I want everyone to participate that attends, I want you to walk away with a new skill and not just have watched me type :-)

My email is:
joshuakemp85@gmail.com




Monday, September 19, 2016

Ruby Poltergeist gem the best way to scrape data

Over the years I have used several different gems to scrape data.  My 2 favorites being:
Nokogiri and Mechanize.  Both are very similar, but recently I had a challenge that neither Nokogiri or Mechanize could handle.





Here's the situation:

I needed to make a HTTP POST, passing basic auth to a login form, then go to another URL and scrape some data.  All of this can be done using the Mechanize gem.  The problem is after making the POST the site used AUTH0 for authentication, which was implemented using Javascript.  The Javascript redirects to another URL looking for the successful login code from AUTH0.

THE PROBLEM???

Mechanize and Nokogiri don't handle Javascript.  The good news is Poltergeist can easily handle Javascript, no sweat!  After using Poltergeist one time to solve this challenge, it has become my "go to" gem for anything and everything!

Poltergeist uses PhantomJS to run as a headless browser, I can still use the awesome Ruby gem Crack gem to parse any JSON or XML.  I can't show you the exact example I was working on as I am not allowed, but I can show you something similar.

There is as an old web based game called Hyperiums II I honestly don't play the game, but my friend does :-)  This isn't a post about how to cheat the game ( although you could ),  I want you to fall in love with this gem!  Once you use it, it will become the gem you grab if you need to scrape data or have a simple task that you want to automate.  Poltergeist is my secret weapon when doing any web scraping!

Here is a sample Poltergeist script of logging into Hyperiums II and navigating to build factories.  You can modify this code to do most any small task or test that you need!

Hyperiums II script


Saturday, September 10, 2016

Mr. Kemp you have been Terminated

Mr. Kemp we have decided to terminate your position, effective immediately.  Sign these documents please, I will need your badge and computer, best of luck for your future.



There is something inside of every provider that freaks out when being let go.  As I said goodbye to my former co-workers and got into the elevator, tears started to well up in my eyes. I got home in record time, there is no traffic at 11am.

It didn't matter to me that the company had laid off 11 other people the past week because they hadn't landed any new contracts. The reason didn't matter at all.

What matters was figuring out how I was going to get my next job AND FAST!!! I had no clue this was coming. I was told I was doing a great job and wasn't even looking for other jobs.

I will spare you all the depressing details and stress I went through. What came out of the experience was 9 days after being laid off I accepted a job offer for a mid level position paying $11K more!

I went on to coach other people for the next 12 months. I helped get people hired in record time all over the U.S. 

You don't have to cry like me, you don't have to stay awake at night with heartburn and stress unable to sleep hoping to land a job.

You don't have to read the 2,000+ emails I've sent to coaching clients listening, understanding their story and situation.

I poured my heart and soul into this course. I made the course I wish I could have had when I was let go. I would have slept better. I wouldn't have felt like I aged a year in those 9 days.

If you need a tech job in the shortest amount of time possible, this is the course for you, this isn't a learn how to code course, this is a : "LET'S GET A JOB COURSE".


I hope to see you in class!

Tweet one of the course links below and like the ‘course’ Facebook page and I will personally send you a free copy of my book: “No Degree, No Problem”! The course officially launches Monday September 12 but the first few lectures are up now if you want to get a jump start! 



People will go to bootcamps and take coding tutorials BUT when they are REALLY ready to land a job this is it here: http://bit.ly/2czEzCv ( Tweet this )

Need a tech job fast? Check out @joshuakemp01 's new course. A proven method and fastest way ever developed http://bit.ly/2czEzCv ( Tweet this )

Anything worth having takes hustling and an effective roadmap. Land a dev job now: http://bit.ly/2czEzCv                          ( Tweet this ) 

Sunday, August 28, 2016

The Fastest Way to Land a Tech Job

Where have I been for the past 2 months???  Working, hustling!!!  I keep trying to stop coaching but I have a serious waiting list, and people keep emailing me!!! It was getting hard to keep up with. I still have a passion to help others land a tech job, get out of their current career and help those who have dropped out of coding bootcamps.

I decided to take everything I have learned from coaching people on how to get a: Junior Dev, Test Automation, or QA job from all around the country and condense it down into a course. I've taken what I've learned from walking people through the process of landing their first tech job. On average I would send 200 - 300 emails to each person over the course of the coaching! Instead of you having to read all those emails and try to figure out what worked, I have done it for you. In a simple at your own pace course and at a more affordable price too!

The Fastest Way to Land a Tech Job course officially launches September 12th, but I am allowing people to sign up for a pre release launch and have access to the first 4 lectures ahead of time! You can find more info about what's in the course and watch the promo video at the link above.


Saturday, June 4, 2016

How to become a hacker: Part 1

I know it's been a long time since blogging, I have been finishing up with coaching clients, working, and studying in the evenings.  I have decided to show you what I have been learning and how you can do the same if you want.

The biggest advantage I have with becoming a hacker has been having a friend ( who is a hacker ) agree to mentor me.  My end goal is to get hired as a Ethical Hacker / Pen Tester, I am not simply learning to learn.  I want to learn how to hack and be good enough to actually go out and get hired as a hacker.  I am not learning to impress anyone or look cool, the mission is:

Get good enough to land a job as a hacker.

One of the first questions my mentor asked me ( who is on a Red Team currently ) was what type of security testing / hacking do you want to get into?  He compared me wanting to become a hacker as the same as someone saying:

"I want to get into Computer Science."

That is too vague, computer science is not specific enough, you could become a programmer, you could become a test automation engineer, you could do Big Data, the possibilities are endless.  The same is true with becoming a hacker, that is too vague, you need to get clear on what you will be security testing / hacking.

I decided on web application security pen testing since I like working with web apps and am most familiar with them.  My hacking training is specifically geared toward learning web application pen testing techniques.

So the first rule to becoming a hacker is:

Get clear on what type of security testing / hacking you want to do, don't try to learn everything.

On that note, I am learning some of the lingo used by real world hackers, and have found that they actually do not like the term 'Ethical Hacker', they call themselves 'pen testers', or penetration testers' but almost never Ethical Hackers.

The next issue is where and what to start learning?

There are so many resources and places to learn you can absolutely waste your entire life trying different courses and tutorials.  Everything I am writing about is my own personal journey to becoming a web application pen tester, with that said here is the first resource that you need:

http://www.cs.fsu.edu/~redwood/OffensiveComputerSecurity/lectures.html


Start on lesson 16and go through lesson 19.  The other lessons are good, but I am told are over my head for now.  The hardest part of this training is the homework, reading 80 - 100 pages after each lesson takes a long time and even longer to really understand what you are reading.  The book you will need is:

Web Application Hackers Handbook.

The to learning pen testing is not simply watching a video and reading a book, pen testing is all about hands on.  You absolutely must do what the book recommends as exercises or else you will only get the theory but not the actual how to.

How to actually do the exercises?

You need a web application that you are actually allowed to pen test without going to jail or being illegal.  The solution is:

https://github.com/WebGoat/WebGoat

Web goat is the best way to actually try out all the techniques you have read about.  Watch the lesson, read the homework go through some challenges using web goats insecure web application.  This is how I am learning and will be for sometime. 


Tools:

The first thing you need to do is to only use a Virtual Box or VM for all of your testing in case something goes wrong, you can simply delete it.  I did this wrong before, trust me you need a VM.

Install Virtual Box

Install Kail:
https://www.offensive-security.com/kali-linux-vmware-virtualbox-image-download/

On Kali install:

Firefox
Burp suite ( latest version )

There are more things you need to know, you will need to know how to set up a browser proxy to talk to Burp Suite so that you can test the web app.  If there is interest I will write some more posts on more specifics ( as they can be tricky when you are new to it ) if I receive enough emails.

The last thing I will say is that learning how to code was tough, getting an actual junior dev job was even harder, but none of this will be even close to how hard it will be to land an actually job as a pen tester at a company.  Companies want you to basically be able to hack an international bank and not get caught with very little supervision.  I am nowhere even remotely close to that level of skill but know I will get there eventually.  Follow along on this journey if you want me to show you the way!

Never give up, you can do it!

















Saturday, March 26, 2016

End of coaching, start of Ethical Hacking journey...

There is only so much time in a day, we all have the same amount, doesn't matter who you are or how much money you make :-)

My original goal with learning to code was to become a senior Rails developer one day.  I still like Rails and love coding, but I am turning my focus towards one day becoming an Ethical Hacker.  This goal will take a while I am sure, as breaking into the field is much harder than getting hired as a developer.

I love coaching and have several clients that I am currently working with, I love seeing people get hired and change their lives for the better!  I spend my evenings always learning something new, whether it is coaching a client or something related to programming / testing.  I have a lot to learn if I am ever to get hired as an Ethical Hacker, and as such need to create more time for myself to grow.  I have decided to stop coaching people from this point forward.  I will finish the coaching plans that I have with current clients, but I will no longer be accepting any new clients.

I have helped around 30 people land testing or development positions since starting my blog.  In my book 'No Degree, No Problem' I share a lot of knowledge about switching careers, but I think down the road I will write a new book that gives secrets that I kept for coaching clients only.  Secrets that make landing a job mere child's play :-)  I don't have the time to write the book now, but I think I will write it if I get enough interest from people.  I think the book would change the way that people go about trying to get an entry level job in the testing or development field.

Normally I don't ask for help on the blog, but I have decided since I have many thousands of readers, why not ask for advice myself with my Ethical Hacker journey.  I have Googled the term, I have read many online articles and sites suggesting certifications, but I would love to hear from someone who actually got hired in Cyber Security.  If that is you, I would greatly appreciate any and all advice that you can give me!  My email is: joshuakemp85@gmail.com

Again, this will take me some time I am sure, I will keep you all posted as things progress.  I still love coding and use Ruby almost everyday which is my favorite language, I still plan on blogging as usual!


Keep coding peeps, you can do it!

Friday, March 4, 2016

How to make work easier and more productive.

I landed a couple of more coaching clients and have come to the realization that I can only coach so many people at any one time.  As of right now, I can only take on 1 more client ( until a current client gets hired ).  After 1 more client, I will be starting a wait list, first come first serve, if you want to be on that list let me know.  I never want to get so busy I can’t give high quality, individual attention.  

I was hired in August 2013 at ZipList in Reston Va, as of March 4th 2016 I have worked at 4 companies.

Ziplist - Where I wore many hats as a junior developer
Perfect Sense Digital - Where I started learning automation using Ruby
Fidelity Investments - Where I used Javascript to automate a SPA application
IBM - Where I am currently

 Through all of those companies I have learned a lot and have found common things I do at each new job that have helped me to be significantly better and more productive at work.  I hope they can help you as well!

Pocket - you find something you want to read but don’t have time right now.  I use  Pocket browser Addon for Fire Fox and Chrome, as well as on my iphone.  This way I can always find what I want to read.

Evernote - Simialr as above.  I use Evernote for personal notes, potential ideas, blog posts, I even have a note for interesting things I learn about Ruby :-)  These notes aren’t tied down to any one machine and you can use the app on your phone as well to sync.

Here's an example of my Evernote:



Bookmarks - I used to hate Bookmarks, but now I love keeping a detailed list of all the URLS I may need, especially when at a new company.  I make folders for ruby, rails, automation, hacking, work, and save URLS that I want to reference later.

Alfred - Alfred is basically a tool I use for web shortcuts. I used to use a lot bash shell aliases, but find myself using Alfred more to quickly and easily go to places on the web.  You can even add different parameters to the end of a URL to go to different JIRA tickets.

Here's an example of how to add a custom Jira ticket search.

Go into the Alfred Preferences:


Next add the 'custom web search' in this case for JIRA:

Hit the 'option key and the space bar' to open Alfred and call the Jira URL shortcut:




Chrome - I used to get to a new job and then have to download and slowly add all the things that I liked on the new computer.  I realized that if I sign in as my own profile on Chrome browser that no matter where I go or which computer I use, I always have all the addons and everything I like without having to do any setup!

I used to use a super long bash alias called ‘sd’ ( start day )  I would open my computer at work. Open the terminal and the first thing I would do is type ‘sd’.  I would then go get a drink or use the restroom while that long alias would open all the applications that I typically used each day, open up all browsers I wanted open and then go to the most common URLS that I needed to look at first thing in the morning. 

Now I use some bash aliases, but for common URLS that I need open each morning, I simply use Chrome’s built in settings and have it open the 4 URLS I look at every morning by default whenever it opens up Chrome.

Here's my browser toolbar just as an example you can also see the Pocket icon:


Here is where to set the deafult URLS to open in Chrome:




I still love Bash aliases ( shortcuts ) to go to any place in the terminal quickly. For example
if you have a developer section where you always write your code simply have a word like
‘developer’ that takes you to that PATH without having to type in the long PATH everytime.

Here's an example of some ~/.bash_profile aliases that I use:




I also like the Brew add-on ‘ack’ its like a much easier version of grep.  You simply type in a phrase ( string ) and it will search in that folder and all sub folders for whatever you are looking for.  It also highlights all the matches.  Very simple, very easy, I love it!

Here's an example of me using 'Ack':




As a general rule, whenever you do something more than 3 - 4 times, you should try to find some way to automate it.  One of the biggest failings I have had in this area was not using a Gmail signature.  Instead every time I would write my name and a farewell ending.  I wrote that manually thousands of times till just recently, when I  realized that I should use a signature and save time.

All these things are small, but they add up and make you faster and more productive.  It also helps you to start looking for anyway to automate repetitive tasks.  If something can be automated at work or on your computer that is simply boring and redundant, you should do it!

Learn to type. it will make you WAY more productive and will help your neck to stop hurting from hunching over looking at the keyboard.  In August 2014 at my first job after ZipList launched a new version of their app, I was tasked with responding to 100 - 200 emails every week.  I understood why they needed me to spend all day trying to reproduce bugs and then sending a response back to the user, but I soon found it very boring.  

In order to deal with the boredom, and because my neck was killing me,  I decided to simply stop looking at my hands anymore, cold turkey.  I seriously sucked!  When I went on http://play.typeracer.com/  I averaged 12 - 14 words per minute.  I was so slow people at work asked me what I was doing sometimes ( apparently they noticed me using the delete key every other letter ) 😃

Long story short 18 months later I just got the greatest compliment from a co worker who said:  “Wow, you type really fast!”  I don’t really, I type around 50 WPM.  Typing is not as powerful as coding, but it really does help you to have a much easier time and be far more productive while working.  Also if you are going to be using a computer for 8 - 10 hours per day you should learn how to type.



You don’t have to do my method of learning to type ( no training or typing courses ) just cold turkey not looking at my fingers anymore.  Try to learn to type some way that works for you!


Keep coding peeps, you can do this! 

Saturday, February 20, 2016

How to easily pass Free Code Camp's Algorithm Scripting challenges - OR - Why you shouldn't use the browser challenges

New coaching testimonial coming on Sunday!

While researching Free Code Camp ( It changes quickly so I wanted to make sure what I was saying was up to date ), I found out some issues with the browser based scripting challenges that really bothers me.  As of last year, I was able to use the Ramda.js library in the browser challenges online.

I tried every way to call/require the Ramda.js or Lodash.js libraries without any success.  I searched online for 30 minutes trying to figure out how to use Ramda.js with the online coding challenges and couldn't find any information.  I personally think the Ramda.js library was removed.  Either way, it should not be this hard to figure out how to use a Javascript library like Lodash or Ramda with the challenges.

I know as of August last year (2015) Quincy Larson said on Quora that you could use Ramda and Lodash in the online challenges:
https://www.quora.com/What-are-some-websites-to-practice-mini-problems-for-coding

I also can show you how I used Ramda.js last year with Free Code Camp online challenges:
https://github.com/joshuakemp1/FREE-CODE-CAMP/tree/master/ecc


I hope I am wrong, I hope someone will clear up this issue and show me how to use Ramda.js with Free Code Camp, without it, I don't think you should use the online editor.  I recommend copying and pasting the challenge into a text editor and then using Lodash or Ramda libraries.

The article below is how I used to easily solve the Free Code Camp challenges, hopefully, this will help you solve the challenges easier or switch over to Ruby :-)


This was my original post as of a month ago.

I've been asked by many people to write how to pass the Free Code Camp scripting challenges.  Here goes:


NOTE:  I love Free Code Camp's Algorithm challenges and recommend them to my coaching clients all the time.


There are several reasons why Free Code Camp's challenges are hard:



  • When you run your code you don't get to see the output ( sometimes you get some sort of output, put it's not the same as running it in a REPL on your terminal ).
  • You can use the Ramda.js Library but it is not advertised on the site at all.
  • Nowhere does it tell you on Free Code Camp how to call the Ramda.js Library.
  • Why would you have a Javascript library built into the Bonfire Algorithm challenges but not tell beginners how to call a Library?
  • Using built-in methods is frowned upon in the community, using nested loops is considered better and more 'vanilla Javascript'.



8 steps to solve them easily

Here's how to get around these issues:

(1)  As soon as you get to Bonfire Algorithm Challenge, the very first thing to do is click on the 'Run tests' button.

You want to find out all of the edge cases that you need to solve with your code. Leave this browser window open to reference.

(2)  Next copy and paste the Bonfire Algorithm Challenge code into your text editor.  This is where you will actually work on solving the challenge.  Once you solve one of the cases you need to solve for the challenge, paste it into the browser and run the tests.  Using this approach you will eventually solve the entire challenge.

(3)  Look at the 'helpful links', they are basically the methods you will be using to solve the challenge.  NOTE:  This is the best new feature that Free Code Camp has added lately, this is exactly what I used to do in the past, look for a Javascript method that could solve the challenge first before doing anything else.


(4)  Next look at Ramda.js Docs and see if you can find a built-in method that you can use to solve or partially solve the challenge.


(5)  Make sure you test that you are requiring and using the Ramda.js library correctly on your local machine.  First install Ramda with NPM, if you don't have NPM you will need to install Node.js.  After installing Node and Ramda, open the REPL from the command line and make sure you can access the Ramda methods.

(6)  Always be checking your codes output.  Use 'console.log' all through your code if you don't know what something is doing or want to see output for a particular piece of code.

(7)  Always avoid using multiple nested loops if possible as your solution.  No company will ever want you writing code like that in production.  Ignore people who say to learn that way first and then use methods.  Everytime you use a loop you add another layer of complexity to your code, use the built-in methods as much as possible.

(8)  First try to solve the challenge anyway possible, if you get it solved, then see if you can clean up your code or solve the challenge in a cleaner way.  Don't strive for perfect when you are just starting out.  Focus on completion and solving the challenge first, pretty second.


Learn to use your REPL and local machine instead of relying on the Free Code Camp online editor.  Focus on the output of your program and try to slowly solve one piece of the challenge at a time.  Never get discouraged, if it takes you 3 days to solve a challenge that's okay, you will have learned a lot about coding in those 3 days.  Don't worry if someone else can solve a challenge in 3 minutes, they have probably seen similar challenges before.


Keep coding peeps, you can do this!!!




Friday, February 5, 2016

Why you should learn to code but not become a developer

I sell several copies of my book everyday that promises you can learn to code and land a Rails job.  That is still true.  What I am saying with the title of this blog, is this:  

It is soo much easier to learn how to code and land a QA or Test Automation position, than it is to start out as a full blown developer.  Being able to solve basic coding algorithms on Free Code Camp is not the same as being a developer.  NOTE:  Free Code Camp is great, this is not about them.


At my first job, I wore many hats, did some email management of the support Queue, did some testing, some front end work but it wasn't a full blown developer only position.  At my second job I did test automation which basically meant I was using Ruby to keep track of performance metrics and wrote several different scripts that solved/tested various things.  I think the longest script I personally wrote was 387 lines of code.  


There is nothing wrong with what I did, I mean my code worked, it solved the problem and the company still uses it to this day everytime a certain build is triggered.  Honestly, the script was me 'hacking' trying to figure out how to solve the issue, which I did.  The script wasn't written in OOP, ( Object Oriented Programming ), it was just me functionally writing code to solve the issue.  It could have been written in probably 100 lines of code if it was written in OOP.


I am not very good at OOP.  I don't instinctively think in that manner, I am learning more about OOP, I need to improve the way I write code.  I love learning and love programming, so this is a 'good problem' to have :-)

So back to my point, you can learn to code and land a full blown Rails job.  What I am seeing in my coaching and from the emails I receive is that most humans who have zero coding backgrounds will not be comfortable doing this.  You may be able to land the job, but you will be struggling all the time.  I love that I get to use Ruby at my day job to write automation, every day I get to improve my coding abilities.

I think learning to code can be broken down like this:

Learn the basics of coding:

If, else statements
Loops
variables
data structures:  Arrays, Strings.

Knowing the above you can do a lot.  You can solve most problems that you will face in test automation at an entry level.  This is what I did at my first job, I knew Arrays and Strings well and could always solve an issue by looping over it enough times and throwing in some control statements.  You can solve 80% of problems with the above which I think is a really positive and encouraging thing for beginners new to code.  NOTE: Yes, I knew more than the above, yes I passed tutorials on Classes and OOP concepts, but I didn't actually ever use them in real life.

Learn more of the language:

Hashes
Recursion
Different types of loops
Ternary operators
Case statements
Code indentation
Cleaner code, not being redundant with code.


The second job I started to use this more, this is when I started to use things like 'Robo-cop' and 'Ruby linters' to help me learn more about how to write code better.



OOP

This is where I am now.  I know of OOP but typically if I have something that I need to solve I will do it functionally.  This is the year I am trying to get away from that and really embrace OOP.

 I need to better understand and use:

Classes  ( most basic algorithm challenges don't involve using classes and can be solved by writing a few simple methods )
Modules
Inheritance
Clean Code ( I am currently reading the book, and am trying to implement it in real life )
Deeper knowledge of the Ruby language, trying out and playing with new methods just to learn more about Ruby.

In order to be good at Rails ( I'm not ) you need to be good at OOP and not simply be hacking things together until they work :-)

The above is why I also switched to Ruby Mine IDE instead of Sublime Text 3 for many reasons.



This is why I suggest to learn to code and then get a job that involves coding but not at a level like being a full-blown developer.  I think you will make your life easier and not become frustrated with coding but instead, will still find it fun, and will enjoy the journey of learning more and more every day.

I plan on writing a post on how to easily solve the first 30+ of Free Code Camp algorithm challenges ( people have been emailing me asking ).  It's actually quite simple and not too hard.  Which brings me to my point, solving algorithm challenges exclusively will not make you a good developer.  I think OOP is where things get harder, learning to think in OOP, is a different skill set in itself.

I don't think you should sit in your basement for 5 years until you are amazing at OOP and then try to get a job.  No, I think you should get an entry level job in QA that involves 50% of the time writing code.  Then you will get to grow and learn all the while being paid!

Keep coding peeps, you can do this!

Thursday, January 21, 2016

4 ways to easily find any element on a web page.

Just added another testimonial to my QA coaching page from Justin Bailey of Denver Colorado, check it out :-)  

When web scraping, writing automation, or whenever you need to select elements from the DOM, ( here's a good article to understand the DOM https://css-tricks.com/dom/ ), you will need to know how to find Html elements easily.

For people who are new to learning how to select elements from a web page.  Most start with simply clicking around and guessing how to target an element.  Here are some ways that I go about targeting elements.


Option #1

You can use Firefox's Firebug and select an element like this screenshot shows:




You'll notice that the 'id='main_right' is selected from the HTML panel, but on the web page, you won't see the name of the id highlighted, only the element outlined in blue.  This is how I first starting finding and selecting web elements.  Using Firebug works, but there are definitely easier ways.



Option #2

You can use Chrome's Dev Tools and select an element like this screenshot shows:




You'll notice that the 'id='main_right' is selected from the Elements tab, and also on the web page.  I love how Chrome Dev Tools automatically converts the 'id' into the correct CSS syntax '#'.  If you now take the highlighted id and use jQuery in the Console panel, you can tell if you are targeting only one element.  You don't want to accidentally target an element that returns more than 1 instance.

Here is how I easily check if I am targeting only a single element.

I took a picture of the highlighted element using the Captured app http://www.capturedapp.com/,  I then open the Javascript console tab, and use jQuery to target the element.  Here's how:






Type out the CSS Syntax to select the element, and click enter.




After clicking enter, if you only get 1 element returned in the array ( like above ) then you have selected the element correctly and won't have issues with multiple selections.  One other way to check if you are targeting an element correctly is to use '.text' to see the text that the element returns like this screenshot shows:




Option #3

A very easy method is to use Firefox's addon, FirePath.  You simply right-click on any element and select 'Inspect in FirePath'.  You will instantly be given the exact, unique XPath for that element.



 There are several issues with this:

#1 XPaths run 2 - 3 times slower than a scoped CSS element.
#2 XPaths have to load the entire element each time they are called.
#3 XPaths are very hard to read and understand.
#4 XPaths have to load the entire element each time they are called.
#5 XPaths are very fragile, and break whenever anything on the DOM is changed.

XPaths are quick and easy to locate but there is a technical cost for choosing them.  With that said, sometimes there is really no other option than using a XPath.  I only use XPaths as a last resort.


Option #4

The last option is one of my very favorites when having issues with finding a hard to target element.  Selector Gadget http://selectorgadget.com/.  Selector Gadget is the closest thing to Html and CSS magic that I have ever come across.  Selector Gadget works by you telling it which element you want it to target.  It will then generate the CSS syntax that it thinks you want for the element.  Next, you will click on the elements in yellow that you don't want.  Selector Gadget will then adjust the CSS it generates until it only selects the 1 element that you are targeting.  Here are a couple of examples:

Click on the Selector Gadget Icon to get started



Next highlight and click the element that you want.



Success!  You have the CSS generated and can see that only 1 element has been targeted!


Here is another example:



Select the element you want to target.  Notice that the yellow shows all of the other elements that are going to be targeted as well.  You need to now 'train' Selector Gadget by clicking on one of the yellow elements, letting it know that you don't want to target it.




Success!  You will see that Selector Gadget has once again successfully figured out the element you are trying to target and generated the correct CSS syntax.





















The only issue that I can find with Selector Gadget is that the CSS could be fragile is some cases with using of ':nth' but overall I highly recommend it!  Using the above methods, you should be feeling more confident in being able to handle targeting any tricky element situation that you run across.  I think Html and CSS 'noobs' should first try to target an element on their own. Then after  5 - 10 minutes if they can't figure it out, use Selector Gadget and learn the correct way to select the element.

Keep coding peeps, you can do this!






Wednesday, January 6, 2016

Things I like, things I do.

Hey All, I've been a little busy lately and have switched jobs since we talked last.  The only problem the longer I am employed at companies is, the less and less I can say about those experiences :-)  I thought I would share with you some of the things I read, and like.  The intent is that you can see what I do and hopefully some of it will help you in your own learning to code journey.


I believe your education never ends.  When people say they are "well educated" referring to their college education, I see it as offensive and slightly ignorant.  I believe you should never stop learning, and should always be improving your own education regardless if you are in school or not.

According to studies 85% of our success in the work place is due to 'human engineering', not your level of college education.  When I was 14 I said something to my Aunt Becky that she took as being rude.  Her husband called me later that night and told me how rude and offensive I had been.  My Aunt and Uncle had historically always given me cash for my birthday in a card that matched my age. For my 15th birthday instead of $15 in cash as I expected, I received a very worn out copy of Dale Carnegie's "How to win friends and influence people" and 1 single stick of gum...I guess I had bad breath too :-) 

I read that book 3 - 4 times, it changed my life.  I had no clue about how humans worked or what they liked or didn't like.  I know now at age 30 that my strongest asset is my people skills.  Most people that I have worked with, and most of my coaching student's weakest area is dealing with people.

Here are the books that have meant the most to me over the years.  Honestly, if I hadn't read them all, I don't think I would have ever been able to switch from a career as a Blacksmith/Farrier to one of writing Code.  There are many more good books, but I think all of the ones below would help anyone learning how to code.  Only 4 of the books below are code related though.  There are more great tutorials and resources, but if you completed just the 4 I mention, you would have enough technical ability for a junior Rails position, and know the basics of coding.

I think the most important tool that we have as a "knowledge worker" is our brain.  Which is why I do things every day to improve it.  For example I write left handed and use my mouse all day left handed even though I am a natural right hander.  I have high lighted the top 10 books I recommend if you only could pick 10.  I try to read at least 10 new books a year.  Last year I read 13.  NOTE: I don't make any money by recommending these books:



  • How to win friends and influence people - Dale Carnegie
  • The power of eye contact - Michael Ellsberg
  • No More Dreaded Mondays - Dan Miller
  • Secrets of a Buccaneer-Scholar: How Self-Education and the Pursuit of Passion Can Lead to a Lifetime of Success - James Marcus Bach
  • Whole Brain Power - Michael Lavery
  • The Education of Millionaires: Everything You Won't Learn in College About How to Be Successful - Michael Ellsberg
  • The Choose Yourself Guide To Wealth - James Altucher
  • Rhinoceros Success - Scott Alexander
  • How to Have Confidence and Power in Dealing with People - Les Giblin
  • Anything You Want - Derek Sivers
  • What Every Body is Saying - Joe Navarro
  • The Compound Effect: Jumpstart your income, your life, your success - Darren Hardy
  • The ONE Thing - Gary Keller
  • It's Not How Good You Are, It's How Good You Want To Be. - Paul Arden
  • Quitter: Closing the Gap Between Your Day Job & Your Dream Job - Jon Acuff
  • The Art of Non-Conformity: Set Your Own Rules | Live The Life You Want - Chris Guillebeau
  • The Magic of Thinking BIG - David J. Schwartz, Ph.D
  • WIN: The Key Principles to Take Your Business From Ordinary to Extraordinary - Dr. Frank Luntz
  • The Real You - Dr. Kevin Leman
  • Eat That Frog! - Brian Tracy
  • How to Think Like Einstein: Simple Ways to Break the Rules and Discover Your Hidden Genius - Scott Thorpe
  • Learn To Program - Chris Pine
  • Michael Hartl's Rails Tutorial
  • Whys Poignant Guide To Ruby
  • In The Beginning Was The Command Line - Neal Stephenson

Things I do to daily/weekly to improve myself:

If you read Whole Brain Power and agree with what he says about the overall benefits of becoming ambidextrous, and how it improves your overall brain function.  Then these next few things will make sense to you, otherwise you will think me a bit weird :-)

  • I use my mouse at work left handed the entire day.
  • I bounce a golf ball off of very small hammers and also off of very heavy hammers several days per week.
  • I convert license plate numbers into pictures using Phonetics.
  • I convert the letters into numbers, and then into pictures.  For example DE would make the number '45' which would convert to the picture of a Rail Road Track.  ( Look up the Majors memory system if you want to know how it works )
  • I close the number 1 Grip Crushers = 140 pounds of force to close, every 2 days ( most weight lifters can not close it )
  • If I need to take notes in a meeting I make sure I write them down and that I do it with my left hand.
  • I go to the acupuncturist once per week for needles and cupping.
  • Read a part of a book each night or work on my Rails app.
  • Basically do everything as much as possible left and right handed, for example when I was at Fidelity I would play 2 games of ping pong after work most nights.  I would always play one game right handed and the other left handed.  I consistently beat people with my left hand.
  • Always lots of goals, some huge goals, and then 1 or 2 crazy outlandish goals that I don't tell anyone or else they laugh at me.  I think that keeps me very positive when thinking of the future and full of energy to welcome the start of a new day.

All the above may be weird, I personally think they help me learn quicker and keep my brain as healthy as possible.  I don't mind doing weird things as long as they work.  Most very successful people do things that others might consider strange or unusual.  My motto is when I see what everyone else is doing, I go the opposite direction.  How can you have remarkable success in life if you merely follow what everyone else does?  How can you be anything but normal if every night you simply watch Netflix?  Oh yeah, I don't watch much T.V. either :-)

Keep coding peeps, you can do this!