Characters needed #1

Closed
michaelavila opened this Issue Mar 2, 2014 · 10 comments

Projects

None yet

2 participants

@michaelavila

I'm bringing this list over from an issue in exercism.io repo exercism/exercism.io#1435:

Here are some things that we could include in our characters. A single
character could probably cover multiple points each.

  • admin in multiple languages, never submits code
  • submits a lot of code in many languages
  • admin in one language, never submits code
  • admin in one language, submits in the same language
  • admin in one language, submits in a different language
  • a member of multiple teams, submits code
  • a member of multiple teams, doesn't submit code
  • a member of a single team
  • invited to a single team
  • invited to multiple teams
  • submits in multiple languages
  • submits in a single language
  • Has no notifications
  • Has exactly one notification
  • Has tons of notifications
  • Has no alerts
  • Has exactly one alert
  • Has several alerts
  • Nitpicks a LOT, submits some
  • Nitpicks, doesn't submit
  • Nitpicks a bit, submits a bit
  • Doesn't nitpick
@kytrinyx
Member
kytrinyx commented Mar 2, 2014

Awesome, thanks!

I've been working on the bit that lets us borrow code from the production data dump to give to our fake characters. I'll push it up in a bit.

@michaelavila

Sounds good. Does it let you check off those items above? Or will it only let me?

@kytrinyx
Member
kytrinyx commented Mar 2, 2014

It lets me check them off as well. I'll update the list if I think of any other characters.

@michaelavila

Should we add a name or some other unique identifier next to each role? Maybe a link to the addition in the README?

@kytrinyx
Member
kytrinyx commented Mar 2, 2014

I'm working on a SEEDS.md that will serve this purpose. Then we can copy SEEDS.md and seeds.sql into the exercism/exercism.io project to serve as documentation there. Nobody will need to know about this project unless they wish to tweak the seeds.

@kytrinyx
Member
kytrinyx commented Mar 4, 2014

Update:

I've built out the teams a bit, so it should be fully possible to explore the site in terms of team management and participation.

I've created the following teams:

  • baconesia A medium sized team, co-managed by alice, bob, and charlie
  • chocolades A small team, managed by alice
  • ghost A team with no members, managed by alice
  • motley A medium-sized multi-lingual team, co-managed by alice and bob
  • rugrats A medium-sized ruby-only team, managed by charlie
  • polkadots A tiny team, managed by bob
  • slate A large team, managed by bob

bob is the most interesting character in terms of teams. He's got almost every combination of member/sole-manager/co-manager/invited (I didn't bother inviting him to a team that he's a manager of):

  • sole manager, not member: slate
  • sole manager, member: polkadots
  • co-manager, not member: baconesia
  • co-manager, member: motley
  • member: chocolades
  • invited: ghost, rugrats

ruben has been invited to a bunch of teams. Several characters (e.g. kieran, opal, shaina) have been invited to exactly one team. A number of characters are members of a team (see the list of characters in slate), most characters do not have any pending invitations. eve is not involved in teams at all.

@kytrinyx
Member
kytrinyx commented Mar 4, 2014

About notifications:

I think we can use a ridiculously over-simplified decaying algorithm (algorithm really is too pretentious a word for this, but whatever).

3 timeframes relative to current time at the time the rake task is run

  1. within 2 days
  2. within a week
  3. older

There are two different groups to be notified:

  1. all users who have is_nitpicker: true in their exercise with the same language/slug, and the completed_at timestamp of the exercise is older than the created_at timestamp of the submission.
  2. all users who are managers of a team that the user is on.

Each timeframe has a different rule. For all relevant users:

  1. Create the notification 100% of the time, then with 60% odds make the notification read.
  2. Create the notification with 60% odds, always unread.
  3. Create the notification with 20% odds, always unread.
{
 "id"=>1,
 "user_id"=>2, # recipient
 "item_id"=>3,
 "regarding"=>"code", # this means a new submission
 "read"=>boolean,
 "count"=>1, # ignore this for exercise notifications, it's always 1
 "created_at"=>timestamp,
 "updated_at"=>timestamp,
 "item_type"=>"UserExercise", # Always UserExercise. Polymorphism goes away with redesign.
 "creator_id"=>4 # submitter
}
@kytrinyx
Member
kytrinyx commented Mar 9, 2014

Update:

I've got a first rough draft of everything except the actual nitpicks. This is still very much a hack, so I expect that there are bugs and surprises.

I'm going to play around with some Markov chain generators next to see if I can get some decent comments.

@kytrinyx
Member

I redid the whole seeds thing, focusing on the onboarding process. The teams are still in there, but the characters aspect probably needs to be re-developed. I need to add the notifications back in.

@kytrinyx
Member

I'm going to close this. Later, as we use the seed data for front-end work we can add issues to improve various aspects of it.

@kytrinyx kytrinyx closed this Jul 29, 2014
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment