Skip to content

Commit

Permalink
Adjust morning-session timings downward (google#1786)
Browse files Browse the repository at this point in the history
Based on feedback from @marshallpierce that mornings took about 2.5
hours, this adjusts a bunch of the morning times downward to try to
match that. In other words, this is trying to make the times in the
course more accurate, rather than reducing the amount of time available
for these slides.

This also updates the `course-schedule` tool to be able to show
per-segment timings.
  • Loading branch information
djmitche authored Feb 6, 2024
1 parent e921d4b commit 9f67c9b
Show file tree
Hide file tree
Showing 24 changed files with 70 additions and 46 deletions.
66 changes: 49 additions & 17 deletions mdbook-course/src/bin/course-schedule.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,21 +12,29 @@
// See the License for the specific language governing permissions and
// limitations under the License.

use clap::Command;
use mdbook::MDBook;
use mdbook_course::course::{Course, Courses};
use mdbook_course::course::Courses;
use mdbook_course::markdown::duration;

fn main() {
pretty_env_logger::init();
let app = Command::new("mdbook-course")
.about("mdbook preprocessor for Comprehensive Rust")
.subcommand(Command::new("sessions").about("Show session summary (default)"))
.subcommand(Command::new("segments").about("Show segment summary"))
.subcommand(Command::new("pr").about("Show summary for a PR"));
let matches = app.get_matches();

let root_dir = ".";
let mdbook = MDBook::load(root_dir).expect("Unable to load the book");
let (courses, _) = Courses::extract_structure(mdbook.book)
.expect("Unable to extract course structure");

println!("## Course Schedule");
println!("With this pull request applied, the course schedule is as follows:");
for course in &courses {
print_summary(course);
match matches.subcommand() {
Some(("session", _)) | None => session_summary(&courses),
Some(("pr", _)) => pr_summary(&courses),
_ => unreachable!(),
}
}

Expand All @@ -44,18 +52,42 @@ fn timediff(actual: u64, target: u64, slop: u64) -> String {
}
}

fn print_summary(course: &Course) {
if course.target_minutes() == 0 {
return;
fn session_summary(courses: &Courses) {
for course in courses {
if course.target_minutes() == 0 {
return;
}
for session in course {
println!("### {} // {}", course.name, session.name);
println!(
"_{}_",
timediff(session.minutes(), session.target_minutes(), 15)
);
println!();
for segment in session {
println!("* {} - _{}_", segment.name, duration(segment.minutes()));
}
println!();
}
}
println!("### {}", course.name);
println!("_{}_", timediff(course.minutes(), course.target_minutes(), 15));

for session in course {
println!(
"* {} - _{}_",
session.name,
timediff(session.minutes(), session.target_minutes(), 5)
);
}

fn pr_summary(courses: &Courses) {
println!("## Course Schedule");
println!("With this pull request applied, the course schedule is as follows:");
for course in courses {
if course.target_minutes() == 0 {
return;
}
println!("### {}", course.name);
println!("_{}_", timediff(course.minutes(), course.target_minutes(), 15));

for session in course {
println!(
"* {} - _{}_",
session.name,
timediff(session.minutes(), session.target_minutes(), 5)
);
}
}
}
2 changes: 1 addition & 1 deletion src/control-flow-basics/blocks-and-scopes.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
minutes: 10
minutes: 5
---

# Blocks and Scopes
Expand Down
2 changes: 1 addition & 1 deletion src/control-flow-basics/break-continue.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
minutes: 5
minutes: 4
---

# `break` and `continue`
Expand Down
2 changes: 1 addition & 1 deletion src/control-flow-basics/conditionals.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
minutes: 5
minutes: 4
---

# Conditionals
Expand Down
2 changes: 1 addition & 1 deletion src/generics/generic-data.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
minutes: 15
minutes: 10
---

# Generic Data Types
Expand Down
2 changes: 1 addition & 1 deletion src/generics/trait-bounds.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
minutes: 10
minutes: 8
---

# Trait Bounds
Expand Down
4 changes: 0 additions & 4 deletions src/iterators/iterator.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,6 @@
minutes: 5
---

<!-- NOTES:
The Iterator trait and basic usage
-->

# `Iterator`

The [`Iterator`][1] trait supports iterating over values in a collection. It
Expand Down
4 changes: 0 additions & 4 deletions src/memory-management/copy-types.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,6 @@
minutes: 5
---

<!-- NOTES:
Present Copy as added functionality on top of the default move semantics: with Copy, the old value does not become invalid; Can derive Copy for a type if it implements Clone
-->

# Copy Types

While move semantics are the default, certain types are copied by default:
Expand Down
2 changes: 1 addition & 1 deletion src/memory-management/drop.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
minutes: 10
minutes: 8
---

# The `Drop` Trait
Expand Down
2 changes: 1 addition & 1 deletion src/memory-management/move.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
minutes: 10
minutes: 5
---

# Move Semantics
Expand Down
2 changes: 1 addition & 1 deletion src/methods-and-traits/deriving.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
minutes: 5
minutes: 3
---

# Deriving
Expand Down
2 changes: 1 addition & 1 deletion src/methods-and-traits/methods.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
minutes: 10
minutes: 8
---

# Methods
Expand Down
2 changes: 1 addition & 1 deletion src/methods-and-traits/traits.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
minutes: 10
minutes: 8
---

# Traits
Expand Down
2 changes: 1 addition & 1 deletion src/modules/modules.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
minutes: 5
minutes: 3
---

# Modules
Expand Down
2 changes: 1 addition & 1 deletion src/modules/paths.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
minutes: 10
minutes: 8
---

# use, super, self
Expand Down
2 changes: 1 addition & 1 deletion src/pattern-matching/destructuring.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
minutes: 10
minutes: 8
---

# Destructuring
Expand Down
2 changes: 1 addition & 1 deletion src/smart-pointers/box.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
minutes: 10
minutes: 8
---

# `Box<T>`
Expand Down
2 changes: 1 addition & 1 deletion src/testing/lints.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
minutes: 5
minutes: 3
---

# Compiler Lints and Clippy
Expand Down
2 changes: 1 addition & 1 deletion src/testing/other.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
minutes: 10
minutes: 5
---

# Other Types of Tests
Expand Down
2 changes: 1 addition & 1 deletion src/testing/unit-tests.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ fn first_word(text: &str) -> &str {
}
#[cfg(test)]
mod test {
mod tests {
use super::*;
#[test]
Expand Down
2 changes: 1 addition & 1 deletion src/types-and-values/arithmetic.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
minutes: 5
minutes: 3
---

# Arithmetic
Expand Down
2 changes: 1 addition & 1 deletion src/types-and-values/inference.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
minutes: 5
minutes: 3
---

# Type Inference
Expand Down
2 changes: 1 addition & 1 deletion src/types-and-values/strings.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
minutes: 10
minutes: 5
---

# Strings
Expand Down
2 changes: 1 addition & 1 deletion src/types-and-values/values.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
minutes: 10
minutes: 5
---

# Values
Expand Down

0 comments on commit 9f67c9b

Please sign in to comment.