The New ‘Mandalorian and Grogu’ Teaser Is All About the Journey

https://gizmodo.com/app/uploads/2026/02/mandalorian-grogu-super-bowl-teaser-1280×853.jpg

It may be just four months or so away, but much of The Mandalorian and Grogu, the first Star Wars film since 2019’s The Rise of Skywalker, remains shrouded in mystery. But after we got a very broad teaser that leaned more on Star Wars familiarity than telling us what’s up with our titular heroes, people would’ve expected that our next look at the film would at least give us a little more of an inkling about what’s pulling Din and his ward back into the fight. But don’t expect that just yet.

During the Super Bowl, Lucasfilm released the latest teaser for The Mandalorian and Grogu. Set after the events of the streaming series’ third season, the movie follows up on Din Djarin (Pedro Pascal) and the youngling Grogu after their retirement to Navarro in the wake of the re-liberation of Mandalore, and Din’s newest job working as a freelance agent of the burgeoning New Republic. This teaser, however? It’s still vibes, it’s just this time it’s in the snow.

The new teaser comes after practically months of silence since the initial trailer, a tactic that The Mandalorian is more than familiar with, maintaining an air of secrecy for as much as possible in the run-up to each season’s debut on Disney+. Even as the new film draws even closer, it looks like we’re still going to have to wait and see what makes this film worth heading out to theaters for instead of a fourth season on Disney+.

The Mandalorian and Grogu, which also stars Sigourney Weaver as New Republic officer Colonel Ward, and Jeremy Allen White as Clone Wars character Rotta the Hutt, hits theaters May 22.

Want more io9 news? Check out when to expect the latest Marvel, Star Wars, and Star Trek releases, what’s next for the DC Universe on film and TV, and everything you need to know about the future of Doctor Who.

Gizmodo

Bolt-together Millennium Falcon

https://theawesomer.com/photos/2026/02/3d_printed_bolt_together_millennium_falcon_t.jpg

Bolt-together Millennium Falcon

Most large and complex 3D-printed models require glue for assembly. But Titan3D shows off a Millennium Falcon model that connects using 3D-printed bolts and threaded parts. Titan3D sells the STL files for printing the Falcon as well as a bolt-together Imperial Destroyer and TIE Fighter. We’d love to see a whole series of toys that assemble using this method.

The Awesomer

Imperial Stormtrooper Once Again Finishes Dead Last In Olympic Biathlon

https://media.babylonbee.com/articles/698a2e47511f3698a2e47511f4.jpg

BOLZANO — The Galactic Empire was met with collective disappointment in its first chance at bringing home a medal at the 2026 Milano-Cortina Winter Olympic Games, as an Imperial stormtrooper once again finished dead last in the qualifying round of the men’s biathlon.

While insiders said that the Empire had high hopes for winning multiple events at the games, the opening days left leadership underwhelmed, as for the 13th consecutive Winter Olympics, the Imperial stormtrooper sent to compete in the biathlon put on a miserable performance.

"He didn’t hit a single target," said NBC commentator and former biathlon competitor Chad Salmela. "I know he spent months training for this event on Hoth, but it was almost like he couldn’t see anything at all with that helmet on. He would ski up to the shooting range, get into position with his blaster, and just not come anywhere near the target. It was embarrassing. I’m not sure why the Empire continues to send stormtroopers to compete in the biathlon. They’ve been trying since the 1980 games, but they finish last every time. They can’t hit anything."

Though other events still offered promise, sources close to the Imperial contingent revealed that stormtrooper biathletes regularly draw the ire of Emperor Palpatine. "We usually never see them again after we get back to Coruscant," said one Imperial athlete. "There’s usually a flash of blueish-purple lightning and some screams of agony, and the stormtrooper is gone. It’s a shame, because they’re actually really good at the cross-country skiing part of the event."

At publishing time, the Imperial ski jumping team had been hit with a cheating scandal alleging that the height and distance of their jumps were artificially aided by the Force abilities of Coach Darth Vader.


Coming soon to a Democrat-controlled city near you!

Babylon Bee

Laravel Ingest: A configuration-driven data import framework

https://repository-images.githubusercontent.com/1085312500/6ec13265-eaca-4031-81af-e2b0afc2099d

Laravel Ingest Banner

Latest Version
Total Downloads
Build Status
Documentation
License


Stop writing spaghetti code for imports.

Laravel Ingest is a robust, configuration-driven ETL (Extract, Transform, Load) framework for Laravel. It replaces
fragile, procedural import scripts with elegant, declarative configuration classes.

Whether you are importing 100 rows or 10 million, Laravel Ingest handles the heavy lifting: streaming, chunking,
queueing, validation, relationships, and error reporting.

Most import implementations suffer from the same issues: memory leaks, timeouts, lack of validation, and messy
controllers.

Laravel Ingest solves this by treating imports as a first-class citizen:

  • ♾️ Infinite Scalability: Uses Generators and Queues to process files of any size with flat memory usage.
  • 📝 Declarative Syntax: Define what to import, not how to loop over it.
  • 🧪 Dry Runs: Simulate imports to find validation errors without touching the database.
  • 🔗 Auto-Relations: Automatically resolves BelongsTo and BelongsToMany relationships (e.g., finding IDs by
    names).
  • 🛡️ Robust Error Handling: Tracks every failed row and allows you to download a CSV of only the failures to fix
    and retry.
  • 🔌 API & CLI Ready: Comes with auto-generated API endpoints and Artisan commands.

Full documentation is available at zappzerapp.github.io/laravel-ingest.


composer require zappzerapp/laravel-ingest

# Publish config & migrations
php artisan vendor:publish --provider="LaravelIngest\IngestServiceProvider"

# Create tables
php artisan migrate

Create a class implementing IngestDefinition. This is the only code you need to write.

namespace App\Ingest;

use App\Models\User;
use LaravelIngest\Contracts\IngestDefinition;
use LaravelIngest\IngestConfig;
use LaravelIngest\Enums\SourceType;
use LaravelIngest\Enums\DuplicateStrategy;

class UserImporter implements IngestDefinition
{
    public function getConfig(): IngestConfig
    {
        return IngestConfig::for(User::class)
            ->fromSource(SourceType::UPLOAD)
            ->keyedBy('email') // Identify records by email
            ->onDuplicate(DuplicateStrategy::UPDATE) // Update if exists
            
            // Map CSV columns to DB attributes
            ->map('Full Name', 'name')
            ->map(['E-Mail', 'Email Address'], 'email') // Supports aliases
            
            // Handle Relationships automatically
            ->relate('Role', 'role', Role::class, 'slug', createIfMissing: true)
            
            // Validate rows before processing
            ->validate([
                'email' => 'required|email',
                'Full Name' => 'required|string|min:3'
            ]);
    }
}

In App\Providers\AppServiceProvider:

use LaravelIngest\IngestServiceProvider;

public function register(): void
{
    $this->app->tag([UserImporter::class], IngestServiceProvider::INGEST_DEFINITION_TAG);
}

You can now trigger the import via CLI or API.

Via Artisan (Backend / Cron):

php artisan ingest:run user-importer --file=users.csv

Via API (Frontend / Upload):

curl -X POST \
  -H "Authorization: Bearer <token>" \
  -F "file=@users.csv" \
  https://your-app.com/api/v1/ingest/upload/user-importer

Want to see Laravel Ingest in action? Check out our Laravel Ingest Demo repository for a complete working example.

# Clone the demo
git clone https://github.com/zappzerapp/Laravel-Ingest-Demo.git
cd Laravel-Ingest-Demo

# Start and benchmark
docker compose up -d
docker compose exec app php artisan benchmark:ingest

Ingest runs happen in the background. You can monitor and manage them easily:

Command Description
ingest:list Show all registered importers.
ingest:status {id} Show progress bar, stats, and errors for a run.
ingest:cancel {id} Stop a running import gracefully.
ingest:retry {id} Create a new run containing only the rows that failed previously.

The package automatically exposes endpoints for building UI integrations (e.g., React/Vue progress bars).

  • GET /api/v1/ingest – List recent runs.
  • GET /api/v1/ingest/{id} – Get status and progress.
  • GET /api/v1/ingest/{id}/errors/summary – Get aggregated error stats (e.g., "50x Email invalid").
  • GET /api/v1/ingest/{id}/failed-rows/download – Download a CSV of failed rows to fix & re-upload.

Hook into the lifecycle to send notifications (e.g., Slack) or trigger downstream logic.

  • LaravelIngest\Events\IngestRunStarted
  • LaravelIngest\Events\ChunkProcessed
  • LaravelIngest\Events\RowProcessed
  • LaravelIngest\Events\IngestRunCompleted
  • LaravelIngest\Events\IngestRunFailed

To keep your database clean, logs are prunable. Add this to your scheduler:

$schedule->command('model:prune', [
    '--model' => [LaravelIngest\Models\IngestRow::class],
])->daily();

🧩 Configuration Reference

The IngestConfig fluent API handles complex scenarios with ease.

IngestConfig::for(Product::class)
    // Sources: UPLOAD, FILESYSTEM, URL, FTP, SFTP
    ->fromSource(SourceType::FTP, ['disk' => 'erp', 'path' => 'daily.csv'])
    
    // Performance
    ->setChunkSize(1000)
    ->atomic() // Wrap chunks in transactions
    
    // Logic
    ->keyedBy('sku')
    ->onDuplicate(DuplicateStrategy::UPDATE_IF_NEWER)
    ->compareTimestamp('last_modified_at', 'updated_at')
    
    // Transformation
    ->mapAndTransform('price_cents', 'price', fn($val) => $val / 100)
    ->resolveModelUsing(fn($row) => $row['type'] === 'digital' ? DigitalProduct::class : Product::class);

See the Documentation for all available methods.


We provide a Docker-based test environment to ensure consistency.

# Start Docker
composer docker:up

# Run Tests
composer docker:test

# Check Coverage
composer docker:coverage

We welcome contributions! Please see CONTRIBUTING.md for details.

The MIT License (MIT). Please see License File for more information.

Laravel News Links

How to stream the 2026 Super Bowl for free: Patriots vs. Seahawks time, where to watch and more

https://www.yahoo.com/news/video/watching-super-bowl-sports-commercials-211907376.html?format=embed&region=US&lang=en-US&site=news&player_autoplay=false

The 2026 Super Bowl between the New England Patriots and the Seattle Seahawks will air on NBC this Sunday, Feb. 8. The game will also stream on Peacock. If you don’t have NBC over the air and don’t subscribe to Peacock, there are still ways to watch Super Bowl LX — and Bad Bunny’s history-making halftime show — for free. Here’s how to tune in. 

How to watch Super Bowl LX free:

Date: Sunday, Feb. 8

Time: 6:30 p.m. ET

Location: Levi’s Stadium in Santa Clara, Calif.

TV channel: NBC, Telemundo

Streaming: Peacock, DirecTV, NFL+ and more

2026 Super Bowl game channel

Super Bowl LX will air on NBC. A Spanish-language broadcast is available on Telemundo. 

How to watch the 2026 Super Bowl for free

You can stream NBC and Telemundo on platforms like DirecTV and Hulu + Live TV; both offer free trials and are among Engadget’s choices for best streaming services for live TV. (Note that Fubo and NBC are currently in the midst of a contract dispute and NBC channels are not available on the platform.)  

What time is the 2026 Super Bowl?

The 2026 Super Bowl kicks off at 6:30 p.m. ET/3:30 p.m. PT on Sunday, Feb. 8. Green Day will be performing a pre-game special starting at 6 p.m. ET.

Who is playing in the Super Bowl?

The AFC champions, the New England Patriots, will play the NFC champions, the Seattle Seahawks.

Where is the 2026 Super Bowl being played?

The 2026 Super Bowl will be held at Levi’s Stadium in Santa Clara, Calif., home of the San Francisco 49ers.

Who is performing at the 2026 Super Bowl halftime show?

Bad Bunny is headlining the 2026 Super Bowl halftime performance. You can expect that show to begin after the second quarter, likely between 8-8:30 p.m. ET. Green Day will perform a pre-game show starting at 6 p.m. ET. If you’re tuning in before the game, singer Charlie Puth will perform the National Anthem, Brandi Carlile is scheduled to sing "America the Beautiful," and Grammy winner Coco Jones will perform "Lift Every Voice and Sing." 

More ways to watch Super Bowl LX

This article originally appeared on Engadget at https://www.engadget.com/entertainment/streaming/how-to-stream-the-2026-super-bowl-for-free-patriots-vs-seahawks-time-where-to-watch-and-more-124512202.html?src=rssEngadget

Introducing VillageSQL: A New Path for MySQL in the Agentic AI Era

https://villagesql.com/blog/content/images/size/w1200/2026/02/VillageSQL_PrimaryLogo_Vert_Light–1-.png

MySQL is the world’s most popular open-source database by many measures but a persistent innovation gap has emerged. This gap causes developers to select other databases over MySQL for new application development, particularly when AI is involved. Today, we are launching VillageSQL to close that gap and empower the MySQL community by enabling permissionless innovation via extensions. VillageSQL is the innovation platform for MySQL and is focused on giving MySQL a new path for the agentic AI era. 

VillageSQL Server for MySQL is an open-source tracking fork that is a drop-in replacement for MySQL. It introduces an extension framework that includes custom data types and custom functions (with custom indexes coming soon). This extension framework unlocks rapid innovation for existing MySQL installations. It also allows developers building AI, agentic, and enterprise applications to choose MySQL without waiting for new features in future releases.

Ready to try it out? VillageSQL Server is now available in alpha.

The MySQL Innovation Gap

In recent years, much of the innovation and community development with open-source databases has focused on the PostgreSQL ecosystem. PostgreSQL development is governed by predictable community guidelines and the database supports a robust extension framework. An extension, framework like those found in many open-source projects such as PostgreSQL, Jenkins, or Grafana, enables developers to implement and publish new functionality to extend and modify the core of the project. Extensions don’t require broader agreement of the community before publishing. This is a powerful, permissive dynamic that unlocks the creativity of the community.

At the same time, gaps exist in MySQL’s functionality that have hindered its relevance with AI-era workloads. For example, there is no built-in implementation of vector search that retrieval augmented generation (RAG) use cases require. MySQL supports limited extensibility via plug-ins and components, but their limitations have hindered innovation in the MySQL ecosystem. 

Introducing the Extension Framework for MySQL

We founded VillageSQL with the mission to empower the MySQL community by enabling permissionless innovation. VillageSQL Server is a tracking fork of MySQL. It is a drop-in replacement and supports adding new functionality through extensions. While MySQL supports, and has benefited from, a plugin architecture and a component framework, we believe extensions offer a more holistic and structured approach to extending the database. Installing extensions is simple and MySQL-idiomatic (or, what we call, “Myonic”). 

We are launching a handful of extensions we thought were interesting. These extensions enable AI prompting via SQL functions, along with support for UUIDs, network addresses (IPv6/MAC), cryptographic functions, and a complex number data type. Our roadmap includes new AI features like vector indexing and optimized vector search. We’ve designed VillageSQL so developers can build and share their own extensions, and we can’t wait to see what the community builds next.

How it Works: "Myonic" Extensions

We define an extension in VillageSQL as a single packaging of extended types, indexes (coming soon), and functions that work together as a cohesive logical unit. Developers deploy these logical units as external repos or compiled dynamic libraries. A database administrator can copy the extension file into the VillageSQL extensions directory and run the SQL command ‘INSTALL EXTENSION_NAME’ to add the extension’s functionality to the database engine.

# Install UUID extension
INSTALL EXTENSION ‘vsql_uuid’;

# Create a users table with UUID primary key
CREATE TABLE users (
id UUID PRIMARY KEY,
username VARCHAR(50),
email VARCHAR(255),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

This release is intended to provide developers with a preview for experimentation and feedback, not production workloads. For a look at where we are headed, including the path to a production-ready release, see the roadmap.

It Takes a Village

At VillageSQL, we believe in a community-driven approach. This means empowering and supporting contributors across developers and companies to allow self-directed implementations of extensions. Join the village today by writing and contributing extensions, reviewing documentation, submitting bugs, etc. on GitHub. Connect with us on Discord. Subscribe for updates over email here.

We are very excited to see where the MySQL community takes this project, but we already know “it takes a village” to be successful. 

To get started or learn more, go to villagesql.com/.

Dominic Preuss (Village Steward/CEO) and Steve Schirripa (Village Architect/CTO) – Co-Founders

Planet for the MySQL Community

Say Hello To GoogleSQL

BrianFagioli writes: Google has quietly retired the ZetaSQL name and rebranded its open source SQL analysis and parsing project as GoogleSQL. This is not a technical change but a naming cleanup meant to align the open source code with the SQL dialect already used across Google products like BigQuery and Spanner. Internally, Google has long called the dialect GoogleSQL, even while the open source project lived under a different name. By unifying everything under GoogleSQL, Google says it wants to reduce confusion and make it clearer that the same SQL foundation is shared across its cloud services and open source tooling. The code, features, and team remain unchanged. Only the name is different. GoogleSQL is now the single label Google wants developers to recognize and use going forward.


Read more of this story at Slashdot.

Slashdot

Vector: The easiest way to plug Vue in Blade

https://placeholderblog.netlify.app/assets/blog/vector.jpg?v=1

You know that feeling when you’re building a Laravel app and you just need a tiny bit of reactivity? A counter. A toggle. Something that feels overkill for a full Vue component but too annoying for vanilla JavaScript?

I kept reaching for Alpine.js, which is great, but I wanted Vue’s Composition API. The ref(), the computed(), the familiar syntax I already know. So I built Vector.

What Even Is This?

Vector is a Laravel package that lets you write Vue directly in your Blade templates with zero ceremony:

<script setup>
 const i = ref(0);
</script>

<div>
 <button @click="i++">Click Me</button>
 <div>
 Count: @
 </div>
 <div v-if="i > 5">Success!</div>
</div>

That’s the whole thing. No build step for your components. No separate .vue files. No special directives wrapping your code. Just a <script setup> tag and you’re done.

How It Works

The <script setup> tag gets transformed at compile time. Vector treats the element immediately after the script tag as your Vue template. Everything inside that element becomes reactive, and anything outside it remains regular Blade.

  1. Blade’s precompiler finds your <script setup> blocks
  2. Extracts your variable declarations
  3. Mounts Vue on the next sibling element

The key part is the variable extraction. It parses const, let, and var declarations and auto-returns them to the template. You write normal code, it figures out the rest.

Escaping Blade Syntax

Since Blade also uses for output, you need to prefix Vue’s mustache syntax with @ to prevent Blade from processing it:





@

Alternatively, use Vue directives like v-text which don’t conflict with Blade:

<span v-text="count"></span>

Installation

composer require brunoabpinto/vector

Add Vector to your Vite entry points in vite.config.js:

plugins: [
 laravel({
 input: [
 "resources/css/app.css",
 "resources/js/app.js",
 "resources/js/vendor/vector.js",
 ],
 // ...
 }),
],
resolve: {
 alias: {
 'vue': 'vue/dist/vue.esm-bundler.js',
 },
},

Add @vectorJs before your closing </body> tag in your layout:

<body>
 

 @vectorJs
</body>

That’s it. Vector auto-publishes its runtime, and @vectorJs loads it where you need it.

The Trade-offs

Let’s be real about what this is:

Good for:

  • Quick interactive elements
  • Prototyping
  • When you want Vue’s API without Vue’s ceremony
  • Laravel apps that are mostly server-rendered with islands of reactivity

Not great for:

  • Complex component hierarchies
  • When you need proper SFC features (scoped styles, etc.)
  • Large-scale SPAs (just use Inertia at that point)

Try It

The package is available on GitHub. Star it, fork it, tell me it’s an abomination. Whatever feels right.

composer require brunoabpinto/vector

Laravel News Links

Rotating Marble Machine

https://theawesomer.com/photos/2026/02/rotating_marble_machine_t.jpg

Rotating Marble Machine

This desktop marble machine by MaKim Projects features a rotating tower that keeps things rolling all day long. After its steel spheres roll down a series of twisting and spiraled ramps, they return to the top on its illuminated corkscrew elevator. Want your own? The 3D model is available on MakerWorld, with a parts kit for sale on the Bambu Lab store.

The Awesomer