Sr. Content Developer at Microsoft, working remotely in PA, TechBash conference organizer, former Microsoft MVP, Husband, Dad and Geek.
164531 stories
·
33 followers

Microsoft Removes PC-to-PC Migration from Windows 11, Points Users to OneDrive-Based Backup

1 Share
Windows 11 offered a PC-to-PC Migration feature that "moved files and settings directly between two PCs over Wi-Fi or Ethernet," reports Ghacks. But according to an updated Microsoft support page, the tool is no longer available. "Microsoft's support documentation now redirects users to Windows Backup, a tool that relies on OneDrive cloud storage instead of a direct connection between two computers..." Windows Backup works differently. It requires a personal Microsoft account and backs up supported folders (Desktop, Documents, Pictures, Videos and Music) to OneDrive. Free OneDrive accounts include only 5GB of storage, and Microsoft's own promotional screenshot for Windows Backup shows 4.5GB of that allowance already in use. Years of photos, documents and downloads can exceed the free tier quickly. Windows Backup does carry some extras. It can remember installed apps, Wi-Fi networks, passwords and some settings to speed up setup on a new device. Apps still have to be reinstalled, and supported files are restored from the cloud. Thanks to Slashdot reader joshuark for sharing the article.

Read more of this story at Slashdot.

Read the whole story
alvinashcraft
6 hours ago
reply
Pennsylvania, USA
Share this story
Delete

A Third Major US Offshore Wind Farm Is Now Fully Operational

1 Share
Despite the Trump administration's efforts to halt development on a $6.2 billion wind farm, it's now "completely up and running," reports the nonprofit energy news site Canary Media, delivering enough electricity to power the equivalent over 350,000 homes: On Thursday, the Danish energy giant Ørsted said its 704-megawatt wind farm near Connecticut and Rhode Island began "generating up to its full capacity" in October. Revolution Wind began producing smaller amounts of power in the spring, and the company installed the last of 65 turbines in September. The project is the third U.S. utility-scale offshore wind farm to reach full commercial operations, after South Fork Wind near New York and Vineyard Wind near Massachusetts. Before the start of Trump's second term, BloombergNEF projected America would build 39 gigawatts of offshore wind by 2035 the article points out, but "Now, it expects just 5.9 GW to come online — an amount that reflects the handful of projects that were already completed or under construction at the start of last year." Despite the diminished pipeline, the carbon-free energy source is still expected to help keep household utility bills in check across the U.S. Northeast, experts say. Revolution Wind and the country's other completed projects have already played a key role in reducing grid stress during extreme weather events this year... Ørsted hit its power milestone despite being forced to halt construction twice last year. In August 2025, the Interior Department issued a stop-work order for Revolution Wind, due to unspecified national security threats. That order was tossed out by a federal judge one month later. But in late December, the administration issued new stop-work orders to all five offshore wind projects then under construction. Judges struck those orders down one by one — but not before developers had lost huge sums of money and nearly missed key project deadlines... Meanwhile, Ørsted said it's making progress on another offshore wind development, Sunrise Wind. The developer on Thursday said it has finished installing all of the wind-turbine foundations for the 924-MW project off the coast of Long Island, New York. That installation is expected to be fully operational in the second half of next year.

Read more of this story at Slashdot.

Read the whole story
alvinashcraft
6 hours ago
reply
Pennsylvania, USA
Share this story
Delete

What’s new in Microsoft Entra: November 2026

1 Share

Don't miss our Microsoft Ignite announcements. Tune in or join us in person for AI is changing access: See how Microsoft Entra helps you stay ahead on November 18, 2026, at 10:15 AM Pacific for secure access news and demos from our latest product roadmap.

Access is never a one-time decision. Employees change roles, devices fall out of compliance, AI agents get created and forgotten, and guests outlast the projects they joined for. But it’s not just identities that change: risks shift in real time and attacks never let up. Customers tell us the hardest part is keeping access secure as users, devices, agents, and guests change over time while threats evolve by the minute.

This month’s releases help you stay ahead of both: lifecycle policies for agent and guest identities, drift detection and group discovery for governed access, continuous access evaluation that responds to device and user risk signals within minutes, and phishing-resistant sign-in from the very first MFA method.

Here’s everything new in Microsoft Entra from October 2026, organized around the outcomes you’re trying to achieve:

Outcome: Keep my organization trusted and resilient

Detect drift in access package entitlements | Public Preview
Access package drift reports help you spot where real-world access diverges from policy intent. Flag over‑granted permissions or missing assignments and restore alignment with a click. Reports refresh daily and require Microsoft Entra ID Governance or Microsoft Entra Suite.
Learn more →

Discover and govern application groups | Public Preview
Account discovery now extends to groups. Find groups created directly within connected apps and bring them under governance. Classify them as local, unassigned, or assigned to streamline administration.
Learn more →

Outcome: Give users and agents secure access without friction

Apply a cloud firewall for Global Secure Access clients | Public Preview
Cloud firewall in Microsoft Entra Internet Access now covers Global Secure Access client traffic, allowing granular control over outbound network connections through rule‑based security profiles.
Learn more →

Support home network users reaching private access resources | Public Preview
Home network support ensures users can reach resources (printers, routers, displays) on their local network without disconnecting from Global Secure Access. The Prefer Local Network feature routes overlapping traffic directly to home devices.
Learn more →

Automate guest lifecycle policies for stronger security posture | Public Preview
Define guest policies based on sponsor attestation, recent activity, or redemption state. Automatically disable or delete guests who no longer meet requirements, reducing stale external access.
Learn more →

Register a passkey or passwordless sign-in as the first MFA method | General Availability
Users can now start with phishing-resistant authentication from day one—registering a passkey or passwordless option as their first MFA method. Rollout continues through February 2027.
Learn more →

Use Windows Hello for Business and macOS Platform SSO as standalone MFA factors | General Availability
These device-bound credentials now qualify as standalone MFA factors across step-up prompts, Authentication Strength, and sign-in frequency checks—no additional passkey required. Rollout begins early November 2026.
Learn more →

Improve backup and restore for Microsoft Authenticator on Android | General Availability
New guidance simplifies secure backup of passkeys. Requires Google One backup and screen lock; applies only to personal profiles. Rollout begins January 2027.
Learn more →

Inform Continuous Access Evaluation (CAE) with device and risk signals | General Availability
Universal CAE now evaluates both user and device risk. When a device is disabled or found noncompliant—or if high user risk is detected—the Global Secure Access client triggers reauthentication within two minutes.
Learn more →

Add custom HTTP headers in Microsoft Entra Internet Access | General Availability
Custom headers enable granular SaaS access control, enforcing tenant restrictions across services like GitHub and Slack at the network layer. TLS inspection remains required for HTTPS destinations.
Learn more →

Outcome: Reduce the cost and complexity of access management

Choose your own telephony provider for SMS and voice authentication | General Availability
Organizations can now select supported providers (Soprano, Telesign, Infobip) for SMS and voice delivery while Entra continues managing authentication logic. Setup before February 1, 2027, when Microsoft-provided delivery retires.
Learn more →

Sync devices to Entra ID for hybrid join | General Availability
Entra Cloud Sync can now synchronize AD computer objects to Entra ID, enabling hybrid join. Admins simply enable device sync within Cloud Sync configuration.
Learn more →

Outcome: Adopt AI safely at enterprise scale

Automate lifecycle management of agent identities | Public Preview
Policy-based guardrails help ensure agent identities don’t outlive their purpose. Configure reconfirmation intervals, sponsor requirements, and inactivity monitoring. A default inactivity policy (available to all tenants, no license required) notifies owners after 60 days of inactivity and disables the identity if no new activity occurs.
Learn more →

Tell Us What You Think

We began organizing this series around customer outcomes last month. Is that making it easier to connect what we're shipping to the challenges you're working through? I'd welcome your feedback in the comments.


Onwards,
Yina Arenas
Corporate Vice President and Chief Product Officer, Microsoft Identity and Network Access
Follow me on LinkedIn

 

Catch Microsoft Entra at Ignite, November 17-20, 2026, in San Francisco and online. See the Entra session schedule and RSVP today.

Learn More About Microsoft Entra

Secure access for people and agents to AI, applications, and resources with comprehensive identity and network access solutions.

Read the whole story
alvinashcraft
6 hours ago
reply
Pennsylvania, USA
Share this story
Delete

Direct your next shot with fal on Microsoft Foundry and ComfyUI

1 Share

Bring the new fal MiniMax H3 Max video model and Foundry image models (gpt-image, FLUX, MAI Image) into ComfyUI with two custom nodes and keyless Microsoft Entra ID authentication, then build a cinematic image-to-video pipeline.

 

ComfyUI is the node-based canvas many creative teams already use to chain generative models. Microsoft Foundry hosts state-of-the-art image generation models such as gpt-image, FLUX and MAI Image, and starting today, fal video models such as MiniMax H3 Max. This post shows how to bring them into ComfyUI with two small custom nodes. You don't need a GPU, and you don't need any API keys.

You will:

  1. Deploy the models in one Foundry project.
  2. Give ComfyUI keyless access to Foundry with Microsoft Entra ID.
  3. Add the Foundry nodes to ComfyUI, step by step. All the code is in this post.
  4. Build a pipeline that turns a text prompt into a realistic, cinematic 5-second shot.

Cinematic scene generated with a Foundry image model + fal MiniMax H3 Max

This post assumes you already have ComfyUI installed and know how to open its UI. It can run on your own Windows, macOS or Linux machine, or on a VM or other compute in Azure.

How it works

The nodes call the Foundry APIs directly. Generation runs in Foundry, and ComfyUI only orchestrates the calls, so a CPU-only machine is enough. The nodes get a Microsoft Entra ID token from the identity already available where ComfyUI runs: your az login sign-in on your own machine, or a managed identity on Azure. There are no API keys to store, rotate or leak in a shared workflow.

Step 1 – Deploy the models in your Foundry project

First, deploy at least one image model and the fal video model to the Foundry resource behind your project. You can deploy them from the Foundry portal or from the command line. Both give the same result.

Option A: Deploy from the Foundry portal

  1. Open the model catalog in the Foundry portal.
  2. Find the model. You can filter Inference tasks by Text to image, or search for the model by name.
  3. Select the model, select Deploy, and keep the default settings.

Option B: Deploy with the Azure CLI

If you prefer the command line, run the following command once for each model, and replace the placeholders with your own values:

az cognitiveservices account deployment create \ --resource-group <resource-group> \ --name <foundry-resource> \ --deployment-name <deployment-name> \ --model-name <model-name> \ --model-format <model-format> \ --model-version <model-version> \ --sku-name GlobalStandard \ --sku-capacity <capacity>

Use these values for <model-name> and <model-format>:

Model--model-name--model-format
gpt-imagegpt-image-2.5-sunburstOpenAI
FLUXFLUX.2-proBlack Forest Labs
MAI ImageMAI-Image-2.6Microsoft
fal MiniMax H3 Max (video)Fal-MiniMax-H3-Maxfal.ai

A few things to keep in mind:

  • To find the available <model-version>, run az cognitiveservices account list-models -g <resource-group> -n <foundry-resource> --query "[?name=='<model-name>'].version" -o tsv.
  • Name each image deployment after its model, for example FLUX.2-pro. The nodes use the name to detect the model family automatically.
  • The video deployment can have any name. This post uses minimax-h3.

When you're done, your project lists all the deployments:

Copy your project endpoint

Finally, copy your project endpoint from the project's Overview page in the Foundry portal. You need it in Step 3. It looks like https://<foundry-resource>.services.ai.azure.com/api/projects/<project>.

Step 2 – Give ComfyUI keyless access to Foundry

The nodes use DefaultAzureCredential, which picks up whichever Microsoft Entra ID identity is available on the machine that runs ComfyUI. That identity needs the Cognitive Services User role on the Foundry resource. The Foundry User role works too. Follow the section that matches where ComfyUI runs.

If ComfyUI runs on your own machine

In this case, ComfyUI uses your own Azure account through the Azure CLI:

  1. Install the Azure CLI on the machine that runs ComfyUI.
  2. Sign in with az login, as the same OS user that starts ComfyUI.
  3. Grant your account the role on the Foundry resource with these commands:
az login FOUNDRY_ID=$(az cognitiveservices account show -g <resource-group> -n <foundry-resource> --query id -o tsv) az role assignment create --assignee-object-id $(az ad signed-in-user show --query id -o tsv) \ --assignee-principal-type User --role "Cognitive Services User" --scope $FOUNDRY_ID

The role assignment commands use Bash syntax. On Windows, you can run them in Git Bash or in Azure Cloud Shell. Only az login must run on the ComfyUI machine itself.

If ComfyUI runs on Azure compute

In this case, use a managed identity instead of a personal sign-in. Turn on the managed identity of the compute resource, then grant it the same role. For example, on a VM:

az vm identity assign -g <vm-resource-group> -n <vm-name> PRINCIPAL_ID=$(az vm show -g <vm-resource-group> -n <vm-name> --query identity.principalId -o tsv) FOUNDRY_ID=$(az cognitiveservices account show -g <resource-group> -n <foundry-resource> --query id -o tsv) az role assignment create --assignee-object-id $PRINCIPAL_ID \ --assignee-principal-type ServicePrincipal --role "Cognitive Services User" --scope $FOUNDRY_ID

To create role assignments, you need the Owner or User Access Administrator role on the resource. If you don't have either, ask your Azure admin to run the az role assignment create command. Role assignments can take a few minutes to propagate. If the first run returns 401 or 403, wait and try again.

Step 3 – Add the Foundry nodes to ComfyUI

A ComfyUI custom node is just a Python folder inside ComfyUI's custom_nodes folder. ComfyUI loads every folder there when it starts. To add the nodes, you create one folder with two files, install two Python packages, set one environment variable, and restart ComfyUI.

3.1 Find your ComfyUI folder and its Python

How you installed ComfyUIWhere custom_nodes isPython that runs ComfyUI
ComfyUI Desktop (Windows, macOS)Select ⋮ on your instance, then Manage → About. Select the installation path to open it. custom_nodes is inside it.Use Manage → Terminal, which opens a shell in the instance folder.
Windows portableComfyUI_windows_portable\ComfyUI\custom_nodesComfyUI_windows_portable\python_embeded\python.exe
Manual install (git clone)ComfyUI/custom_nodesThe virtual environment you start ComfyUI with, for example ComfyUI/.venv

Open a terminal in your ComfyUI folder. With a manual install, activate your virtual environment first. Then check that python is ComfyUI's own Python, not the system one:

python -c "import sys; print(sys.executable)"

The printed path must be inside your ComfyUI installation. If it isn't, use the full path from the table instead of python in the commands below.

3.2 Create the node folder and files

When you're done, the folder looks like this:

ComfyUI/ └── custom_nodes/ └── ComfyUI-Foundry/ ├── __init__.py └── nodes.py
  1. In custom_nodes, create a folder named ComfyUI-Foundry. Use File Explorer, Finder or mkdir.
  2. In that folder, create a file named __init__.py with this single line. It tells ComfyUI which nodes the folder provides:
from .nodes import NODE_CLASS_MAPPINGS, NODE_DISPLAY_NAME_MAPPINGS
  1. In the same folder, create nodes.py and paste the code below.

Use a code editor such as Visual Studio Code. If you use Windows Notepad, set Save as type to All files, or Notepad saves the files as nodes.py.txt and ComfyUI ignores them.

nodes.py defines two nodes:

NodeWhat it calls
Foundry Image GenerateThe image API that matches the deployment: /openai/v1/images/generations for gpt-image, /providers/blackforestlabs/v1/… for FLUX, and /mai/v1/images/generations for MAI Image
fal MiniMax H3 Max Video (Foundry)/providers/falai/v1/minimax/h3-max/image-to-video, or text-to-video if no image is connected, or reference-to-video if reference images or a reference video are connected. fal jobs are asynchronous, so the node polls until the video is ready, then saves the MP4.
"""ComfyUI nodes for Microsoft Foundry image models and fal video models on Foundry. Keyless: DefaultAzureCredential uses your az login sign-in, or a managed identity on Azure.""" import base64, io, os, re, time, uuid import numpy as np import requests import torch from azure.identity import DefaultAzureCredential from PIL import Image import folder_paths try: from comfy_api.input_impl import VideoFromFile except ImportError: # older ComfyUI builds without the VIDEO type VideoFromFile = None SCOPE = "https://cognitiveservices.azure.com/.default" _credential = None def _auth(): global _credential if _credential is None: _credential = DefaultAzureCredential(exclude_interactive_browser_credential=True) return {"Authorization": "Bearer " + _credential.get_token(SCOPE).token} def _base_url(override=""): # Accepts a project endpoint (https://<resource>.services.ai.azure.com/api/projects/<project>) # or the resource endpoint; model APIs are served from the resource root. url = (override or os.environ.get("FOUNDRY_ENDPOINT", "")).strip().rstrip("/") if not url: raise ValueError("Set the FOUNDRY_ENDPOINT environment variable.") return re.sub(r"/api/projects/[^/]+$", "", url) def _to_tensor(img): return torch.from_numpy(np.asarray(img.convert("RGB"), dtype=np.float32) / 255.0)[None, ...] def _to_data_uri(image, index=0): buf = io.BytesIO() Image.fromarray((image[index].cpu().numpy() * 255).clip(0, 255).astype(np.uint8)).save(buf, "JPEG", quality=92) return "data:image/jpeg;base64," + base64.b64encode(buf.getvalue()).decode() def _video_to_data_uri(video): buf = io.BytesIO() video.save_to(buf, format="mp4") # keeps any trim applied in ComfyUI return "data:video/mp4;base64," + base64.b64encode(buf.getvalue()).decode() FLUX_PATHS = {"flux.2-pro": "flux-2-pro", "flux.2-flex": "flux-2-flex", "flux.1-kontext-pro": "flux-kontext-pro", "flux-1.1-pro": "flux-pro-1.1"} def _family(deployment, family): name = deployment.lower() if family != "auto": return family if "flux" in name: return "flux" if name.startswith(("mai-image", "mai_image")): return "mai" return "gpt-image" class FoundryImageGenerate: """Text-to-image with a Foundry deployment: gpt-image, FLUX or MAI Image.""" @classmethod def INPUT_TYPES(cls): return { "required": { "prompt": ("STRING", {"multiline": True, "default": ""}), "deployment": ("STRING", {"default": "gpt-image-2.5-sunburst"}), "size": (["1536x1024", "1024x1024", "1024x1536", "auto"], {"default": "1536x1024"}), "quality": (["high", "medium", "low", "auto"], {"default": "high"}), "seed": ("INT", {"default": 0, "min": 0, "max": 2**31 - 1}), }, "optional": { "model_family": (["auto", "gpt-image", "flux", "mai"], {"default": "auto"}), "endpoint": ("STRING", {"default": "", "tooltip": "Empty = FOUNDRY_ENDPOINT"}), }, } RETURN_TYPES = ("IMAGE",) FUNCTION = "generate" CATEGORY = "Microsoft Foundry" def generate(self, prompt, deployment, size, quality, seed, model_family="auto", endpoint=""): family, base = _family(deployment, model_family), _base_url(endpoint) dims = {} if size == "auto" else dict(zip(("width", "height"), map(int, size.split("x")))) if family == "flux": path = FLUX_PATHS.get(deployment.lower(), "flux-2-pro") url = f"{base}/providers/blackforestlabs/v1/{path}?api-version=preview" body = {"model": deployment, "prompt": prompt, "seed": seed, "output_format": "png", **dims} elif family == "mai": url = f"{base}/mai/v1/images/generations" body = {"model": deployment, "prompt": prompt, **dims} else: url = f"{base}/openai/v1/images/generations" body = {"model": deployment, "prompt": prompt, "size": size, "quality": quality, "n": 1} r = requests.post(url, json=body, headers=_auth(), timeout=300) if not r.ok: raise RuntimeError(f"{family} image generation failed ({r.status_code}): {r.text[:500]}") raw = base64.b64decode(r.json()["data"][0]["b64_json"]) return (_to_tensor(Image.open(io.BytesIO(raw))),) class FalH3Video: """fal MiniMax H3 Max on Foundry: image-to-video, or text-to-video when no image is connected. Connect reference images and/or a reference video to use reference-to-video.""" @classmethod def INPUT_TYPES(cls): return { "required": { "prompt": ("STRING", {"multiline": True, "default": ""}), "deployment": ("STRING", {"default": "minimax-h3"}), "duration": ("INT", {"default": 5, "min": 1, "max": 10}), "resolution": (["768P", "480P", "1080P"], {"default": "768P"}), }, "optional": { "image": ("IMAGE",), "reference_images": ("IMAGE", {"tooltip": "Image 1, Image 2, ... in batch order"}), "reference_video": ("VIDEO", {"tooltip": "Video 1, 2-15 seconds"}), "endpoint": ("STRING", {"default": "", "tooltip": "Empty = FOUNDRY_ENDPOINT"}), }, } RETURN_TYPES = ("VIDEO", "STRING") if VideoFromFile else ("STRING",) RETURN_NAMES = ("video", "path") if VideoFromFile else ("path",) FUNCTION = "generate" OUTPUT_NODE = True CATEGORY = "Microsoft Foundry" def generate(self, prompt, deployment, duration, resolution, image=None, endpoint="", reference_images=None, reference_video=None): base = _base_url(endpoint) + "/providers/falai/v1/minimax/h3-max" body = {"model": deployment, "prompt": prompt, "duration": duration, "resolution": resolution, "prompt_expansion_mode": "disabled"} route = "text-to-video" if image is not None: body["image_url"], route = _to_data_uri(image), "image-to-video" if reference_images is not None: body["reference_image_urls"] = [_to_data_uri(reference_images, i) for i in range(len(reference_images))] route = "reference-to-video" if reference_video is not None: body["reference_video_urls"], route = [_video_to_data_uri(reference_video)], "reference-to-video" r = requests.post(f"{base}/{route}", json=body, headers=_auth(), timeout=120) if not r.ok: raise RuntimeError(f"fal submit failed ({r.status_code}): {r.text[:500]}") request_id = r.json()["request_id"] deadline = time.time() + 900 while True: # fal jobs are async: poll until done status = requests.get(f"{base}/requests/{request_id}/status", headers=_auth(), timeout=60).json() if status.get("status") == "COMPLETED": break if status.get("status") in ("FAILED", "CANCELED", "CANCELLED", "ERROR") or time.time() > deadline: raise RuntimeError(f"fal request {request_id} did not complete: {status}") time.sleep(5) result = requests.get(f"{base}/requests/{request_id}", headers=_auth(), timeout=60).json() video = requests.get(result["video"]["url"], headers=_auth(), timeout=300) video.raise_for_status() filename = f"h3_{uuid.uuid4().hex[:8]}.mp4" path = os.path.join(folder_paths.get_output_directory(), filename) with open(path, "wb") as f: f.write(video.content) ui = {"images": [{"filename": filename, "subfolder": "", "type": "output"}], "animated": (True,)} return {"ui": ui, "result": (VideoFromFile(path), path) if VideoFromFile else (path,)} NODE_CLASS_MAPPINGS = {"FoundryImageGenerate": FoundryImageGenerate, "FalH3Video": FalH3Video} NODE_DISPLAY_NAME_MAPPINGS = {"FoundryImageGenerate": "Foundry Image Generate", "FalH3Video": "fal MiniMax H3 Max Video (Foundry)"}

3.3 Install the Python packages

From the terminal you opened in 3.1, install the two packages the nodes need into ComfyUI's Python:

python -m pip install azure-identity requests

On the Windows portable build, run this from the ComfyUI_windows_portable folder instead:

python_embeded\python.exe -m pip install azure-identity requests

3.4 Point the nodes at your Foundry project

The nodes read your project endpoint from the FOUNDRY_ENDPOINT environment variable. Because the endpoint lives in the environment, it doesn't end up in workflows you share. Set the variable where ComfyUI starts:

ComfyUI runs as…How to set FOUNDRY_ENDPOINT
ComfyUI DesktopManage → Startup Args → Environment Variables → + Add Variable
Windows (portable or manual)Run setx FOUNDRY_ENDPOINT "https://<foundry-resource>.services.ai.azure.com/api/projects/<project>", then open a new terminal so the variable is picked up.
macOS / Linux (manual)Run export FOUNDRY_ENDPOINT="https://<foundry-resource>.services.ai.azure.com/api/projects/<project>" in the same terminal, before python main.py.
Linux systemd serviceRun sudo systemctl edit comfyui, add [Service] and Environment=FOUNDRY_ENDPOINT=https://…, then save.

3.5 Restart ComfyUI and check that the nodes loaded

Restart ComfyUI. ComfyUI only loads custom nodes at startup. In the startup log, which is the console or the Desktop Terminal tab, look for ComfyUI-Foundry under Import times for custom nodes:

If the line says (IMPORT FAILED), scroll up to find the error. No module named 'azure' means the packages went into a different Python, so repeat 3.3 with the full Python path from the table.

Open the ComfyUI UI, or refresh the page if it's already open, and open the Nodes panel. Both nodes are in the Microsoft Foundry category.

Step 4 – Build a cinematic scene pipeline

Now that the nodes are loaded, you can chain an image model and the video model. The image model creates a cinematic keyframe, and the video model animates it.

Connect the nodes

Add three nodes to the canvas and connect them like this:

  • Foundry Image Generate IMAGE → Save Image images
  • Foundry Image Generate IMAGE → fal MiniMax H3 Max Video image

Configure the nodes and prompts

Set the node inputs to these values:

NodeSettingValue
Foundry Image Generatedeployment / size / quality / seedgpt-image-2.5-sunburst / 1536x1024 / high / 42 (fixed)
fal MiniMax H3 Max Videodeployment / duration / resolutionminimax-h3 / 5 / 768P

In the Foundry Image Generate node, enter a keyframe prompt that sets the look of the shot: lens, lighting and color grade.

Cinematic film still, shot on 35mm anamorphic lens. A lone lighthouse keeper in a weathered yellow raincoat stands on wet black rocks at dusk, facing a storm rolling in over the ocean. Huge waves crash and throw spray into the air, the lighthouse beam cuts through the rain behind him. Teal and orange color grade, volumetric light, shallow depth of field, subtle film grain, ultra realistic, 2.39:1 framing.

In the fal MiniMax H3 Max Video node, enter a motion prompt. It only needs to describe the camera move and the action, because the keyframe already defines the scene.

Slow cinematic dolly-in toward the lighthouse keeper. The lighthouse beam sweeps through the rain, waves crash against the rocks and spray drifts across the frame, his raincoat flutters in the wind. Subtle handheld camera movement, moody film look, natural motion.

Run the pipeline

Select Run. The keyframe comes back in a few seconds. The fal node then submits an image-to-video job and polls until it finishes. On our run, the whole pipeline took about 80 seconds.

The result

The keyframe from the Foundry image model (1536×1024):

The 5-second, 24 fps shot from fal MiniMax H3 Max:

The image model sets the look (lens, grade, lighting) and the video model only adds motion, so the shot stays consistent from frame to frame. Splitting the work into keyframe → motion is the easiest way to get a realistic, art-directed result.

Tips

  • Swap image models. Set deployment to gpt-image-2.5-sunburst, FLUX.2-pro or MAI-Image-2.6. The node detects the model family from the name and calls the matching API. If your deployment has a custom name, set model_family yourself. MAI Image needs both sides to be at least 768 px.
  • Use a model from another Foundry resource. Paste that resource's endpoint into the node's optional endpoint field, and grant the same identity (your account or the managed identity) the same role on that resource.
  • Higher fidelity. Set resolution to 1080P on the video node for final renders.
  • Text-to-video. Leave the fal node's image input unconnected, and it calls text-to-video.
  • Iterate cheaply. Keep seed set to fixed. ComfyUI caches nodes whose inputs haven't changed, so you can tweak the motion prompt without regenerating the keyframe.

Learn more

Read the whole story
alvinashcraft
6 hours ago
reply
Pennsylvania, USA
Share this story
Delete

Work together, your way, with GitHub Copilot

1 Share
From: GitHub
Duration: 32:51
Views: 2,847

Your team might agree on what to build, but how to build it is another conversation. In this GitHub Universe 2026 session, join Pierce Boggan, Burke Holland, James Montemagno, Julia Kasper, and Katie Savage as they tackle a shared project with GitHub Copilot, bringing their favorite tools, models, and personal workflows. Working across the Copilot app, CLI, VS Code, and JetBrains, the team puts AI agents to work, carries context between tasks, and takes development beyond the editor while balancing speed, cost, and control. Follow the project from concept to working software to see how Copilot helps teams build together without forcing everyone into the same setup.

Speakers:

Burke Holland, Principal Cloud Advocate, Microsoft
James Montemagno, Principal Technical PM Lead, Microsoft
Julia Kasper, Product Manager, Microsoft
Katie Savage, Technical Program Manager, Microsoft
Pierce Boggan, Product - GitHub Copilot, GitHub

Watch more videos from GitHub Universe 2026: https://www.youtube.com/watch?v=AArI948SDz8&list=PLENrlACZ7mnU

— CHAPTERS —

00:00 Welcome Pierce Boggan: GitHub Copilot overview
01:13 Building tiny clips with GitHub Copilot
02:35 Burke Holland: GitHub Copilot app
10:13 Julia Kasper: Copilot in VS Code
18:36 Katie Savage: GitHub Copilot CLI
24:34 James Montemagno: Copilot mobile & web
29:44 Pierce Boggan: Copilot in Slack
31:53 Conclusion: work together, your way

#GitHubUniverse #GitHubCopilot #VSCode

Stay up-to-date on all things GitHub by connecting with us:

YouTube: https://gh.io/subgithub
Blog: https://github.blog
X: https://twitter.com/github
LinkedIn: https://linkedin.com/company/github
Insider newsletter: https://resources.github.com/newsletter/
Instagram: https://www.instagram.com/github
TikTok: https://www.tiktok.com/@github

About GitHub
It’s where over 180 million developers create, share, and ship the best code possible. It’s a place for anyone, from anywhere, to build anything—it’s where the world builds software. https://github.com

Read the whole story
alvinashcraft
7 hours ago
reply
Pennsylvania, USA
Share this story
Delete

Setting up a Raspberry Pi without a Monitor, Keyboard, or Network

1 Share

This is very similar to my previous post about sharing internet access from Ubuntu to a new Raspberry Pi.

In this, I will show how you can start using your Raspberry Pi without a monitor, keyboard, Ethernet network, or wifi connection.

I am not going to explain how to set up the Pi, that is covered in many other places. I suggest following the guide on the Raspberry Pi website. Follow the headless instructions, but I will show how to connect to it when you don’t have an Ethernet or wifi network.

My Setup

I have -

  • Ubuntu on my laptop (but similar steps should work on other OSes)
  • Raspberry Pi 4 with the 64-bit Lite OS
  • an Ethernet cable connecting the two devices

Follow the headless setup instructions

Install the OS on the SD card, give your Pi a name, for example pi4, and enable SSH. Don’t put in any wifi credentials, because you don’t have a network to connect to

Sharing Internet from Laptop to Raspberry Pi

On the Ubuntu computer where you imaged the SD card, plug in an Ethernet cable. Don’t connect it to the Pi just yet. It doesn’t have to be a crossover cable, a regular Ethernet cable will work.

1. The Ethernet Connection

Go to Settings → Network.

There might be a few sections - the top one is probably the one you need. It might be called Wired, Ethernet, PCI Ethernet, or something similar.

Network Connections
Network Connections

2. Changing the Profile

Click the gear icon to edit the profile, move to the IPv4 tab, and change the method to Shared to other computers. Click Apply.

Sharing the connection
Sharing the connection

3. Connecting the Laptop and the Pi

If you haven’t done so already, plug the cable into the laptop and the Pi. The Pi should get an IP address from the laptop via DHCP.

4. Finding the Pi’s IP Address

I know the name of my Pi is pi4, so I can ping it at pi4.local to see its IP address -

ping -c1 pi4.local

If I forgot the name of my Pi, I can check the address the laptop handed out over the cable:

sudo cat /var/lib/NetworkManager/dnsmasq-*.leases

This will show something like -

1793837033 xx:xx:xx:xx:xx:xx 10.42.0.23 pi4 yy:yy:yy:yy:yy:yy:yy

The IP address is in the middle of the line.

5. SSH into the Pi

I can ssh to the Pi using the name or the IP address -

ssh pi4.local
# or 
ssh 10.42.0.23

That’s it, you set up Pi and connected to it without any network.

6. Resetting the profile

After you disconnect the Pi, change the profile back to the original method (probably Automatic (DHCP)), so that when you plug the laptop into a router, it gets an IP address from the router.

Read the whole story
alvinashcraft
7 hours ago
reply
Pennsylvania, USA
Share this story
Delete
Next Page of Stories