Well, I'm sure all of you are aware of the Wikipedia 'Easter egg' that enables a user to follow every first embedded link in each article to an eventual link to the /Philosophy page.
Is it possible to connect to every Twitter account in some sort of linked-list-like fashion by starting from just one account that follows at least one other account?
Ex:
#Bob follows #Pete.
#Pete follows #Bob and #Susan.
So, from #Pete, you can get to #Susan through #Bob
etc...
I wasn't sure if this is supposed to be asked on the theoretical computer science SE page or here on SO.
If nobody follows poor old Toby and Toby follows nobody then you could never get to him. (Toby just likes the idea of twitter not actually using it) .
'Orphan' accounts (ones that are neither followed nor follow others) would make it impossible for all accounts to be linked.
Even ignoring them, there would still be some 'closed' loops - just like there are in the Wiki Philosophy curiosity/game.
However, it seems you're not the first to wonder about this and there's a good write-up here: http://www.sysomos.com/insidetwitter/sixdegrees/
Related
(or anyone with knowledge on this subject).
I have been requested to place an "apply with linkedin" button on a clients website, so that job applicants can apply using there linkedin details to make the process a bit easier (please note that this is not for large scale requirement, and is for one company).
Button docs here for ref:
https://learn.microsoft.com/en-us/linkedin/talent/apply-with-linkedin
I have read the docs and come to the understanding that linkedIn only allows this API feature if:
You have a Linkedin enterprise account
You have a ATS account
I was hoping to get some clarification on these two points to see if I am correct? Or if there is a way to a normal business account can use this feature?
Thank you for any help you can offer here,
All the best,
Wally
Posting for anyone who finds this in future -
LinkedIn requires you to have their ATS system to use the apply with LinkedIn button from their API page.... This costs allot of Money (from my POV - but business class is a thing because businesses have allot of money).
This is not explicitly stated on the site, more like:
To use this feature you need ATS
To get ATS you need to speak with sales and pay for it (I ended up on the phone to a sales rep in Irl to find this out.... so pretty good example of where docs could be more explicate rather than implicit).
For example if you had a question and script like
Are you over 13+
a. if yes go to #2
b. if no end
Please pick a chat room
Looking at hubot it looks like it looks for specific questions but doesn't necessarily store state or allow the progression of a longer interview by remembering previous answers and doing "if this then that".
Does hubot support this? If not is there another open source alternative that is a better fit for the use case?
Would I just store user information in the hubot brain for each user's answer, building up a user's state over time? I suppose with each user answer we can look up the user's state, and their current progression in the hubot brain and then handle it accordingly.
However, if it's more of a script rather than looking for any old random question via regex matching, does this take away from most of the benefit of using hubot in the first place?
I am new to Gherkin and BDD.
We are doing BDD regression tests with Squish.
Our application is very complex - similar to a flight simulator.
Now I ask myself how to write the tests in Gherkin.
As we have a large number of variables as preconditions to a certain situation I would normally put a lot of
Given some precondition
And some other precondition
into my tests.
My natural feeling is that I should avoid this because it would make things unnecessarily complex.
Is there a rule of thumb for how many preconditions there should be?
Should I try to reduce it to only one?
The general rule is to have as few as possible while still making the tests useful. How many that is will depend on the audience for your scenarios.
If you are using gherkin scenarios for actual BDD (Behaviour Driven Development) then you will have to write the scenarios in such a way that your stakeholders can make sense of them. If this means that you have to write many Given, And, And steps then that is the way it has to be. If it means that you can put several of these steps into one more general set up step then that is better.
If you are using the Gherkin scenarios only as a way of automating tests then do whatever is good for your dev team. The rule about having as few steps as possible comes from trying to make sure everyone, technical and non technical understands what is meant by the scenario (i.e. that they are as clear AND concise as possible. If it is only the technical team that needs to understand it then as above you can use many steps if that is what is necessary for your team to understand it, or you can use fewer steps that contain more code.
For your case of having a very complex system to get into the correct state for testing, I wouldn't be worried about having may set up steps, so long as the scenarios you end up with are clear and as short as possible. There wouldn't be any point in having a smaller neater scenario that no one really understood without looking at the code!
When you are writing scenarios, you can make the code behind the steps do whatever you need to set the application in a state that is needed for testing. Thre is a pretty good article explaining the point here.
I find that if you can be more descriptive in your steps, then your tests will make more sense when you need to go back to reference them. If your steps are just Given, click, click, click, Then .. you can easily lose track of the point of the test. Your tests should be about system behaviors not step by step instructions for using the system.
So as far as preconditions are concerned. You need to do whatever it takes to get the application in the state that you wish to test.
Gherkin is a Business Readable, Domain Specific Language created especially for behavior descriptions.
Gherkin serves two purposes: serving as your project’s documentation and automated tests. Gherkin’s grammar is defined in the Treetop grammar that is part of the Cucumber codebase.
To understand Gherkin in a better way, please take a look at simple scenario mentioned below:
Feature: As a existing facebook user, I am able to post a birthday greeting on any other existing user's facebook page
Scenario: Verify that Joe Joseph can post a birthday greeting on Sam Joseph's facebook page
Given Joe Joseph is an existing facebook user
Given Sam Joseph is an existing facebook user
Given Joe Joseph is on login page of facebook
Given Joe Joseph logs into his facebook account
When Joe Joseph opens Sam Joseph's facebook page
And Joe Joseph writes "Happy Birthday Sam" on Sam Joseph's facebook page
And Joe Joseph clicks on Post button
Then Joe Joseph verifies that "Happy Birthday Sam" is successfully posted on Sam Joseph's facebook page
In the above scenario, all the statements that starts with "Given" are my preconditions.
So, as far as precondictions are concerned, you can use as many preconditions which is required for the test.
Gherkin is the language that Cucumber understands. It is a Business Readable, Domain Specific Language that lets you describe software’s behaviour without detailing how that behaviour is implemented More here
From above statement my understanding is. You don't need to add precondition every time as who is using scenario knows how to write and understand Gherkin language.
Here is example:
When I take login as system admin
And I click on new user
And I enter new user details
Then new user is created successful
Here I don't need to mention where I am and other precondition like URL opened or not ?
First precondition is URL opened or not.
Given I opened URL "http://www.stackoverflow.com"
And I enter system admin details
And I click on new user
When I enter new user details
Then new user is created successfully
Second Condition New User Details form have all the required field. This can be separate scenario.
Goal is tell business and team that we are testing this scenario. It is not test case. You don't need to create tons of document for testing purpose.
Like YAML or Python, Gherkin is a line-oriented language that uses indentation to define structure. Line endings terminate statements (called steps) and either spaces or tabs may be used for indentation. Finally, most lines in Gherkin start with a special keyword:
Sample
Feature: Some terse yet descriptive text of what is desired
In order to realize a named business value
As an explicit system actor
I want to gain some beneficial outcome which furthers the goal
Scenario: Some determinable business situation
Given some precondition
And some other precondition
When some action by the actor
And some other action
And yet another action
Then some testable outcome is achieved
And something else we can check happens too
Scenario: A different situation
...
The parser divides the input into features, scenarios and steps. Let’s walk through the above example:
Feature: Some terse yet descriptive text of what is desired starts the feature and gives it a title.
Scenario: Some determinable business situation starts the scenario, and contains a description of the scenario.
The next 7 lines are the scenario steps, each of which is matched to a regular expression defined elsewhere.
Scenario: A different situation starts the next scenario, and so on.
When you’re executing the feature, the trailing portion of each step (after keywords like Given, And, When, etc) is matched to a regular expression
Also note, if you have precondition like Given I opened URL "http://www.stackoverflow.com" as mentioned my #Boston. It is recomended to use it as Background.
Example
Feature: This is test feature
Background: background scenario
Given I opened URL "http://www.stackoverflow.com"
Scenario: access first senario
Given: I should see this
...
Scenario: access second scenario
Given: I should see that
...
The background will execute before every scenario.
Reference:
https://github.com/cucumber/cucumber/wiki/Gherkin
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 8 years ago.
Improve this question
Background
I'm a one man shop (a micro-ISV). A week after putting my product online I get a mail from one of my customers about a bug. It was an obvious fix and I fixed it in 5 minutes but I realize that the reason why the bug was reported so late is because the only contact I have with my users is through mail.
I feel I need something more but I have difficult time finding the right solution.
I was checking out some solutions, but I would like some feedback from the community
Question
What do you use for a micro-ISV (both online and built into software) when you want to give good quality service and support to your clients?
Have an issue-tracking system that your customers can use through a web page. (You do have a web page, right?) Alternately, if your software is interactive, have a menu entry "Submit Bug Report" which will email you what the user says, and perhaps other useful things (users very frequently omit things like software versions, OS versions, that sort of thing). Or both.
Also, your customers are likely to feel happier if they have a standard way to report problems.
If you want to go beyond the "email us" link, you might consider putting up a bulletin-board or even wiki-style forum on your site for your clients to use. Make your own list of Frequently Asked Questions the first post. I'd recommend using an off-the-shelf package, instead of rolling your own. A pre-existing solution should include the spam-filtering and moderation tools that you'll need.
Another idea would be to start a company blog, and invite users to leave feedback.
You fixed it in five minutes? Sounds like you're already giving good quality service / support. But if you really want a tool, I would check out if Unfuddle.com has a public bug report feature. I love that site.
This is a subject I've thought a lot about (since I'm contemplating doing just what you're doing), and there's considerable precedent for how you could proceed.
Set up a feedback page on your website
Set up a dedicated email account for your website
Set up automated opt-in bug reporting and crash reporting for your software
Set up a twitter account; and conduct twitter searches for your software name
Set up a Google Alert to track when a website or user references your product, and respond to them.
Set up a Uservoice account for your software/website (it's free for a 'small' company).
For a start, you can ensure your website is clear, and has useful sections like FAQs and How-Tos.
Make sure your customers can get in touch with you easily, and that you respond to them in a reasonable amount of time.
If you out and don't have a Blackberry enabled phone you could have your software send you an SMS of the fault.
A well designed website with a forum for news, updates, user discussions is probably a good start. It's worth paying someone to do this for you if you want to spend more time designing and coding good software. The more information you can put out there, the less time you'll spend dealing with customer issues.
In addition to giving your users more options on how to report a problem, your site should also be logging a fair amount of information. Such as, who, when, and what they did.
Further, ANY failure should be logged and automatically be reported back to you. Most clients simply won't say there is a problem and will just move on.
Just basic logging will also give you usability information. What pages do they use the most, which ones are used least, what is different about them. Are there features no one cares about?
Finally, engage your customers by asking them what they would like to see. Quite often their vision is different from yours.
I use ontime as a customer portal and help desk / bug tracking tool. It's free for a one person license. Which is great for me since I'm a one man shop as well. I'm the only full-time employee and have one to two part-time 1099 contractors here and there as work comes and goes.
There are also lots of open source out there. However, I've found the ontime to be dead simple, free for a 1 user license and cheap for 5 user license.
Split your time between development and customer support. If you focus too much on support, new functionality will suffer, and if you focus on development, customers will suffer.
So find a balance and plan portion of your time for development and another part to support.
Also keep in mind that solving the bug is just the first step.
You need to test (preferablyseveral configurations)
create a new installation
possible update manual and help files (and don't forget the translations if it's multi lingual).
Add a new version number (every deliverable must be identifyable).
Update website...
So it often takes several days to ship a single bugfix.
Besides, most customers are happy with a few updates per year. And ocasionally an urgent hotfix if the customer is in serious need of a bugfix.
I have a few systems. My main system is through a fogbugz account with buttons built in to my application that create emails for users so that they can then submit comments / bug reports etc. I also run a wiki as the documentation for my application, although I am the main contributor to the wiki and it does take a lot of effort to keep up to date. Again, there is a menu item in my application that takes users directly to the wiki. I have a built in crash reporter using an open source framework, which again submits emails to fogbugz. Finally I do online video and text based tutorials on my applications website, although I'd like to integrate them more into the application.
One (free) product that I know uses Yahoo Groups (and also a Google Group).
It acts as a mailing list: so if you report a bug, that's seen by other users as well as by the group's owner/moderator (i.e. you).
It also acts as a weblog/archive: so users can search it for known issues/answers before they submit a new message.
Have you tried Casengo? Its a free solution (for 1st agent) for handling email, chat and social media . It might be of interest to you. url: http://www.casengo.com
I am using Casengo for several weeks and is very easy to use.
Jeremy
Beside IP blocking and probably using a cookie (if the user changes the IP but doesn't remove the cookie, the new IP is added to the banned list, so the IP has to be changed and the cookie has to be removed together to access the site), is there any tricks one can use to block an annoying user from a website, I know that nothing will work with a savvy user but I'm trying to make it harder for the less savvy ones, any suggestions?
Edit: I already have registration in my website, the point is that this is useless to stop determined users (they can simply create other accounts).
#rifferte,
Actually I'm already building a moderation section where moderators can remove posts and suspend members, also members can report abuse and spam, I'm not trying to make this impossible, simply there's no way to do this, I'm just trying to get rid of the less savvy ones (the majority), and not forever, I'm planning to block them for a certain period of time (probably a couple of days or something like that).
Any overt form of censure on an existing user could lead to the forum equivalent of an arms race. One school of thought pushed on the SO podcasts is to flag the offending user and remove their posts from normal view, but include it when they (the bad user) are looking at the site. That way, they think the community is ignoring them and it makes flaming less fun. If the site isn't trying to stop them but their efforts at flaming are fruitless, they will likely just walk away.
See also this blog by Jeff
One of the best approaches I've ever encountered is the "Tachy goes to Coventry" feature in vBulletin. Adding a user to this list places them on a global ignore list that applies to everyone, except themselves.
So, they continue posting and everything appears normal from their perspective, yet their posts don't disrupt other users. Amazingly, these users rarely seem to figure out what's going on, they're so satisfied with the havoc they think they're wreaking undeterred.
Disruptive users tend to fizzle out very quickly when everyone's ignoring them. Once they give up, you can bulk delete all of their content in one pass that takes relatively little administrative effort.
What sometimes seems to help is to:
Make sure that accounts need to be "mature" before they may post.
A reputation system not unlike stack overflow (Account gone = reputation gone) :)
Use authentication providers like OpenID. It is more work to create multiple accounts that way
The simple fact of the matter is: If someone can do everything after creating an account, the account does not have any extra value. Once an account has some extra value (i.e. someone needs to put some good work in an account to get more privileges) you'll see that abusers will probably go to other websites.
I believe you will be in a constant cat and mouse game if the user has that much time to burn.
Your best bet will be to involve some human element to the site's registration process, to properly research any particular users. Not elegant, but without knowing more about your site there isn't too much more one can say.
Now that the question has been further refined with extra information, I'd like to change my answer.
Problem users in forums site exist because other users feed them.
How about trying an approach where if you identify a problem user, then you silently hide their posts from your site from OTHER users, but not the problem user. The theory is, that the problem user 'thinks' that their post made it through, but since it's actually hidden from all other users, nobody will reply to the problem user, and with any luck, they'll go elsewhere where they're getting feedback.
Can you trust your "good" user base to flag bad/annoying users?
Something like craigslist: if a user is flagged as annoying by a few users, their account is temporarily unable to post for a period of time. If this happens a few times, their account is suspended?
Just a thought.