https://s.yimg.com/os/creatr-uploaded-images/2021-03/d3b0ca20-7d26-11eb-bfbd-3af2156b896dToday, the US Supreme Court ruled 6-2 in favor of Google in the company’s long-running legal battle against Oracle.Engadget
Soviet TV Version of Lord of the Rings Rediscovered After 30 Years
A Soviet television adaptation of The Lord of the Rings thought to have been lost to time was rediscovered and posted on YouTube last week, delighting Russian-language fans of JRR Tolkien. From a report: The 1991 made-for-TV film, Khraniteli, based on Tolkien’s The Fellowship of the Ring, is the only adaptation of his Lord of the Rings trilogy believed to have been made in the Soviet Union. Aired 10 years before the release of the first instalment of Peter Jackson’s movie trilogy, the low-budget film appears ripped from another age: the costumes and sets are rudimentary, the special effects are ludicrous, and many of the scenes look more like a theatre production than a feature-length film. The score, composed by Andrei Romanov of the rock band Akvarium, also lends a distinctly Soviet ambience to the production, which was reportedly aired just once on television before disappearing into the archives of Leningrad Television. Few knew about its existence until Leningrad Television’s successor, 5TV, abruptly posted the film to YouTube last week [part one | part two], where it has gained almost 400,000 views within several days.
Read more of this story at Slashdot.
Slashdot
30-year-old Soviet TV adaptation of The Lord of the Rings surfaces on YouTube
https://cdn.arstechnica.net/wp-content/uploads/2021/04/Fellowship-980×565.png
-
The Council of Elrond discusses the fate of the One Ring.
-
Gollum hams it up in a cave.
-
Unlike the Peter Jackson film, the mysterious Tom Bombadil plays a pivotal role in this interpretation.
-
Frodo and Aragorn are ready for battle.
-
Gandalf battles his enemies. It’s impossible to capture how wild the battle scenes are with a still image; you’ll have to watch for yourself.
-
Boromir monologues into the camera.
-
A narrator smokes a pipe as he frames the story.
After 30 years, a TV adaptation of J.R.R. Tolkien’s The Lord of the Rings long thought lost has resurfaced. The 1991 Soviet television adaptation has been uploaded to YouTube, in two one-hour videos.
The film focuses on the events of the first book in the trilogy, The Fellowship of the Ring, and features many elements that were excluded from the popular global theatrical release by director Peter Jackson, including an extended sequence featuring the character Tom Bombadil—one of the biggest omissions by the bigger-budget 2001 film far more of us have seen.
Originally broadcast on TV in 1991 (and then never aired again), the film was thought lost to time by those who had seen it. But as
in The Guardian, Leningrad Television successor Channel 5 uploaded the film to its YouTube page with little fanfare, surprising fans who had given up on seeing the production again. It is believed to be the only adaptation of these books produced in the Soviet Union.
For better or for worse, the primitive special effects and low budget are very apparent—moreso than in many other B movies of the time you may have seen. Grainy characters’ arms are cropped out in the middle of the frame as they are set against fuzzy fake backgrounds. And the film employs a visual language that is altogether alien to modern cinema, with sets and costumes that look more at home in a low-budget theatrical production and characters who gaze into the camera directly when they speak with eerie commitment.
In other words, an Andrei Tarkovsky masterwork it is not. But the nostalgia is strong, in particular thanks to the soundtrack by Andrei Romanov, who performed with the popular Russian rock group Akvarium.
Titled Khraniteli (“Keepers”), the film is believed to be based on a Russian-language translation of Tolkien’s work by Vladimir Muravyov and Andrey Kistyakovsky, and it is of course in Russian. But if you don’t speak Russian, fret not: YouTube’s autogenerated English closed captioning is adequate enough to give you the gist of what’s happening.
Part 1
Part 2
Listing image by 5TV
Ars Technica
Chris Schwarz’ Latest Woodworking Workbench Book is FREE (PDF)
https://i1.wp.com/toolguyd.com/blog/wp-content/uploads/2021/04/Chris-Schwarz-Anarchist-Workbench-Book-Hero-Woodworking-Table-Image.jpg?resize=600%2C409&ssl=1
Christopher Schwarz is well-known in the woodworking industry, from his articles at Popular Woodworking, to his Lost Art Press publishing company.
You might have seen some of his books before, such as his book on workbench design, theory, construction, and use, which is available via Amazon.
I wrote about some of Schwarz’ “Anarchist” books before, and they’re quite good. They’re unlike any other woodworking or how-to books I’ve ever read before, and are somehow as conversational as they are informative.
Schwarz came out with a new book last year – The Anarchist’s Workbench. It seems I missed this news, as I only first learned of this book last night.
He describes The Anarchists’ Workbench as:
a detailed plan for a simple workbench that can be built using construction lumber and basic woodworking tools. But it’s also the story of Christopher Schwarz’s 20-year journey researching, building and refining historical workbenches until there was nothing left to improve.
There are two versions of The Anarchist’s Workbench – a hardcover copy, priced at $27, and a digital copy that Lost Art Press is giving away for free. That’s right, free, as in $0, and without any DRM or catches of any kind.
Why would Schwarz give this book away for free? In a blog post, he says that 1) he could afford to, 2) some people might hesitantly believe this new book too closely resembles his previous books, and so the free copy can serve as a sort of preview for them, and lastly:
Finally, I want this information – my last book on benches – to be free and widely available to everyone today and in the future. By putting it out there for free, I hope people will be inspired to build a bench, even if it’s not the bench in this book.
I’ve purchased some of the other books published by Lost Art Press, by the same and different authors, and they are very well-made. Even with a free PDF copy, I might eventually buy a hard copy (once I’m done with my currently very long reading list), and I imagine others will to.
I’ve read through some parts of The Anarchist’s Workbench already, and it’s an enjoyable book.
In this book, Schwarz discusses the how and why behind his design for a woodworking workbench sourced from home center lumber, and he also shares details about the personal and woodworking journey that has brought him here.
What is always refreshing about Schwarz’s writings these days is that he isn’t shackled by popular opinion, or the need to stay within anyone else’s lines.
This is a good book, and if it’s not quite your style, keep it in mind. Personally, I’m leaning towards a woodworking workbench direction I never would have thought I’d go in, and so never say never. If you like what you read, consider buying a physical copy.
Hardcover Book
Price: $25-27
Buy Now via Lee Valley
Buy Now via Lost Art Press
Where are the books made?
All of our books are printed in the United States on the best materials we can obtain. We manufacture all of our books to last at least a century. That means using expensive sewn bindings, fiber tape and thick hardbacks (when possible).
Digital Copy
Price: FREE
Related Posts:
ToolGuyd
Treadmill Demolition Derby
https://theawesomer.com/photos/2021/04/treadmill_demolition_derby_t.jpg
“This is gonna be a quick race, folks.” YouTuber Steve Wilkins and his young sidekicks Tyler and Dylan have been posting a series of videos in which he races toy cars on his treadmill. In this clip, they put 100 cars on the belt, then cranked up the speed, resulting in a chaotic start that quickly culls the field.
The Awesomer
Who did it better
http://img.youtube.com/vi/IYjjWPvL9j0/0.jpg
A Left leaning US Army General getting a paycheck from CNN:
A Republican United States Senator from South Carolina:
In 1994, there was an Assault Weapons Ban – the evidence indicates that there was really no change at all in crime, because the crooks are going to get a gun!
Today at @PalmettoArmory I fired one of the weapons they are trying to ban. #2A pic.twitter.com/XI985BZ96F
— Lindsey Graham (@LindseyGrahamSC) April 1, 2021
This is why “I was in the [military branch] so I know more about how dangerous these guns are for civilians” is bullshit.
Who did it better
http://img.youtube.com/vi/IYjjWPvL9j0/0.jpg
A Left leaning US Army General getting a paycheck from CNN:
A Republican United States Senator from South Carolina:
In 1994, there was an Assault Weapons Ban – the evidence indicates that there was really no change at all in crime, because the crooks are going to get a gun!
Today at @PalmettoArmory I fired one of the weapons they are trying to ban. #2A pic.twitter.com/XI985BZ96F
— Lindsey Graham (@LindseyGrahamSC) April 1, 2021
This is why “I was in the [military branch] so I know more about how dangerous these guns are for civilians” is bullshit.
Eloquent relationships explained (with examples)
Eloquent relationships explained (with examples)
March 28, 2021
In my opinion, Eloquent is one of the most powerful features of Laravel. It is an API for interacting with your database, and it has a very nice and easy-to-remember syntax. For example:
$post->author->name;
Will give you the name of the post’s author.
This is an example of an Eloquent relationship. Relationships define how your models (tables) are connected. Although most are easy to understand, there are a few more complicated ones.
In this post, I’m going to show how every relationship works.
One to one (has one)
For this example, we have two models: a User
and an Address
. The User
model holds information such as name, email address, and password, and the Address
model holds information like country, state, city, etc.
- A
User
has oneAddress
- An
Address
belongs to aUser
We may have this table structure:
users
id - integer
name - string
email - string
password - string
address
id - integer
country - string
city - string
user_id - integer
You can define these relationships like this:
// app/Models/User.php
public function address()
{
return $this->hasOne(Address::class);
}
Now you can access the user’s address using $user->address->city
.
Note: for this to work, the Address
model should have a user_id
column.
Inverse (belongs to)
If you have an Address
and want to find the corresponding User
, then define this relationship:
// app/Models/Address.php
public function user()
{
return $this->belongsTo(User::class);
}
One to many (has many)
In this example, we have two models: a Post
and a Category
.
- A
Post
belongs to aCategory
- A
Category
has manyPost
s
And we have this table structure:
categories
id - integer
name - string
posts
id - integer
title - string
category_id - integer
We can define this relationship like this:
// app/Models/Category.php
public function posts()
{
return $this->hasMany(Post::class);
}
And you can access all the posts like this:
foreach($category->posts as $post) {
//
}
Note: for this to work, the Post
model should have a category_id
column.
Many to one (belongs to)
In this example, we have two models: a Post
and a Category
.
- A
Post
belongs to aCategory
- A
Category
has manyPost
s
And we have this table structure:
categories
id - integer
name - string
posts
id - integer
title - string
category_id - integer
We can define this relationship like this:
// app/Models/Post.php
public function category()
{
return $this->belongsTo(Category::class);
}
And you can access the Post
‘s category like this:
$post->category->name;
Has many through
This relationship is a bit more difficult. In this example, we have three models: an Author
, a Post
, and a Language
.
- A
Post
belongs to anAuthor
- An
Author
has manyPost
s - An
Author
“belongs” to aLanguage
(speaks a language) - A
Language
has manyAuthor
s
For example, this is our table structure:
languages
id - integer
name - string
authors
id - integer
name - string
language_id - integer
posts
id - integer
title - string
author_id - integer
If we want to get all posts in a specific language, we can define this relationship:
// app/Models/Language.php
public function posts()
{
return $this->hasManyThrough(Post::class, User::class);
}
Now, we can get all posts using:
foreach($language->posts as $post) {
//
}
Inverse
If you now want to get the Language
of a Post
, you can just simply do this:
$post->user->language->name;
Many to many (belongs to many)
In this example, we have two models: a Product
and a Tag
.
- A
Product
has manyTag
s - A
Tag
has manyProduct
s
And we may have this table structure:
products
id - integer
name - string
price - integer
tags
id - integer
name - string
product_tag
product_id - integer
tag_id - integer
Note: in the table structure, we have a third table, product_tag
. This table connects products to tags.
Now we can define the relationships like this:
// app/Models/Product.php
public function tags()
{
return $this->belongsToMany(Tag::class);
}
// app/Models/Tag.php
public function products()
{
return $this->belongsToMany(Product::class);
}
Now we can get all tags/products using:
foreach($product->tags as $tag) {
//
}
foreach($tag->products as $product) {
//
}
In the next post, I’m going to show what polymorphic relationships are and how to use them. Thanks for reading!
Laravel News Links
How Guns Work [Visual Guide]
https://www.pewpewtactical.com/wp-content/uploads/2020/03/Benelli-M2-CZ75-AR-15-3-2048×1365.jpg
A super quick explanation of how guns work.

We’ll begin with the easy definition of what is a gun, different components of the bullet cartridge, some gun actions, and loading mechanisms.
Table of Contents
Loading…
What is a Gun?
At its core, guns are things that launch projectiles of some sort at high speed. The first guns were just tubes with explosives and a projectile…think cannons.

Modern guns have come a long way.
Cartridges
What most people think of as “bullets” are actually “cartridges” that include the bullet, a casing, powder, and a primer.

Of course there’s TONS of different calibers (size of bullets).

The primer is first ignited causing a small explosion, which then burns the rest of the powder, creating lots of pressure that moves the bullet out of the gun.

The bullet is just the projectile that shoots out of a gun, not the entire object.

To get a lot more in-depth…check out our Ammo 101: How Cartridges Work.
And here are cross-sections of a variety of pistol/rifle cartridges. Not to scale with each other.

And some cutaways for the different types of shotgun shells.

For more info:
How Guns Work
Different types of guns have different mechanisms of how to ignite the primer to burn the gunpowder, but there is almost always a rounded metal object called the “firing pin” which strikes the primer and starts the process.

Modern smokeless powders don’t even burn that fast…it’s the pressure of the confined space of the chamber that gives it the oomph to move the bullet down the barrel.
Below you can see that the firing pin is attached to a “hammer” in a revolver.

While in a rifle it could be by itself and held in a “bolt.”

Here’s some of me shooting!
Loading Mechanisms
Most guns will have a mechanism that gets rid of the spent casing and moves in a fresh cartridge.
Some of these include manual actions, using the recoil from the explosion, or using expended gas from the explosion. We’ll go over these in detail in further lessons. But for now, here’s some slow-motion of guns in action.
Additional Learning
Looking for a comprehensive handgun video course that only goes over the most important stuff…with none of the attitude? Check out our very own Gun Noob to Gun Slinger course.

Want some of our gun suggestions?
The post How Guns Work [Visual Guide] appeared first on Pew Pew Tactical.
Pew Pew Tactical
Laravel Deployments using Deployer at no cost
Automating deployments for your Laravel 8 project (or any other version) on your dedicated or shared hosting sounds daunting at first. I have been at that place. For my job board back when I launched it, I started looking at tools that I could use for deployment for free. If you don’t have a budget, or you’re keen on learning how to deploy automatically or you like setting up things yourself, this is a decent option.
Setup
- Ubuntu 20.04
- PHP 8 & PHP FPM
- Laravel 8.x
- Deployer 7 by Anton Medvedev (wonderful open source tool) – we will use the latest beta with support for PHP 8
On your terminal in the Laravel project, install the package (watch out for the latest releases of Deployer)
composer require deployer/deployer"^v7.0.0-beta.16" --dev
Or if you prefer a distribution version
composer require deployer/dist:"^v7.0.0-beta.16" --dev
Once that is done, let’s initiate which will create a deploy.php ideally at the root of the project which we’ll edit
dep init
Most of the
<?php
namespace Deployer;
require 'contrib/rsync.php';
// Include the Laravel & rsync recipes
require 'recipe/laravel.php';
set('application', 'dep-demo'); //for your reference
set('ssh_multiplexing', true); // Speed up deployment
set('rsync_src', function () {
return __DIR__; // If your project isn't in the root, you'll need to change this.
});
// Files you don't want in your production server.
add('rsync', [
'exclude' => [
'.git',
'/storage/',
'/vendor/',
'/node_modules/',
'.github',
'deploy.php',
],
]);
task('php-fpm:restart', function () {
run('service php8.0-fpm restart');
});
// Hosts
host('your_website_or_IP')
->setRemoteUser('your_SSH_user') // SSH user
->setDeployPath('/var/www/website') // Deploy path
->setIdentityFile('~/.ssh/id_rsa'); // Your SSH key
after('deploy:failed', 'deploy:unlock'); // In case your deployment goes wrong
desc('Deploy the application');
task('deploy', [
'deploy:info',
'deploy:prepare',
'deploy:lock',
'deploy:release',
'rsync',
'deploy:secrets',
'deploy:shared',
'deploy:vendors',
'deploy:writable',
'php-fpm:restart',
'artisan:storage:link',
'artisan:view:cache',
'artisan:config:cache',
'artisan:optimize',
'artisan:migrate',
'deploy:symlink',
'deploy:unlock',
'deploy:cleanup',
]);
Deployer 7 has the recipes for most of your common tasks built-in, which is great. You can see the list of available recipes.
Once this is all setup, all you have to do is run and that should be do everything you’ve described
dep deploy
You should see a new folder structure in your host, where it has releases and a release folder. Deployer syncs your code to your server using rsync, runs your tasks and then creates a symlink to point to the release folder which contains your latest code.
So make sure that you point your webserver to /var/www/website/release, restart your webserver, and you should be good to go.
If you’re looking for automating this using GitHub Actions, take a look at this great guide by Atymic – it’s what helped me discover this tool and guided me on the entire process.
Laravel News Links