Wednesday, August 16, 2017

Dealing with Vague Requirements in Software Development

1. Very vague and unknown requirements should be moved out of scope. Use scope control as a way to filter out.
2. Build a quick and dirty throwaway prototype to find answers to the vague / unknown requirements.
3. Identify the vague requirements and ask the product owner the right questions to fill in the blanks.
4. Conduct a requirements grooming session to flesh out the vague requirements.
5. Ask the stake holders to prioritize the backlog and work on the well defined requirements.

Thursday, August 10, 2017

Top Links for Second Week of Aug 2017

https://robots.thoughtbot.com/a-crash-course-in-analyzing-memory-usage-in-ruby
https://blog.codeship.com/advanced-enumeration-with-ruby/
https://thisbitofcode.com/managing-localization-rails/
https://blog.showoff.ie/using-gemstash-for-private-gem-hosting-8b6170da766c
http://semaphoreci.com/blog/2017/08/03/tips-on-treating-flakiness-in-your-test-suite.html
https://semaphoreci.com/blog/2017/08/09/faster-rails-eliminating-n-plus-one-queries.html
https://www.nopio.com/blog/ruby-state-machine-aasm-tutorial/
http://www.pablocantero.com/blog/2017/08/06/using-ruby-and-amazon-sqs-fifo-queues
https://depfu.io/blog/2017/08/02/bundler-and-private-dependencies

Sunday, August 06, 2017

Find all articles that is not tagged in Rails


ids = Tagging.where(taggable_type: "Article").collect(&:taggable_id).uniq

Article.where.not(id: ids).collect(&:id)

Saturday, August 05, 2017

API Documentation with Tabs for Languages

Slate generates html from a markdown document and provides syntax highlighting for different languages that displays in separate tabs.

For internal use, API blueprint is a good option. For external use, slate is a great option to publish documentation. It generates good looking and developer friendly docs. We can copy the slate generated static files to a static site deployed on Google cloud. This is the easiest deployment. It avoids extra work that is required with AWS such as uploading to S3, configuring a bucket as a webserver etc.

Questions

1. Is slate markdown compatible with API blueprint markdown file (.apib) ?
2. Is there a tool that will convert .apib file to slate markdown file?

I started with the schema.rb file from a Rails project that I am currently working on.


References

- Using API Blueprint With MSON
- HTTP Documentation with API Blueprint




Thursday, August 03, 2017

Learn by doing Vue.js 2 the Right Way

1. Replacing hard-coded URLs with configuration file values for different environments.
    Use webpack-merge and interceptors to configure URL in config folder dev.env.js and prod.env.js
2. API documentation for using JWT for authentication.
3. Using scoped style
4. Using aletifyjs to display form error messages
5. What is the vue-resource interceptor equivalent in axios?
6. vue-auth - Jwt auth library for Vue.js
7. Use vue.js router global guards to protect URLs that require login.


Tuesday, August 01, 2017

Rails Interview Questions

Ruby

1. What is the difference between a lambda, a block and a proc?
2. What are #method_missing and #send? Why are they useful?
3. Getter and setter methods
4. method overloading (Ruby does not have this feature)
5. Include vs Extend
6. Symbol vs String
7. What does yield do?
8. Difference between && and AND operators
9. Multiple inheritance
10. public, private, protected
11. How can you call the base class method from a subclass? (super)



Rails

1. How do you sort an Array of objects by a particular attribute? What is a better way to do sorting with ActiveRecord?
2. Explain CSRF and how Rails combats it.
3. Explain mass-assignment vulnerability.
4. Explain various forms of caching available in Rails.
5. How is something like 30.seconds.ago implemented?
6. HashWithIndifferentAccess
7. N+1 Query problem
8. has_one, belongs_to, has_many, has_many_through, polymorphic
9. database transactions
10. load, auto_load, require_relative
11. load vs require
12. How can you call the base class method from inside of its overridden method?
13. sql injection (sanitize user input)
14. Include vs Prepend
15. How to implement single table inheritance?
16. Eager loading (includes the association)
17. render vs redirect