The First Look at Netflix’s Live-Action Gundam Movie Is Here and Is Wild

https://i.kinja-img.com/gawker-media/image/upload/c_fill,f_auto,fl_progressive,g_center,h_675,pg_1,q_80,w_1200/500dd1ed958ca3ec4c3b1d977918acea.jpg

A giant Gundam robot strolls through fire.
Image: Sunrise/Netflix

It’s been more than three years since Legendary Pictures and Sunrise announced they would collaborate on a live-action movie based on the venerable franchise Mobile Suit Gundam, the giant robot anime whose shadow all others stand in. Today, we have our first look at Netflix’s film—a sole piece of concept art—and it’s probably not what you were expecting.

Yeah, the image up top of a Gundam walking away from a massive conflagration of fire like basically every action star ever? That’s it, which comes courtesy of the VFX whizzes at Industrial Light and Magic.

We knew that the film would be directed by Kong: Skull Island’s Jordan Vogt-Roberts, who’s also currently on board to direct the live-action movie adaptation of the Metal Gear Solid video game. The movie is being produced by Legendary Pictures, which made Skull Island and the recent spate of Godzilla films, so the studio is doing big business with films starring giants of various types. Even better, the script is by Brian K. Vaughan, who’s written the incredible Saga comic among many others. Basically, there’s every reason to believe Gundam’s (second) foray into live-action will be very, very good.

But boy, that giant robot sure looks like Nic Cage walking away from an explosion, or at least one of the countless action stars who have badassedly walked away from any scene of massive destruction happening right behind them. It’s weird because it does seem to be somewhat celebrating how awesome war is, when the original Mobile Suit Gundam is so focused on the trauma war inflicts on people, especially Amuro Ray, the teenager who inadvertently becomes the Gundam’s pilot and gets swept up in the war between Earth and the space-bound Principality of Zeon. Still, it’s only a single image, and that image looks very good. If it seems a bit off-brand for the very first look, whatever. Since Netflix’s live-action Gundam movie still has no release date, we clearly have plenty of time to see more.


Wondering where our RSS feed went? You can pick the new up one here. 

G/O Media may get a commission

All colors on sale today
Gizmodo describes these premium headphones as “annoyingly incredible.” This is the lowest we’ve seen the Apple AirPods Max yet.

Gizmodo

How Stetson Cowboy Hats Are Made

https://theawesomer.com/photos/2021/11/how_stetson_hats_are_made_t.jpg

How Stetson Cowboy Hats Are Made

Link

Stetson has made some of the best and most desirable hats since the 1800s. Their cowboy hats are beloved, though some can cost up to $5000. Business Insider provides a look at Stetson hat factory to see what makes these hats so special. One big difference is that the produce their own felt in-house.

The Awesomer

Explosive Admission at Rittenhouse Trial – Video

https://www.ammoland.com/wp-content/uploads/2021/11/Facepalm-by-prosecutor-Krautz-after-Grosskruetz-says-he-was-pointing-gun-at-Rittenhouse-when-he-is-shot-1000-500×368.jpg

U.S.A.-(AmmoLand.com)- On day six of the Kyle Rittenhouse trial in Kenosha, Wisconsin, November 8, 2021, the court video captured a particularly dramatic moment.

Gaige Grosskreutz has given testimony as a prosecution witness. He is being cross-examined by Corey Chirafisi, a defense attorney. It occurs about 2 hours and 27 minutes into this trial video on November 8, 2021. Over the next few minutes, there is this exchange:

Defense attorney Corey Chirafisi:

So, your hands are up, and at that point he (Rittenhouse) has not fired. Correct?

Gaige Grosskreutz:

No he has not.

Defense attorney Corey Chirafisi:

Do you agree at this point, you are dropping your hands, you are loading up your left foot, and you are moving toward Mr. Rittenhouse, at that point, True?

Gaige Grosskreutz:

Yes. 

Defense attorney Corey Chirafisi:

So, When you were shot; Can you bring up the photo? Do you agree, and now wait, how close were you, in the… How close were you, from the background.

Gaige Grosskreutz:

Three feet. If I was five feet before, so

Defense attorney Corey Chirafisi:

At this point, you are holding a loaded chambered Glock 27 in your right hand, Yes?

Gaige Grosskreutz:

That is correct, yes.

Defense attorney Corey Chirafisi:

You are advancing on Mr. Rittenhouse, who is seated on his butt, right?

Gaige Grosskreutz:

That is correct.

Defense attorney Corey Chirafisi:

 You are moving forward and your right hand drops down so your gun, your hands are no longer up, your hand has dropped down and now your gun is pointed in the direction, at Mr. Rittenhouse, agreed?  I will give you another  (exhibit?), and maybe that will help.

Defense attorney Corey Chirafisi:

So Mr. Grosskruetz, I am going to show you what has has been marked as exhibit #67.

exhibit #67 from Rittenhouse Trial

That is a photo of you, Yes?

Gaige Grosskreutz:

Yes.

Defense attorney Corey Chirafisi:

That is Mr. Rittenhouse?

Gaige Grosskreutz:

Correct.

Defense attorney Corey Chirafisi:

Do you agree your firearm is pointed at Mr. Rittenhouse? Correct?

Gaige Grosskreutz:

 Yes.

Defense attorney Corey Chirafisi:

 Ok. And, Once your firearm is pointed at Mr. Rittenhouse, that’s when he fires, Yes?

Gaige Grosskreutz:

Yeah.

Defense attorney Corey Chirafisi:

Does this look like right when he was firing the shot?  (#67, moment of Rittenhouse’s shot)

Gaige Grosskreutz:

That looks like my bicept being vaporized, yes.

Defense attorney Corey Chirafisi:

And it was vaporized at the time you are pointing your gun directly at him?

Gaige Grosskreutz:

Yes.

Defense attorney Corey Chirafisi:

When you were standing 3-5 feet from him, with your arms up in the air, he never fired? Right?

Gaige Grosskruetz:

Correct.

Defense attorney Corey Chirafisi:

It wasn’t until you pointed your gun at him, advanced on him,  with your gun, now your hand is down, pointed at him, that he fired? Right?

Gaige Grosskreutz:

Correct. 

The camera is pointed at Gaige Grosskreutz, We cannot see the prosecutor’s table. The camera then shows Kyle Rittenhouse for a few seconds. Then it shows the prosecutor’s table.  A dramatic image is captured, which will probably become an iconic graphic of images you do not want to present at court.

Prosecutor’s table, Kraus, left, Binger with glasses, right

Of interest, Gaige Grosskreutz showed significant function in his right arm and hand. He was able to hold and raise a water bottle, and the microphone easily, with considerable fine motor control in his fingers.

Becky Sullivan, National Public Radio (NPR) reporter and producer, who misreported information about a critical juncture of the shooting of Joseph Rosenbaum, in the Rittenhouse trial, had this take on the Gaige Grosskreutz testimony. From NPR:

 |  WBOI-FM

Updated November 8, 2021 at 3:27 PM ET

Gaige Grosskreutz, the only person who survived being shot by Kyle Rittenhouse last year at a chaotic demonstration in Kenosha, Wis., took the stand in a pivotal moment in Rittenhouse’s homicide trial. In three hours of dramatic testimony Monday, Grosskreutz, 27, acknowledged that he was armed with a pistol on the evening of Aug. 25, 2020, but said that his hands were raised when Rittenhouse raised his rifle at him and that he feared for his life.

Ms. Sullivan failed to mention Gaige Grosskreutz testified he was pointing his pistol at Kyle Rittenhouse when Kyle shot him.

The trial has had another day, where the prosecution witnesses appear to be defense witnesses.


Complete Live Trial Video:


About Dean Weingarten:

Dean Weingarten has been a peace officer, a military officer, was on the University of Wisconsin Pistol Team for four years, and was first certified to teach firearms safety in 1973. He taught the Arizona concealed carry course for fifteen years until the goal of Constitutional Carry was attained. He has degrees in meteorology and mining engineering and retired from the Department of Defense after a 30-year career in Army Research, Development, Testing, and Evaluation.

Dean Weingarten

AmmoLand.com

The Final Ghostbusters: Afterlife Trailer Ain’t Afraid of No Spoilers

https://i.kinja-img.com/gawker-media/image/upload/c_fill,f_auto,fl_progressive,g_center,h_675,pg_1,q_80,w_1200/b51c94948a959bb1e7201b72f83226f2.jpg

Screenshot: Sony Pictures

io9’s seen Ghostbusters: Afterlife, and our own movie maven Germain Lussier called it “great until it’s derailed by gratuitous fan service” in his spoiler-free review. But if you’d like to know exactly what he was talking about, Sony Pictures has very helpfully released a final trailer for the film which makes it abundantly clear what the fan service is.

Seriously, the trailer deserves a spoiler bar merely on principle.

The most obvious reveal (glimpsed in an earlier trailer) is the two Terror Dogs from the first Ghostbusters movie. Fans of the original 1984 film will recognize them as the demons who possessed Dana Barrett (played by Sigourney Weaver) and Louis Tully (Rick Moranis) and transformed them into Zuul the Gatekeeper and Vinz Clortho the Keymaster, respectively, the two heralds of the ancient Sumerian god of destruction Gozer (Slavitza Jovan). You shouldn’t need the arrival of the original three surviving Ghostbusters there at the end (which Sony very annoyingly plays coy by not showing their faces, as if we somehow wouldn’t know who they are) to figure out what the film’s climax is going to be. But if you do, don’t worry because this trailer also spoils this at the 0:43 mark by revealing a rather familiar sleeve and hairdo emerging from the depths.

I’m honestly less upset at the spoilers than I am by discovering the movie is just going to replicate the end of the original Ghostbusters rather than do anything new—yet another film made for nostalgic 40-somethings. To be fair, many people have enjoyed Afterlife’s fixation on nostalgia over creativity, but I hope any kids who end up watching the movie end up being able to understand it, let alone enjoy it.

Speaking of nostalgia, Ghostbusters: Afterlife stars Bill Murray, Dan Aykroyd, Ernie Hudson, Annie Potts, and Sigourney Weaver, all reprising their roles from the first two films, and if Weaver turns into a Terror Dog again and then Rick Moranis shows up as Tully to become the other one I’ll plotz. The new stars include Mckenna Grace, Finn Wolfhard, Carrie Coon, Paul Rudd, and more. Afterlife premieres in theaters on November 19.

G/O Media may get a commission

All colors on sale today
Gizmodo describes these premium headphones as “annoyingly incredible.” This is the lowest we’ve seen the Apple AirPods Max yet.

Also, not as a complaint, but as a side note: Who would read the Book of Revelation with less gravitas than Dan Aykroyd? Please discuss.


Wondering where our RSS feed went? You can pick the new up one here. 

Gizmodo

The New Rock Island Armory TM22 Rimfire Comes Loaded with Features, AR Styling

https://cdn.athlonoutdoors.com/wp-content/uploads/sites/8/2021/06/Rock-Island-STK100.jpg

While AR-type rifle remains white hot in popularity, the venerable .22 LR remains America’s most useful, economical round. From small game to target practice, to competition and even defense, the timeless .22 LR does it all. Now the Rock Island Armory TM22 offers a brand new take on the rimfire sporter.

The Rock Island STK100 features an aluminum grip for better shooting.

RELATED STORY

Rock Island STK100: Striker-Fired, 9mm Pistol has an Aluminum Grip

Rock Island Armory TM22 Rifle Series

Rock Island bills the TM22 as a “new age rifle.” The company claims it comprises a new standard, bringing classical attributes demanded in a semi-auto rimfire.

The entire rifle utilizes 7075 aircraft-grade aluminum from end to end. Leaning on the AR aftermarket industry, the grip utilizes common AR-15 style. The TM22 comes with a commercial buffer tube adapter, top rail and forend that accepts a host of standard aftermarket accessories via M-LOK compatibility.

The TM22 also comes with ambidextrous controls. It comes setup for right-hand use, but controls convert to left-hand for greater utility. Available in two different versions–20-inch or 18-inch barrel–the rimfire ships with two, 10-round magazines. For those really wanting to sling lead, they can pick up aftermarket 15- and 25-round mags as well.

Finally, the TM22 incorporates a trigger exhibiting a 2-pound break. Few platforms provide as much utility or fun as a well-crafted .22 LR. Loaded with features and AR styling, the new TM22 deserves a look. For even more info, please visit armscor.com.

Rock Island TM22-A-18 Specs

  • Caliber: .22 LR
  • Capacity: 10 Rounds
  • Action: Semi-Auto, Recoil Operated
  • Overall Length: 34 inches
  • Height: 7.68 inches
  • Overall Width: 3 inches
  • Barrel: Rifled
  • Barrel Length: 18 inches
  • Length of Pull: 13 inches
  • Number of Grooves: 6
  • Stock: Fixed Aluminum
  • Grip: AR Type
  • Finish: Black Anodized

Rock Island TM22-A-20 Specs

  • Caliber: .22 LR
  • Capacity: 10 Rounds
  • Action: Semi-Auto, Recoil Operated
  • Overall Length: 36 inches
  • Height: 7.68 inches
  • Overall Width: 3 inches
  • Barrel: Rifled
  • Barrel Length: 20 inches
  • Length of Pull: 13 inches
  • Number of Grooves: 6
  • Stock: Fixed Aluminun
  • Grip: AR Type
  • Finish: Black Anodized

The post The New Rock Island Armory TM22 Rimfire Comes Loaded with Features, AR Styling appeared first on Tactical Life Gun Magazine: Gun News and Gun Reviews.

Tactical Life Gun Magazine: Gun News and Gun Reviews

The Visitor Pattern in PHP

https://doeken.org/assets/img/visitor-pattern.jpg

The Visitor Pattern isn’t used often. This is because there are few situations in which it is applicable or even makes sense. However, it’s a nice pattern to know and to have in your tool belt when the time comes. Let’s look at how this pattern can be applied in a PHP environment.

🛑 The problem

Like a few other patterns, the Visitor Pattern tries to solve the problem of adding functionality to an entity without changing it (much…). In addition to this very generic problem, it provides a way of adding the functionality to multiple similar entities, which can’t be completely handled in the same way.

So let’s make the problem a bit more practical. Imagine you have two entities: Book and Document. And for both of these entities we want to know how many pages there are. Our Document has a public function getPageCount(): int which returns the number of pages, while the Book consists of an array of Chapter entities, which also have this function.

class Document

{

public function __construct(private int $page_count) {}

 

public function getPageCount(): int

{

return $this->page_count;

}

}

 

class Chapter extends Document

{

// Chapter specific code

}

 

class Book

{

public function getChapters(): array

{

return [

new Chapter(5),

new Chapter(7),

new Chapter(2),

];

}

}

To streamline the process of returning the page count for either of these entity types, we create a PageCountDumper. A (somewhat naive) implementation of this could look like this:

class PageCountDumper

{

public function handle($entity)

{

if ($entity instanceof Document) {

var_dump($entity->getPageCount());

} elseif ($entity instanceof Book) {

$count = 0;

 

foreach ($entity->getChapters() as $chapter) {

$count += $chapter->getPageCount();

}

 

var_dump($count);

} else {

throw new \InvalidArgumentException('PaperCalculator can not handle the provided type.');

}

}

}

And we can call it like this:

$document = new Document(20);

$book = new Book();

 

$dumper = new PageCountDumper();

 

$dumper->handle($document); // int(20)

$dumper->handle($book); // int(14)

This PageCountDumper has a handle() function that can handle both the Book and the Document entity, and will var_dump the proper page count for both. There are however a few things that stand out:

  • Because there is no shared interface or abstraction between Document and Book, the handle() function receives a mixed $entity and contains the logic for either situation. When adding on more entities, this type checking will pile on and can become quite cumbersome and unreadable.
  • We throw an exception when the entity type is unknown to avoid improper use.

We can do better!

👋 The Visitor Pattern Solution

So the Visitor Pattern provides a solution for this particular problem. It will remove the need for the instanceOf type checks, while keeping the reference to the entity type intact. And it will remove the need to explicitly throw an exception. Let’s see how the Visitor pattern tackles these issues.

Entity specific functions

First off, to remove the instanceOf checks, it requires a method for every possible entity type. For convention’s sake, we’ll call these methods: visitBook(Book $book) and visitDocument(Document $document). And because we are creating a Visitor let’s rename the calculator to: PageCountVisitor.

class PageCountVisitor

{

public function visitBook(Book $book)

{

$count = 0;

 

foreach ($book->getChapters() as $chapter) {

$count += $chapter->getPageCount();

}

 

var_dump($count);

}

 

public function visitDocument(Document $document)

{

var_dump($document->getPageCount());

}

}

By implementing separate methods, with type-hinted arguments, we’ve removed the need for the instanceOf checks. And because we can only call these methods with the appropriate type, there is no need to throw an exception. PHP would already do so when we provide an invalid argument.

If there is another entity in the future that needs its pages to be counted, let’s say a Report, we can add a pubilc function visitReport(Report $report) and implement that logic separately.

But, you might be thinking: This isn’t better. I still need to know what type my entity is in order to call the correct method!. And you would be correct. But hold on, this refactoring is only half of the visitor pattern.

Accepting a visitor

Remember when I said the entities the visitor works on should not be changed much? Yeah, well; there is one change that is needed on every entity to make the Visitor Pattern work. But only one, and this will make it accept any visitor, and therefore add any (future) functionality.

To avoid the instanceOf check, there is only one context in which we can be sure the entity is of a certain type: within the entity itself. Only when we are inside a (non-static) method of a class, we know for certain that $this is an instance of that type. That is why the Visitor Pattern uses a technique called Double Dispatch, in which the entity calls the correct function on the visitor, while providing itself as the argument.

To implement this double dispatch we need a generic method that receives the visitor, and relays the call to the correct method on the visitor. By convention this method is called: accept(). This method will receive the visitor as its argument. In order to accept other visitors in the future, we first extract a VisitorInterface.

interface VisitorInterface

{

public function visitBook(Book $book);

 

public function visitDocument(Document $document);

}

 

class PageCountVisitor implements VisitorInterface

{

// Make sure the visitor implements the interface

}

Then we create a VisitableInterface and apply it on Book and Document.

interface VisitableInterface

{

public function accept(VisitorInterface $visitor);

}

 

class Book implements VisitableInterface

{

// ...

public function accept(VisitorInterface $visitor)

{

$visitor->visitBook($this);

}

}

 

class Document implements VisitableInterface

{

// ...

public function accept(VisitorInterface $visitor)

{

$visitor->visitDocument($this);

}

}

Here you can see the double dispatch in action. The Book class calls the visitBook() method on the visitor and Document calls visitDocument(). Both are providing themselves as the parameter. Because of this minor change to the entity we can now apply all kinds of different visitors that provide a certain functionality for every entity.

To use the visitor on the entities we need to adjust our calling code like this:

$document = new Document(20);

$book = new Book();

 

$visitor = new PageCountVisitor();

 

$document->accept($visitor); // int(20)

$book->accept($visitor); // int(14)

With all the pieces now in place, we are free to create more visitors that implement the VisitorInterface and can perform a certain feature for both Book and Document. A WordCountVisitor for example.

Pros & cons

Like many other patterns, the Visitor Pattern isn’t the one pattern to rule them all. There are multiple solutions to different problems. The Visitor Pattern is just that; a possible solution to a specific problem. Let’s look at some reasons you might use it, and some reasons you might not.

✔️ Pros

  • You can add functionality to any entity by implementing the VisitableInterface once. This makes the entity more extendable.
  • By adding visitors the functionality you enforce separation of concern.
  • The entity is in control whether the visitor is accepted. You can omit the relay and cut the double dispatch.
  • The individual visitors are easier to test.

❌ Cons

  • The double dispatch can be confusing and make the code harder to understand.
  • The accept() and visit...() methods usually don’t return anything, so you need to keep records on the visitor itself.
  • All Visitors need every method on the VisitorInterface while it might not have an implementation for it.

Real world examples

Realistically, you aren’t likely to find this pattern much in the wild. However, it is a common practice in combination with Trees and Tree Traversal.

If you are unfamiliar with Trees & Tree Traversal, you can check out my previous blog on that.

When traversing a Tree, you are iterating over a continuous stream of Nodes. We can perform an action for every node in that Tree. This is called visiting… coincidence? These nodes are usually just an entity holding a value. Instead of adding a bunch of methods to these nodes; it’s actually a nice way of adding different features to these otherwise dumb entities.

Some tree implementations I’ve seen actually have A PreOderVisitor and a PostOrderVisistor. These will then return an array of nodes in that order. While that is a perfectly acceptable visitor, I believe a Visitor should not dictate the order in which it is applied to the tree. For some features it might not even matter what the traversal order is, while in some cases it might.

In my Trees & Tree Traversal post I gave the example of a document inside a tree structure. When traversing that tree in PreOrder you get a logical flow of the document; starting at the cover page. Some visitors we might want to build for that tree are:

  • RenderPdfVisitor which could render every node as a PDF file.
  • TableOfContentsVisitor which could create a table of contents with the correct page numbering.
  • CombinePdfVisitor which could combine every previously rendered PDF into a single PDF document.

And basically every example from that blog post can be build as a visitor.

Thanks for reading

Like I said, the Visitor Pattern isn’t very common, but it’s nice to have up your sleeve. Do you have any experience with this pattern? Please let me know in the comments. I’m curious to hear what you think of it.

I hope you enjoyed reading this article! If so, please leave a 👍 reaction or a 💬 comment and consider subscribing to my newsletter! I write posts on PHP almost every week. You can also follow me on 🐦 twitter for more content and the occasional tip.

Laravel News Links