Thursday, June 30, 2016

Gem::RemoteFetcher::UnknownHostError: timed out

I was getting this error message when running bundle install in a Rails 4.2.6 project. Tested the Internet connection by using ping command. Running the bundler again seems to install the gem.

Wednesday, June 29, 2016

RubyPlus Podcast Episode 8

Information Architecture : Analyzing User Research

Purpose of Analysis

The purpose of analysis is to:
  • Identify consistent issues
  • Identify patterns of behavior
  • Figure out which issues to tackle
  • Keep track of insights and ideas

Analysis Steps

Prepare

Get your data and materials ready.

Deconstruct

Pull the data apart so you can look at it outside its original context.

Manipulate

Once you have deconstructed your data, it's easier to identify patterns by playing around with it. As you manipulate it, you'll see patterns and issues more easily.

Identify

Gain insights, start to generate ideas and check that the data supports your ideas.

Summarize and Communicate

Write down what you learned and tell others.

Information Architecture : How to Collect Information about People

What do you want to learn?

Think about what you want to learn and why you want to learn it. You can learn broad patterns of behavior to help you identify opportunities for new products and getting detailed understanding of how people do a particular activity.

Modified 5 Whys Game

Start with something you know about users and ask: Why do they need/want that? until your answer is 'I don't know'. This becomes the research question. The answer to that question can help us express our information in a helpful way for people to make that decision.

How much research is enough?

This depends on:

- How much do you already know about your audience?
- What are the consequences of getting it wrong? (Quick fix or Major change?)
- How much money is involved?
- How quickly do you get feedback?

Reference

A Practical Guide to Information Architecture by Donna Spencer

Information Architecture : Understanding People

What do people need?


  • What's the one piece of information you couldn't live without?
  • What would cause you a lot of trouble if we took it away?
Understanding people's needs helps you:
  • Access existing information to make sure it meets key needs
  • Identify information gaps
  • Make key information easy to find
  • Prioritize content activities - release or rewrite the most important pages before the least important

What do people do with information?


  • Grab a fact?
  • Deep dive and learn everything about a topic?
  • Send it to some one?
  • Save it for later?
  • Print it?
  • Copy part of it into a report?
People may read your information before taking another step in a process. You need to know their next step to help them take it easily. There may be more than one next step.

Where do they use it?

Will they be in an office with a large monitor, good lighting and plenty of time to read? Will they be using a mobile device with a small screen in bright light? This can change the amount and type of information to provide. You could provide the same content in different ways for people to use in different locations.

What do they already know about the topic?

Find out how much they know and create ways to get them up to speed quickly. If they know a lot, give them what they need without basic information getting in their way.

How they think about the information, their current opinion of feeling about it can be important. For example, they may be more interested in getting a refund than paying a bill and will be willing to spend more time learning how to do it.

What do they already know about the technology?

For instance, they may not know how to scroll to read more content and may need training.

How do they describe things?

User research is helpful to learn about the terminology people use and the way they think about concepts.

This is used to group information, naming of navigation items and phrasing ideas in content.

Reference

A Practical Guide to Information Architecture by Donna Spencer

Information Architecture : Ways to Identify Goals

Scenario Planning

Scenario planning is a story-telling approach to identify goals. You can better visualize and describe an outcome and you get good information on the meaning of the goals.

Ask your client to describe an ideal outcome in story form. You can dig deeper by describing what happens before the story, explore the middle further and identify what happens after it finishes.

Scenario planning in reverse describes what a failure looks like in story form. This is used as the starting point to figure out how to address the likely points of failure.

Pain Points

Identify current points of pain by asking what is going wrong and see if you can get to the bottom of why it is happening. As you discuss the pain points, you can identify consistent patterns, discuss underlying issue and turn it into a goal.

Backcasting

Start with an end and work backwards to identify what you need to do to get there.

The end positions are describe in scenario form and may describe a few different outcomes you are trying to reach. You can create a scenario for an ideal future, an acceptable outcome and something in between. Look at what is needed to reach each end point and tease out the issues. You can also identify intermediate goals that are most achievable than one big end-goal.

Reference

A Practical Guide to Information Architecture by Donna Spencer

Tuesday, June 28, 2016

Top 7 Capybara Debugging Links

1. Capybara Integration Test Debugging Tips
2. 6 Ways to Remove Pain From Feature Testing in Ruby on Rails
3. Five Capybara Hacks to Make Your Testing Experience Less Painful
4. Automatically save screen shots when a Capybara scenario fails
5. Poltergeist 0.6.0: Javascript error handling and remote debugging
6. Write Reliable, Asynchronous Integration Tests With Capybara
7. Debug your capybara features with Chrome web inspector. Easily!

Notes from A Practical Guide to Information Architecture by Donna Spencer

What is Information Architecture?

Information architecture is about organizing content or things, describing them clearly and providing ways for people to get to them.

There are three very important things to consider to design an IA that works well:

People : What they need to do, how they think and what they already know
Content : What you have, what you should have and what you need
Context : The goals for the site, who else will be involved and your constraints

If you don't know enough about people, you won't be able to group content in ways that make sense to them or provide ways for them to find it easily.

Without a good understanding of your content, you won't be able to create an information architecture that works well for current and future content.

If you don't know about the context, you won't be able to create something that works for people and the business.

An IA is made up of :

- defining the project and its goals
- researching people and content
- designing the IA, navigation, visual approach and content
- building and testing
- maintaining

The main IA deliverables are:

- The Information Architecture
- Navigation
- Metadata

Before You Start : Context

Goals : What are the goals of this project?
Technology : What are the technology opportunities and constraints?
Design : Are there design constraints you need to consider?
Culture : What sort of culture are you working within and how will that affect your project?
Stakeholders : Who is and who should be involved in the project?

Project Goals

Why are we doing this project?
What do you want to achieve when it's finished?

Clearly articulate the reason for doing the work, and the desired outcome. They are useful to help you:

- Set directions and priorities
- Make sure you are on track
- Access requirements and requests: When someone asks for a new feature, you can decide whether it will contribute to the project goals.
- Make decisions: Will this new design feature support the goal? Is one approach better than another?

Goals fall into three different types:

- Making more money
- Reducing costs
- Helping people make better decisions

How will we measure the impact of any changes?

- Overall visits to the site
- Purchases
- Shopping cart abondonment
- Time to complete a task
- quality of incoming data
- Number of calls made to support

Collect these data in the beginning and the end of the project.

Is 30x500 course a scam?

I bought this course and went through the entire course in 4 days. Some of the material like world view is vague. The instructors were not helpful to clarify my doubts in the slack channel. Maybe they don't know how to explain the process or they are not interested in sharing it. They are hosting the course on teachable. I had problems viewing the videos, even though I had a very fast Internet connection. I was told to contact teachable for resolving the issues, which did not make any sense to me. Time is the most valuable thing to me. Why should I spend my time to resolve technical issues caused by their poor choice of a platform? I paid $2000 and I was expecting an acceptable quality in viewing the course videos. The price is too high. I would not pay more than $500 for this course, even if they fix the technical issues. It is ironical. The entire course is about helping people achieve their desired outcome.  Maybe they should follow their own advice? Most of their students make less than $10k per year not $180k per year as advertised. Don't expect to be making $180k per year. Lower your expectations and if you can put up with the foul mouthed instructors, this may be the course for you.

Monday, June 27, 2016

Authentication from Scratch in Rails 4.x and Rails 5

You can use has_secure_password provided by ActiveModel in Rails 4.x to implement a simple authentication system. Read Authentication from Scratch articles to learn how:

Register Feature
Login and Logout
Password Reset
Email Validation and Testing using Rspec

For Rails 5, here is the sample project that has signup, login and logout features.

Good programmers write good code; great programmers steal

"The amateur imitates, the genius steals." Oscar Wilde

Never design what you can steal. Great advice! If you are a Ruby developer, where do you steal code?

 Let's say, you are working on your webapp that needs to save where the user came from and you need to redirect them to that URL. The most popular authentication library is devise. Go to the github page for devise, read the wiki to see if there is any article that explains how to do it. Download the source code for devise and search for the method name that provides you that functionality. You can read the implementation and see how it is implemented. You can now do something similar for your webapp.



How to Get the Most Out of Rails Conference?

If you have never attended the Rails conference, some of the questions you may have in your mind are:
  • Should I attend Rails conference?
  • Why attend Rails conference?
  • Too many tracks? Can't decide which one to attend? 
  • Which sessions should you attend? 
Here is some practical tips:

Do not attend the presentations

You can always watch the recorded presentations after the conference is over for free. This also avoids wasting time on horrible presentations. You can pick the best sessions to watch them later.

Focus on making connections with other developers

Attend the birds-of-a feather sessions in the evenings. For instance, if you are interested in building a SaaS app using Rails, attend or organize one if there is enough interest.

Attend the all day workshop on how to contribute to Rails

The skills you will gain is useful at work even if you have no intention to contribute to Rails. This is a hands-on workshop, learn as much as you can by watching and working with other developers.

Thursday, June 23, 2016

Ruby Debugging Quick Tip

The Ruby print statements are useful to inspect 1 or 2 variables. Ruby gems like pry, byebug are useful to set multiple breakpoints in a single file. IDE like rubymine is very powerful. You can set multiple breakpoints in multiple files. Useful for stepping into third party code. This is useful to isolate problem to third-party code.

How to deal with uncertainty about your ability

Your skills will improve as you continue doing more of that kind of work. If it is writing a technical writing your skills will improve as you create more technical content.

How to make clients come to you?

I developed a short screencast on photo album in Rails. Someone from New York saw my screencast. He paid me $3000 for two days work to develop a child adoption site. I created a frame for the client that required:
  • No resume.
  • No reference check.
  • No criminal background check.
  • No legally permitted to work check.
  • No open source project contributor requirement.
  • No degree requirement.
  • No BS computer science questions.
  • No Ninja, Super Man or Spider Man required.
  • No onsite work only requirement.
  • No standups.
  • No meetings.
  • No status reports.
  • No Skype interviews.
  • No face-to-face interviews.
  • No negotiation.
  • No confidentiality agreement.
By recording a screencast I proved that I have the skills to produce the outcome he wanted. The screencast built my credibility and created the trust. He paid 50% before I started the project and the rest upon completion.





Monday, June 20, 2016

Popular Gems

Blog Engines

Octopress
Publify

A/B Testing

Split
Vanity

PDF Processing

pdf-reader

Background Jobs

Resque
Sidekiq

E-Mail Preview

MailCatcher
Letter Opener

E-Mail Processing

Griddler
Mailman

PDF Generation

Prawn
Wicked pdf

Browser Testing

Capybara
Selenium-Webdriver

Rails Fixture Replacement

Factory Girl

Time Warping

Timecop

CLI Option Parsers

Highline
Slop

Scheduling

Whenever
Rufus-scheduler

Code Metrics

SimpleCov
Rubocop
Rails best practices
reek

Benchmarking

MethodProfiler
BenchPress

Gem Creation

Hoe

Configuration Management

Dotenv
Dotenv-rails
Figaro

Values and Rules

Value Elicitation

1. What is important to you about X ?
2. What do you want out of X ?
3. What would having X do for you?

Volvo --> Safety
BMW --> Performance

Values are 1 to 3 words.

Beliefs need a full sentence. Attitudes tend to need a paragraph.

How to Identify Rules (After Picture)

1. What has to happen for you to experience / feel [value x] ?
2. How do you know when [value x] is satisfied?
3. How would you decide if X were [value x] ?

Values Elicitation Format

What is important to you about X ?
Value: ______________

What has to happen for you to experience [value x]?
Rule: ________________

Values Hierarchy

What is important to you about x?
Value: ________________

What has to happen for you to experience [value x]?
Enhanced Rules: ________________




30x500 Course Concept Clarifications

It is things a person believes but on a level they think it is just a fact, which informs the way they operate. Here's an example: "Used cars are the only logical financial choice!" That person cannot be persuaded to buy a new car It's not actually a belief system.

That’s the key - worldviews aren’t especially understandable without a context. The context here is what people do. How they act. How they make decisions and more specifically, related to how you reach them and what you make for them.

Need is like clothes, food and shelter?
Want is like beer, wine, deep fried chicken?

No, that’s not the distinction in 30x500

Need —> restaurants NEED a way to save money/time on menus.
But they don’t want it. so end of story there.

The difference between need and want seems to be a another way to say: What you think creates value must match what your prospect thinks creates value for their business. YES.

They may be wrong in their opinion, but it's not our job to convince them?

It’s not my job” isn’t the right mindset. But rather “Is this going to be effective for me/them".
Their opinion is often not an opinion, but a worldview, e.g. restaurants don’t buy software. they just don’t. They don’t use software. Restaurant owners are typically not BUSINESS people, but rather hobbyists or food people or following a path their family laid out for them. 


Consistency, Consistency, Consistency
Small, helpful educational content

Email course, freebies, cheatsheets
 Effective Frequency

Saturday, June 18, 2016

Possible Article Topics


shakacode


Top forum posts:

  • Capybara Integration Test Debugging Tips
  • Yak Shaving, Troubleshooting with Mailcatcher
  • What's the best Rails image management solution?
  • Favorite Rails and Javascript debugging tips


JBuilder ||
active_model_serializers
Camel Case
snake_case
JSON
parameters
respond_to
respond_with

RSpec ||
Testing ||
Test, Tests
Cucumber
Capybara |||||
Controller Spec
capybara-webkit
Webkit
Exceptions
parallel_tests
Factory Girl

Debug
Pry
Print ||
Statements
Debugger
Debugging |||
Messages
better_errors

Integration ||
Asynch Fill

Emails ||
Mailcatcher
Premailer
Notifications

ActiveJob
Sidekiq

Tips |||
Techniques
hints

Filtered
Autoloading
Performance

Rails  |||||||||||||||
Rails 4, Rails 4.2, Rails 4.1.5
Ruby on Rails ||
development
processes
Gem ||||

Javascript
PhantomJS
JS Client App
defer
loading
application.js

slim
haml
Inline
CSS
simple_form
Zurb Foundation

ImageMagick
image management

Errors
Bundle Install

Metaprogramming
Proc object
block
concern
parameterized

Interesting breakdown of ...
How to make a ...
Best practices for ...
Working with ...
Should Rails apps use ...
Alternate ways of configuring...
Using the ...
Picking a ...
Why would ...
How to test ...
Upgrading ...
How does it work?
Notes on using and testing ...
What's the best ...
X recommendations
Best way to ...
Example of ...
Why is my ...
Notes on ...
Obscure Error ...
Is anyone ...
Troubleshooting with ...

clear out
local
network

Time Zones
Security Fix
Model.where

Roadie

Heroku ||||
deploying ||
Ninefold

Git
Commit
Sha
ENV

Webpack ||
Postgres

File Downloads
Invoking
Subprocess
Ruby ||||
Linting
Class
Lexical Scope

before_destroy
after_destroy
callbacks
Before Filter

Rails Guides

RubyMine ||
Geocoding Gem
qt5
Passenger 5

Null vs ''

Example
Wrong
Avoiding
Confusing
Creating
Depending
New Project
Naming Issue

Children
Authorization
correct_user

Method
args

GSL
Node
Ransack

Yak Shaving
Rails Rumble

Yosemite ||
Zeus ||

Migration
Associations
HABTM
ActiveQuery Group
ActiveRecord
Record
count
sort
order

Rails Forums

ShakaCode
RailsForum
SitePoint Ruby
RubyRails Forum





Friday, June 17, 2016

Top 10 Places to Find Audience Online

1. Ruby Weekly
2. Rails Weekly
3. Reddit
4. Hacker News
5. Ruby Flow
6. Rails Cast
7. Mackenzie Child YouTube Channel
8. Rails Apps Tutorials
9. Women Who Code
10. Rails Bridge

Keywords to Find Audience Online

forum
mailing list
community
group
Twitter
list
Facebook
share
sharing
chat
IRC
blog
best
resources
tutorials
help
FAQs
reviews
questions
wiki
meet-up, meetup
user group
advice
awards
competition
problems
association
customers
client
sales
tools
system / systems

Photo Gallery using Lightbox 2 in Rails 5

Check out these articles that show how to use refile gem to upload images and using lightbox 2 to implement photo gallery in Rails 5.
Photo Gallery using Lightbox 2 in Rails 5
File Upload using Refile Gem in Rails 5

Tuesday, June 14, 2016

Troubleshooting Real World Examples

1. Trouble shooting AWS java stack trace. Yuzu. Concepts that is required to solve this problem: Serialization, accessbility to ports in AWS.
2. Fixing mysterious bug due to violation of invariant. Streetline.
3. Fixing caching issue. Yuzu. When to invalidate the cache?
4. IoT project. Health check API. Cisco. How to isolate the problem?
5. The system coming to a halt for mysterious reason. Asia Online.

Turned out to be a script that populated the database and inserted records that violated the database constraints. This choked the system and brought it down.

Any dependency or integration point should  have a test. Why? Because, it will help you to isolate the problem quickly. For example, test for integrating with mailchimp or sendgrid. Any assumptions about the infrastructure should also have tests. For example, automated build does in fact complete successfully. Using droid to build docker images and deploy the web app failed silently. So, automated tests can isolate the environment issue from code issue.

Troubleshooting Questions

  • Did this ever work?
  • When did this stop working? Find the delta to narrow down the search space.
  • Does this happen in all environments? If not, what is the different in that environment?
Unlike the learning process where there is no stupid question, in troubleshooting problems there is such a thing as stupid question. You can develop the ability to ask intelligent questions and fix problems quickly by having a good understanding of the concepts. Did you know that networks are not 100% reliable? How does your software behave when it encounters the error? You need to have an open mind. Avoid bias when investigating the problem. Do you rule out any possibility early in the troubleshooting process.

Check Version

Dependent software versions, build versions of the deployed software, OS versions etc.

Problem Categories

All problems can be categorized into three main categories:

1. Environment Issue (software versions, flaky network etc)
2. Code Issue (bugs)
3. Data Issue  (violating data constraint)

By asking intelligent questions, you will be able to rule out certain likely causes and categorize the problem into the right category. You can then test your hypothesis to see if that will fix the problem.

Meaning of Nil

nil means something. It has a meaning. It could be absence of something or an external system is down. Always express the meaning of nil explicitly in code and throw an exception that describes why some variable became nil. This will help us to quickly find the cause of the problem and deal with it in a timely fashion.

Fail Loudly

Why?
How?

Isolating the Problem

Always start with a working version
Revert to working version
Keep removing code until the problem disappears. Gradually add code to re-create the problem and isolate the problem.

Example of fixing Lightbox 2 with Rails 5?

Sunday, June 12, 2016

Yukon Gem 0.5.1 Released

Yukon gem upgraded to Ruby 2.3.1. What is it? It encapsulates Express checkout using ActiveMerchant Paypal API.

remote: ERROR: pgbouncer cannot connect to server

! [remote rejected] v0.5.1 -> v0.5.1 (pre-receive hook declined)
error: failed to push some refs to 'git@bitbucket.org:bparanj/yukon.git'

I got this error when pushing a new gem to rubygems.org. I had to run the command again and it worked.

Colt Gem 0.4.5 Released

Colt is a micro gem used to subscribe to a given plan using the Stripe API. The latest version uses Ruby 2.3.1 and Stripe GEm : 1.43.

Basic Business Plan

Basic Business Plan for rubyplus.com based on Personal MBA book.

Value Creation 

What value am I creating for other people? Web development tips can save you lot of time.

Marketing 

How will I attract the attention of potential customers, and make them interested in what I have to offer? Free weekly episodes on web development.

Sales

How will I encourage prospects to trust my ability to deliver what they want, and close transactions?
Consistent delivery of episodes over time. Record episodes in batches and queue them on Libsyn.

Value Delivery 

How will I deliver on my promises to customers? Easy to follow web development tutorials will produce the expected outcome saving time.

Finance

How can I be sure I’m bringing in more money than I’m spending, and it’s sufficient to compensate for my work? The monthly recurring expenses are low. It requires more time than money at this stage.

Saturday, June 11, 2016

Corey Rudl Course Notes

Success

Focus

Success depends on focusing on one thing, learn that one thing inside out, then move on to the next strategy or technique and the next and the next.

Testing

Test small but succeed BIG. 9 out 10 tests may fail. Invest on the one hit and succeed in a big way.

Follow your Passion

Spend your time doing something that you love to do. Think about the things in life that get you really excited and how you could translate them into a business.

Find a Problem

Find a Market

Find a small, targeted group of people who share a specific interest. Look for a problem that people are actively trying to solve. Identify a specific and highly focused group of people who are looking for something online that they cannot easily find.

My market is people who are (action) + (your area of interest)
My market is people who want to build SaaS apps

Think like your potential customers. Determine what problem they are trying to solve and what you could offer as a solution. Confirm that the problem is shared by a significant number of people.

How to find a market that wants to buy from you? Beginners Tip: Start with a market that's easy to target.

Solve a Problem

Go to chat rooms. Sign up for newsletters. Analyze the information and uncover a common problem in your market. Fill out:

Problem  : Need the help of webmaster to create a workshop to sell tickets. Frustrating to buy multiple workshops due to quirky UI.
Dream     : What if you did not need a webmaster? What if you could do it by logging in as site admin and just point and click to create a workshop and start taking payments as easily as filling out a web form?
Solution  : TadaWorshop is born!

Benefits

Focus on Benefits
  • Emphasize how the product will benefit the customer. 
  • Turn the features into compelling benefits.
Benefit explains the advantages the customer will get from using the product. Benefits are the answers to:
  1. What's in it for me? 
  2. Why should I keep reading?
  3. Why should I order?
If you already have customers, ask them:
  • What do they like about the product?
  • How has it benefited them?
Develop a Strong USP

Emphasize what makes you better than your competition. Explain exactly how and why they will benefit from doing business with you. It could be price, service, guarantee etc.

Education Marketing

Educate the Consumer

Educating the consumer builds credibility. You can make your site a valuable resource by giving free tips and tools. This will build reputation and make visitors come back to your site. You will establish yourself as an expert in your field, someone who is knowledgeable and trustworthy. Once your visitors trust you, they will buy from you.

Call to Action

Include a Call to Action

Tell your visitors exactly what you want them to do.
  • Subscribe
  • Click
  • Fill out a survey
  • Read an article
  • Enter a contest
  • Search 
  • Join your affiliate program
  • Buy your product

Always Be Testing

Test Before you Invest

Learn what your customers want by tracking what they do at your website. You can then maximize profits by adjusting your website to reflect your market's interests and needs. The process of test, evaluate, tweak and re-test will produce good results. Test three main things:
  1. The headline or opening sentence
  2. Offer
  3. Price
Also, sales copy, ordering process etc.

Find the Market First

Look for a market with a common problem they are actively trying to solve. The key to success is to find a group of people who share a need and come up with an idea for a product that will satisfy that need.

Most people go online to search for solutions to their problems. Once you identify a group of people with a common problem, you can start to think about a product you can position as a solution to that problem. Then, all you have to do is put yourself in the way of your perfect potential customers and set yourself up for a successful business.

Success Blueprint

Identify your Skills and Interests

Base your business on your own personal skills and interests. Before brainstorming for possible markets, consider the following:
  • What are you interested in?
  • What are you passionate about?
  • What subject do you have a lot of knowledge about?
  • What are people always coming to you for advice about?
Follow in the Footsteps of Successful People

The key to building a successful business is to look for an existing market that needs something you can offer them. You need to find the problem first before you start trying to find the solution.

Automate your Business Process

Automate early and automate as many aspects of your business as you possibly can.

Use of Multimedia

Video and audio can increase your credibility and help your visitors learn more about your business and products. You can give a product demo to show how the product works for potential customers. You can include a welcome video that introduces you and your business and creates a sense of personal connection with visitors. Ask satisfied customers to send in video testimonials in which they talk about how much they like your product and how it's helped them in their lives.

Corey Rudl's resources Dan Kennedy, Jay Abraham and Ted Nicholas.

Friday, June 10, 2016

Topics searched on rubyplus.com for which there is no content

1. campaign monitor
       Campaign Monitor makes it easy for you to create, send, and optimize your email marketing campaigns.
2. fastgem
       Find which gems contain a given string
3. acts_as_indexed
      Rails plugin to add full text search. The last update on this gem is 3 years ago. Dead project.
4. photo gallery
5. lightbox Checkout lightbox2  or Checkout Lightbox for Bootstrap that integrates Lightbox 2 with Twitter Bootstrap 3. This project has not been updated for over 2 years. Is this : Masonry Image Gallery with Bootstrap 4 Modals  a good alternative.

Thursday, June 09, 2016

Steal my Idea to Build a Profitable Startup from Day One

You can build a profitable business from day ONE by developing a SaaS App that connects those who can help with small claims with small businesses (1 to 10 person company) that need to collect their pending invoices. I have pending invoices that ranges from $9000 to $20,000. I would be happy to just take 50% of the amount collected.

Using xScope to Set Screen Recording Dimensions

In xScope 4.2, go to the Window --> Toolbar. Select Frames, which is second from the end of the floating window. If the frame does not show up for some reason when you click it, go to the Frame in the Navigation and click Create Frame. Click the arrow on the right side of the frame, go to ratios and select 16:9. Drag the guides till you see 1280x720 px.

How to Copy a Request as CURL in Firefox and Chrome

Copy as CURL

Wednesday, June 08, 2016

Model Name in URL in Rails 5

Corrections to article Model Name in URL in Rails 5. Replace gsub with Rails String#parameterize method. Format the quote so that the underscore is not messed up.

Processing Network Calls in the Background in Rails 5

The calls made over a network can take some time to complete. In a Rails app, you can use background jobs to process such calls and provide a spinner gif image to notify the user about the progress. The technique discussed in the article Processing Stripe Payments with a Background Worker in Rails 5 can be used in such cases.

Pending Task

1. Copy the spinner image to app/assets/images folder.
2. Use image_tag instead of hard-coding the image URL in src attribute of img.



Undesirable Work Environment

1. Unwillingness to learn from other developers. Ego problems. Wasting money by not utilizing the talent of the new developer.
2. Cowboy coding. Testing in production. No automated tests.
3. Uneven work load. Too much work sometimes and not any work at other times.
4. Toxic work environment. No collaboration between team members.
5. Back stabbing co-workers. Spies who monitor developers to notify a micro manager.

Why do the companies do stupid things like re-implementing features in different languages for no reason?

The Most Important Thing that Determines your Success in a New Job

The most important question you must ask during an interview. How fast can a new developer become productive and start checking-in code? Is it days, weeks, months or years? Things that makes it difficult to start contributing in a new job are:

1. Legacy code base with no tests or documentation. Monolithic app.
2. No sharing of knowledge between developers in the existing code base.
3. Super star coders who dominate in pair programming and monopolize the keyboard.
4. Arguing about design ideas, instead of considering the design ideas based on its merit.
5. Allocation of work that does not take the strength of the developer into consideration.
6. Lack of requirements. No well defined requirements to start development.
7. Company got acquired. Original developers no longer with the new company.
8. Lack of product specific training.
9. Lack of domain knowledge.
10. Manager not resolving productivity issues faced by new developer.
11. Existing development team sabotages the work of new developer.
12. Difficulty in communicating with developers in different locations.   

These things are based on my real world experience.