Monday, March 23, 2020

The TDD Course for Beginners : Learn by Practicing 7 Katas

Learn how to do Test Driven Development using Ruby within 4 hours. You will get:

1. The transcript of the entire course in PDF.
2. TDD in Ruby ebook in PDF, Mobi and Epub formats
3. Members only TDD tutorial website that walks you through every exercise in the course.
4. Monthly Google hangout Q&A session that supports your learning objectives.
5. All the slides used in the course in PDF format.
6. TDD Course Tools Checklist for every sub-skill covered in the course.
7. TDD in Ruby Course Outline that was used to create the course.

How do I get access to the videos and all the above goodies?

For only $9 / month, you get my support and access to all of the above. Send me payment via Paypal to to get access today!


Jeff Casimir, Principal, Jumpstart Lab


The actual coding TDD examples for Fizz Buzz and Fibonacci were really well done
During the coding exercises the refactoring of code was a good illustration of how to improve certainty of test results
Good overview of the importance of testing
Each lecture / exercise was only 5-10 minutes providing nice incremental gains in the course


The instructor's delivery was not engaging - students tune out very quickly
First 61 minutes were very high level and included no actual coding
Instructors speaking voice was monotone and slow for the entire course no inflection, jokes, or anything to keep your attention
The audio between segments varied in quality to sometimes low quality not ideal for a $200 course
Instructor used whiteboard to write notes and diagram concepts during lecture (also wrote in cursive and at least 1 time wrote off viewable screen)


We wouldn't recommend it for Turing pre-requisite work, but could be valuable supporting material for students in the class.

Mylene Reiners

When you want a theoretical background on TDD, this course is great (and the Ruby part is not too hard for people knowing only a little Ruby...)

Yury Voloshin

This is a good introduction to TDD for those who either have never used it or who have a very rudimentary understanding of it. Some of the more advanced concepts toward the end are somewhat rushed through, but I' sure that can't be helped due to time constraints and to the nature of the material. At least now I know the topics that I need to into more deeply.


This course introduces a solid foundation for practicing TDD. The instructor definitely knows what he's teaching. Information is divided in small logical and understandable chunks/lectures.

Jesse Mignac

Techniques, examples and theoretical material. This course is a really nice start to TDD with Ruby

Andrew Platkin

Very good pace and learned alot

Thom Parkin

The beginning of this course seems a bit slow and very dry. But your patience is well rewarded because the depth and detail of information provided is priceless! Mr. Paranj uses a time-tested technique of methodical presentation of ideas, one built upon the other, to its ultimate success. I am grateful and impressed by this course.

Jikku Jose

I am very happy to have such a comprehensive course from Mr. Paranj. I have been trying to do TDD in my projects for quite sometime without much success. This course helped a lot to expose much of the concepts and details one should focus on while doing TDD.  I wish the examples mentioned in "Fake It till you make it" and "Triangulation" was a bit more involved rather than the basic ones presented so that the techniques could be better understood.  I thank Mr. Paranj and Udemy for the course, it really helped me. Hope more advanced Ruby related materials can be brought out.

Pawel Jackowski

Instructor knows TDD and explains it with ease. I am quite familiar with technique and just wanted to refresh knowledge and I still recommend course. I definitely learned something about common mistakes and importance of every step in TDD sequence. I enrolled for free.

Steve Freeman

Instructor uses katas very effectively to show the patterns behind TDD. His clear examples and pointers to material for further study were very helpful and I look forward to practicing katas on my own. If you're trying to make sense of TDD I highly recommend this class!

What are the requirements?

Basic programming skills
You need to have your favorite text editor installed on your machine
You need Ruby 2.0 or above installed on your machine.

What am I going to get from this course?

Do Problem Domain Analysis
Do Solution Domain Analysis
Design Test Cases
Write Tests First
Apply Canonical Test Structure when having difficulty in writing a test first.

Who is the target audience?

Beginners to Test Driven Development
You should already know how to write programs in Ruby
You should already know how to create an instance of a class and invoke methods.

Course Description

In this course you will learn the basics of Test Driven Development. You will learn how to do Problem Domain Analysis, Solution Domain Analysis, Designing Test Cases and Writing Tests First. Learn the Basics of Test Driven Development in Ruby using this Beginner Course. This course will take 4 hours to complete.

Practice skills using 7 katas

  • Use the downloadable checklists to guide you when coding
  • Learn 3 different techniques to do Test Driven Development
  • You can be more productive if you practice TDD at work. Companies that adopt Test Driven Development are great places to work.
The material used in this course is the result of feedback from students who attended my TDD bootcamps and tutorials. This is a course designed by a developer for developers.

The concepts are first explained in a presentation. Then a coding demo illustrates how to apply the theory in practice. At the end of the lesson an exercise is given to reinforce the material.

You will learn the following concepts:
  • Assertions
  • The structure of a test
  • TDD Cycle
  • Minimal Implementation
  • Starter Test
  • Story Test
  • Next Test
  • Refactoring
  • Obvious Implementation
  • Fake It Till You Make It
  • Triangulation
  • Hiding Implementation Details
You will be able to attend interviews for companies that demand TDD skills to get a six-figure salary. Complete with working files and code samples, you'll be able to work alongside the instructor and will receive a verifiable certificate of completion upon finishing the course. I have interviewed people and I have seen the common mistakes made by candidates.

Subscribe Now

For only $9 / month, you get my support and access to all of the above. Send me payment via Paypal to to get access today!

Monday, April 24, 2017

jQuery Turbolinks Stripe Subscription Problem is a possible fix, the problem is that it is not compatible with newer versions of Turbolinks.

The workaround is to either not use different application layout files (one with stripe.js and one without stripe.js), so you have only one layout that has stripe.js or you can have two layouts but still include stripe.js on both. Eventhough only your payment pages need the stripe.js and results in a little duplication and might affect the performance in a very negligible amount, this will prevent the Turbolinks problem.

If you had used Rails cache to cache the pages, you must invalidate the cache by running in production:


This will force the page to pickup the changes made to the layout files, otherwise you will see the latest file in the production but the browser will not see the updated file.

Tuesday, April 18, 2017

Bootstrap 4 Material Design Links

1. Bootstrap Material Design Components
2. Demo

Upgrading Passenger from 5.0 to 5.1 using Moonshine

Change passenger version in passenger.rb:


Checkin the file and cap deploy. This version of passenger turns on XSS security header:

X-XSS-Protection: 1; mode=block

Thursday, April 13, 2017

Making the Transition from Blogger to an Author

How did I make the transition from writing blog posts to a book author? Initially I was writing only 'How-To' articles that focused on helping the reader get a specific result. Over time, as I wrote more I gained more confidence and I was able to write more articles in less time. However, writing a book is more involved than writing blog posts. I am not a native English speaker. It pushed me beyond my writing abilities. Since I did not have any training in writing, I searched for resources on how to write technical books. I had to learn some techniques that helped me write the book during the time I worked on the TDD in Ruby book. Today, I am going to share with you one of the techniques that I learned during the time I wrote the book. I had the main bullet points and I used Semantic Maps to expand the main points to a paragraph.

Semantic maps are webs of words. The purpose of creating a map is to visually display the meaning-based connections between a word or phrase and a set of related words or concepts.

I would take the main point, research the topic and draw the semantic map that connects all the concepts. I would then eliminate the concepts that are not relevant to the analogy that I need to explain the main idea. I revised the diagram over the course of few days. Then I write a paragraph by referring the semantic map. I revise the paragraph several times. I keep all the paragraphs next to each other so that I can compare and finally pick the one that I am satisfied with.

The following diagram shows the semantic map for the music analogy that I used in the book. The music-semantic-map-1 shows how the music is related to other concepts. The concepts are connected by arrows and the relationship is written next to the arrows. The music-semantic-map-2 is the continuation of the map that connects the Performer to musical instruments.

I also drew semantic maps for programming as shown in program-semantic-map-0 and program-semantic-map. I compare the semantic maps that captures the essence of creating music with creating computer programs, I look for things that are similar to make the analogy clear.

Comparison of semantic maps helps us to find missing concepts in the paragraph that expands the main idea. I found semantic maps very helpful because I don't need to worry about grammar when I am drawing them. The main focus is in finding the essential relationships between the concepts. Once I nailed the relationships between the concepts then I worry about the grammar and the sequence of the sentences to form a paragraph. The TDD in Ruby book is written to be practical introduction TDD for Ruby developers. I hope you enjoy this book as much as I enjoyed writing it.

Friday, April 07, 2017

Ruby on rails Developer - Palo Alto

Rate can be over $100 for the right candidate. If interested, email me at bparanj at gmail dot com.

Job Details:
Position: Sr.
Software Engineer (Ruby on rails Developer)
Location: Palo Alto, CA
Duration: 3+ Months contract with possibility of Extension

Job Description:
· Create progressive solutions to solve complex test automation challenges.
· Collaborate with the QA team to architect, develop, and maintain an innovative test automation system for the organization, with respect to functionality, performance, scalability and other quality goals.
· Apply Development and QA Best Practices and actively look for process improvement opportunities.
· Develop and maintain automated test systems.
· Mentor and assist QA Engineers in the use of automation tools.
· Maintain test environments and test automation systems (install/update software on remote and/or virtual systems).
· Provide feedback to internal teams on application flexibility, consistency, and user-friendliness, and provide information to help business stakeholders make the best decisions possible.
· Provide the team with risk assessment and risk mitigation strategies.
· Research, analyse, report, and track defects through completion.
Skills & Requirements

· Bachelor's degree in Computer Science / Information Systems or an equivalent combination of education and work experience.

· 5+ years of development / test automation experience, preferably with complex web applications using Ruby or other OO languages.
· 3+ years of experience working specifically in or with QA teams.
· 3+ years of experience with SQL (MySQL preferred).
· Knowledge of Windows / Linux / OS X operating systems is a plus.
· Familiarity with Agile development principles is a plus.
· Desire to learn from and mentor other team members, including paired programming practices.
· Demonstrated ability to become a subject matter expert.
· Knowledge and experience with Continuous Integration, Continuous Build and Continuous Deployment practices, tools and trends.
· Experience with virtualization technologies such as VMWare, Hyper-V, OpenStack, etc. preferred.
· Understanding of SaaS infrastructure and components (RDBMS, Web and Application Servers, Queues, Caching, etc.).
· Experience with Ruby is preferred.
· Working knowledge of Ruby on Rails and ability to read and interpret intent in a large application is a huge plus.
· Experience with source code revision control systems such as GIT or SVN.
· Highly detail oriented and well organized.
· Strong analysis and problem-solving skills.
· Ability to identify small inconsistencies throughout a complex system.
· Excellent interpersonal skills, ability to work as part of a team.
· Must be self-motivated and take initiative in performing tasks and growing skills and knowledge.
· Ability to effectively communicate information, both verbally and written, to team members and management.

Sunday, April 02, 2017

How to move contacts from Android

Open Contacts, click on ... and click on Move device contacts to, you can select Google and your contacts will be moved to your Google account.