See also, this assignment on Canvas: https://ucsb.instructure.com/courses/17178/assignments/192311

Introducing Today’s Team Activity

Today’s participation activity is a team activity, but you’ll be graded on your individual contribution to that.

It involves two items:

  • your individual role in populating a Kanban board for team01, as explained below.
  • setting up your individual dev deployment on team01 on dokku (you have until tomorrow to do this, but you should start today.)

Here are links to the kanban boards; take a look now. There are more instructions below.

And here are the Kanban boards:

Again: while this is a team activity, you’ll be graded on your participation individually.

Step 0: Big Picture

Here’s the big picture for team01:

  • The team01 starter code has examples of Java code for two kinds of components:
    • Services: in this case, each of the services provides access to a remote web based API for getting information about something; for example, information about a zip code, or a location; the client of the service just has to pass the appropriate parameters to a java method public String getJSON(...) and what is returned is the result of that API call. (In general, a “service” in a Spring Boot app is a more general concept, but we’ll get to that later.)
    • Controllers: in a Spring Boot app, a controller is the way that a web browser or client accesses a Spring Boot web server. Controllers contain methods that map routes (e.g. /api/locations?location=Oxnard) to the code that provides the response (be that in JSON, HTML, or some other format.)
  • The sample code has service/controller pairs for three differnet remote APIs.
  • Your team is going to add four or five more service/controller pairs (one per team member), following the examples given.

  • Full instructions for team01 here: https://ucsb-cs156.github.io/w24/lab/team01.html

Part 1: Setting up the Kanban board.

Today’s work is to set up a Kanban board for you to track your efforts on the team01 project.

Step 1: Make sure every team member has access to the board

Each team member should make sure they can bring up the team’s Kanban board.

You can do this by making a post on your team’s slack channel.

To reduce noise in the channel:

  • The first person should post “I can access the team kanban board at” (then post the link).
  • Everyone else can add a reply to that thread with “me too” or “I’m having trouble”.

Step 2: Decide who is doing which of the apps

(This corresponds to step 1.1 here: https://ucsb-cs156.github.io/w24/lab/team01.html#step-11-divide-up-the-controllers-among-your-team, so you may want to take a moment to read the instructions down to that point.)

You’ll see inside https://ucsb-cs156.github.io/w24/lab/team01.html that there is a table like this:

Service Endpoint
JokeQueryService https://v2.jokeapi.dev/joke/{category}?amount={numJokes}
LocationQueryService https://nominatim.openstreetmap.org/search?q={location}&format=json
PublicHolidayQueryService https://date.nager.at/api/v2/publicholidays/{year}/{countryCode}
TidesQueryService https://api.tidesandcurrents.noaa.gov/api/prod/datagetter?application=ucsb-cs156&begin_date={beginDate}&end_date={endDate}&station={station}&product=predictions&datum=mllw&units=english&time_zone=lst_ldt&interval=hilo&format=json
UniversityQueryService http://universities.hipolabs.com/search?name={name}
ZipCodeQueryService http://api.zippopotam.us/us/{zipcode}

Here’s that table again with a sample query for each; you can click on the link and it should bring up information from that API:

Here’s some information on the APIs that these services are based on.

Try changing the parameters of any of these URLs to see what happens.

Decide which of these you want to work, and make a Slack post on your team channel claiming that service.

Step 3: Assign your issue to yourself

Find the issue for your Service in the To Do column on the Kanban board, and assign it to yourself.

Here’s what it looks like to assign an issue to an individual (this is a different project, but it illustrates the mechanics):

assign-issues-individually

When the team is done, each member of the entire team should be assigned to at least one issue.

Step 4: Drag the service issue to which you are assigned into the In Progress column

Now drag the issue for the Service (but NOT the one for the controller) from ToDo into In Progress.

The idea is that from now until your full team is finished with all of team01, ideally, each team member is assigned to exactly one issue in the in-progress column (no more, and no less), until the team is done.

Note that even when you are finished with all of it’s issues, your reponsibility to the full team is not over, and you still need to come to class and participate. If you finish first, at that point, your responsibility is to be a resource to the rest of the team to help them. This may take many forms:

  • Reviewing and merging their pull requests
  • Dividing up your subteam and pairing with members that are running into problems or are stuck.

The purpose of the subteam is to suggest an initial division of labor—having said that, ultimately, all of the work is the responsibillity of the entire team.

Completing all of the issues in your TODO column can be considered a single sprint.

Step 6: Check that ALL team members have gotten this far.

Now check in that all team members have been assigned a service and this is recorded on Slack, AND that you have each put exactly one issue in the column on the Kanban board.

Step 7: Submit on Canvas

Once you’ve completed steps 1-6, submit the link to your team’s Kanban board on Canvas.

What then?

  • Continue work on your in progress issue (i.e. continue with team01)

Grading checklist for participation activity:

Pts Step Item
10 Step 1 Team member made a post or reply in team slack channel indicating they have access to Kanban board
30 Step 2 Slack post claiming an item
30 Step 3 Team member has assigned themselves the service issue on the Kanban board
30 Step 4 Team member has moved service (but not controller) into In Progress column