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

v7.4.17 Release of PowerShell

1 Share

7.4.17

Code Cleanup

  • Remove the unused Publish-NugetToMyGet command from packaging module (#27574)

Build and Packaging Improvements

Update to .NET SDK 8.0.422

  • Update branch for release (#27580)
  • Skip Store Publish when No Channel Selected (#27571)
  • Verify Apple codesign immediately after ESRP signing (#27540)
  • Remove unused step that clones Internal-PowerShellTeam-Tools repo in PMC publish pipeline (#27497)

SHA256 Hashes of the release artifacts

  • hashes.sha256
    • F24A8867F976287F9580602065C89F332F26097C858575A7C379E54529C51F65
  • powershell-7.4.17-1.cm.aarch64.rpm
    • 982FD39D6238DBD17B9B7B679F2EB4161C1B2340EF5ECFCCBA6311F169580F93
  • powershell-7.4.17-1.cm.x86_64.rpm
    • 653FFA4961E25CAA65408650310FC69B19B0ED4F0F05C6DD17DC7A6FB5AAFC08
  • powershell-7.4.17-1.rh.x86_64.rpm
    • 2D856FABDC7BAAC0CE46492D5DC8014D5AD3D9316CF17CBBC2CF3BEEE8B6BD91
  • powershell-7.4.17-linux-arm32.tar.gz
    • 4DFB43E6027A2D9B3789EE7E2634716CDAFEF2E60C1A72C2DDA8A16016EAC6A2
  • powershell-7.4.17-linux-arm64.tar.gz
    • 68F3874CDB6CD564ACF404103DFC410EE85435B02F0AD648E73A958853175D6C
  • powershell-7.4.17-linux-musl-x64.tar.gz
    • 143A1DE65EA320C36A0B4BD1808FE65561E5AB12FD66D5F63F78B0B3D66B4397
  • powershell-7.4.17-linux-x64-fxdependent.tar.gz
    • 4035F6505623DAFC1242A1942A596FED45C0D8FCBF63A95EFB003286B9B58572
  • powershell-7.4.17-linux-x64-musl-noopt-fxdependent.tar.gz
    • 71AA91B0B255C8996C09E7AFA3D5593C60EEC8EF56F42B4B17E758889D481AE1
  • powershell-7.4.17-linux-x64.tar.gz
    • DCFE6060FC86ABCB859CE1F8F80843CE50BAB0585396DE56380ED9F25176AC6D
  • powershell-7.4.17-osx-arm64.pkg
    • DD4BEB2A771A649415F997EFB9A10AFCAAC742CE20F820316CE614A414BD8CD6
  • powershell-7.4.17-osx-arm64.tar.gz
    • 28B3F08C1B63BDB11A02DF135774844C59A5553AB916907B25D233792FFA59A3
  • powershell-7.4.17-osx-x64.pkg
    • 1EEA7C558AED389B59370B62E78228E3D96869AFD9A71FA7C1FC7833D024CD0B
  • powershell-7.4.17-osx-x64.tar.gz
    • 6F7E2292F9C9432B2F43CEC2BCFEAFF45B0B17F97B700B83D62F49927493343D
  • PowerShell-7.4.17-win-arm64.msi
    • 16EAD459A3C5E2327DEDC455C815CB54AC9CD521120E710AB3C1002F7591BEEB
  • PowerShell-7.4.17-win-arm64.zip
    • 2DD39EFBE93CA6CFEDA8B9429536B83F35EA2FBC7135E0A12EB021868D61D44C
  • PowerShell-7.4.17-win-fxdependent.zip
    • 9DECE3A3746CD7FA13E12365D4849D62CA699730F3AA009B8652F615681285B4
  • PowerShell-7.4.17-win-fxdependentWinDesktop.zip
    • ADE5EFEFF2EFA2517AC7D7F597983186A976199B59A4A7C37E27C5682753C1AC
  • PowerShell-7.4.17-win-x64.msi
    • 882DDA4D2CCBCB36F0A8A037A4FBE5A5D64F27AF1C09BA90EDF67B57F6F559EF
  • PowerShell-7.4.17-win-x64.zip
    • 266479A93B82CD0DC0F043419388FD4A738A51082821C301FFF497212FAF6760
  • PowerShell-7.4.17-win-x86.msi
    • 3C45EF0F08A4EF286E37605DC0B1BC3D4F5C20E60B66FC61D9D6A4CC38CBCC84
  • PowerShell-7.4.17-win-x86.zip
    • B29375E6A2D9D2EC3BF4F01C4FDFB25EDFBC20EAA4475C9061693FA8947748B2
  • PowerShell-7.4.17.msixbundle
    • 215276F5EB0EF76C7769C02FE8D6E06931A2BA9321FC2258757E8B6D773B9481
  • powershell-lts-7.4.17-1.cm.aarch64.rpm
    • CB825180F7EA1408134D7F26018C111DB90D9CE9976CD2593FD4F4656637FEF6
  • powershell-lts-7.4.17-1.cm.x86_64.rpm
    • E3CD38D02C55808441AB67C6FA25CDFF473DF4540BA67A85E7BA8FC6E5BC0458
  • powershell-lts-7.4.17-1.rh.x86_64.rpm
    • D87AD9C2396E4B9DAEFC5A71C1EF5C3AC1D112576A99A7AA3AA1EE29B94B1C98
  • powershell-lts-7.4.17-osx-arm64.pkg
    • DAF7E3009822A5D76B10AA4F3F3ACCC7501A9908E47AA652906B57F696FC62DA
  • powershell-lts-7.4.17-osx-x64.pkg
    • DA372198E2F66205308551EE28B139082EE9481EAC15F338A164D55BD821D9EC
  • PowerShell-LTS-7.4.17.msixbundle
    • 603D2D0F10A7B38C9CF944AF185CF09F54064B66BE10EDF91C4E7B714B153385
  • powershell-lts_7.4.17-1.deb_amd64.deb
    • F49C86AF3A10983D318FEB29E29C0B80AB4A683C3CA38F39CBAA38A5893566D4
  • powershell_7.4.17-1.deb_amd64.deb
    • 1428E026706076483C471486A0EDF5670611DEB77825188F2B409B17D1E32270
Read the whole story
alvinashcraft
just a second ago
reply
Pennsylvania, USA
Share this story
Delete

v2026.6.8

1 Share

openclaw 2026.6.8

Read the whole story
alvinashcraft
just a second ago
reply
Pennsylvania, USA
Share this story
Delete

Startup led by Microsoft veterans debuts the first real-time carbon tracker for AI workloads

1 Share
Neuralwatt’s co-founders: CEO Chad Gibson, left, and Scott Chamberlin, chief technology officer. (LinkedIn Photos)

Neuralwatt, a Seattle-based startup launched by two Microsoft veterans, has released what appears to be the first tool for calculating, in real time, the carbon emissions of individual AI requests — everything from asking a bot to edit a high school essay to deploying an autonomous AI agent for a complex coding assignment.

The co-founders hope the data will unlock more planet-friendly operations and give AI developers something to feel optimistic about, even as public anxiety grows over data centers’ energy, water and utility bill impacts.

There’s a lot of worry that AI requires “a data center in every neighborhood,” said Chad Gibson, Neuralwatt’s co-founder and CEO. While new facilities will be built, he added, existing ones and their energy sources could be used much more efficiently.

The startup estimates that if AI growth continues at its current pace, and with the current approach to energy use, the technology could generate 24 million to 44 million metric tons of carbon dioxide per year by 2030 — volumes equivalent to adding millions of gas-powered cars to the road.

Neuralwatt aims to help avoid that outcome. The carbon intensity of grid power varies throughout the day and across regions, depending on its source and how much demand there is. The company’s platform captures a carbon intensity snapshot each time an AI function — or “inference,” in tech jargon — runs, giving customers insight into the emissions tied to that specific task.

The Neuralwatt dashboard with carbon emissions displayed. (Neuralwatt Image)

Just as cloud users have come to expect emissions data linked to their usage, Gibson said companies running AI workloads will soon expect the same. “We believe that is going to be the future.”

The data is increasingly important for companies that will need to comply with Europe’s Corporate Sustainability Reporting Directive and for other organizations disclosing the full range of their carbon emissions.

Neuralwatt offers three products, all of which integrate the carbon-impact metrics: Neuralwatt Cloud, which provides AI services from leased data centers with energy-based pricing; Neuralwatt Deploy, which identifies underused data centers for AI customers to tap into; and Neuralwatt Optimize, which lets data center managers subtly adjust operations in real time to improve efficiency.

Its customers include Parasail, an AI inference startup; ZutaCore, which makes chip-cooling technology; and Crusoe Cloud.

Gibson launched Neuralwatt in December 2024 with Scott Chamberlin, who serves as chief technologist. Both spent more than two decades at Microsoft, with Gibson departing in 2019 and Chamberlin in 2022. The two overlapped while working on the company’s now-defunct Zune media player.

After leaving Microsoft, Gibson took an entrepreneurial path, becoming a limited partner at Seattle investment firm Flying Fish and an angel investor with Alliance of Angels. Chamberlin, whose final Microsoft role was sustainability lead for Windows, moved to Intel to lead its green software strategy.

Neuralwatt joined the Climate Collective accelerator in 2025 and received a grant to support its work, then was selected this year for the Plug and Play accelerator. The startup is also part of the Nvidia Inception and Microsoft for Startups programs, which provide access to hardware and services.

Last summer, the company received an undisclosed pre-seed investment from Powerhouse Ventures, Avesta Fund and Remarkable Ventures. The team has four employees and three advisors.

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

Linear Thinking, Nonlinear Costs

1 Share

Many AI agent systems become economically unsustainable long before they become technically impressive. Teams usually focus on model choice, prompt design, tool calling, and orchestration. Those things matter, but they are only part of the system setup. The deeper issue is that coding agents, such as Claude Code, Codex, and Jules, make agent workflows easier to generate. But when implementation is abstracted away, the underlying mechanics become harder to see. Bad engineering used to produce slow code. Now it produces expensive systems that also happen to be slow.

When we design agent systems, we still need to remember that the costs scale nonlinearly. A single user request rarely triggers a single model call. It expands into routing, retrieval, reasoning, reflection, guardrail checks, tool calls, and synthesis. Each step may repeat shared context, reload state, recompute a planner decision, or retry a failed path. What looks like an intelligent workflow can therefore behave like a recursive, stateful computation with overlapping subproblems. If that sounds like backtracking, dynamic programming, and memoization to you, you’re right.

We already know how to optimize systems like this. The problem is that coding agents make agent systems easier to generate, but not necessarily easier to optimize. Unless we recognize the underlying mechanics, we may never ask our coding agents to apply the optimization patterns that keep our systems viable.

Old problems wearing new clothes

When we use coding agents to generate agent architectures, it’s tempting to stop at “the trace looks reasonable.” The tool can generate routers, retrievers, planners, evaluators, guardrails, tool interfaces, and synthesis steps. It may also know about caching, pruning, memoization, and state modeling. But it won’t necessarily implement those patterns unless you ask for these optimization layers explicitly.

Even if you work with agent instructions, unless your SKILL.md, AGENTS.md, or project instructions include constraints around repeated context, memoization, cache invalidation, pruning, and cost per request, your resulting agent system may be functionally correct and economically wasteful at the same time. That’s the tricky part: The code can pass review, the unit tests can pass, and the architecture can look reasonable. The invoice is where the hidden computation finally shows up.

It’s easy to give too much agency to tools like Claude Code. When a coding agent reasons in language, calls tools, reflects, and produces fluent text or code, it can feel like a knowledgeable coworker. At the interface level, that impression is understandable. These tools help teams generate more code, move faster, and become more productive. Still, this doesn’t remove the need for engineering craft underneath. Someone still has to recognize repeated context, recomputed planner decisions, correlated retries, unpruned branches, and state that can’t be reused. The coding agent can implement the system, but the engineer still has to understand what kind of system should be implemented. This is where old computer science returns, not as theory but as the optimization layer our agent systems need in production.

The cost multiplier, repeated-work problems, and backtracking

The cost multiplier often shows up first as latency. The user doesn’t see the router, the retries, the reflection loop, or the tool calls. They only see that the agent is taking too long. From the outside, the system looks stuck or broken. From the inside, it may simply be repeating work.

This is one of the uncomfortable differences between traditional software and agent systems. In a conventional application, a failed operation often throws an error, times out, or leaves a trace that is easy to inspect. In an agent workflow, failure can look like effort to improve reliability. Take the weakest step in your agent workflow. If it succeeds 60% of the time, and you try to push it close to 99% reliability through retries, you need 5 retries:

1 (1 0.60)5 = 0.98976

This math assumes each retry is a roll of fair dice. LLMs aren’t dice. Whether you’re using greedy decoding or probabilistic sampling, the model is still drawing from the same underlying distribution shaped by your prompt. If the first “thought” is a hallucination or logic error, bumping the temperature won’t fix the underlying state. You aren’t buying independent trials; you’re just sampling different paths through the same flawed map and state.

This is where the old algorithmic framing matters. In a backtracking problem, you don’t keep walking down the same failed branch and call it progress. You return to the last valid state, mark the failed path, and use the failure as information for the next choice. The point isn’t just to try again. The point is to try again under a changed state.

Agent workflows need the same discipline. A retry shouldn’t mean “run it again and hope.” It should give the model structured feedback about why the previous attempt failed: which constraint failed, which tool result was invalid, which schema didn’t validate, which assumption was unsupported, or which branch added nothing. The next attempt should then change something meaningful: the prompt, the tool choice, the retrieved evidence, the validation constraint, or the planner state.

Memoization, pruning, and dynamic programming

Prompt caching is usually the first optimization. If every step repeats the same system prompt, tool definitions, schema constraints, examples, and policy rules, then caching the shared prefix is an obvious win. It reduces the cost of repeated context. But prompt caching only recognizes that text repeats. It doesn’t notice that decisions repeat.

In many agent systems, the expensive unit isn’t only text. It’s the repeated decision. If the same or equivalent state appears again, paying the model to rediscover the same action is unnecessary. That is what memoization does: It turns repeated computation into lookup. In classical algorithms, the repeated computation might be a recursive subproblem. In an agent system, it might be a planner decision over the same task, facts, tools, and constraints. The planner can be treated as a function over state:

πLLM(St)at+1^πLLM(S_t) \rightarrow a_{t+1}

where StS_t is the current state of the workflow and at+1a_{t+1} is the next action. Without memoization, this function is evaluated again and again through an LLM call. With memoization, the system first checks whether it has seen the same or equivalent state before. If you want a deeper walkthrough of how to use memoization, I cover it in AI Agents: The Definitive Guide.

But memoization only helps once the system knows which states are worth revisiting. Pruning handles the other side of the problem: branches that shouldn’t be explored further. However, don’t limit pruning to KV cache pruning or speculative decoding. Use it also when a tool repeatedly returns no new information. Your next LLM call shouldn’t be a slightly reworded version of the same query. If a reflection loop keeps producing stylistic changes without improving correctness, the loop should stop. If a search path violates a constraint or depends on an unsupported assumption, it should be marked as unproductive and removed from the active search space.

Dynamic programming becomes relevant when different branches of the workflow solve overlapping subproblems. A research agent may ask similar questions across several documents. A coding agent may inspect the same dependency chain from different entry points. A business analysis agent may compute the same metric for several report sections. If every branch solves these subproblems from scratch, the system pays repeatedly for work it has already done. Table 1 shows examples of how these patterns map to AI agent systems.

Table 1. Classical optimization patterns applied to AI agent systems 

OptimizationThe “old” CS wayThe “agent” way 
MemoizationStore results of expensive function calls.Cache decisions. If the agent saw this state before, don’t ask it to reason again. 
PruningCut off search paths in a tree that won’t lead to a solution.Kill a reflection loop when the critique stops yielding structural improvements.
Dynamic programmingBreak problems into overlapping subproblems. Share codebase analysis across multiple specialized agents instead of rereading files.


This isn’t nostalgia. These patterns mitigate the cost structure of agent systems. Memoization reduces repeated decisions. Pruning reduces repeated failure. Dynamic programming reduces repeated subproblem solving. Together, they form the optimization layer many agent architectures are missing in production.

Where to start: Optimization follows topology

The patterns above aren’t a checklist you apply uniformly. Each multi-agent topology, whether centralized, decentralized, independent, or hybrid, distributes communication and coordination differently, which directly affects overhead, latency, and failure propagation. The optimization layer has to follow.

Centralized
A single orchestrator decides, delegates, and aggregates. The expensive unit is the orchestrator’s decision, repeated across similar inputs. Memoize the planner first.

Decentralized
Agents coordinate peer-to-peer, exchanging messages without a central authority. The cost moves into the communication itself: redundant exchanges, restated context, agents reasoning over the same shared state from different angles. Prompt caching on the shared context is the first win, followed by pruning exchanges that no longer add information.

Independent/swarms
Lightweight agents fan out without coordinating. Cheap individually, expensive in aggregate. If three of your ten agents ask semantically equivalent questions, you pay three times for the same answer. Memoization and pruning aren’t optimizations here; they’re load-bearing.

Hybrid
The repeated work shows up at two scales: within a cluster (overlapping subproblems among peers) and across clusters (the coordinator rediscovering the same routing decision). Use dynamic programming on shared subproblems inside the cluster, memoization on the coordinator’s decisions across them.

The optimization layer isn’t a generic discipline you bolt on. It’s a function of the shape of the implementation. Coding agents made it easy to generate the shape without seeing it. The craft is in seeing it anyway.



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

Fixing MSIX Packages at Scale: Why Advanced Installer’s New Analysis Engine Changes Everything

1 Share
Analyze MSIX packages with Advanced Installer to detect missing Execution Aliases, File Type Associations, environment variables, and other manifest declarations.

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

Mastering Claude: Slash Commands to Elevate Your AI Game

1 Share

In the ever-evolving world of artificial intelligence, knowing the right tools and tricks can set you miles apart from the rest. Slash commands in Claude are one of those underutilized features that hold immense power. Whether you’re a seasoned pro or a newcomer, these commands can enhance your productivity and the quality of your AI interactions.

Here’s a deep dive into the six essential slash commands in Claude, plus a bonus custom command that’s been a personal game-changer, boosting my outputs by a remarkable 43%.

Based on content from Tristen O’Brien

Understanding Slash Commands

Slash commands are essentially shortcuts that streamline your interactions with Claude. Instead of laboriously crafting detailed requests each time, you can simply type a forward slash, followed by a command, and Claude will execute your directive efficiently. These commands can be accessed via the terminal or the desktop app — it’s as simple as typing a slash.

1. /clear

The /clear command provides a fresh start by erasing the current context and starting a new conversation. Given that Claude retains information in its context window, this command is invaluable when shifting between different tasks, ensuring no previous context muddies your new project.

2. /btw

The /btw or “by the way” command is perfect for those moments when inspiration strikes in the middle of another task. It allows you to interject with questions or additional information without interrupting the original task flow. Imagine it as a sidebar chat where Claude attends to your queries while remaining focused on the main task.

3. /statusline

Do you want to keep a constant eye on the technical specifics of your session? Use /statusline. Customize the bottom status bar of Claude with details such as the model in use, memory usage, real-time costs, or the number of running agents. Set it up once, and you’re good to go.

4. /plan

When precision is key, /plan is your best friend. Before jumping into a task, this command prompts Claude to research, lay out a plan, and seek your approval. Not only does it allow you to refine the directives, but it also prevents wasted effort on wrong assumptions.

5. /rewind and /resume

Mistakes happen, but with /rewind, they don’t have to be permanent. Roll back to any previous checkpoint during your current task. Should you wish to revisit an entirely different past conversation, /resume helps you jump back seamlessly.

6. /goal

Often, setting crystal-clear objectives can mean the difference between success and frustration. The /goal command encourages Claude to persistently work towards a defined outcome, integrating a secondary checker for successful completion. It’s a safety net ensuring your task is truly complete.

Beyond the Basics: Customizing Your Commands

Creating a custom command can personalize Claude to your unique workflow. My custom command, /scope, has been transformative. It guides Claude to ask clarifying questions, develop a comprehensive task plan, and confirm the plan with me before proceeding. This structured approach has significantly enhanced output quality.

To implement this, open Claude Code, initiate the command /scope, and paste the following instructions:

When I run this command and give you a task, do NOT start working right away. First, ask me at least 5 clarifying questions about the goal, the scope, any constraints, and exactly how I want it done. Wait for my answers. Once I respond, enter plan mode: research the relevant code and context, then lay out a complete, step-by-step plan for how you'll do it. Show me that plan and wait for my explicit approval. Do not write or change anything until I say go. Only after I approve the plan, build it.

Bonus Commands

For a little fun and education, try /radio to tune into Claude’s own YouTube radio station or /powerup for interactive lessons on Claude’s capabilities.

These slash commands are just the iceberg’s tip — dive deeper, explore, and customize to find what works best for you. Whether using pre-existing commands or building your own, Claude is a versatile tool, ready to be shaped to your needs.

If you’ve found this guide helpful, consider sharing it with your network and subscribe to stay updated on the latest in AI!

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