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.
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
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.
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.
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.
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.
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.
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
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.
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.
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.
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.
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".
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.
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.
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.
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.
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].
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.
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)?
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)
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.
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
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 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.