Profile avatar
willmcgugan.bsky.social
CEO / Founder of https://textualize.io Hyperborean Python expert, author, humanist, husband, sometimes wildlife photographer. Carbonara aficionado. He/him.
144 posts 2,686 followers 397 following
Prolific Poster
Conversation Starter

Pythonistas, if you haven't already done this, give it a try! Run this in your terminal: uvx textual-demo Requires UV docs.astral.sh/uv/

At #PythonPizza in Brno this Saturday, I presented a talk called "▃█▅ Terminal plotting". The event was very interesting and fun. I'd like to thank the organisers for doing this and for inviting me! Slides are available at github.com/janpipek/cli... . #cli #plotting #python

I blogged... Smoother scrolling in the terminal — a feature decades in the making textual.textualize.io/blog/2025/02...

📦 Just released sbommage, a friendly terminal UI for exploring SBOMs! Built with Python/Textual, it handles SPDX, CycloneDX, and Syft formats. Works great for quickly poking around in your SBOMs without fighting with JSON viewers. Check it out:

The CFP for PyCon Portugal is now open: pretalx.evolutio.pt/pycon-portug... This year, the conference will be right across from the beach ;)

Textual inherited its markup from Rich, and suffers from the same gotcha. Consider this: f"Hello [b]{name}[/b]" If 'name' contains markup tags like [blink], then they will be treated like tags. Textual's new Content markup fixes this.

This snippet of code represents the best bang for your buck when it comes to profiling Python code. @timer("is this slow") def my_func(): ... with timer("is this slow"): my_func() Replace the log with a print for other projects. Feels almost stdlib worthy...

been reading a lot of comments today about how people find man pages hard to read and it made me mad (why do they have to be so hard!) so I'm giving away 300 copies of Bite Size Command Line to folks for whom $12 is a lot of money! (with code BUYONEGIVEONE) wizardzines.com/zines/bite-s...

Took me way too long to find the snake.

On this week's episode, @digiglean.bsky.social and I talk about top Python libraries, sockets, merging dicts, some Django stuff, and more. With content from: @djangoconus.bsky.social, @willmcgugan.bsky.social, @trey.io, @adamj.eu, @tdhopper.com, and others.

I've released uv-secure 0.5.0 on PyPi. It now has the same vulnerability table format and formatting options (--aliases and --desc) as pip-audit. Except it leverages @willmcgugan.bsky.social 's Rich to look prettier (and even has clickable hyperlinks if your terminal supports it). #python

Did you know you can play a "game" on the Textualize website?? Go to textual.textualize.io Scroll down. Click Start Click the app Press G

Should I be looking forward to this? www.youtube.com/watch?v=SIrX...

I do believe I nailed text selection in Textual. Coming to the next version...

The video for my PyCon JP 2024 talk "Crimes with the Python syntax" is out now! youtu.be/fxiE6Tb5ofk

Squid Game Season 2 was excellent. Some didn't like it, and I think I know why. But I bet they will be watching Season 3.

Some widgets are a special case when it comes to text selection. The Digits widget displays a number with box characters. You can select digits as a whole, and when you copy them you get a readable string, and not a jumble of funny characters.

Arbitrary text selection is working in Textual. This was an *ordeal* to get working. A few more gray hairs in my beard from this PR.

✍️ New advanced post on using Python 3.12’s sys.monitoring to spy on a data structure and open pdb when it changes. adamj.eu/tech/2024/12...

✍️ New post with a tip for undoing 'git pull', as I helped a client figure out yesterday. adamj.eu/tech/2024/12...

Has anyone taken a DNA test and been surprised by the results? My results told me what most folk would guess by looking at me. 30% squirrel, 17% komodo dragon, and the rest of my DNA is coffee.

I’ve never tried tempe. I must remedy this in 2025.

TIL Constantine was released in 2005. That doesn’t feel right.

Much to the chagrin of us atheists, the war against Xmas has failed again this year -- and I will once again be forced to eat roast potatoes and poultry. Merry Xmas to those who do that. And a convivial Wednesday to those who don't. 🎄

My book has officially been sent to production! 😁🎉 mng.bz/ZlYR

I think this is the behavior most people would expect for text selection, for left to right languages. Problems like this interest me, as there is no obvious perfect solution. I may offer a modifier key to do a rectangular select in the future. www.youtube.com/watch?v=WSPK...

Text selection with the demo app. Some breakages in rendering, which I know the cause of. Also implemented double click and triple click to select, on top of click and drag. #Textual #Python

I swapped my caps lock switch from a linear to a clicky. I don't like clicky switches for typing, but I do like the way they feel. Now I have an integrated fidget toy. You'll know I'm stressed if you hear CLICK CLICK CLICK

Selecting arbitrary text is a surprisingly gnarly problem. Here it is working in Textual with the simple case of two vertical stacked widgets.

Pro tip: if you are prone to motion sickness and own an iPhone, go into accessibility settings and enable vehicle motion cues. It’ll add dots to the sides of your screen when it detects you’re in a car. Usually if I’m on my phone in the car, I’ll feel motion sick but this actually worked for me.

On Becoming a PSF Fellow - https://kjaymiller.com/blog/on-becoming-a-psf-fellow.html