I am a software architect and public space advocate looking to leverage skills for community building work.
I prefer to write code by hand and avoid any use of LLM AI tools. I find that hand coding helps me ensure quality while improving my skills. I also write content without assistance from LLMs.
My projects
Places.js: https://codeberg.org/createthirdplaces/places-js
Places.js is a lightweight Javascript framework for creating interactive websites promoting in person interaction. It is designed to be straighforward to pick up with CSS, HTML, and JS experience. Places.js supports the following features and has no external JS dependencies.
- Support for creating pages that are a combination of static HTML and islands of interactivity.
- Asynchronous data fetching.
- Cross-component state management that integrates with data fetching.
DMV Board Games: https://dmvboardgames.com/
DMV Board Games is a minimalist non-commercial alternative to Meetup for board game events in the DC area. I am working on making the site part of a decentralized open source platform for in person events.
Source code can be viewed here: https://codeberg.org/createthirdplaces
Tech stack used: CSS, JavaScript, HTML, Java, PostgreSQL
Create Third Places: https://createthirdplaces.org/
Create Third Place promotes accessible public spaces where people interact in person. Places.js is used on the site as a UI framework.
Source code can be viewed here: https://codeberg.org/createthirdplaces/frontend
Tech stack used: CSS, JavaScript, and HTML.
My software goals
- Create work without any help from LLMs: Outside of learning about LLMs, I do not use them. On the other hand, I think task-specific AI with objectively defined inputs and outputs is useful. Also, manually creating work helps me incorporate user specific context and ensure a higher quality product. For more details about my views towards AI, see this page
- Minimize unnecessary complexity: I believe work should be created with a minimal set of dependencies, and the code should be organized in a modular way such that areas of complexity are isolated. For front end web application development, I prefer using HTML, vanilla CSS, my internal JavaScript framework, and external dependencies for specific tasks such as syntax highlighting for code. Also, I will often recommend a website builder such as WordPress for static content.
- Promote human connection: I see human connection an an essential part of living a fulfilling life. Human connection also helps ensure that people aren’t left behind due to unfortunate circumstances. My favorite job was the one where I was a team facilitator in addition to being a software developer, since I was focused on working with others. As technology advances, I believe that human connection is going to be increasingly important to manage the effects and make sure everyone benefits. Also successful technology has to be created by humans working together.
- Get more people involved in software development: This is one of the reasons why I place a high value on simplicity in open source development. I want people without much coding experience to use my code as a learning example for their own sites, or modify it for their own use. Also, simplicity allows more people to have a voice in how software is developed. In the future, I hope to see more people creating small scale software for their own personal use or small communities. Often, this means stepping back from active software development and giving other people opportunities.
I consider the last two goals to be personal preferences, and not goals that should be followed for every software project.For example, a monitoring system for a nuclear power plant needs to focus on reliably providing accurate information, and does not need to promote human connection. The code should also be securely stored on a private server, and making the code public is a major security risk.
How I start working on a project
When I’m starting to work on a project, I want to focus on the needs of the project and figuring out how to work with others.
If I’m joining an existing project, this means talking to other project members to understand the reasoning behind decisions that were made, and how they prefer to work. I’ll also want to talk to users or a project manager to understand the user problem the product is solving. When I start contributing changes or making suggestions, I should understand the project well enough to know that my suggestions make sense.
If I’m going to be creating a new project, I’ll spend time talking to users and other people I’ll likely be working with. Afterwards, I will pick specific technologies to use.
My websites
- Websites for Create Third Places
- https://createthirdplaces.org/
- https://dmvboardgames.com/
- Source code
Contact Information
Email: bponnaluri@gmail.com
Resume
Old projects
As a kid, I enjoyed the board game Risk, so I decided that creating a real-time version of Risk would be an interesting project. My ideas for the game still changed, but Clash of Empires maintains its roots as an RTS version of Risk. I also have an in progress protoype for a board game version.
Code Moo
During my senior year at UIUC, I worked with a team of students to continue the development of a online tool to help people learn programming.