All posts by bponnaluri@gmail.com

The case for not criticizing people for using generative AI

While generative AI is a flawed technology that should not be used, I think we should avoid criticizing others for using it.

In the instances where people are using generative AI for malicious purposes, I think it’s better to focus on what they doing wrong instead of the generative AI use. For example, if a criminal is using generative AI to generate automated phishing email, they should be prosecuted for phishing. Criminals can create phishing emails without AI, so getting them to not use generative AI is not helpful.

Also, people can end up in situations where they have to use generative AI or aren’t familiar with why they shouldn’t use it. Criticizing them for using generative AI doesn’t help them find alternatives.

Some of my experiences with focusing too much on technology and a teacher’s unconventional approach.

From 2008 to 2010, I overused AI due to unrealistic expectations. I was working on my own real-time version of Risk, and I started focusing on making a skilled AI for it. My high expectations culminated with an attempt to use a genetic algorithm to make an AI through simulated evolution. I was able to get to the point where the algorithm could generate equations for specific numbers, and then progress stalled.

For a while, I focused on front-end development with React, and took the idea of building single page applications in React too far. This included building a static site listing board game groups using React. 

Also, I used to dismiss the importance of liberal arts subjects for a software engineer. In my high school, there was a math and computer science teacher, Michael Stueben who gave extra credit for writing book reports. I thought the idea of writing a book report for a math or computer science class was a waste of time, and I was not sure sure why Mr. Steuben was a fan of them.

Recently, I’ve come to the conclusion that asking computer science students to write book reports like Mr. Steuben is a great idea to practice written communication. Coding is only a small part of creating software. Communicating with others is an essential part of software development, and will likely take more time than coding. I’m currently working on a decentralized open source alternative to Meetup.com. There are days where I don’t write a single line of code because of a focus on communication.

Mr. Stueben also had a unique sense of humor and would make jokes completly unrelatd to computer science. Someone claimed he gave the following quiz, which was a logic puzzle.


DIRECTIONS: Choose the best answer to the following question from the choices below.

(Chinese text you don't need to know to solve it)

A. All of the below.
B. None of the below.
C. All of the above.
D. One of the above.
E. None of the above.
F. None of the above.

I also remember one conversation I had with a friend about the computer science at UC Berkeley. They mentioned that it was very hard to get into the engineering departments undergraduate computer science program. However, they mentioned that getting into the Letters and Science(Liberal arts version) was far easier. I thought that the idea of getting a liberal arts degree for computer science was not worthwhile.

How luck with getting good information helped me understand technology

During the peak of my AI overuse, I was also in the fortunate position of learning about fundamentals of AI through a class, which helped me develop a more realistic view of AI. Due to luck, I could have also found myself in a situation where I was not getting accurate information, and I think that is the case for many people today. Also, outside of some websites, I didn’t hear anything about genetic algorithms, so my unrealistic view of their use was not getting reinforced.

One of the factors that stopped my AI overuse in 2010 was learning about neural networks the AI class I was taking. Neural networks were presented as an innovative AI technology, and I thought that their resemblance to a human brain would make them better than genetic algorithms. I decided to spend time on my own trying to learn about neural networks, and learned that they had fundamental limitations on their effectiveness.

Having a good teacher, and being around motivated students who were eager to learn about AI helped. Also, the class was done in a computer lab run by student volunteers who setup all the computers to run Linux. During the multiple classes I took in the lab, students promoted an environment of trying different things and talking about newer tech.

Here are some examples showing other student’s interest in trying new things and thinking about tech.

  • I mentioned that I didn’t enjoy using a terminal, and then they tried to convince me that the terminal was more powerful. Now, I use the terminal far more often.
  • One student made a comment about using the recently released Microsoft Bing for search. Others started vocally calling Bing a joke. On a related note, I tried Bing around that time and found Google search to be better.
  • Someone started talking about the Go programming language shortly after it was announced. While they found Go interesting, they did not talk about actively using it. I appreciated their perspective about acknowledging a new technology while not immediately rushing to use it

When I heard about generative AI because of ChatGPT, I became concerned about a superintelligent AI developing that would take everyone’s jobs. I thought ChatGPT was using some new advanced technology. However, I then found out that ChatGPT and other generative AI tools were advanced neural networks. Afterwards, I started doing more research on generative AI and it became increasingly clear that the technology was flawed. If I didn’t learn about neural networks years earlier, I probably would have had a different and inaccurate understanding of generative AI.

In summary, I learned a lot about technology because of the environment I happened to be in. If I had the luck to live somewhere else with a different teacher and minimal interaction with other students, I would have a more limited understanding of technology. When someone is overusing AI, it is important to consider they have not been receiving correct information.

Other reasons why I avoid criticizing people for using generative AI

If someone is using generative AI, I think adjusting to working without AI involves short term challenges when getting used to different habits. Often, people may not have time to deal with these short term challenges due to other priorities. I’ve experienced a similar pattern across multiple jobs with tech debt that was slowing down development. However, we often did not have the time to refactor code and reduce tech debt because of other higher priorities. 

Also, people may be in situations where they have to use generative AI, even if they don’t like it. Working with others or doing a job sometimes required me using technologies I did not like. Software development is a team activity, and this means considering the preferences of other developers or requirements given to you.  For example, I have not enjoyed using AWS since I started using it close to 10 years ago. However, I’ve used AWS at my previous job because I was contributing to existing software deployed on AWS, and switching to a different cloud provider was not an option.

How I make sure generative AI is not used on my projects

I make sure new projects aren’t created with any generative AI help and establish a norm of not using generative AI. It becomes far more difficult to stop using generative AI for a project once it has started. Every one of my projects has been started with zero generative AI use, and I am not going to add generative AI to them. Also, I ban generative AI contributions on my open source projects.

Using task specific AI automation.

Although I don’t use generative AI, I think task specific AI automation is useful when clear quantitative expectations for input and output can be created, and the accuracy and be measured. Automation also has clear boundaries on where it will be useful.

For example, predicting the high temperature for the next day is a great use of AI. The accuracy of the AI prediction can be easily evaluated by comparing the prediction with the measured temperature, and being inaccurate by a few degrees is not a major issue. There is also a clear boundary between what the AI is doing, and what a human meteorologist is doing.

A meteorologist will read the prediction, and then can communicate relevant information and also the consequences of uncertainty.In the case where the predicted temperature is around 32 degrees, and a slight difference could mean rain, snow, or ice, a human meteorologist will communicate that uncertainty and mention the possibility of frozen precipitation so that people.

The cost of opening a board game café in DC

I’ve been interested in opening up a board game café in DC for a while. While I estimate that there is enough interest in board games in DC to sustain 10 or more board game cafés, I’m concerned about the difficulty of making a game store financially sustainable while it is getting established. Advertising a new store is going to be hard and it is going to be a while before the cafe earns enough to cover expenses.

In Virginia, I’ve noticed multiple game stores close, including Compleat Strategist and Game Parlor, and rents tend to be cheaper than DC.

This post is a rough estimate of how much it will cost to run a board game store in DC. It will be a lower bound as it does not consider taxes, or miscellaneous costs such as paying for electricity and permit fees. Also, I’ll be using lower bound values for a likely best case scenario.

-Monthly rent: $4.5/square foot

-Size of place: 400 square feet.

-Yearly rent : 4.5*400*12 = $21,600

Salary costs

On weekends, I’d like to keep the place open from 9am to 12pm, and from 4pm to 12pm on weekdays, which is 70 hours. When factoring in 2 hours per day for opening, closing, and maintenance, 84 hours are needed. While many restaurants close earlier, I do want to keep the game store open until midnight. This gives people an opportunity to stay and socialize for a while instead of having to quickly leave due to an early closing time. Assuming that 2 people would be working at all times, that is a cost of $20,160 a month, or $241,920 each year.

  • Minimum monthly salary: $25*40*4 = $4000
  • Monthly health insurance cost: $800

A lower bound on the costs of rent and salaries would be $263,520 per year. This number is likely to be significantly higher when considering the other costs. I’m not willing to compromise on customer service, paying employees, or employee benefits.

I would rather see policy changes that reduce the costs of running a small business, such as a vacancy tax that would lower rents.

One possible solution may involve several other people trying to start board game cafés at the same time. Due to the amount of interest in board games, they aren’t going to be competing with each other or other board game stores or cafés. On the other hand, we can work together in many ways including sharing advice on running a board game café or negotiating bulk discounts on games.

We could also work together to advocate for policies that make a board game café more sustainable. One example would be increasing financial penalties for vacant storefronts in DC, which would encourage landlords to rent space to small businesses at lower rates. I’ve seen many storefronts that have been vacant for years that are in great locations near Metro stations.

Vanilla PHP is great

I am working on a proof of concept for a public event aggregator which will allow users to search for events from multiple sites.

I decided to use vanilla PHP for the aggregator due to simplicity. While I haven’t worked with PHP in a while, I remember PHP being relatively straightforward to setup and deploy. PHP is well tested due to decades of development, and it is still widely used, which is another indication of it’s usefulness. The aggregator will work by retrieving data from multiple sources and then converting it into HTML, which is a great fit for a PHP proof of concept.

An added bonus of using vanilla PHP is that there is a variety of great documentation, which is mostly been written before AI generated documentation became widespread.

While this setup isn’t optimal from a performance perspective, it does allow for improvements to be easily added. One option would be to use PHP in memory caching to cache data. Local sites could also be configured to call a PHP API endpoint to submit updates to the aggregator, which would run a separate script to save data to the cache. A database could also be added later.

A PHP framework such as Laravel, or a framework in another language such as Ruby on Rails, Django, or Spring Boot can be more powerful when it comes to additional features such as handing use authentication. From an engineering perspective, I think Java is a better language for a backend, and one could say the same about other languages.

Higher engineering quality is important for software where security and avoiding bugs is more important than codebase accessibility. Examples include software running on medical devices, or a security software used to control access to government buildings. An accessible codebase could make it easier to find and exploit security flaws, and lower quality software increases the risk of bugs.

However, I think vanilla PHP is a better solution for an aggregator website despite lower engineering quality. Setting up an aggregator website using Java involves additional complexity when compared to PHP for deployments. When deploying the Java API for dmvboardgames.com, I had to setup a Docker container and logic to start a server, which was not necessary with the way Digital Ocean supports PHP deployments. When learning PHP, I also remember being able to upload PHP files to a shared hosting server on bluehost.com and have them run without any additional setup. There is also the additional complexity of setting up another server or the Java server to serve HTML.

The aggregator proof of concept is to demonstrate the decentralized in event hosting platform I am working on. One key goal is to get more people involved with making websites for in person events. The aggregator code is open source, and I want people to use it as an example to build their own event websites.

How AI Destroys Institutions

https://papers.ssrn.com/sol3/papers.cfm?abstract_id=5870623

This paper specifically refers to generative AI, predictive AI, and automated decision systems.

I’ve seen this happen many times to software projects that are prioritizing generative AI over producing customer value. For example, GitHub.com keeps trying to push generative AI features while making the UI more bloated and not prioritizing user experience issues. One example is not providing a way for projects to block AI generated code contributions that do not meet quality standards.

I’m in the process of moving from GitHub.com to Codeberg.org for open source development, and I plan to stop using GitHub entirely once I get time to replace my GitHub deployment pipelines. Development of the Zig programming language has moved from GitHub to Codeberg, citing a decline in quality. (Source)

Slowing down coding speed can be beneficial

Earlier this week, I decided to try using Vim instead of an IDE for working on createthirdplaces.org. My coding speed has slowed down significantly as I am not used to Vim. I think the slowdown is somewhat of a benefit right now.

  • Right now, I am prioritizing user experience by displaying pages in a way that makes sense for users, and making sure information is organized in an intuitive way. As part of this process, I’m thinking about the user feedback I have received recently. Slowing down is helping me think carefully about the changes I am making to ensure that they are addressing feedback.
  • Slowing down makes it less likely that I am producing too much content. Too much visible content overwhelms users. If I can improve the user content by making it less visible, that means users are unlikely to see the content, and working on that content probably did not need to be a priority.

Automating human communication will probably make customer service worse

I often hear that automating human communication in ways such as adding self checkout lines, an online chatbot, or an automated phone answering system improve customer service. I think the opposite is usually the case.

Companies which automate customer interactions have a variety of goals besides customer service, especially making a profit. Humans in customer service roles will have empathy for the customer, regardless of what their company training says. Companies have far more control over how a customer service bot is trained, and can design them to make profits a priority, without any empathy for customers. Customer service bots can also be used to giving the appearance of providing customer service, without having to pay a human.

Using a automated ordering system at a restaurant instead of talking to a cashier or having to use a customer service bot feels very depersonalizing. I’m also reminded of people who lost their jobs, while the cost of food, healthcare, and housing is going up. I prefer the inefficiency of not having automated checkout systems or customer service bots. Also, I think adopting more pro-human values is a necessity as technology advantages.

While I think it would be ideal to not automate customer service, sometimes automation of customer service can be a necessity. A small business such as a local coffee shop may not be able to earn enough to pay for fully human customer service. There are various overhead costs such as buying food, and paying rent.

Between 1983 and December 2025 overall prices in US urban areas rose by 326.03%. On the other hand the cost of food in urban areas rose by 344.693%. The cost of shelter rose by 420.983%, which means customer service need more money, and high housing costs does correlate with high rents for commercial establishments. With restaurant margins between 0-15%, even relatively small cost increases can cause a restaurant to go out of business or automate customer service to save money. On the other hand, the cost of IT hardware and services has gone down by 93.292% since 1988, and this is a key reason why automation increases profits.

Due to the relative cost of human customer service compared to automation, trying to convince people to prioritize human customer service over automation using an efficiency argument is not going to work. I think it’s better to focus on saying human customer service is better because, customers will get a better experience, automation related job disruption will be reduced, and we promote more prosocial norms that help us effectively manage new technology.

To summarize, automation will probably make customer service worse, and we should promote more prosocial norms to encourage human customer service.

Grocery stores and self checkout

As an example, I prefer getting groceries at Trader Joe’s over Safeway. One reason is the fact that Trader Joe’s locations I’ve been to do not have any self checkout counters. On the other hand, the Safeway near me has self checkout, and sometimes self checkout is my only option. Ratings of the Trader Joe’s near me are also significantly higher than the ones for Safeway, which is a sign that people see Trader Joe’s as a grocery store that provides better customer service.

I’ve also noticed that employees at Trader Joe’s also appear to be happier and provide better customer service. Employees at Safeway tend to be unhappy and checked out. To me, this is a sign that Trader Joe’s treats it’s employees better. Trader Joe’s having better employee reviews on Glassdoor and Indeed is another sign. I don’t think it’s a coincidence that all of the Trader Joe’s I’ve been to employ human cashiers and do not use self checkout.

Not using checkout is also representative of management’s concern for customers and employees. I think one significant cause of the fact that Trader Joe’s treats it’s employees better and has better customer service is the humanizing effects of having people work as cashiers. Also, it means that management made a decision to not use self checkout. On the other hand, Safeway’s management deciding to use self-checkout does show a lack of concern for customers and employees.

On the other hand, prices at Safeway are significantly lower. As a result, I still buy groceries at Safeway, despite the fact that I do not want to use self checkout. Lower prices is probably also a reason why other people buy groceries at Safeway.

Here is a comparison of prices for some food items at Safeway and Trader Joe’s as of January 2026.

FoodTrader Joe’sSafeway
1 banana$0.23 $0.25
12 eggs$5.99$4.99
Milk carton(64 Fl Oz)$5.99$2.99
Canned tomatoes$1.49$1.99

https://www.glassdoor.com/Overview/Working-at-Safeway-EI_IE581.11,18.htm

https://www.glassdoor.com/Overview/Working-at-Trader-Joe-s-EI_IE5631.11,23.htm

https://www.traderjoes.com/home/search?q=&global=yes

https://www.safeway.com/shop/search-results.html?q=12%20eggs&tab=products

https://www.indeed.com/cmp/Trader-Joe%27s/jobs

Average reviews for nearest Trader Joe’s and Safeway to my place.

WebsiteTrader Joe’s ratingSafeway rating
Google Maps4.6 stars3.6 stars
Yelp4.2 stars2.3 stars

Sources on inflation and restaurant profit margins

https://fred.stlouisfed.org/series/CPIAUCSL

https://fred.stlouisfed.org/series/CPIUFDSL

https://fred.stlouisfed.org/series/CUUR0000SEEE


https://fred.stlouisfed.org/series/CUSR0000SAH1

https://merchants.doordash.com/en-us/blog/profit-margins-restaurant-businesses

https://www.restaurant365.com/blog/what-is-the-average-profit-margin-for-a-restaurant-2

https://pos.toasttab.com/blog/on-the-line/average-restaurant-profit-margin?srsltid=AfmBOooSbQLw0lcXziUbdBoE0D7dmzcGcOK4wQuoY1_vOthfxn4acTTF

Here are some links I think are relevant

https://en.wikipedia.org/wiki/Baumol_effect#

https://www.unesco.org/en/articles/baumols-cost-disease-long-term-economic-implications-where-machines-cannot-replace-humans

https://www.strongtowns.org/journal/2026-1-12-christmas-cookie-inflation-index-2025-update

Improved technology is going to require more human centered values and communication

As technology advances, the idea that we can use technology to replace human interaction is misguided. This is not related to how advanced technology becomes, and I think it will be true, even in a theoretical world where AIs were smarter than humans.

As technology becomes more advanced, the scale of it’s impact will be larger, and we need to make sure it is used for constructive purposes instead of destruction. This requires humans to work together and develop social norms around how technology is used. For example, nuclear fission was used in the 1940s to develop nuclear weapons, which have become powerful enough to turn our planet into a lifeless wasteland. However, there is also a collective understating that nuclear weapons should not be used in war, and nuclear fission is now used in power plants to generate electricity. While nuclear power plants are complicated and generate radioactive waste, they are also far more energy efficient and generate less air pollution than coal plants.

When it comes to communication, technologies that facilitate communication when it otherwise isn’t possible have made the most positive impact. Being able to make a phone call or send an email to someone who isn’t physically in the same room as you has been very beneficial for society.

Sometimes, promoting human centered values is going to require avoiding use of a technology, even if the technology makes work more efficient. For example, AI art generators can generate art far more efficiently than a human artist. However, AI art generators lack empathy and the ability to connect with an audience, so using them moves us away from human centered values that are becoming increasingly important. AI art generators are also trained on the work of artists without permission, financial compensation,or credit, which is anti-human. In other words, we should be supporting human artists.

Also, technology is developed and maintained by humans that have to communicate and work together. Nobody is able to develop new technology entirely on their own with no help. First of all, you need to talk to potential users to see if what you are making will solve a problem they care about. Once the technology is developed and proven to be useful, you then need to convince people to use the technology. Then, you will need user feedback about bugs, new features, and places where the user experience needs to be updated. Successful technologies such as electronic computers are rarely created in isolation, released to users, and then never modified again.

One more reason task-specific models are the future of AI, and LLMs are not

Researchers at Goodfire AI isolated memorization from problem solving in large language model(LLM) neural networks.

I think this is additional evidence of the fact that LLMs are very inefficient in a manner similar to blockchain. Blockchain was capable of solving real world problems by wasting large amounts of energy. However, the inefficiencies of blockchain weren’t being covered up by billions of dollars in subsides and exploitation of low wage workers.

If problem solving is isolated from memorized data, that means that it would be more efficient to use a model that is dedicated to solving problems without needing to memorize facts. Training an LLM takes time and resource, especially if it is being trained on problems that are irrelevant to one’s work.

The isolation of problem solving implies that an LLM has the capability to categorize data and place the data in different parts of a model. As a result, problem solving capabilities for different subjects would also be split up. If a model is trying to reason about astronomy, it wouldn’t make sense for the model to be influenced by facts about history. which means that LLMs would use different model sections to reason about the two subjects.

If one wants to use an LLM to look up facts, it would be more efficient to use one that is just trained on memorized data without any reasoning abilities. Also, tools such as Wolfram Alpha have existed for years to provide information about memorized facts, and they don’t make up information like LLMs sometimes do.

To put things into perspective, I have been regularly benefiting from AI when riding the Red Line of the DC Metro. It now uses automated train control(ATC) to drive trains, which has made train rides smoother. This is an example of task-specific AI, that works 100% of the time, and the ATC developers were able to save time by ignoring irrelevant data.

Sources

https://arstechnica.com/ai/2025/11/study-finds-ai-models-store-memories-and-logic-in-different-neural-regions

https://arxiv.org/abs/2510.24256

Fixing a bug with displaying the next recurrence of a weekly event with the help of automated testing.

On the morning of Sunday, November 9th, 2025, I deployed an update to dmvboardgames.com to show information about groups a user joined and dates of recurring events that a user had an RSVP to attend.

I navigated to my user page shortly afterwards in the morning and saw that it was showing Sunday, November 16th as the next event date for the two events I host on Sundays. Since the current date was November 9th, the next event dates should’ve been displayed on November 9th.

I narrowed down the root cause to the following line of code on the backend. It made the next event date 7 days in the future if the user member page was accessed on the day of an event, regardless of whether the current time was before or after the event start time.

LocalDate nextEventDate = LocalDate.now().with(TemporalAdjusters.next(DayOfWeek.valueOf(eventDay.toUpperCase())));

The test also had the start date in the future. I added a pause if the test was being run at midnight and rewrote the test case with the following code.

LocalDate expectedDate = LocalDate.now();
LocalDate startDate = eventFromDb.getStartDate();
assertEquals(expectedDate, startDate);

Then I rewrote the next event date calculation.

LocalDate nextEventDate = LocalDate.now();
DayOfWeek eventDayValue = DayOfWeek.valueOf(eventDay.toUpperCase());
if(!eventDayValue.equals(nextEventDate.getDayOfWeek())){
nextEventDate = nextEventDate.with(TemporalAdjusters.next(eventDayValue));
}

Afterwards, the test passed.

I then added another test case for an event that was on a day that wasn’t the current one.

After fixing another test case that was incorrectly using the next day as a next event occurrence, all the tests passed.

I merged the changes to the main branch, then deployed to the release branch, and created a new release.

After the release build was complete, I started a production deployment.

After the deployment, my user page correctly showed the next occurrence of the two events I host on November 9th.

Thoughts about the cooperative card game The Gang!

On Wednesday night, I played a cooperative card game called The Gang for around 2 hours. The Gang is a cooperative adaptation of Texas Hold’em where players have to guess how good their hand it relative to other players.

A round of The Gang starts with players drawing 2 cards and then taking a chip to represent how strong they think their hand is. The chips have a number of stars ranging from 1 to the number of players in the game. Then there are 3 more rounds where cards are revealed, players reasses the relative strength of their hand, and then take a chip. During the 4 round, the chips players take have to correctly represent the

There are 1326 possible poker hands. A binary search to find a value in data that has 1326 items would take up to 11 iterations.

There are 6! ways that players can take chips. As a result, the way players represent chips can represent up to 9 bits of information. Players have 3 rounds to take chips before they have to take chips correctly representing the strength of their hand. This represents 27 bits of information, which is not enough to communicate the exact contents of people’s hands, even when considering the fact that the game is played with a standard 52 card deck without duplicates.

I think the fact that players have to communicate the relative strength of their hand over multiple rounds instead of simplify taking chips to communicate the exact cards in their hand is a brilliant design.