RSSAmplifier

Blog

Dan Shernicoff's Musings-Blog

brassnet.bizRSS feed ↗59 posts

Latest posts

Recapping PyOhio 2026

This past weekend I attended PyOhio for the first time. In many ways it was what I expected from a Python conference - lots of interesting talks, good keynotes, great conversations, and an overall fun weekend. Before I do a complete recap, here are some of the highlights: Seeing friends and making new ones. Giving my first conference talk. Giving my first lightning talk. Learning all sorts of new…

Using neovim with LazyVim

I've been a vim user for a long time. It was never my primary editor - I still tend to prefer a GUI - but it was my go-to when working from the command line. I've tried nano and emacs but for some reason, I've always preferred vim . Last year I was introduced to neovim and I saw right away that it was a huge improvement over base vim but it still had a pretty steep learning curve. A couple of…

My PyCon US 2026

This past Tuesday night I arrived home exhausted. I was completely worn out. But for good reason. I had just arrived home from PyCon US 2026 where I had an amazing time. Because telling you about everything I did would take longer than I care to write (and, let's be honest, you probably wouldn't want to read it either) I'm just going to give some highlights and thoughts. Highlights As always, a…

Contributing to CPython

This year one of my goals for PyCon US was to make my first contribution to CPython. I specifically waited because I know that with a project this size there is a not small amount of porcess around pushing changes and that the process - especially for a first time contributor - is often significantly more complex than any "good first issue". I was right and I am very glad I waited. Between…

Why dunder?

A little while ago, someone asked in the Python Discord "Why dunder?" It turns out that they were pretty new to programming and had more questions than just that. And we went into answers about "why dunder?" including examples for specific ones like __str__ and __add__ , the basic ones. I realized as the conversation went on that the question wasn't so much "why dunder?" but more "what is dunder?"…

Getting the right virtual environement

I work in a lot of repos, professionally and in my off time. One of the biggest things I've dealt with is being in the wrong virtual environment for the codebase I happen to mucking around it. Working on my site I need to be in the right virtual enviornment for that, and working in one of the many repos I deal with at work requires it too. As someone who lives in a terminal, this can be (as you…

One of the best parts of being a dad.

As a child, growing up in New York with parents who love theater, I got to go to a lot of shows as a kid. I remember seeing 42nd Street, Les Miserables, Little Shop of Horrors, and A Chorus Line, to name a few. Not having the abundance of live theater options is one of things I have missed since leaving New York almost 30 years ago. A few years ago one of the Hamilton touring companies came to…

I am human, hear me vouch!

A couple of days ago I found out about human.json - a protocol for people to claim the human authorship of their site and to vouch for others. Post by @EvanHahn@bigshoulders.city View on Mastodon So I decided that, since I am human and I am the sole proprietor and author of everything that goes here, I should do one. You can check out the contents of my human.json file and see who I am currently…

Let's go to Ohio!

A few days ago I wrote a blog post about NaN. I then shared that in the Python Discord , since that's where the conversation that triggered the blog post happened, and I got nerd sniped into writing a talk proposal for it. This has led me down something of a rabbit hole, in a good way. I now know I have enough material for a 30 minute talk slot. I could probably find enough material for a 45…

NaN is weird.

Last week in the Python Discord we had an unusual discussion about a Python oddity. Specifically concerning float('nan') . It turns out that (rather unsurprisingly when you think about it) float('nan') is hashable. >>> hash(float('nan')) 274121555 If it is hashable you can put it in a set : >>> set(float('nan') for _ in range(10)) {nan, nan, nan, nan, nan, nan, nan, nan, nan, nan} But why are…

Picking talks for PyCon US 2026

This year I was asked to join the Program Committee for PyCon US and I want to talk a bit about what I did and how the talks were chosen. After the CFP closes all of the talks go to the Program Committee (the Charlas, Posters, and Tutorials all go to the various groups that handles them, I only dealt with talks so that's what I'm going to talk about here.) This year there were 741 talks submitted…

The PSF accepted a large donation from Anthropic and that's not a bad thing

Yesterday, the PSF announced that it was accepting a $1.5M donation from Anthropic . The money will come over the course of two years and will fund, among other things, the security work that the PSF turned down a grant from the US government for . The reaction in the Python community to the news has been somewhat mixed. There have been a lot of people who have the opinion that the PSF should have…

Introducing Word Grid Finder

I recently started playing (another) online word game, Word Grid . This is a fun one where the goal is to be the only person to guess a word based on certain criteria. The criteria are things like "Must contain ee and be no longer than 6 letters long." or "Cannot contain the letters a, ,e, d but must contain i, o, and u". If you look at word finders they're all aimed at either Scrabble or Wordle.…

Advent of Code Day 12

It's day 12 , the last day of the 2025 Advent of Code (if you're wondering why it's only 12 days this year please look at the AOC FAQ .) The last day is only a 1 part puzzle. For today's the trick was that you could do all the hard work defined in the problem or you could ignore the test data and just figure out if there was enough space in a given region for all of the presents that belonged…

Advent of Code Day 11

It's day 11 and today's was a pretty easy one. Some simple recursion with memoization got part 1 @functools.cache def find_out(node: str, node_map: HashableDict) -> int: next_nodes = node_map[node] if 'out' not in next_nodes: return sum(find_out(next_node, node_map, filter, found) for next_node in next_nodes) else: return 1 I created the HashableDict class so I could use dictionaries for memoized…

Advent of Code Day 10

Day 10 is mean. It's nasty. It's ugly. It requires higher level math that I never studied. Part 1 was simple enough: def check_toggles(machine: dict) -> int: for n in range(1_000_000): for combo in itertools.combinations_with_replacement(machine['buttons'], r=n): lights = [False for _ in range(len(machine['lights']))] for toggles in combo: for index in toggles: lights[index] = not lights[index] if…

Advent of Code Day 9

It's day 9 and today's was a fun one. Part 1 was pretty easy and I had a working solution in around 20 minutes. I had a good idea of how to approach part 2 using Shapely but I had never used it before. I ended up going around in circles for a bit because of that. I eventually figured out that I was forgetting to close the polygon I was creating by including the first point at the end of the list.…

Advent of Code Day 8

It's Day 8 and it was a bit of a doozie. I had an approach but it was a bit off. I knew my math was right but I had 2 small issues that caused it to work with the test data but not the actual data. So I went to Trey Hunner 's solution for some inspiration. By looking at it I was able to understand where my issues were and to fix them. Since part 1 was creating circuits from the first n closest…

Advent of Code Day 7

Day 7 of Advent of Code 2025 has us tracking the splitting of tachyon beams through multiple timelines. For part 1 we care about how often the beam gets split, and in part 2 we care about how many timelines are created. This gives us the nice ability to get the solution for both parts in a single run. Part 1 was pretty easy, I had it done and working inside of 30 minutes. I went line by line and…

Advent of Code Day 6

It's the sixth day of Advent of Code 2025 and it was a frustrating one. This one I can't blame on the problem, although it was tricky to understand. This one I can blame on PyCharm. In a puzzle where whitespace really matters my IDE decided to strip the whitespace off the ends of some of the lines of the puzzle input. This led to me having a solution that worked give the wrong answer because the…

Advent of Code Day 5

Ah yes, we've reached day 5 of the 2025 Advent of Code. The first day where attempting a brute force solution will either run out of memory or run until the heat death of the universe, if not both. Conceptually a simple problem but with enough nuance to it to make it interesting. Our input is a list of ranges of unspoiled ingredients and a list of the ingredients we have. For part 1 we need to…

Advent of Code Day 4

Day 4 is upon us and we have finally hit the start of the grids. When I noticed how often grids were coming into play in AOC I made a GridBase class. This has made my finding solutions to these types of problems so much easier. I was able to leverage that today to write my solution in ~10 minutes for both parts. The gist of the solution is: for direction in DIRECTIONS: if (adj := adj +…

Advent of Code Day 3

It's day 3 of the 2025 Advent of Code and we had another fun puzzle. For today parts 1 & 2 were the same algorithm, just different lengths. We were given a list of banks of batteries and had to find the n largest batteries in each bank in the order that they appear. For part 1 we needed 2 and for part 2 we needed 12. For part 1 I didn't really think about doing a generic solution (I should have)…

Advent of Code Day 2

Day 2 of Advent of Code has us identifying invalid product IDs that were put into a system by some mischeivous kids. Our input gives us a range of PIDs that may or may not have one or more invalid PID in them. Our goal is to arrive at the sum of all the invalid PIDs. For part 1 we're told that an invalid PID is one that is comprised of 2 repeating sequences. This is pretty easy - split the PID in…

Advent of Code Day 1

I've decided that this year, in addition to publishing my solutions on GitHub , I'll do a blog post explaining the solutions I came up with and how I got there. The first AOC challenge this year was to find the combination to a lock. We were given input that was turns of a dial with the numbers 0 - 99. The input is a list of turns in the format of an L or an R followed by how many clicks on the…

Advent of Code 2025

For the past decade, Eric Wastl has put up, every December, a coding challenge called Advent of Code . Up until this year it has consisted of a new challenge every day for 25 days. The goal is to use your programming skills to solve a problem. Most are 2 part problems - you solve the first part and then receive the modified problem for the second part. For the past 3 years I have taken part in…

PyCon US 2026 is coming!

The organizers of PyCon US decided to scare a lot of people on Halloween this year. They opened the CFP on Halloween. This is scary. This is also exciting. If you have something you want to talk about that you think will be interesting to at least some part of the Python community I highly encourage you to submit a proposal to talk about it. Check out the proposal guidelines . Last year I took the…

Math Question

OK. I'm a nerd. I freely admit it. I like doing silly math things when I'm bored as a way to pass the time. So this one is something I've known for a while as a bit of math trivia but I've never worked it out. Today I'm going to do the math and show all 3 solutions. The trivia is that the difference between the squares of any 2 integers (x and y) where the difference between x and y is 1 is the…

The PSF puts principles first

Over the course of the past year the PSF invested a lot of time and energy in applying for an NSF grant to help secure PyPI. This $1.5M grant would have given the PSF the resources to create tooling to help prevent supply chain attacks that would have benefited not just the Python community but the OSS community as a whole because those tools could be applied elsewhere in places like crates.io ,…

Storytime is back!

I love stories. I am a book worm. In general I like to read them (usually an e-book but sometimes physical media too.) I'm not the biggest fan of having someone read to me. The one exception I've found is when the person reading to me is Wil Wheaton. Earlier this year he launched a podcast, "It's Storytime with Wil Wheaton" where he reads stories from authors people may not have heard from. I…

I love my hosting service.

I've talked before about what got me to set this site up and four months later I want to say how happy it's made me. I've enjoyed being a maintainer on Render Engine and have found it really fulfilling to contribute to such a great project. But today I want to talk about teahouse.cafe - my hosting service. Back in late April, early May Jamie and Piper started posting on Mastodon about how they…

Render Engine 2025.10.1 has been released

I am pleased to announce the release of Render Engine version 2025.10.1. This version has been in the works for the last few months and includes: Moving the CLI to it's own repo* Page and Collection objects handle their own rendering. The ability to have multiple sort keys for a Collection by passing in a list of attributes to sort by. Add the ability to generate HTML and/or XML site maps. Add the…

Pre-releases matter

Yesterday I pushed a pre-release for Render Engine to test out a new feature I have been working on. While in my testing, and with this site, that feature works without issue. When Jay installed it for his site it ran into an issue that I did not expect. Hopefully that issue will be solved in a day or so (it depends when Jay or I have the time to code a fix.) It's an important reminder that…

New 404 page

I love my hosting service, Teahouse Hosting . Not just because I'm supporting a small business run by amazing people, which I am. Not just because of how easy it was to get up and running, which it was. I love them because they are constantly working to improve the service . One of the things they recently added was the ability to do a custom 404 page. So you get something that is unique to me if…

I found a bug

So me finding a bug is not a news story. But this one affects this site (or at least one of the pages on it) so I figured I'd write a post. There's some weird issue with the parsing of the challah recipe that, for some reason, is mangling the URL for the windowpane test . I think this is probably a bug in cooklang-py but I haven't had a chance to debug it yet. Hopefully, I'll get that done soon.

The Python Documentary

If you were at PyCon US this year you probably noticed a film crew walking around, mostly following Guido. You might remember they showed a trailer for the Python documentary at some point. Yesterday, the documentary was released and this morning I had a chance to watch it. It's about 90 minutes long and I, personally, loved it. I learned some things I didn't know, like what exactly it was that…

First day of school

I don't know about where you live but here, in my corner of Maryland, today is the first day of school. Today all 3 of my kids went off to their first day of third grade, eleventh grade, and sophomore year of college. In honor of this most wonderful time of the year, and as a way of wishing them success, I put together a little song, to the tune of Do You Want to Build a Snowman . Feel free to…

Sometimes camera phones really surprise me

My wife, our 9 year old daughter, and I were taking an after dinner walk, as we are wont to do. At some point I took off my glasses to clean them and held them up towards the sun to get a better look at the lenses. My wife wondered for a second why I was taking a picture into the sun, knowing that the the bright sun (even somewhat obscured by clouds) would blow out all the color in the picture.…

We Need To Pay For The Things We Use

For the last 20 or so years we have moved away from paying for the virtual things we use and towards "free" software and services. We stopped paying with our wallets and started paying with our attention and our data. This should not be news to anyone. It needs to stop. We need to get back in the habit of paying for the software and the services that we use. I have taken steps in this direction. I…

I am not prolific. And other things.

Some people write hundreds and thousands of words a day. The write tweets and toots and skeets and posts galore. I am not that person. I don't know how you found my blog, if you saw a post I wrote on Mastodon or Bluesky, or you found it through some other avenue. Unless this is the first post of mine you are reading you probably understand this. I somewhat wrote about this in my post about…

It's hard to move on.

Last weekend my brother and I got in my car and took the long drive to my parents' house. Ordinarily I love spending time with my family. We joke and we kibbitz. We reminisce about life in New York. We talk about people we know and have known and things we have done. It's usually a lot of fun. This was not that trip. My parents are getting on in years and have decided that it's both time to…

Version 1.0 of cooklang-py is almost ready.

If you've been following along I've become somewhat enamored of Cooklang and wrote a Python parser for it. When I did the initial release it was "good enough" but definitely not fully baked. I think it needs 1 more thing (plus some additional documentation) to actually get it there. Today I did some work on it. I got it to print 1 3/4 if that's the amount instead of 7/4 which is how Python wants…

Live Coding Interviews Show Nothing About Whether A Candidate Is Qualified.

Yesterday I posted on my Mastodon that "Coding interviews should be replaced with code review interviews." Post by @brass75@twit.social View on Mastodon This post went "wooly" (Mastodon equivalent of viral) and has gotten a fair amount of traction. Some of the responses were defending the practice and trying to explain how they use it. I honestly don't care. Live coding is not a valid way of…

Thank you for help on my project!

Earlier today someone opened an issue on one of my projects based on something I wrote in one of my TIL posts . Apparently I had done something silly and didn't notice it (I used @@ instead of just @ in the call to the download artifact action.) That caused the publish part of the action to fail. So to fix it, I joined the build and publish together. Thanks to this person's help (and the issue…

Don't create content, share ideas.

Someone I interact with on Mastodon posted this and it really resonated with me. I'm not here to produce content. I'm here to share ideas. And recipes. And things that I've learned. Producing content implies something very one sided - it implies that what I've created is intended for people to consume. But that's not really what I want to do. I want to share things. I want to invite conversation.…

Recipes for all!

I finally finished the project. I published the Cooklang parser and wrote the code needed to use it to convert Cooklang to HTML. So I am proud to announce the addition of recipes to my site! For now, I only have 2 recipes up - potato kugel , and stuffed cabbage - but more will come. I'm hoping to have a selection of recipes I make on a regular basis - family recipes, my original recipes, and…

Happy anniversary Mom & Dad

This past Friday my parents celebrated their 60th anniversary. This evening they had family local to New York for a celebratory dinner. I may not be local to New York but it's close enough for me to have been able to come. I am very glad I did. I got to celebrate a major milestone with my parents. I got to see my brother and sister-in-law. I got to see some cousins that I rarely get a chance to…

Where I am with Cooklang

A few days ago I blogged about maybe adding a collection of recipes here and I mentioned Cooklang . I'm pretty sure I mentioned that there is a Rust parser but not a Python one. But the Rust one has Python bindings so it shouldn't be too hard to make that into a Python package that can be distributed. And I did a TIL about what I learned about doing that. But this isn't about this. This is about…

Should I add a recipe collection to my site?

I have a lot of recipes. My recipes. My parents’ recipes. My grandparents’ recipes. From my time in culinary school. Lots of recipes. So I got to thinking as to whether I should add a recipe collection over here. So I asked on Mastodon. Post by @brass75@twit.social View on Mastodon So far everyone that’s bothered to answer has said I should. I figured I’d ask here as well. You can go vote on the…

Farewell to the CJC Board of Directors

My synagogue held its annual meeting earlier today. At this event we, the membership of the synagogue, hear presentations on important matters that have come up and vote on various matters, including a slate of members to serve on the board and as officers. This was my last annual meeting as a member of the board. For the past 8 years I have served my synagogue in a leadership capacity. In 2017 I…