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

On screwing up

1 Share

The most shameful thing I did in the workplace was lie to a colleague. It was about ten years ago, I was a fresh-faced intern, and in the rush to deliver something I’d skipped the step of testing my work in staging1. It did not work. When deployed to production, it didn’t work there either. No big deal, in general terms: the page we were working on wasn’t yet customer-facing. But my colleague asked me over his desk whether this worked when I’d tested it, and I said something like “it sure did, no idea what happened”.

I bet he forgot about it immediately. I could have just messed up the testing (for instance, by accidentally running some different code than the code I pushed), or he knew I’d probably lied, and didn’t really care. I haven’t forgotten about it. Even a decade later, I’m still ashamed to write it down.

Of course I’m not ashamed about the mistake. I was sloppy to not test my work, but I’ve cut corners since then when I felt it was necessary, and I stand by that decision. I’m ashamed about how I handled it. But even that I understand. I was a kid, trying to learn quickly and prove I belonged in tech. The last thing I wanted to do was to dwell on the way I screwed up. If I were in my colleague’s shoes now, I’d have brushed it off too2. How do I try to handle mistakes now?

Handling the emotional reaction

The most important thing is to control your emotions. If you’re anything like me, your strongest emotional reactions at work will be reserved for the times you’ve screwed up. There are usually two countervailing emotions at play here: the desire to defend yourself, find excuses, and minimize the consequences; and the desire to confess your guilt, abase yourself, and beg for forgiveness. Both of these are traps.

Obviously making excuses for yourself (or flat-out denying the mistake, like I did) is bad. But going in the other direction and publicly beating yourself up about it is just as bad. It’s bad for a few reasons.

First, you’re effectively asking the people around you to take the time and effort to reassure you, when they should be focused on the problem. Second, you’re taking yourself out of the group of people who are focused on the problem, when often you’re the best situated to figure out what to do: since it’s your mistake, you have the most context. Third, it’s just not professional.

So what should you do? For the first little while, do nothing. Emotional reactions fade over time. Try and just ride out the initial jolt of realizing you screwed up, and the impulse to leap into action to fix it. Most of the worst reactions to screwing up happen in the immediate aftermath, so if you can simply do nothing during that period you’re already off to a good start. For me, this takes about thirty seconds. How much time you’ll need depends on you, but hopefully it’s under ten minutes. More than that and you might need to grit your teeth and work through it.

Communicate

Once you’re confident you’re under control, the next step is to tell people what happened. Typically you want to tell your manager, but depending on the problem it could also be a colleague or someone else. It’s really important here to be matter-of-fact about it, or you risk falling into the “I’m so terrible, please reassure me” trap I discussed above. You often don’t even need to explicitly say “I made a mistake”, if it’s obvious from context. Just say “I deployed a change and it’s broken X feature” (or whatever the problem is).

You should do this before you’ve come up with a solution. It’s tempting to try to conceal your mistake and just quietly solve it. But for user-facing mistakes, concealment is impossible - somebody will raise a ticket eventually - and if you don’t communicate the issue, you risk someone else discovering it and independently raising it.

In the worst case, while you’re quietly working on a fix, you’ll discover that somebody else has declared an incident. Of course, you understand the problem perfectly (since you caused it), and you know that it was caused by a bad deploy and is easily fixable. But the other people on the incident call don’t know all that. They’re thinking about the worst-case scenarios, wondering if it’s database or network-related, paging in all kinds of teams, causing all kinds of hassle. All of that could have been avoided if you had reported the issue immediately.

In my experience, tech company managers will forgive mistakes3, but they won’t forgive being made to look like a fool. In particular, they won’t forgive being deprived of critical information. If they’re asked to explain the incident by their boss, and they have to flounder around because they lack the context that you had all along, that may harm your relationship with them for good. On the other hand, if you give them a clear summary of the problem right away, and they’re able to seem like they’re on top of things to their manager, you might even earn credit for the situation (despite having caused it with your initial mistake).

Accept that it’s going to hurt

However, you probably won’t earn credit. This is where I diverge from the popular software engineering wisdom that incidents are always the fault of systems, never of individuals. Of course incidents are caused by the interactions of complex systems. Everything in the universe is caused by the interactions of complex systems! But one cause in that chain is often somebody screwing up4.

If you’re a manager of an engineering organization, and you want a project to succeed, you probably have a mental shortlist of the engineers in your org who can reliably lead projects5. If an engineer screws up repeatedly, they’re likely to drop off that list (or at least get an asterisk next to their name).

It doesn’t really matter if you had a good technical reason to make the mistake, or if it’s excusable. Managers don’t care about that stuff, because they simply don’t have the technical context to know if it’s true or if you’re just trying to talk your way out of it. What managers do have the context to evaluate is results, so that’s what they judge you on. That means some failures are acceptable, so long as you’ve got enough successes to balance them out.

Being a strong engineer is about finding a balance between always being right and taking risks. If you prioritize always being right, you can probably avoid making mistakes, but you won’t be able to lead projects (since that always requires taking risks). Therefore, the optimal amount of mistakes at work is not zero. Unless you’re working in a few select industries6, you should expect to make mistakes now and then, otherwise you’re likely working far too slow.


  1. From memory, I think I had tested an earlier version of the code, but then I made some tweaks and skipped the step where I tested that it worked even with those tweaks.

  2. Though I would have made a mental note (and if someone more senior had done this, I would have been a bit less forgiving).

  3. Though they may not forget them. More on that later.

  4. It’s probably not that comforting to replace “you screwed up by being incompetent” with “it’s not your fault, it’s the system’s fault for hiring an engineer as incompetent as you”.

  5. For more on that, see How I ship projects at large tech companies.

  6. The classic examples are pacemakers and the Space Shuttle (should that now be Starship/New Glenn)?

Read the whole story
alvinashcraft
24 seconds ago
reply
Pennsylvania, USA
Share this story
Delete

.NET 11 Preview 1 is now available!

1 Share

Today, we are excited to announce the first preview release of .NET 11! We just shipped our first preview release, adding to some major enhancements across the .NET Runtime, SDK, libraries, C#, ASP.NET Core, Blazor, .NET MAUI, and more. Check out the full release notes linked below and get started today.

This release contains the following improvements.

📚Libraries

⏱Runtime

🛠 SDK

🔨 MSBuild

C#

F#

This release you will find updates across the F# compiler, including parallel compilation enabled by default, faster compilation of computation expression-heavy code, new features like --disableLanguageFeature and --typecheck-only for FSI, the ML compatibility removal, and bug fixes.

Visual Basic

.NET 11 Preview 1 doesn’t include any new Visual Basic language features or breaking changes. Browse the full release notes for details.

🌐 ASP.NET Core & Blazor

📱 .NET MAUI

.NET for Android

Browse the full release notes for all of this and more.

🖥 Windows Forms

This release focused on quality improvements. A full list of changes can be found in the release notes.

🖥 Windows Presentation Foundation (WPF)

This release focused on quality improvements, including fixes for Fluent window backdrop and background in Windows 10. A full list of changes can be found in the release notes.

🎁 Entity Framework Core

📦 Container Images

.NET 11 Preview 1 does not introduce new container image features. Browse the full release notes for details.

🚀 Get started

To get started with .NET 11, install the .NET 11 SDK.

If you’re on Windows using Visual Studio, we recommend installing the latest Visual Studio 2026 Insiders. You can also use Visual Studio Code and the C# Dev Kit extension with .NET 11.

The post .NET 11 Preview 1 is now available! appeared first on .NET Blog.

Read the whole story
alvinashcraft
38 seconds ago
reply
Pennsylvania, USA
Share this story
Delete

6 Fascinating Fictional Character Types

1 Share

Characters are the stars of your story. In this post, we offer you 6 fascinating fictional characters for your books.

Characters are the stars of a story, the heartbeat in a novel or screenplay. We sometimes hear that characters should be interesting, but interesting is not always an adequate description. Characters should be fascinating.

So what makes a character fascinating?

6 Fascinating Fictional Character Types

  1. One that pops to mind is Flawed Perfection. This character seems perfect in every way—until you scratch the surface. It is often an Achilles Heel or emotional blind spot that threatens to bring their whole world crashing down around them. Examples: Francesca Day in Fancy Pants by Susan Elizabeth Phillips, or Judy Bennett in Nancy Thayer’s Bodies and Souls.
  2. Another fascinating character is The Innocent in a Turbulent World. It can be the child who travels without guile through a world of conflict—war, social change or family upheaval—and becomes a symbol of hope. This character sees beauty in other people or unexpected events. Of course, it doesn’t have to be a child-like character. It can be a naïve adult—naïve in the purest sense of the word. In fact, it can be a character with a disability or a mental disorder, which gives them a unique way of looking at the world. Examples: Forest Gump or Kitten Braden in Breakfast on Pluto.
  3. The Radical Believer is another powerful character. It can be the madman who sees and pursues a vision, someone who will uphold a value no matter the risk of persecution. He firmly believes in something others may see as abhorrent, strange or simply unbelievable. Examples: Curtis LaForche in the film Take Shelter, or Jeff in the film Jeff Who Lives At Home.
  4. Almost a flip side to this character is The Chosen One. This is a character shaped by destiny. Their lives have been mapped out for them. They struggle under the hero’s burden. This is a great way to create a mythical or larger-than-life character. Examples: Harry Potter in all his adventures, Sonia in The Girl Who Could Silence the Wind by Meg Medina or Michael in Stranger in a Strange Land by Robert A. Heinlein.
  5. To create a character that an audience will identify with is The Everyman. This is the little grey man we often overlook. It can be the single parent or the high-school wallflower. What’s underneath the surface of this character is often a struggle worthy of an epic. Examples: Willy Loman in Death of a Salesman by Arthur Miller, Water Mitty in The Secret Life of Walter Mitty by James Thurber, or Ted in How I Met Your Mother.
  6. Alternatively you might enjoy writing about the opposite of ordinary. The Dream Woman is a highly romanticised character – the beautiful girl with the true heart who finds love and fulfilment in a world of luxury or bucolic contentment. The handsome hero who rushes into a burning building to rescue his buddy. In short, this character exists in a highly idealised state. It works well for escapist fiction or romance as it provides a wish fulfilment for the audience. Examples: Princess Daisy by Judith Krantz, Noah in The Notebook by Nicholas Sparks.

All these characters allow you to show the different facets of fascinating personalities.

5 Exercises For Creating Characters

To create your own fascinating character, you may wish to free write on one of these topics:

  1. Write about your own flaws, habits, mistakes—explore the emotions of these.
  2. Write about the things that delighted you as a child—swimming, play-acting, collecting toy cars or a video game.
  3. Write about your own career goals and ambitions and the price you’ve paid for going after your dream.
  4. Write about your views on religion, politics, and sex – all the thorny issues we avoid in real life.
  5. Write about your perfect day – what would it be like? Use as many of the senses as possible.


by Anthony Ehlers

The post 6 Fascinating Fictional Character Types appeared first on Writers Write.

Read the whole story
alvinashcraft
52 seconds ago
reply
Pennsylvania, USA
Share this story
Delete

One Shot Prompting is Dead

1 Share

One shot prompting is dead

I attended one shot prompting’s funeral.

There were no tears. Just a room full of developers quietly pretending they weren’t taking shots the night before. Because if we’re being honest, everyone saw this coming and couldn’t be happier it was over.

Saying “one shot prompting is dead” isn’t revolutionary. It’s just catching up to what builders have been experiencing for months.


The blog post that aged faster than oat milk

Last year, I wrote a post about how to prompt better. I shared tricks, phrasing tips, and even said to add a few “pleases” and “thank yous” and your AI agent would give you the world. At the time it felt cutting edge, because it was. There were livestreams and conference talks entirely about how to prompt better.

Less than a year later, it feels… quaint. Not because prompting stopped mattering, but because prompting stopped being the main character.

The conversation shifted from:

“How do I coach the model better?”

to

“What environment am I dropping this model into?”

That’s a completely different problem, and now it has a name. Context engineering.


The abstraction that broke

One shot prompting worked when agents were party tricks. You crafted a clever prompt, you got a clever answer, and by “clever answer” I mean a fully “working” app, so everyone clapped. But the moment we asked agents to plan, remember, call tools, and operate across multiple steps, the definition of “worked” fell apart.

A single prompt stopped being a solution and became a bottleneck. What matters now isn’t the sentence you type. It’s the system that surrounds it. Prompts didn’t disappear, but they were demoted to one step inside a larger pipeline designed to hold state, plan ahead, and enforce guardrails.

As someone put it in a thread I recently came across:

“The best model with bad context loses to an average model with great context.”

That line explains the shift. Context is now the advantage.

And this isn’t theoretical. You can see it in how serious agent systems are being built. Projects like OpenClaw and Ralph Wiggum loop aren’t chasing clever phrasing. They’re designing environments where context persists, decisions accumulate, and agents can operate across time without resetting every session.

The excitement around these systems isn’t just hype either. It’s relief. Builders have been hungry for real working examples that behave predictably over time.

Which leads to the only question that matters ....


How do I actually do this?

When I started building our skills marketplace, one shot prompting alone couldn't cut it. My normal workflow involved researching in one place and implementing in another, and every time I switched tools I had to re-explain the same decisions. Context wasn’t living inside the system. It was living in my head. The agent would forget, I would remember, and the entire session became an exercise in rehydration instead of progress.

Here’s what that loop looked like in practice:

Even this demo is powered by persistent context.

That was the moment I experimented with RPI. Not because it was trendy, but because the alternative had become tedious.

You don’t have to adopt RPI, or any new pattern, tomorrow to benefit from this. You can simulate the shift in your next session with a small change in how you start.

Before you execute anything, put your agent in chat only mode and run this handoff.

Step 1: Align on the finish line

Tell the agent exactly what counts as done.

“We are shipping: ___
Success looks like: ___”

If the finish line feels fuzzy to you this is the time to flesh it out with your agent, if not your session will drift.

Step 2: Lock in non-negotiables

Define what is not up for debate.

“Constraints: ___
Architecture we are committing to: ___ ”

This prevents the classic agent spiral where it keeps trying to overengineer the project instead of building it.

Step 3: Capture persistent context

Write down the facts that must survive the session.

“Context that must persist:
– ___
– ___
– ___”

This is research, assumptions, domain knowledge, edge cases, terminology, anything your agent will need to pick up exactly where it left off.

Now save it somewhere accessible:

  • a file in the project
  • a context file (goosehints, Cursor rules, etc)
  • a memory extension

Anything that outlives the chat window.

The rule is simple. Context should live in the system, not in your head.


This is good news for people who think beyond code

The interesting part is this shift isn’t just technical. It has a quiet career implication hiding inside it. AI isn’t replacing engineers. It’s replacing workflows that stop at “my code runs, so I’m done.” Context engineering rewards a different mindset, the ability to pick up all these different patterns and utilize them by thinking about how decisions propagate through a system, what persists, and what the downstream effects look like over time.

That’s a muscle I’m actively working on too. And the more I lean into it, the clearer the direction becomes.


The real skill is orchestration

We attended its funeral, but as you can see, prompting isn’t really gone. It just stopped being the workflow.

One shot prompting is still great for demos and exploration. But when the goal is building systems that last longer than a single session, the advantage shifts to how well you design the environment around the model.

The people who thrive in this era won’t be the ones with the cleverest phrasing. They’ll be the ones who know how to orchestrate context so intelligence accumulates instead of resetting.

And honestly, that’s progress.

Read the whole story
alvinashcraft
1 minute ago
reply
Pennsylvania, USA
Share this story
Delete

Export Your ML Model in ONNX Format

1 Share
When building machine learning models, training is only half the journey.

Read the whole story
alvinashcraft
1 minute ago
reply
Pennsylvania, USA
Share this story
Delete

A Beginner’s Reading List for Large Language Models for 2026

1 Share
  The large language models (LLMs) hype wave shows no sign of fading anytime soon: after all, LLMs keep reinventing themselves at a rapid pace and transforming the industry as a whole.

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