Skip to content

Commit

Permalink
Add more learning content + fix links
Browse files Browse the repository at this point in the history
  • Loading branch information
glendc committed Nov 5, 2023
1 parent 9fd450d commit 7c31362
Show file tree
Hide file tree
Showing 5 changed files with 48 additions and 4 deletions.
2 changes: 2 additions & 0 deletions .lycheeignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
https://www.udemy.com/course/.*
https://archive.ph/.*
2 changes: 2 additions & 0 deletions src/guide/learn-async-rust/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@ Extra Learning Resources:
- <https://docs.google.com/presentation/d/1CObHaEu1OnXhTEFs3RmuUQHJj_Uw9HOqWHqmnod6YXc/mobilepresent?slide=id.g228c626047c_0_222>
- <https://google.github.io/comprehensive-rust/async/pitfalls/cancellation.html>

At <https://without.boats/blog/why-async-rust/> you can reat more toughts on Async rust, its history and its implementation.

As an extra, and perhaps slightly sidetracked, you may also want to read and develop alongside the following articles:

- [The HTTP crash course nobody asked for](https://fasterthanli.me/articles/the-http-crash-course-nobody-asked-for)
Expand Down
2 changes: 1 addition & 1 deletion src/guide/learn-more-rust/extra.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ Should you want some inspiration or a more guided approach, here are some resour
- [Command-Line Rust](https://www.oreilly.com/library/view/command-line-rust/9781098109424/): build a cli tool such as grep in rust, using test driven development (TDD), all to learn Rust
- [Rust Application Books - The Little Book of Rust Books](https://lborb.github.io/book/applications.html): lists a lot of different books, including ones that allow you to develop small projects using Rust, usually in a well guided fashion;
- You might find <https://archive.is/acQA2> an interesting companion article as it gives some (common) ideas that you can apply to the CLI tool you're building;
- [Introduction - PNGme: An Intermediate Rust Project](https://picklenerd.github.io/pngme_book/introduction.html) is an especially fun small project. It allows you to apply the knowledge that you learned above in a very narrow program, that is for once not network related. At the end you'll have a cli tool that allows you to encode and decode "hidden" messages in a PNG image;
- [Introduction - PNGme: An Intermediate Rust Project](https://jrdngr.github.io/pngme_book/) is an especially fun small project. It allows you to apply the knowledge that you learned above in a very narrow program, that is for once not network related. At the end you'll have a cli tool that allows you to encode and decode "hidden" messages in a PNG image;

> Was it always your dream to make your own Game? And do you also want to learn Rust?
>
Expand Down
24 changes: 24 additions & 0 deletions src/guide/learn-rust/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,30 @@ Sooner or later you might also need help for a project you work on or simply to
>
> If you've never done any Systems programming before, this will be an especially helpful book given it will explain a lot of the magic you've encountered in your very protected professional life so far. You're welcome.
### Tour of Rust

> 🔗 <https://tourofrust.com/index.html>
This project is meant to give an experienced programmer a swift introduction to Rust as an alternative to reading lengthy book style documentation.

* Chapter 1 - The Basics
* Chapter 2 - Basic Control Flow
* Chapter 3 - Basic Data Structure Types
* Chapter 4 - Generic Types
* Chapter 5 - Ownership & Borrowing Data
* Chapter 6 - Text
* Chapter 7 - Object Oriented Programming
* Chapter 8 - Smart Pointers
* Chapter 9 - Project Organization and Structure

Content goals:
* Chapter 1-4 should give you a strong taste of Rust's aesthetic
* Chapter 1-6 should give a person from C a good idea how their ideas translate
* Chapter 1-8 should give a person from C++ a good idea how their ideas translate
* Chapter 9+ should talk about Rust specific concepts that doesn't fit well into the above

This project also aims to provide this book in as many languages as possible.

### Learn Rust in a Month of Lunches

There's only one Rust book out there — that I'm aware of — which assumes no programming experience or knowledge at all.
Expand Down
22 changes: 19 additions & 3 deletions src/intro/learning-rust.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,18 @@
## Rust 101 Course
## Why Learn Rust?

The origins of this guide can be found in the preparation of a semester long course I gave to a group of employees at [OTA Insight Ltd.](https://www.otainsight.com/). The recordings of this course are available on YouTube at: <https://www.youtube.com/playlist?list=PLQgXEsLXFxpVyLddG8FFXfNQEiodTzAjj>. The videos are however not of the highest quality, especially given the many better resources out there.
You might be wondering, why shall I learn Rust?
In the [About](/intro/about.html) chapter you'll find plenty of reason to.

However, you might want to read [the "Can Rust prevent logic errors?" article]
at <https://itsallaboutthebit.com/logic-errors-in-rust/#> instead.

In the article "Can Rust prevent logic errors?" Piotr Sarnacki explores the potential of Rust, a programming language, to reduce software bugs, specifically logic errors. He highlights Rust's features such as the absence of nulls, the necessity to handle function errors, prevention of data races, and explicit marking of mutable variables.

Sarnacki contrasts Rust with Ruby, where runtime exceptions are common, suggesting that Rust allows for more stable applications. He discusses how Rust's expressiveness can help prevent some logic errors that might occur at runtime.

He also discusses how Rust's tools for managing data ownership and access control can prevent logic errors caused by unwanted mutations. Additionally, he emphasizes the use of enums in Rust to handle multiple options, which can prevent errors when dealing with multiple possible states.

In conclusion, Sarnacki believes that Rust offers many tools for writing correct software and its community's focus on correctness further enhances its value. Despite the potential for errors, he suggests that Rust has a relatively small amount of problematic features if misused.

## Learning Rust

Expand Down Expand Up @@ -30,4 +42,8 @@ As you navigate this guide, you'll find alternative suggestions and varying leve

If you don't anticipate working on a project requiring Async programming soon, feel free to bypass [that section](/guide/learn-async-rust.md) for now. Just remember that Rust supports Async and it plays a significant role in the Rust ecosystem. You can always return to it when you're ready to strengthen your knowledge in this area.

Should you ever feel stuck or in need of a mentor, don't hesitate to contact Glen at [glen@plabayo.tech](mailto:glen@plabayo.tech) to arrange a one-on-one session or a workshop for your organization. Whether it's a one-off or regular meetings, assistance is readily available.
Should you ever feel stuck or in need of a mentor, don't hesitate to contact Glen at [glen@plabayo.tech](mailto:glen@plabayo.tech) to arrange a one-on-one session or a workshop for your organization. Whether it's a one-off or regular meetings, assistance is readily available.

## Rust 101 Course

The origins of this guide can be found in the preparation of a semester long course I gave to a group of employees at [OTA Insight Ltd.](https://www.otainsight.com/). The recordings of this course are available on YouTube at: <https://www.youtube.com/playlist?list=PLQgXEsLXFxpVyLddG8FFXfNQEiodTzAjj>. The videos are however not of the highest quality, especially given the many better resources out there.

0 comments on commit 7c31362

Please sign in to comment.