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

McKesson is investigating a cybersecurity incident after ShinyHunters claims patient data theft

1 Share
Lawrence Abrams reports: Healthcare and pharmaceutical distribution giant McKesson has disclosed a cybersecurity incident involving unauthorized access to third-party applications and data theft, with the ShinyHunters extortion group claiming it stole 284 million patient data records. McKesson is a major U.S. healthcare company and pharmaceutical distributor that provides medicines, medical supplies, technology, and services to...

Source

Read the whole story
alvinashcraft
31 minutes ago
reply
Pennsylvania, USA
Share this story
Delete

mssql-python 1.14.0: Faster Parameter Binding, Safer Errors, Correct Timeouts

1 Share

mssql-python 1.14.0 is now available on PyPI. This release moves the standard parameter detection and execution path into native C++, improving throughput for wide parameterized statements and batched workloads. It also corrects connection timeout behavior, prevents Decimal conversion errors from exposing parameter values, and fixes several Arrow, bulk copy, and Windows ARM64 issues.

pip install --upgrade mssql-python

Highlights

Parameter detection and execution move into C++

Every parameterized execute() call has to identify each Python value, choose the corresponding SQL and C types, bind the values, and call SQLExecute. Previously, mssql-python performed type detection in a Python loop, constructed a ParamInfo object for every parameter, and passed those objects across the pybind11 boundary before the native layer could bind and execute the statement.

In 1.14.0, the standard path performs detection, binding, and execution in one native C++ pipeline and one Python-to-native call. Type checks use the CPython API directly, and the parameter metadata stays in C++.

The improvement grows with the number of parameters in each call. Benchmarks recorded in PR #549 measured type detection at about 35 ns per parameter, down from 2.0 to 2.3 microseconds. For statements with 50 or more parameters, execute() was about 21% to 73% faster across the tested macOS ARM64 and Linux ARM64 environments.

The same PR measured these complete insert workloads on macOS ARM64. These figures include the network round trip and SQL Server writing the rows, not just driver overhead.

WorkloadBeforeAfterSpeedup
Orders: integer, varchar, decimal, datetime2880.6 ms561.0 ms1.57x
Events: UUID, datetime2, varchar, integer827.2 ms533.5 ms1.55x
Documents: nvarchar(max) around 10 KB1622.0 ms1021.3 ms1.59x
Wide rows: 50 mixed columns1598.6 ms1048.9 ms1.52x

These are results from the PR benchmark environment, not a throughput guarantee. The gain depends on how much of each call was previously spent inspecting parameters. A benchmark that issued 5,000 single-row calls with four parameters showed no meaningful change because the network round trip dominated the roughly 9 microseconds of parameter detection that was removed.

Calls that use setinputsizes() continue through the existing Python detection path so their explicit type overrides are preserved. No API changes are required, but those calls do not receive this optimization yet.

See PR #549 and issue #500.

connect(timeout=) now controls login time

The timeout argument to connect() is documented as a login timeout, consistent with pyodbc. Before 1.14.0, mssql-python silently stored it as the per-statement query timeout. It did not bound the connection attempt, and a later long-running query could be canceled after that number of seconds.

The two settings are now separate:

from mssql_python import connect # Allow up to five seconds to establish the connection. conn = connect(connection_string, timeout=5) # Allow up to 60 seconds for each statement on this connection. conn.timeout = 60

An explicit attrs_before[SQL_ATTR_LOGIN_TIMEOUT] still takes precedence over the timeout argument. Both timeout entry points reject negative values, non-integers, and booleans.

This is a behavior correction with an upgrade implication. If an application relied on connect(timeout=N) to stop long-running queries, set Connection.timeout = N explicitly after upgrading.

See PR #728 and issue #725.

Decimal conversion errors no longer include parameter values

When executemany() could not convert a value for a Decimal or NUMERIC parameter, the exception included the entire parameter row. That row could contain names, email addresses, account data, or other sensitive values, and the exception could then be collected by an application log or APM service.

The error now reports only the row index, column index, and Python type:

Failed to convert parameter to Decimal at row 0, column 3 (value type: str)

The fix also prevents a value-bearing exception cause from reintroducing the data through a chained traceback.

See PR #719.

Arrow and bulk copy fixes

  • Arrow View types: bulkcopy_arrow() now accepts variable-length Arrow View arrays, including Polars string_view columns exported directly through the Arrow C Data Interface. Values and NULLs round-trip without an explicit DataFrame.to_arrow() call. This support comes through mssql_py_core 0.1.9. See PR #717PR #729, and issue #708.
  • Original Arrow fetch errors are preserved: defensive cleanup in the Arrow batch reader no longer raises a secondary exception that hides the fetch failure callers need to diagnose. See PR #718 and issue #712.
  • Unlimited bulk copy timeout: bulkcopy(timeout=0) now passes zero through as no timeout, matching the documented BCP contract. Negative, non-integer, and boolean values remain invalid. See PR #698 and issue #697.

Windows ARM64 extension loading

On Windows, platform.machine() reports the host CPU architecture rather than the architecture of the running Python interpreter. An x64 Python installation on a Windows ARM64 machine therefore looked for an ARM64 native extension even though pip had installed the win_amd64 wheel. Import still fell back to another file, but it performed the fallback on every import and printed a warning to stdout.

The loader now derives the architecture from the Python interpreter build, matching the wheel tag. Fallback notices use RuntimeWarning instead of writing to stdout.

See PR #727 and issue #726. Thanks to @Om-singhaI for the contribution.

Upgrading

For most users, upgrading requires no code changes:

pip install --upgrade mssql-python

Check these two cases:

  1. Code that used connect(timeout=N) as a query timeout must set conn.timeout = N explicitly. The constructor argument now controls the login attempt as documented.
  2. Calls with explicit setinputsizes() overrides retain their existing behavior but do not use the new native parameter detection path.

Full release notes are available on the mssql-python 1.14.0 release page. File issues and feature requests at github.com/microsoft/mssql-python/issues, or email us at mssql-python@microsoft.com.

Read the whole story
alvinashcraft
31 minutes ago
reply
Pennsylvania, USA
Share this story
Delete

368: Push, Pull, and Pray: GitHub Outage Strikes

1 Share




Download audio: https://episodes.castos.com/5e2d2c4b117f29-10227663/2590101/c1e-rodobo6d41sd3d64-gpd7k5d0sxzd-eixmv8.mp3
Read the whole story
alvinashcraft
32 minutes ago
reply
Pennsylvania, USA
Share this story
Delete

5 Rules for AI Writing

1 Share
From: AIDailyBrief
Duration: 22:57
Views: 2,316

Stanley Druckenmiller's obviously AI-written Wall Street Journal op-ed sparked a fierce debate about disclosure, plagiarism, and whether the tool used matters more than the thinking behind it. NLW lays out five rules for AI writing, including why the purity test will fade but the quality test never will, and why perceived laziness undermines the argument itself. Also covered: a practical crib sheet for emails, meeting notes, strategy memos, social copy, marketing, and op-eds.

The AI Daily Brief helps you understand the most important news and discussions in AI.
Subscribe to the podcast version of The AI Daily Brief wherever you listen: https://pod.link/1680633614
Get it ad free at http://patreon.com/aidailybrief
Learn more about the show https://aidailybrief.ai/

Read the whole story
alvinashcraft
32 minutes ago
reply
Pennsylvania, USA
Share this story
Delete

PPP 521 | Neuroscience-Based Principles to Resolve Conflicts, with Dr. Jeremy Pollack

1 Share

Summary

In this episode, Andy sits down with Dr. Jeremy Pollack, a social-organizational psychologist and founder of Pollack Peacebuilding Systems, author of Wired for Peace: Using 7 Neuroscience-Based Principles to Resolve Conflicts. Jeremy looks at conflict through the lens of the brain and nervous system, which helps explain why disagreements escalate so quickly and why the fixes we reach for often make things worse.

Andy and Jeremy talk about why de-escalation has to come before problem-solving, since solutions and stress do not mix. Jeremy walks us through his Sapien Model of six basic psychological needs, giving us a far more useful lens than labeling a stakeholder difficult, defensive, or resistant. You will hear how memory and prediction shape the way we read the person in front of us, what a team learns when its leader consistently avoids conflict, and why changing our experience of conflict requires new experiences, not just new beliefs. Jeremy also shares how this shows up at home, in marriage and parenting.

If you're looking for a practical, evidence-based way to handle the conflicts that come with leading, this episode is for you!

Sound Bites

  • "The most fruitful relationships from what I've seen at work, at home, et cetera, are those that can weather storms without the real fear of abandonment."
  • "That was pretty interesting to me to see how much of the science is telling us that, like, our brain is mostly a predictive machine."
  • "Anytime we're in an escalated or emotionally charged state, there's something going on in our brains, usually subconsciously, that's tracking a threat or an impediment to our basic needs."
  • "It's de-escalate first because solutions and stress just don't mix."
  • "What I'm feeling right now is not a result of what the person's saying. It's a result of the way my body is responding."
  • "I call it an experiential thumbprint. It's completely unique to you and no one else has your nervous system, and you don't have anyone else's."
  • "If we have a negative experience with someone and we go into a place of fear or pain or anger or something like that, the way that we see them going forward can change very, very quickly, and it's a lot harder to get us to unsee that."
  • "We access memories in edit mode. And so after we retrieve it, and when we write it back, it's not always quite the same thing, and that's always made me question not is that memory correct as much as is it completely correct."
  • "All conflict is an opportunity for learning."
  • "The threat of abandonment is the big thing to really watch for when we're having arguments."

Chapters

  • 00:00 Introduction
  • 02:27 Start of Interview
  • 02:35 The Family Cultures That Shaped How Jeremy Sees Conflict
  • 05:51 In Awe of How Much We Still Do Not Know About the Brain
  • 07:49 The Brain as a Prediction Machine
  • 09:55 The Salad Lady and What Sits Underneath Defensive Behavior
  • 12:45 An Introduction to the Sapien Model
  • 16:19 Why a Framework Beats a Label
  • 16:58 De-escalate First: Catching Yourself Before It Is Too Late
  • 20:54 When Our De-escalation Attempts Backfire
  • 22:43 Empathy Without Having to Agree
  • 25:03 How Memory Distorts the Person in Front of Us
  • 27:46 We Do Not Access Memory as Read-Only
  • 30:45 Joe, the Conflict-Avoidant CEO, and What a Team Learns
  • 33:03 Taking Inventory When Nobody Pushes Back
  • 34:53 New Experiences of Conflict, Not Just New Beliefs
  • 38:08 Tell Me More: Creating a Gap Between Stimulus and Response
  • 40:31 Peace Starts in Small Ways
  • 42:49 Interrupting the Pavlovian Pattern
  • 44:19 Bringing It Home: Marriage, Parenting, and Attachment
  • 47:17 End of Interview
  • 47:57 Andy Comments After the Interview
  • 51:57 Outtakes

Learn More

You can learn more about Jeremy and his work at CoachJeremyPollack.com.

For more learning on this topic, check out:

  • Episode 371 with Amanda Ripley. Amanda is an amazing writer, and her book High Conflict is a great follow-up to today's discussion.
  • Episode 148 with Dan Shapiro. The title of his book Negotiating the Nonnegotiable sounds like it's about negotiating, but it's really about navigating the conflicts that suck the life out of us.
  • Episode 61 with Mike Roberto. That discussion was over 15 years ago, and there are ideas from it that Andy still uses to this day.

Chat with PMeLa

You can chat directly with PMeLa, the podcast's AI persona, to get episode recommendations and answers to your project management and leadership questions. Visit PeopleAndProjectsPodcast.com/PMeLa to chat with her.

Join Us for LEAD52

I know you want to be a more confident leader–that's why you listen to this podcast. LEAD52 is a global community of people like you who are committed to transforming their ability to lead and deliver. It's 52 weeks of leadership learning, delivered right to your inbox, taking less than 5 minutes a week. And it's all for free. Learn more and sign up at GetLEAD52.com. Thanks!

Thank you for joining me for this episode of The People and Projects Podcast!

Talent Triangle: Power Skills

Topics: Leadership, Project Management, Conflict Resolution, Neuroscience, De-escalation, Psychological Safety, Emotional Regulation, Memory, Stakeholder Management, Team Culture, Accountability, Parenting

The following music was used for this episode:

Music: On Point by Steven O'Brien
License (CC BY 4.0): https://filmmusic.io/standard-license

Music: Energetic Drive Indie Rock by WinnieTheMoog
License (CC BY 4.0): https://filmmusic.io/standard-license





Download audio: https://traffic.libsyn.com/secure/peopleandprojectspodcast/521-JeremyPollack.mp3?dest-id=107017
Read the whole story
alvinashcraft
32 minutes ago
reply
Pennsylvania, USA
Share this story
Delete

KONVO: Create Clearer Technical Content with AI

1 Share
KONVO is an agent skill that helps you create clearer technical content with AI as an editor and collaborator, without replacing your voice.
Read the whole story
alvinashcraft
32 minutes ago
reply
Pennsylvania, USA
Share this story
Delete
Next Page of Stories