- Видео 40
- Просмотров 59 656
Matthew Sanabria
США
Добавлен 10 дек 2012
Videos about using technology to solve problems and create new problems.
Interfaces in Go - Discovering Behavior
Learn Go interfaces by refactoring code to discover interfaces based on the behavior of concrete types. Enjoy!
00:00 Introduction
00:27 Quotes for Interfaces
01:25 Notifying with a Discord Client
03:02 Adding an Email Client
05:02 Discovering the Notifier Interface
08:48 Extending the Notifier Interface
13:00 Accept Interfaces, Return Structs
15:17 Implementing a Mock Notifier for Testing
19:53 Recap of Interfaces
22:10 Final Thoughts
Find the code at github.com/sudomateo/sudomateo.
Personal Website: matthewsanabria.dev
GitHub: github.com/sudomateo
LinkedIn: www.linkedin.com/in/sudomateo
Twitter: sudomateo
Mastodon: mastodon.online/@sudomateo
RUclips: www.youtube.com/@sudomateo
00:00 Introduction
00:27 Quotes for Interfaces
01:25 Notifying with a Discord Client
03:02 Adding an Email Client
05:02 Discovering the Notifier Interface
08:48 Extending the Notifier Interface
13:00 Accept Interfaces, Return Structs
15:17 Implementing a Mock Notifier for Testing
19:53 Recap of Interfaces
22:10 Final Thoughts
Find the code at github.com/sudomateo/sudomateo.
Personal Website: matthewsanabria.dev
GitHub: github.com/sudomateo
LinkedIn: www.linkedin.com/in/sudomateo
Twitter: sudomateo
Mastodon: mastodon.online/@sudomateo
RUclips: www.youtube.com/@sudomateo
Просмотров: 591
Видео
Understanding Go Context - Everything You Need to Know
Просмотров 455Месяц назад
Gophers! This is the only video you'll need to fully understand how to use Context for cancellation and storing values. Enjoy! 00:00 What is Context? 03:27 Coding without Context 06:03 Refactoring to Use Context with Cancellation 11:30 Storing Values in Context 17:19 Recap of Context 18:21 Final Thoughts Find the code at github.com/sudomateo/sudomateo. Personal Website: matthewsanabria.dev GitH...
Shell Scripting Crash Course
Просмотров 5843 месяца назад
Learn shell scripting by building a CLI tool to manage installed HashiCorp tools such as Terraform, Vault, and Nomad. 00:00 Introduction 00:05 What is a Shell Script? 02:13 Using Different Script Interpreters 04:36 Overview of What We're Building 07:36 Enforcing Proper Script Usage with Functions and Conditionals 10:59 Validating the Product With Case Statements 16:29 Retrieving the Version Fro...
OAuth2 Crash Course with Go
Просмотров 1,2 тыс.4 месяца назад
All you need to know about OAuth2 by implementing it with Go. 00:00 Introduction 00:05 What is OAuth2? 04:09 OAuth2 Flow 06:33 Implementing OAuth2 20:08 Final Thoughts Personal Website: matthewsanabria.dev GitHub: github.com/sudomateo LinkedIn: www.linkedin.com/in/sudomateo Twitter: sudomateo Mastodon: mastodon.online/@sudomateo RUclips: www.youtube.com/@sudomateo
Review: ZSA Moonlander Platform New Revision
Просмотров 1,1 тыс.5 месяцев назад
Review of the latest revision of ZSA's Moonlander "The Platform" tenting system. This is the first video I hired someone to edit. Let me know what you think! 00:00 Introduction 01:30 Unboxing 02:26 Revision Updates 03:48 Installing the Platform 04:03 Limitations 06:27 Using the Platform 09:27 Final Thoughts Personal Website: matthewsanabria.dev GitHub: github.com/sudomateo LinkedIn: www.linkedi...
Linux CLI Crash Course
Просмотров 1,1 тыс.6 месяцев назад
No more struggling on the CLI. Conquer the Linux CLI and be the engineer you are meant to be with this crash course. 00:00 Introduction 00:27 Terminology 12:15 Working with Files 25:52 PATH 31:40 Aliases 33:30 Shell History 37:57 Environment Variables 41:28 Standard Streams 49:59 Pipes 53:52 Transforming Data 58:32 Shell Expansion 01:02:38 Final Thoughts GitHub: github.com/sudomateo LinkedIn: w...
Install Fedora 39 on VMware Workstation with Btrfs Subvolumes
Просмотров 1,2 тыс.6 месяцев назад
Learn how to install Fedora 39 on VMware Workstation. I cover all the VMware options and configure Fedora to use Btrfs subvolumes for / and /home. 00:00 Download the Fedora OS Image 01:16 Create a New Virtual Machine 01:47 VMware Hardware Compatibility 02:40 Choose the OS Image 03:03 Name the Virtual Machine 03:34 CPU Configuration 04:52 Memory Configuration 05:47 Network Configuration 08:35 Di...
Terraform Shorts: Formatting Configuration
Просмотров 469 месяцев назад
Terraform Shorts: Formatting Configuration
Terraform Shorts: Importing Existing Infrastructure
Просмотров 9310 месяцев назад
Terraform Shorts: Importing Existing Infrastructure
Terraform Shorts: Using Remote State
Просмотров 11310 месяцев назад
Terraform Shorts: Using Remote State
Terraform Shorts: Terraform Plan Files
Просмотров 20411 месяцев назад
Terraform Shorts: Terraform Plan Files
Terraform Shorts: Using count and for_each
Просмотров 23211 месяцев назад
Terraform Shorts: Using count and for_each
Submitting High Quality Open Source Contributions
Просмотров 32811 месяцев назад
Submitting High Quality Open Source Contributions
Terraform Shorts: Implicit and Explicit Dependencies
Просмотров 40711 месяцев назад
Terraform Shorts: Implicit and Explicit Dependencies
Terraform Shorts: Terraform Configuration Syntax
Просмотров 12211 месяцев назад
Terraform Shorts: Terraform Configuration Syntax
JavaScript Fetch API and Cross-Origin Resource Sharing (CORS)
Просмотров 11 тыс.2 года назад
JavaScript Fetch API and Cross-Origin Resource Sharing (CORS)
All Terraform Commands - A Practical Approach
Просмотров 5 тыс.3 года назад
All Terraform Commands - A Practical Approach
Introduction to Terraform - A Practical Approach
Просмотров 1,5 тыс.3 года назад
Introduction to Terraform - A Practical Approach
2021 PC Build - AMD 5950x, ASUS ROG Crosshair VIII Dark Hero, G.Skill 128GB, ASUS GTX 1080ti
Просмотров 2,5 тыс.3 года назад
2021 PC Build - AMD 5950x, ASUS ROG Crosshair VIII Dark Hero, G.Skill 128GB, ASUS GTX 1080ti
CS50x - Submitting Problem Sets via Submit50
Просмотров 13 тыс.4 года назад
CS50x - Submitting Problem Sets via Submit50
CS50x - Submitting Problem Sets Using Git Branches
Просмотров 8 тыс.4 года назад
CS50x - Submitting Problem Sets Using Git Branches
Troubleshooting Transport Layer Security (TLS)
Просмотров 6924 года назад
Troubleshooting Transport Layer Security (TLS)
I’m in week 1 and I created a code for problem set1 but I have an error in my code (zsh:command found submit50) it’s appeared also when I tried to check50 my code. Does this video solve my problem? Pls help me
@@Dr.Reem-n2j that means submit50 is either not installed or not on your PATH. There's a chapter in my shell scripting crash course video that talks about PATH.
Thank you so much for all your content Matthew! Really appreciate it, your way of explaining is very detailed but simple and easy to consume also with real examples which helps a lot 🙏
@@lee__3052 thank you for the kind words! Happy to hear when people enjoy the videos. If you have any questions or suggestions for additional Go topics please let me know.
I like this content. Just one thing I know this is a jus a simple example but you are not testing the SendNotification function at all here. I see that you want show how you can take benefit of interfaces to create mocks that can help during unit tests, but this is a little bit misleading on how write a good unit test. By the way I appreciate your efforts and I am waiting for other content related to Golang. B.R.
Thank you! More content will be coming soon. I wasn't going to include any testing in this video at first but the I was like ah heck why not? I really wanted to show how one can implement interfaces to be used in tests rather than writing a perfect unit test. I probably should have asserted on the message to test the behavior specific to SendNotification. In the current form it's really just testing that the notifier(s) get called.
👏👏👏
Don't forget to hit that bell!
Like. Subscribe. Hit the bell. Grow the beard. All the good things!
Loving the go content, so clear and easy to grasp. I would pay for your courses 😆
Thank you for the kind words! I'm not against creating course content, I would just need to dedicate time to creating the content and make sure it's financially accessible to everyone. I have some strong opinions on some of the course content out there that takes advantage of aspiring engineers.
Fair enough :I) Also a future video suggestion: concurrency stuff (channel and mutex)
@@0lange I got you! Concurrency stuff is next on the list. I ranked some suggestions based on frequency and concurrency was top 3. I'll be recording that when I'm back from GopherCon.
Please excuse the nasally voice. I recorded this just as I was getting sick so I was a bit stuffy.
MOM! Wake up! Matthew uploaded a new video!
This is the way!
Please make a video on the different golang patterns with some real world ish scenario 🙏
Specifically on context or just in general?
@@sudomateo Concurrency patterns, Composite, Service and others patterns for web applications
@@0lange noted! Thank you!
Please link the example repo if possible 🙏
Hey! You can find the source code here: github.com/sudomateo/sudomateo There's a learning section. I may refactor the layout of this in the future, but it'll remain in this repository.
@@sudomateo thanks!
i am so luck to find your content! i really appreciate this & your code is so clean and same for the way you teach us thanks a mill
Thank you for the kind words! I try to create an example that's simple but also simulates something you'd see in the field.
This is awesome! Thank you
You're welcome!
Excellent video Matthew!!! Thanks for sharing!
You're very welcome! More on the way!
Hi Matthew, Great content, new sub! I found you thru the tutoriaLinux channel, which is also great! Do you offer any mentoring at all? I am in IT now and looking to do some of the roles you have done! Thanx
Hey! Thank you for the kind words! The tutoriaLinux channel is great too. I do offer personal mentoring but I'm a bit oversubscribed right now as I'm mentoring 3 people personally. Can you add me on Discord and I'll invite you to a server where a bunch of us hang out to help one another. My username is: sudomateo
When I click on the link which I got after the submission for checking my results, it says 'No results'. can you help me on this
Good explanations ! many thanks !
You're welcome!
Thanks for the honest review!! Do you find it noisy? I read quite a few reviews complaining about the noise.
The hinges have a bit of noise when folding and unfolding. When in use though I don't notice any noise from the platform. I do have it on a wooden desk with rubber feet.
Very helpful and well explained, thank you!
You're welcome!
when i run install pythom command (on M3 Mac) it gives me the error that I dont have java, which I do. Not sure what to do, can't seem to find help via google.
macOS has a bad relationship with Python out of the box. Probably want to install Python 3 using a brew like so: docs.python-guide.org/starting/install3/osx/
@@sudomateo Yeah I found out that brew is best with this stuff. I finally figured it out, thank you!
@@zachmeyer8510 you're welcome! Happy coding!
Thank you :D
You're welcome!
I would avoid the Moonlander tbh. The thumb module on mine broke after a year and they won't sell me a replacement module. My mate has a Kinesis thats over 20 years old and still going strong. I could have saved myself so much money by just getting the more expensive Kinesis in the first place.
If the Kinesis Advantage 360 were available before I ordered the Moonlander I probably would have springed for that instead due to the concave layout. I haven't had any issues with my thumb cluster breaking or support with ZSA and I'm a bit rough on the keyboard. ZSA not selling parts ad-hoc though kinda sucks.
how do i push a specific file(in the video) or folder from the branch where it was created, to another branch on that same repository? In git commands
Make sure your working tree is clean and you're on the branch where the file is located. git checkout -b NEW_BRANCH_NAME git add FILE_OR_FOLDER git commit git push -u origin NEW_BRANCH_NAME
I have to say your review sold me sheerly based on the amount of time you spent on the negatives, you weren’t sent this, you’re not doing a promo piece, this is a review. Props to you bro.
Thank you! I try to keep things realistic as if I was telling my friends about the product. Heck even if it was a promo I'd say the same thing haha. It's overpriced but solidly made.
Oh actually you reminded me. If you slide the platform around a lot then the feet on the bottom can unstick and move around. You have to lift it and move it rather than sliding. I'll probably buy some feet with better adhesive instead since I move mine around a lot.
@@sudomateo thank you bro. I ordered one because your review was legit. Thank you again, we need more honest folk on here
@@edonis2787 you're very welcome! I got you brother!
Incredible stuff, thanks Matthew. Looking forward to you doing a full blown python or Go course at some point.
I'm outlining a Go course at the moment so stay tuned!
Two months ago you promised to do this (after your Linux CLI Crash Course) and not only are you a man of your word, you delivered another master class! I am new to Linux and to scripting. What you always provide for me is not only home work, but substance that I can breakdown, re-assemble and grow. Your A- rating on your GitHub Statistics needs to be elevated to A+. I can literally take what you presented in this course, $(expand my learning) and challenge myself to become a great engineer! Thanks Matthew for sharing your wisdom in a way that's contagious! I am simply hooked on learning and growing!
Thank you for the kind words! I try to be a man of my word. Unless of course if I forget about something. I'm really happy to hear that these videos are helpful to people like yourself that are new to Linux and scripting. I try to explain things in plain language and not stay too surface level but also not deep dive and lose people. Haha, my A- rating on GitHub. I spend way more time reviewing code nowadays than I do writing code. Just the nature of my current role that's focused on enabling others more than doing things solo. > I can literally take what you presented in this course, $(expand my learning) and challenge myself to become a great engineer! Thanks Matthew for sharing your wisdom in a way that's contagious! I am simply hooked on learning and growing! Yessssss! This is what I love to see. You're welcome! I enjoy making these videos and breaking down these concepts in ways everyone can understand and just have fun doing it. Please feel free to provide feedback on what you like and what you would like to see. I do this to help people, not for the clicks. Even helping just 1 person is worth it for me. See you around!
👍
Heck yeah!
your channel is so underrated, thank you so much for the explanation, a master piece of a video, exactly the same as the OAuth2 flow with golang! Thank you so much for all your work!
Thank you for the kind words! I try to make sure the video is helpful for viewers, not something that's optimized for clicks. Will definitely continue on with more!
Great review, im very tempted to pick this up. Do you need to know DS&A before reading?
Thank you! You should be familiar with arrays, maps, and recursion ideally. They aren't used in any strange way, but the concepts are in use to interpret nested objects. Think objects that contain other objects like an if conditional.
If I were to write an interpreter or a compiler, I'd never use Golang. I'd use Rust, as it has all the expressive power. Other choices would be Haskell and Modern C++. Golang is OK for writing web services.
I believe the author's choice to use Go was a good one since the book is focused on education rather than full expressiveness or correctness. In my opinion Rust would be a poor choice for education but a great choice for a production implementation with its ability to define macros and attributes.
@@sudomateo Hmm. Fair point. I agree.
@@sirnawaz thanks for watching by the way. Hope to see you around.
Stoked for this. I had to put the book down to focus on school and work but I am almost graduated and it is going to be the first thing i pick up.
A little reading every few days will go a long way towards finishing books. I get it though, time is tough. Good luck with your studies!
I started reading this book last week and I'm at chapter 2, amazing stuff so far :))
It's a good book! Hope you'll join us for the last chapter this Friday.
awesome ... I started reading this book a couple of months back. Now I can follow it here as well. Thanks, Matthew
You're welcome! Hope to see you at the next one!
Just started on this book, this is a fantastic find! Nice one!
It's a great book. Glad to hear you like it!
@@sudomateoYea agreed, It really removes a lot of the mystery. I found using a debugger super helpful in understanding where in the tree the parser was operating.
You got a new subscriber😊
Heck yeah! Thank you kindly!
How can I join your book club
Hey! Add me on Discord and I got you. Username is sudomateo.
Thank you so much for the nice overview of OAuth2, as a suggestion if you include links with source code for upcoming videos that will be fantastic!
Thank you! I agree. I'm trying to figure out how I want to host this source code. I don't like a messy GitHub account with many repositories so I might just consolidate it into a single repository or gists.
Great explanation! It is always useful to remember the basics about important topics like this. I hope you make a new video about managing the "refresh token" and your approach to that.
Thank you! I think I might just record that next video. It'll be fun to show some middleware aspect there.
I upgraded from an Ergodox to the Moonlander and my Platform showed up in the mail today. I'm also a hybrid worker and easy travel was a big component of my decision to upgrade. I'll be sure to remove the grommets. Thank you for the tip!
Hope you like the Platform! I'll admit I don't travel with mine every office day. Only the days where my meetings are light and I'll actually be at my desk typing. I'll be taking it to conferences and other work trips though!
Such amazing learning! Wow, you're so intelligent Matthew! 😃😃😃😃😃😃😃😃😃😃😃😃😃😃😃😃😃😃😃😃😃😃😃😃😃😃😃😃😃
Much wow!
I never was able to get past the externally-managed environment error on Debian. I followed the post by mdnielsen68 in the Submit50 can't use in Windows 10 under issues for submit50 on GitHub to get things working in command line under Ubuntu. Also you can no longer use your GitHub password to submit. You must sign up for a personal access token on GitHub as described in the section of CS50 read the docs pertaining to GitHub.
Final comment hopefully. Make sure you do sudo apt update once you get a Linux distro running before you try to install anything
Awesome video!! Very useful! If anyone is having trouble installing python under Debian as shown in this video, what helped for me was to run sudo apt-get update and then run each broken install again followed by sudo apt --fix-broken install for each. I'm completely new to linux so even this much was a major challenge for me. I then got stuck when I tried to install Submit50 using pip. I got the error: externally-managed-environment. I switched to Ubuntu and it seems to work so I am not sure why it isn't working on Debian.
🤎
❤️
Great video. Well done. Are SSH Host keys only produced by the administrator of the server you are connecting to? I heard you say you generated your own public and private key pair. That public key you mentioned you created as part of that pair is different than the SSH Host key you are talking about in the video, correct? Is the public/private key pair you created to encrypt and decrypt PGP files only and not for host authentication (for example, logging into a server as you do in the video)?
Correct! SSH host keys are generated by the system administrator where the SSH service is running. Usually the SSH host keys are generating automatically when the SSH service starts up if they are not already present. The SSH key pair (public/private) that you create for yourself is used to authenticate to a server that's speaking SSH. You upload the public key to the server via a trusted means and then when you want to connect to that server via SSH you just use your private key to encrypt some data and perform a key exchange that only your corresponding public key can decrypt successfully. However, when you first connect to a server over SSH, your local SSH client will ask you to verify the SSH host keys provided by the SSH service. That way when you connect in the future you can be sure you're connecting to the same SSH service as before and it wasn't tampered with.
Thanks man for the good work
You're welcome!
what are your thoughts on vim/neovim? do you use it?
Hey. I've been using Neovim as my primary editor/IDE for the past 3-4 years and I really like it. It takes some configuration to get it to a place where you have the features you need compared to VS Code or similar. Here's my dotfiles where you can see my configuration: github.com/sudomateo/dotfiles
what microphone are you using? sounds great
My audio setup is: Shure SM7B (microphone) -> Cloudlifter CL-1 (inline preamp) -> Scarlett 2i2 3rd Gen (audio interface) Although if I was to buy anew today I'd probably do the following to get more control over audio and to have hardware mute: Shure SM7B (microphone) -> RODE RODECaster Duo (mixer/audio interface)
thanks, lifesaver!
You're very welcome!
Thanks Matt - Looking forward to increasing my knowledge, especially cli skills! 😊
🎉❤😊 New to Linux and this video was simply outstanding! The pipe sequence and shell expansion were simply awesome! I learned so much - thank you. Could you do something on Bash scripting and awk? Thanks for sharing so freely so that others can learn Matthew. East Coast Sr. Citizen
Thank you for the kind words! I think I can record a shell scripting video soon. It's a good follow-up to this video. Plus I gotta help my fellow east coasters out!
Very detailed course i love this type of videos and courses, thanks brother
You're very welcome!