Тёмный
Earthly
Earthly
Earthly
Подписаться
Hey all!
Welcome to Earthly's youtube channel.

We are building a channel where we can share everything that you need to learn to be a software developer.

Specifically, we focus on tutorials around builds and programming languages and most of the videos are hosted by Adam Gordon Bell. Earthly makes an open-source build tool called Earthly.

Come learn with me! Subscribe! :)
The REAL Way to master JQ
8:14
7 месяцев назад
AWK in 300 Seconds
5:48
7 месяцев назад
Reading and Writing YAML Files with Python
8:59
9 месяцев назад
Earthly May Office Hours
53:23
Год назад
Build your own Container Runtime
37:37
Год назад
Awk Crash Course
40:38
Год назад
Комментарии
@iwswordpress
@iwswordpress 3 дня назад
Excellent!
@yashashav_dk3766
@yashashav_dk3766 4 дня назад
The ADAM GORDON BELL from the CoRecursive podcast!!! DAMNNNN.. Love your podcasts Adam. Thanks for giving back to the community! Instant sub!
@pedroamarante576
@pedroamarante576 9 дней назад
I mean a VM is also "just" a process. Weird that your video focus on the sandbox aspect of docker, as for me its nothing unique about it. Whats unique about docker is the ability to distribute, allowing your image to run in any machine. But maybe I'm wrong, im no docker pro
@setoelkahfi
@setoelkahfi 11 дней назад
This is really useful, especially about fragmentation.
@bipinmaharjan4090
@bipinmaharjan4090 14 дней назад
This exactly what i needed. I came from java and javascript and not having stack tract is bugging me out in golang
@AghilSoi
@AghilSoi 18 дней назад
'poetry' is not recognized as an internal or external command, operable program or batch file. help me with this error
@AghilSoi
@AghilSoi 18 дней назад
'poetry' is not recognized as an internal or external command, operable program or batch file. facing this error
@qqi239z123
@qqi239z123 22 дня назад
errors reported in the terminal window from compilation using makefile have no relation to problems reported by vscode. E.g. if have '-I.' option and it is handled correctly by compiler at the same time the vscode is unhappy because it could not find .h file with angle brackets.
@cbbcbb6803
@cbbcbb6803 23 дня назад
To create a new language, first make it easy, then add power to it. Keep in mind that it is all made up, and that you are going to make up another one.
@wily_rites
@wily_rites Месяц назад
Dang I was looking for a way to configure makefile as my build system in visual studio, I really wish that the folks at MS had given these two very different IDE's suitable different names, I'm sure this vid is great though, if you are using visual studio code, just felt the need to express my chagrin.
@OmPrasadKoirala
@OmPrasadKoirala Месяц назад
great job
@harshitmishra3318
@harshitmishra3318 Месяц назад
At 8:25 what he is actually tell about the git commit ??? I didn't get that, can any one helps me to understand that ??
@venky1922
@venky1922 Месяц назад
How to do it in windows
@texman1166
@texman1166 Месяц назад
Thank you. Very understandable.
@totalscene3274
@totalscene3274 Месяц назад
Your approach of demystifying and investigating the source code of the linux kernel is unique! Thanks a lot for this! I know that you guys are here on a mission but I'd love to see more from you regarding the linux and unix-like kernels.
@EarthlyTech
@EarthlyTech Месяц назад
You are welcome! What would you like to see?
@sudo_garrett
@sudo_garrett Месяц назад
fantastic video! I didn't know Go had a native make capability, the syntax is simple as always :)
@rubenchiquin3768
@rubenchiquin3768 Месяц назад
People often criticize this way of handling errors, but it is probably due to a majority of people coming from a language where errors are ghosts, and you don't even know they can happen. That's why it might feel easier to deal with errors, because you are not forced to handle them. Sure, maybe some errors almost never happen and it might not even be worth handling them, but in my opinion If a language forces you to do very robust programs, where you handle all scenarios, that's a good thing, not a bad one. If you wanna write lazy code that breaks, but write it in 1 minute, then go with Python, because in Go it will be way harder to do bad code.
@danielniels22
@danielniels22 2 месяца назад
When to create a custom error by implementing the error interface, or when to use the errors.New() ?
@sczoot6285
@sczoot6285 Месяц назад
Without exploring the different approaches, I would say implement the interface when you want to add additional state/functionality to what the error struct would provide
@cerkal726
@cerkal726 2 месяца назад
Explanation was nice. But I think you have missed main part of video that is how to avoid dependency hell. Like when installing two packages which use different versions of same depended package is still resulting in error. Which you explained in the earlier section of the video but didn't actually explain if it could be solved or not using peotry.
@EarthlyTech
@EarthlyTech Месяц назад
Yes, you are right! Poetry only solves when you use two separate venvs. Otherwise, it will attempt to find a version that is compatible with both and otherwise raise an error. At that point you need to find a singular version that works for both yourself or try otherwise adjust deps so that there is a singular version that works with your use case.
@windowsrefund
@windowsrefund 2 месяца назад
A few things I'm noticing which I'm trying to get my head around in terms of overall workflow: 1) Adding a package dependency via "poetry add" is the process that actually updates poetry.lock; creating the file if it doesn't exist. 2) When running "poetry add" for the first time, poetry goes ahead and creates a virtual environment. By default, the virtual environment is created in shared location so if you want your virtual environments to live inside your project directory, you need to first configure poetry appropriately (see upstream docs for how to do this). 3) Also realize the virtual environment is not going to be used unless you activate it. This is a tedious process which is made cleaner with direnv. In order to have direnv use the .venv directory created by poetry, you need to echo "VIRTUAL_ENV=$PWD/.venv layout python" > .envrc && direnv allow. Now, every time you cd into your project directory, your virtual environment will be activated by direnv. 4) With all that said, at this point, I'm wondering why we're actually using "poetry install" and wonder if and how it relates to "pip install -e" which is the recommended approach used to make dealing with imports easier (difficult for me to exactly explain as the concept is still somewhat new). So........ in a nutshell, poetry seems nice but there's clearly a much larger conversation to be had in terms of tying all these things together and how to bootstrap a new project in the right order in able to get everything working. Don't forget getting pytest to use importlib (rather than the prepend mode it uses for backwards compatibility) if you'll be using TDD. I'm writing this 6m into the video so I'll get back to watching as it's possible you'll touch on some of these issues.
@windowsrefund
@windowsrefund 2 месяца назад
OK so installing the package via "poetry install" makes the package available in the Virtual Environment. What's also nice is that the package is "editable" (see my previous comment). We can see this in the output of a "pip list" from within the Virtual Environment.
@windowsrefund
@windowsrefund 2 месяца назад
I LOVE this video but please make the Internet a better place and stop referring to directories as "folders". Thumbs up! Also, the term "open source" is totally lame. The proper term is "Free Software".
@EarthlyTech
@EarthlyTech Месяц назад
I grew up on windows. Some habits die hard.
@intelligenceservices
@intelligenceservices 2 месяца назад
Python is supposed to be so clever terse and elegant. If it was an apartment, it would be as spotless as patrick bateman's, but they have such a pile of garbage outside you need a Shai-Hulud to get to the door. Just a little poetry there.
@nikodemus6449
@nikodemus6449 2 месяца назад
Great content as in your podcast, laid out perfectly, thanks !
@EarthlyTech
@EarthlyTech 2 месяца назад
Great to hear!
@ninthsun
@ninthsun 2 месяца назад
Thanks for awesome video. It was super helpful :D
@EarthlyTech
@EarthlyTech 2 месяца назад
Glad it was helpful!
@felixman9691
@felixman9691 2 месяца назад
Lol that’s not you in the thumbnail. Why haha
@EarthlyTech
@EarthlyTech 2 месяца назад
Surprise! It's terence tao
@ArcWeltraumpert
@ArcWeltraumpert 2 месяца назад
awkwkwkwkwkwk means hahahahah in Indonesian language
@Linux.Learner
@Linux.Learner 2 месяца назад
FANTASTIC...
@EarthlyTech
@EarthlyTech 2 месяца назад
Thanks for watching
@Geza_Molnar_
@Geza_Molnar_ 3 месяца назад
👍👍👍👍👍
@ade5324
@ade5324 3 месяца назад
so i guess, compared to using chroot , the only beneficial abstraction docker provides is layers. docker doesn't provide features like namespaces, cgroups, its already present in the linux kernel.
@EarthlyTech
@EarthlyTech 2 месяца назад
No Docker doesn't provide namespaces or cgroups. But it brings them together with pivotroot and layers and etc into a hopefully cohesive package.
@ade5324
@ade5324 2 месяца назад
@@EarthlyTechbruh that what i said, man
@jeffg4686
@jeffg4686 3 месяца назад
Nice. I like the choice of toml - aligns with Rust - my other language.
@209_Violate
@209_Violate 3 месяца назад
youtube needs more examples to connect theory with pragmatism like yours. thanks for sharing, i love your teaching style.
@EarthlyTech
@EarthlyTech 2 месяца назад
Glad you think so!
@aldrickdev
@aldrickdev 3 месяца назад
hey this is a great introduction to Earthly, are their any plans to make more example videos?
@EarthlyTech
@EarthlyTech 2 месяца назад
We have some Earthly Show and Tell videos. They are more walk throughs then tutorials though.
@mumk
@mumk 3 месяца назад
Use Nix instead
@windowsrefund
@windowsrefund 2 месяца назад
How?
@stephenday4834
@stephenday4834 3 месяца назад
Clearly explained. I expected jq to be harder honestly. It's such an amazingly useful tool.
@EarthlyTech
@EarthlyTech 3 месяца назад
Great to hear!
@chickenduckhappy
@chickenduckhappy 3 месяца назад
I'll show you how to sleep comfortably on a stone bed. If you're coming from other styles of appartments or hotels, you will maybe be surprised by the first impression of a stone bed. But I'll show you how to adapt and learn to enjoy sleeping in this new way that some people first feel uncomfortable with due to unfamiliarity with how the extremely cold and hard surface feels.
@EarthlyTech
@EarthlyTech 3 месяца назад
😂
@JevKuznetsov
@JevKuznetsov 3 месяца назад
To go one step further - devcontainers are an even better solution. Build once - reproduce on any system.
@EarthlyTech
@EarthlyTech 3 месяца назад
Do you use the dev container support in VS Code? I find that is pretty nice.
@user-ix5qn5vx5f
@user-ix5qn5vx5f 3 месяца назад
thank you for the video! that was very helpful
@EarthlyTech
@EarthlyTech 3 месяца назад
You're welcome!
@duongphuhiep
@duongphuhiep 3 месяца назад
what bothering me is not the verbosity of "if err != nil", rather the fact that: (1) "Hidding error and continue running is the nature of Go codes" at least it is the default behavior when you "forgot" to handle error... On the other side, the "Exception paradigm" of Java, C# makes your codes crash if you "forgot" to handle the "exception" other function is throwing. (2) The "if err != nil" of Go is "contaminating" the same way as the "async await". It means that if you "forgot" only one line of "if err != nil" in the chain, then the worst case is that others "if err != nil" (in the chain) might be wasted. The longer the codes continue to run with the hidden error until the day it finally crashed, the harder to track down the root cause. Fortunately this worst case is not that common IME. Moreover, the golangci-lint gives you a big "errchecked" warning. Personally, I don't let any of these warnings appeared in my codes. Evens in case I wanted to skip / ignore an error, I'd still "if err != nil" to log the error (in debug level) along with a justification message explaining why I ignored the error (and so continued the happy path) I wish that Go team would inspire the same approach as Rust for error handling. Rust errors are Value the same way as Go, but the Result<T,E> of Rust beautifuly "forced" developers to handle error: In order to Get the result T you have to handle the "E" one way or other: in a "match" statement or by a simple unwrap() function to get the T which will panic the E... Unfortunately, It might be too late now for Go to take the same approach as Rust because Go has to keep backward compatibility with the current "if err != nil" way of errors handling.
@andrewdunbar828
@andrewdunbar828 3 месяца назад
For me almost nothing goes as you show. Possibly because I started my C project in Xcode but then went on to mostly use it in VScode but the Xcode project having an extra level seems to make everything unintuitive and frustrating and I just had to give up. For instance I had no pencil icon next to Configuration, Build target, and launch target. I finally figured out it was because my makefile isn't in <project>/makefile but in <project>/<project>/makefile because that's how Xcode sets up a project and that's where my main.c was. But even then I can't set Configuration. I click on the pencil and choose Default but configuration still says [Unset].
@EarthlyTech
@EarthlyTech 3 месяца назад
oh no. Perhaps file a big on the extension and they may address this.
@arunaruljothi9890
@arunaruljothi9890 4 месяца назад
Pretty cool project. Would it make sense to run these containers inside a VM (like UTM) so we can mimic control groups/namespaces?
@EarthlyTech
@EarthlyTech 3 месяца назад
Good question. I'm not familiar with UTM to be honest. But yes, a downside of this approach is that you don't have the features and restrictions control groups and namespaces bring.
@rogerscubadiver
@rogerscubadiver 4 месяца назад
Very nice and detail dive into containers
@EarthlyTech
@EarthlyTech 3 месяца назад
Thank you so much 😊
@bennguyen1313
@bennguyen1313 4 месяца назад
I've read of people using Makefile "shim", to automate running make format, make docs, make tests.. never heard of shim.. I've only seen: "Make uses Makefiles to make C." "CMake uses CMakeLists to make Makefiles to make Make make C." Also, with so many compiler/frontend options.. gcc/mingw vs llvm/clang/Zig, Intel's EDG/ICC , to go along with building cmake vs meson, maven , gradle , bazel.. that it all gets a bit overwhelming! Would be nice to learn one system/tools that will work on a TI-86 calculator, to WIndows XP Mac/Linux, and Android! Maybe the only way is to maintain different docker containers or VMs with the environment for the desired target (and avoid cross-compilation)?
@chezchezchezchez
@chezchezchezchez 4 месяца назад
In 2024…. Awk is 47 years old!!! Exciting old program!
@EarthlyTech
@EarthlyTech 3 месяца назад
Still going strong!
@eugeneL_N1E104
@eugeneL_N1E104 4 месяца назад
as to future potential topics, python typing looks not very clear when I write class methods for non-builtin classes. also wondering since which python3.* does this typing has really performance improvements (or "dev acceleration" as IDE use them)
@AllanKobelansky
@AllanKobelansky 5 месяцев назад
So many of these gems are unknown to the point-and-click world. Consider reading the Unix Man pages titled “Text Processing Utilities”. Therein you’ll find, awk, cut, split, join, … and so on. Nice tutorial.
@EarthlyTech
@EarthlyTech 5 месяцев назад
Thanks for watching. Great tip!
@EarthlyTech
@EarthlyTech 5 месяцев назад
Thanks to Dr Alex for the demo of his work. files shown: github.com/terraphim/terraphim-firecracker/blob/main/Earthfile github.com/terraphim/terraphim-ai/blob/main/terraphim_firecracker/atomic-server-infra/Earthfile
@Sdirimohamedsalah
@Sdirimohamedsalah 5 месяцев назад
Thank you for providing the source code . I’m curious to see if it’s create it own names space
@hashkeeper
@hashkeeper 5 месяцев назад
cool examples too, you could write some really cool code that organizes issue tracking, pull requests, commits ect from github on your own console of choice daaang
@EarthlyTech
@EarthlyTech 5 месяцев назад
yeah, you could build your own TUI to GitHub. Might be a fun project.
@hashkeeper
@hashkeeper 4 месяца назад
@@EarthlyTech any project like that would be a great project for new job seekers looking for a foot in the door too. I keep returning to this tutorial, thanks. its a full scale explanation of jqs foundations, really really helpful.
@alexv2401
@alexv2401 5 месяцев назад
Thank you for your content. Your contributions to the RU-vid Python Hive mind do not go unnoticed. Sincerely, A passionate Pythonista
@EarthlyTech
@EarthlyTech 5 месяцев назад
Wow, thank you
@sepheiba
@sepheiba 5 месяцев назад
Great news, hopefully I can use Podman natively on macOS soon
@EarthlyTech
@EarthlyTech 5 месяцев назад
Best of luck!