Surface Sketcher is a Windows application I developed (read: vibe coded) to draw and write on my Surface Laptop Studio.
This project was inspired by Ben Katz’s recent creation of a custom drawing software for Wacom tablets, which had been entirely built by a popular LLM. I’ve dabbled in AI assisted software development in the past, including for this website, but never even thought to attempt anything as ambitious as what Ben created. My workflows have been too clunky to try.
A typical vibe coding session for me had focused on generating and editing single file scripts, in a standard free version browser chat window. This requires creating directories manually and copy/pasting in code from the browser for every edit, and verifying directory structures with cmd tree /F. For this website, Hugo does the heavy lifting, and my AI usage was mostly figuring out CSS stylesheets file-by file. De-bugging anything beyond the simplest of directory structures is difficult because doing so requires keeping close track of file dependencies and hierarchies, which the browser agent has to remember correctly. Hallucinations add up fast as a result, leading to an apparent Hydra of bugs where squashing one generates two more.
Turns out my workflows were outdated. Solutions to my problems have been engineered. For $20/month, one can give local access to repositories to an advanced LLM that can build, run, and test itself. It can execute commands directly on your machine, no more copy/paste. It has full visibility over the entire repo, can search through the entire thing for structural and dependency bugs as well as syntax and local function issues. It can install all the dependencies it needs by itself. In a three-hour session, I went from nothing to a completed, functional app, with an icon I had designed for it using it, and a published GPL licensed GitHub repo.
Features
When you open the app, you immediately get a canvas and swatch selector that is ready to draw on. There is a simple top tool ribbon to save the raw drawing file, export as .png or .svg, undo/redo, and a settings button to change pressure sensitivity, stroke width, and export image margin. On the left side is a file directory tree, so you can save your raw files wherever and locate them easily.

Here’s a quick list of guiding thoughts that shaped my prompting:
- My drawing is heavily inspired by industrial design concept sketching. I developed my style hanging out with (and emulating) Ash Okafor in Chicago, summer 2021. We were both interns at Radio Flyer at the time. Ash was an amazing artistic mentor and inspired me to carry a felt tip pen and paper everywhere I go. I wanted Surface Sketcher recreate those media: single pen tool, solid color, white background, a handful of colors to pick from. Value generated by parallel hashes.
- Simple UI really lowers barriers to entry. I rarely fired up Krita, which is a very capable free tool, because there was too much clutter. I used Krita to draw the grinder sketch in my last entry.
- I had really liked the OneNote flow when I used it for assignments in college, particularly how simple it was to use and get started- open the app and its ready to draw.
- The left hand file directory in VS Code for finding where stuff is and knowing where to save things.
Forward work
There are still a few bugs, these are the ones I have noticed so far (there are probably more):
- Changing pressure sensitivity re-renders all brush strokes on raw files- pressure sensitivity settings should be a property of a completed stroke not to be overwritten
- Strange render artifacts appear in sharp discontinuities in really thick lines
- Thumbnail and or content export for this website- output in .jpg of correct size, with aspect ratio drawn on canvas/crosshairs to align content for export
Feature expansion ideas:
- Ability to change swatches in app with hex codes
- Warning popups for invalid filenames etc
Thoughts on AI, July 2026
Writing this from Bright Coffee in San Antonio. They make good pourovers here. Should I feel bad about my AI usage? Do I feel bad about my AI usage? I’m not sure. More importantly, regardless about how I feel about it, should I continue to use it? A quick browser search for ethical decision making guidelines yielded this resource from Santa Clara University. The website suggests analyzing an ethical decision from 6 lenses: Rights, Justice, Utilitarianism, Common Good, Virtue, and Care. All of the block quotes in their respective sections were copied from the aforementioned website.
I figured it might be at minimum an interesting exercise to work through this guide to make an ethical decision on the following question: should I use AI to aid in my personal projects?
A couple of notes on that choice of question:
- “AI” here specifically means the big corporate LLMs like OpenAI’s ChatGPT or Anthropic’s Claude, as opposed to more “traditional” ML algorithms. If I had to draw a quantifiable cutoff between, I’d use model parameter numbers and dataset size requirements, where LLMs require many orders of magnitude more model complexity and dataset size.
- I specify “personal projects” because 99%+ of my AI usage to date has been to vibe code parts of projects (this website, Surface Sketcher, Arduino things here and there, simulation stuff)
Let’s dive into the ethical analysis.
Lens of Rights
Some suggest that the ethical action is the one that best protects and respects the moral rights of those affected. This approach starts from the belief that humans have a dignity based on their human nature per se or on their ability to choose freely what they do with their lives. On the basis of such dignity, they have a right to be treated as ends in themselves and not merely as means to other ends. The list of moral rights—including the rights to make one’s own choices about what kind of life to lead, to be told the truth, not to be injured, to a degree of privacy, and so on—is widely debated; some argue that non-humans have rights, too. Rights are also often understood as implying duties—in particular, the duty to respect others’ rights and dignity.
The right to create. AI usage serves that right. The app I made, or something similar, can be made with AI for practically any medium to create digital art programs for “free”, as in one need not be beholden to an Adobe for the ability to make digital art.
The right to water, and a living environment that does not impose unnatural hazards. AI usage does not currently serve that right. Summary article points to droughts from water consumption, increased pollution from non-clean energy demands, exacerbation of systemic inequities like environmental racism from increased data center demand that these LLMs require to work and scale.
Through this lens, I might argue that the right to create is a “lesser” right, and the right to water, and a living environment that does not impose unnatural hazards is more important to protect. Therefore, I should not use AI, because doing so creates incentive for further data center proliferation.
Lens of Justice
Justice is the idea that each person should be given their due, and what people are due is often interpreted as fair or equal treatment. Equal treatment implies that people should be treated as equals according to some defensible standard such as merit or need, but not necessarily that everyone should be treated in the exact same way in every respect. There are different types of justice that address what people are due in various contexts. These include social justice (structuring the basic institutions of society), distributive justice (distributing benefits and burdens), corrective justice (repairing past injustices), retributive justice (determining how to appropriately punish wrongdoers), and restorative or transformational justice (restoring relationships or transforming social structures as an alternative to criminal punishment).
Through this lens, I should not use AI, because doing so creates incentive for further data center proliferation, which exacerbates systemic injustices.
Lens of Utilitarianism
Some ethicists begin by asking, “How will this action impact everyone affected?”—emphasizing the consequences of our actions. Utilitarianism, a results-based approach, says that the ethical action is the one that produces the greatest balance of good over harm for as many stakeholders as possible. It requires an accurate determination of the likelihood of a particular result and its impact. For example, the ethical corporate action, then, is the one that produces the greatest good and does the least harm for all who are affected—customers, employees, shareholders, the community, and the environment. Cost/benefit analysis is another consequentialist approach.
This is hard because “accurate determination of the likelihood of a particular result and its impact” is very hard.
Benefits:
- I am able to build cool things that I would not have otherwise attempted to build, which aids my own self actualization, and in some instances can aid others self actualization (i.e. if others download Surface Sketcher and use it to create for themselves, fork the repo and make it even more useful, etc.)
Costs:
- Datacenter impacts that have been discussed at length already
Does the cost outweigh the benefit? It is impossible to know. Is there ever an ethically justifiable cost of progress? I think ultimately through this lens I should use AI, because there is no knowing whether my outcome is totally good or bad for people, and I want to be optimistic, even if naive.
Lens of the Common Good
According to the common good approach, life in community is a good in itself and our actions should contribute to that life. This approach suggests that the interlocking relationships of society are the basis of ethical reasoning and that respect and compassion for all others—especially the vulnerable—are requirements of such reasoning. This approach also calls attention to the common conditions that are important to the welfare of everyone—such as clean air and water, a system of laws, effective police and fire departments, health care, a public educational system, or even public recreational areas. Unlike the utilitarian lens, which sums up and aggregates goods for every individual, the common good lens highlights mutual concern for the shared interests of all members of a community.
Through this lens I should not use AI because I believe that as the quote says, clean air and water (hospitable environment), are more important than the creative stuff.
Lens of Virtue
A very ancient approach to ethics argues that ethical actions ought to be consistent with certain ideal virtues that provide for the full development of our humanity. These virtues are dispositions and habits that enable us to act according to the highest potential of our character and on behalf of values like truth and beauty. Honesty, courage, compassion, generosity, tolerance, love, fidelity, integrity, fairness, self-control, and prudence are all examples of virtues. Virtue ethics asks of any action, “What kind of person will I become if I do this?” or “Is this action consistent with my acting at my best?”
Through the lens of virtue, choosing to not use AI for personal projects serves the virtues of fairness (not exacerbating systemic inequities), self-control, and compassion. Therefore I should not use AI.
Lens of Care
Care ethics is rooted in relationships and in the need to listen and respond to individuals in their specific circumstances, rather than merely following rules or calculating utility. It privileges the flourishing of embodied individuals in their relationships and values interdependence, not just independence. It relies on empathy to gain a deep appreciation of the interest, feelings, and viewpoints of each stakeholder, employing care, kindness, compassion, generosity, and a concern for others to resolve ethical conflicts. Care ethics holds that options for resolution must account for the relationships, concerns, and feelings of all stakeholders. Focusing on connecting intimate interpersonal duties to societal duties, an ethics of care might counsel, for example, a more holistic approach to public health policy that considers food security, transportation access, fair wages, housing support, and environmental protection alongside physical health.
This lens requires dialogue with all stakeholders, which is not something I can practically do, though I can surmise this would lead me to deciding that I should not use AI for empathy of those immediately impacted by data center proliferation.
Concluding thoughts
That’s all of the lenses. Through most of them, it is not ethical to use AI for my personal projects. I agree and I would plainly state that currently there is no way to ethically use AI. The principal concern of my analysis is the negative societal consequences of data center proliferation. The only lens which could possibly yield an argument for ethically using AI is utilitarianism. If I could come up with a benefit that is so good that it offsets the bad. I think I want to spend some energy on that, because I want to use AI. At their best, I believe AI provides the ability to concentrate the entirety of recorded human knowledge to solve a problem. Pandora’s box is open, there is no putting the LLM back inside.
There is precedent for acting unethically in the service of higher ethical value. Self-defense protection laws and harm reduction principles come to mind. A common philosophy in activism is that one must “do what they can”. The point being, many aspects of just existing and surviving in today’s world require unethical practices. Driving a car to get to work to make a living has nonzero negative environmental impact. Many providers of goods and services operate cashless, requiring banking with institutions that almost certainly use your dollars to invest in unethical ways. A good activist knows in order to affect the great change they want, they must be complicit to some degree. For me, I can do without AI usage, so there is an argument that “doing what I can” can and should include forgoing future AI use in personal projects. Perhaps using the problem solving capacity of AI to solve its own problem could be a worthy use. I’ll make a pact with myself now that I am obligated to work on this sort of thing if I am to continue using it. Starting with the data center problem. Auriana mentioned decentralization, perhaps starting with data centers as local as individual buildings. Could this work? That’s a good starting point for future exploration.