How to setup view to filter based on second URL parameter?
Content Views don't have access to Taxonomy term name information out of the box, you only have term ID available. So even if you add the Taxonomy term field as the contextual filter and set the Validator = Taxonomy Term Name you're not telling it what to use, you're basically making a mistake trying to use that validator. 

You can test this if you enter the term ID into the Preview instead of the name, or set the Action to take if filter value does not validate to Display a Summary and see what you get as output ;) 

Add term name info through Relationship

To introduce the term name information into your content views you have to: 


add a Relationship to the term: Taxonomy term referenced from field_topic. Require it if you only want to list nodes that have a topic assigned.  

Now you will see a new Category of fields when adding Contextual filters: Taxonomy term
Add the Contextual filter Name from Taxonomy term Category, it will use the Relationship from previous step by default, and configure it:
When filter value is not available
Display all results for the specified field
When the filter value is available or a default is provided
 Specify validation criteria
Taxonomy term name
[Case settings, other relevant config as you see fit]


You will now see all results when visiting the main path, and if you visit the path with topic name appended the list will be filtered to show only nodes with that topic. 



In case you have terms with the same name accross vocabularies

There is a bug that kicks in sometimes  when using term name as the Validator, if you have different terms with the same term name: TermName views argument_validator is not working as expected. 

The patch from that issue is working, as reported by the question author usernameabc, so it can be used until a new version is released that includes it.