avatar

Joshua Ginsberg, aka jag

Sustainable AI in Software Engineering

I’ve been writing software professionally for over 25 years, mastering platform engineering for 15 years, and I’m very good at what I do. I can say with confidence that during that time there has been no more revolutionary change to the practice of software engineering than LLM-based agentic AI. Anyone who tells you otherwise has their head in the sand. For those 25+ years, Python has been my primary programming language. It has been among the handful of most popular programming languages every year for the last decade-plus. My expectation is that by the end of this decade, the two most common programming languages will be English and Chinese.

An Ashevillian's Reflections on Hurricane Helene

A week ago, Hurricane Helene’s trek across western North Carolina dumped some 20-inches of rain on the area. The French Broad River that runs through Asheville, and its feeder rivers like the Swannanoa River, rose to 25 feet above their river beds, whereas normal depth is a little over a foot. That 25 feet is the height of a two-story building. Every home and business along the riverways are simply destroyed.

The Second American Revolution

Days before the 248th birthday of the United States, Kevin Roberts, president of the Heritage Foundation and proponent of the ghastly Project 2025 administrative plan, gloated over the Supreme Court’s contortionist ruling granting sweeping criminal immunity to the President of the United States: Heritage Foundation president celebrates Supreme Court presidential immunity ruling: "We are in the process of the second American Revolution, which will remain bloodless if the left allows it to be" www.mediamatters.org/project-2025... [image or embed]

Bitcoin is Awful

I honestly didn’t think I’d ever write this. I thought the cryptocurrency bubble burst in 2022 would have been the end of the story and there would be no need to write it. Whenever there’s a hype bubble fueling rampant, wildly irresponsible speculalation divorced from any sort of mooring to market principles, what follows is either an end of that market or at least a reckoning that only those with solid business models & fundamentals survive. But not cryptocurrency. The hype is back.

Fix: Python's mysqlclient broken with MySQL 8.3.0 on Mac with Homebrew

At Hungryroot we use AWS’ Aurora MySQL with some of our Django projects. This morning, a few of our developers, working on Mac OS with Homebrew, reported that their mysqlclient libraries were erroring out with: '/opt/homebrew/Cellar/mysql-client/8.3.0/lib/libmysqlclient.22.dylib' (no such file) Attempts to reinstall the mysqlclient Python library were failing with: clang -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -I/opt/homebrew/opt/mysql-client/include "-Dversion_info=(2, 2, 1, 'final', 0)" -D__version__=2.2.1 -I/Users/avishekde/.pyenv/versions/3.11.6/include/python3.11 -c src/MySQLdb/_mysql.c -o build/temp.macosx-14.1-arm64-cpython-311/src/MySQLdb/_mysql.o -I/opt/homebrew/Cellar/mysql-client/8.3.0/include/mysql -std=c99 src/MySQLdb/_mysql.c:527:9: error: call to undeclared function 'mysql_ssl_set'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] mysql_ssl_set(&(self->connection), key, cert, ca, capath, cipher); ^ It turns out that the recently released MySQL 8.3.0 removed some APIs that the Python mysqlclient depended upon, as documented in this GitHub issue.

The myth of protest voting in America

I’ve voted 3rd party in most of Presidential ballot contests in my adult life. Back in the early aughts, I was the treasurer for a county chapter of the Green Party. Some time later, I called myself a “little-l” libertarian but let go of that label as the neo-fascists began taking over. I gave money to Gary Johnson’s campaign in 2016. I'm old enough to remember when this Simpsons episode aired in 1996. Every time I named my intention to vote third party, I was confronted by friends and family who told me that I was throwing my vote away, that I was basically voting for “the other guy,” whomever they were afraid might win. I countered that voting for the lesser of two evils is still voting for evil, and I found that immoral. I said that the party they wanted me to vote for hadn’t earned my vote, that, yeah, I wanted Donald Trump to lose, but I didn’t want Hillary Clinton to win. If enough of us voted one way, it might change things - it might break the duopoly of the Democrats & Republicans, or it might force one of the parties to shift their polarity to earn our votes.

Calendar-like views in Django admin

In my coding work for SeekHealing, we make extensive use of the Django Admin for our program management database. For a one-person coding team, Django has been invaluable for maintaining a functional, accessible system that evolves with the program’s needs despite the limited number of hours I have to devote to the work. We manage our calendar of program events in Django, with a model appropriately called CalendarEvent, which has a start-time and an end-time - and we’ve got data in this database going back to 2018. Events are planned out two months in advance, but the most active event management work is done on the events in handful of days before-and-after the current date. From a user-experience standpoint, how can we provide optimal navigation for calendar event management for the staff?

Twitter ditches SMS as 2FA for non-paying users

Effective next month, Twitter will disable SMS-based two-factor authentication (2FA) for users who have not paid Musk’s $8 fee for Twitter Blue. Source: Twitter Musk claims that Twitter is spending $60M on fraudulent SMS challenges from a longstanding practice known as Toll Fraud, where bad-acting telcos who charge high rates for delivering SMS messages surreptitiously use bots to force generation such SMS verification messages to inflate their bills. While Toll Fraud is undoubtedly a real thing that I have no doubt Twitter wastes a lot of money on, I won’t take the $60M figure at face value because the fact remains that most 2FA challenges are probably malicious because that’s 2FA working as designed. I’m more likely to believe Musk is lumping all SMS challenges sent that don’t result in a successful login as problematic fraud.

AI needs to be designed with dignity

Several years ago, I was visiting my brother and his family in their San Francisco home. My eldest niece was three or four years old at the time, and I was fortunate when my work included regular transcontinental business trips to be able to visit them once or twice a year. Like many of us, they owned an Amazon Echo, which my niece was allowed to request to play music. The living room was frequently filled with endless loops of the Thomas & Friends theme song as well as selections from the Frozen soundtrack.

On Desire

Desire once seemed to like a simple thing to grasp and connect with. The longer I live, the more I discover how unfathomably complex desire and our relationship to it is. I’ll give you an example: dating websites. Over a decade ago, I worked for a large dating website as a systems and network administrator. It exists no longer, but at its peak it had hundreds of thousands of daily active users.