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

Scott Hanselman’s TEDx: My Parents Sold the Van for My Future

1 Share
From: Scott Hanselman
Duration: 0:43
Views: 987

My parents sold our van so I could have a Commodore 64. That wasn’t just a computer, it was belief in my future.

Full talk: hanselminutes.com

#TEDx #shorts

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

Daily Reading List – August 18, 2025 (#611)

1 Share

I felt my age this weekend. Busy days of sports and chasing kids left me WORN OUT. But, lots of fun and memories. I’m on vacation the next two days while I take a kid to college, so the reading list will be back on Thursday.

[article] Harsh truths to save you from ChatGPT psychosis. It’s definitely dangerous to treat AI like some sentient, all-knowing partner. That said, Forrest is wrong on points 1 and 4, partially right on 2 and 3.

[blog] 14 ways Googlers use AI to work smarter. How are we using AI within Google? Most of us are using it every day for different parts of our job. This offers a wide range of scenarios.

[blog] You Can Build Better AI Agents in Java Than Python. Rod teased it last week, and proved it today. Yes, this JVM-based agent framework looks simpler and more production-ready than a well-known Python option.

[blog] How Google does it: Your guide to platform engineering. This isn’t a product pitch, but more of a philosophical look at how to think about platform engineering.

[article] Diagnosing Your Company’s Strategy Problem. Figure out what’s going wrong with your strategy efforts and how to get back on track.

[blog] Scalable AI starts with storage: Guide to model artifact strategies. Great advice here in an area I haven’t seen much written about.

[blog] The Great SSL Certificate Panic. I didn’t know about these new fast-expiring certs. Kate gets us smarter on it and how it might impact you.

[blog] URL context tool for Gemini API now generally available. This is such a powerful feature of the Gemini API. Augment the static knowledge of an LLM with ingesting content from a URL. I like that it now supports PDFs, images, and data files.

[article] Your Company Needs to Focus on Fewer Projects. Here’s How. Any of you feel like you’re doing too few projects right now? Anyone? Bueller? No, most of us know there’s too many competing priorities. This is a good read on how to narrow your focus.

[article] Why software developers burn out, and how to fix it. Constant interruptions are killing your folks. That, and vague requirements are combining to burn out some great folks.

[article] The Top AI Tool for Devs Isn’t GitHub Copilot, New Report Finds. Surveys are surveys, but there’s signal here. It’s amazing to see how fast developer preferences evolve.

Want to get this update sent to you every day? Subscribe to my RSS feed or subscribe via email below:



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

#445 Auto-activate Python virtual environments for any project

1 Share
Topics covered in this episode:
Watch on YouTube

About the show

Python Bytes 445

Sponsored by Sentry: pythonbytes.fm/sentry - Python Error and Performance Monitoring

Connect with the hosts

Join us on YouTube at pythonbytes.fm/live to be part of the audience. Usually Monday at 10am PT. Older video versions available there too.

Finally, if you want an artisanal, hand-crafted digest of every week of the show notes in email form? Add your name and email to our friends of the show list, we'll never share it.

Michael #1: pyx - optimized backend for uv

  • via John Hagen (thanks again)
  • I’ll be interviewing Charlie in 9 days on Talk Python → Sign up (get notified) of the livestream here.
  • Not a PyPI replacement, more of a middleware layer to make it better, faster, stronger.
  • pyx is a paid service, with maybe a free option eventually.

Brian #2: Litestar is worth a look

  • James Bennett
  • Michael brought up Litestar in episode 444 when talking about rewriting TalkPython in Quart
  • James brings up
    • scaling - Litestar is easy to split an app into multiple files
    • Not using pydantic - You can use pydantic with Litestar, but you don’t have to. Maybe attrs is right for you instead.
  • Michael brought up
    • Litestar seems like a “more batteries included” option.
    • Somewhere between FastAPI and Django.

Brian #3: Django remake migrations

  • Suggested by Bruno Alla on BlueSky
  • In response to a migrations topic last week
  • django-remake-migrations is a tool to help you with migrations and the docs do a great job of describing the problem way better than I did last week
  • “The built-in squashmigrations command is great, but it only work on a single app at a time, which means that you need to run it for each app in your project. On a project with enough cross-apps dependencies, it can be tricky to run.”
  • “This command aims at solving this problem, by recreating all the migration files in the whole project, from scratch, and mark them as applied by using the replaces attribute.”
  • Also of note
    • The package was created with Copier
    • Michael brought up Copier in 2021 in episode 219
    • It has a nice comparison table with CookieCutter and Yoeman
    • One difference from CookieCutter is yml vs json.
    • I’m actually not a huge fan of handwriting either. But I guess I’d rather hand write yml.
    • So I’m thinking of trying Copier with my future project template needs.

Michael #4: django-chronos

  • Django middleware that shows you how fast your pages load, right in your browser.
  • Displays request timing and query counts for your views and middleware.
  • Times middleware, view, and total per request (CPU and DB).

Extras

Brian:

  • Test & Code 238: So Long, and Thanks for All the Fish
    • after 10 years, this is the goodbye episode

Michael:

Joke: python is better than java





Download audio: https://pythonbytes.fm/episodes/download/445/auto-activate-python-virtual-environments-for-any-project.mp3
Read the whole story
alvinashcraft
7 hours ago
reply
Pennsylvania, USA
Share this story
Delete

URL context tool for Gemini API now generally available

1 Share
The Gemini API's URL Context tool is now generally available, allowing developers to ground prompts using web content instead of manual uploads. This release expands support to PDFs and images.
Read the whole story
alvinashcraft
7 hours ago
reply
Pennsylvania, USA
Share this story
Delete

Introducing integrated observability in SvelteKit

1 Share

Understanding how your SvelteKit application behaves in production — from request flows to performance bottlenecks — is crucial for building reliable user experiences. SvelteKit now has first-class support for observability: built-in OpenTelemetry tracing, and a dedicated instrumentation setup file that ensures your monitoring tools work seamlessly.

To opt in, upgrade SvelteKit and your adapter and add the following to your svelte.config.js:

svelte.config
export default {
	
kit: {
    experimental: {
        tracing: {
 server: boolean;
        };
        instrumentation: {
 server: boolean;
        };
    };
}
kit
: {
experimental: {
    tracing: {
        server: boolean;
    };
    instrumentation: {
        server: boolean;
    };
}
experimental
: {
tracing: {
    server: boolean;
}
tracing
: {
server: booleanserver: true },
instrumentation: {
    server: boolean;
}
instrumentation
: {
server: booleanserver: true } } } };

First-party OpenTelemetry traces

SvelteKit can now emit OpenTelemetry traces for the following:

The emitted spans include attributes describing the current request, such as http.route, and surrounding context, such as the +page or +layout file associated with a load function. If there are additional attributes you think might be useful, please file an issue on the SvelteKit GitHub issue tracker.

A convenient home for all of your instrumentation

Emitting traces alone is not enough: You also need to collect them and send them somewhere. Under normal circumstances, this can be a bit challenging. Because of the nature of observability instrumentation, it needs to be loaded prior to loading any of the code from your app. To aid in this, SvelteKit now supports a src/instrumentation.server.ts file which, assuming your adapter supports it, is guaranteed to be loaded prior to your application code.

In Node, your instrumentation might look something like this:

import { import NodeSDKNodeSDK } from '@opentelemetry/sdk-node';
import { import getNodeAutoInstrumentationsgetNodeAutoInstrumentations } from '@opentelemetry/auto-instrumentations-node';
import { import OTLPTraceExporterOTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-proto';
import { import createAddHookMessageChannelcreateAddHookMessageChannel } from 'import-in-the-middle';
import { function register<Data = any>(specifier: string | URL, parentURL?: string | URL, options?: Module.RegisterOptions<Data>): void (+1 overload)

Register a module that exports hooks that customize Node.js module resolution and loading behavior. See Customization hooks.

@sincev20.6.0, v18.19.0
@paramspecifier Customization hooks to be registered; this should be the same string that would be passed to import(), except that if it is relative, it is resolved relative to parentURL.
@paramparentURL f you want to resolve specifier relative to a base URL, such as import.meta.url, you can pass that URL here.
register
} from 'module';
const { const registerOptions: anyregisterOptions } = import createAddHookMessageChannelcreateAddHookMessageChannel(); register<any>(specifier: string | URL, parentURL?: string | URL, options?: Module.RegisterOptions<any> | undefined): void (+1 overload)

Register a module that exports hooks that customize Node.js module resolution and loading behavior. See Customization hooks.

@sincev20.6.0, v18.19.0
@paramspecifier Customization hooks to be registered; this should be the same string that would be passed to import(), except that if it is relative, it is resolved relative to parentURL.
@paramparentURL f you want to resolve specifier relative to a base URL, such as import.meta.url, you can pass that URL here.
register
('import-in-the-middle/hook.mjs', import.meta.ImportMeta.url: string

The absolute file: URL of the module.

url
, const registerOptions: anyregisterOptions);
const const sdk: anysdk = new import NodeSDKNodeSDK({ serviceName: stringserviceName: 'my-sveltekit-app', traceExporter: anytraceExporter: new import OTLPTraceExporterOTLPTraceExporter(), instrumentations: any[]instrumentations: [import getNodeAutoInstrumentationsgetNodeAutoInstrumentations()] }); const sdk: anysdk.start();

If you’re deploying to Vercel, it would look something like this:

import { import registerOTelregisterOTel } from '@vercel/otel';

import registerOTelregisterOTel({
	serviceName: stringserviceName: 'my-sveltekit-app'
});

Consult your platform’s documentation for specific instrumentation instructions. As of now, all of the official SvelteKit adapters with a server component (sorry, adapter-static) support instrumentation.server.ts.

Acknowledgements

A huge thank-you to Lukas Stracke, who kicked us off on this adventure with his excellent talk at Svelte Summit 2025 and his initial draft PR for instrumentation.server.ts. Another thank-you to Sentry for allowing him to spend his working hours reviewing and testing our work.

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

Beyond Vibe Coding: Amazon Introduces Kiro, the Spec-Driven Agentic AI IDE

1 Share

Amazon recently released Kiro, a new VS Code fork aimed at taking developers beyond vibe coding and remedying some of its downsides. Kiro directly supports spec-driven development. Developers describe their requirements in natural language. Kiro outputs user stories with their acceptance criteria, a technical design document, and a list of coding tasks implementing the requirements.

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