Saturday, October 15, 2022

What it means to be human

I was invited to give a talk in a series about "What it means to be human." I was asked particularly to address what it means to be human in light of technology. My talk was given last night, and what follows is a serialization of the notes I used. These notes may be useful to others, and I expect they will be useful to future-me when I need to come back and reconstruct these thoughts.

What does it mean to be human in light of technology?

Let's start by considering "technology" colloquially. When someone says "technology," most imagine modern computing technology such as smart phones. The wonders of these devices may lead someone to believe that with the right technology, anything is possible. It turns out, that is not true. While this may be my most esoteric point in this essay, I hope that it puts a strong foot forward.

One of the most foundational aspects of theoretical computer science is that not everything is computable. Here is an example that doesn't require you to know anything about programming other than that it is a thing people can do. Let's say you wanted to write a program that takes, as input, another program, and your program tells you whether this other program halts or not. This is called The Halting Problem, and it is not computable. That doesn't mean that it's hard or that someone hasn't thought of a solution yet: it means that we can prove that it cannot be done at all. This may sound familiar to mathematicians or those who have read Hofstadter's classic Gödel, Escher, Bach: An Eternal Golden Braid. In particular, it resonates with Gödel's Incompleteness Theorem, which proves that  for any sufficiently complex system of mathematics (such as algebra), there will be something that is true that is not expressible in that system. You can understand this by analogy by considering the problem of evaluating the sentence, "This statement is false." In a way, Gödel demonstrated that you can say something like that in mathematics. 

The important point here is that technology cannot do everything. Although this is well known among academic computer scientists, it's not the kind of thing you hear from a marketing department or a pundit who is trying to convince you that they have a panacea. Remember the original marketing campaign for the iPad? It is magic. That's a compelling message to sell products, but it's also a lie. The iPad does what it was designed to do. So does the marketing department.

Taking a step back, we can observe that humans have always been "technological" in that we are makers and users of tools. Some tools improve our day-to-day living, such as toothbrushes that are comfortable to hold. Others have had indelible impact on human civilization: writing, money, the printing press, the Internet. What has changed in modern times is the depth and complexity of the networks that support these tools. I was able to understand this more clearly thanks to my Internet friend Chris Bateman, who helped me collect these notes. In particular, I am drawing inspiration from some insights he shares in The Virtuous Cyborg, and I am giving an overview of some of the arguments that he explores more deeply in that text. 

Consider the case of a 18th-century pioneer who moves out to Indiana to make a new life for himself. Let's say he needs a wooden mallet like we might see on Townsends. Making the mallet requires having an axe. The axehead was likely procured from the blacksmith, who acquired the iron from someone who was in contact with the miners who dug it out of the earth. At the tip of the iceberg is a pioneer holding an axe, and if we delve down, we involve dozens of people. Now imagine that you buy a mallet at Lowe's: how many people are involved? At the tip of the iceberg, it's you and the mallet at the self-checkout. Start digging, and you'll see there are thousands, tens of thousands, probably millions of people involved in bringing you together. Consider the data moving over networks, the power that makes it possible, the politics that ensures fuel, the logistics and roads, the manufacturing processes, all the taxes collected at multiple levels, and everything that makes possible a Big Box store.

Even something as simple as a mallet is enmeshed in an incomprehensibly complex network of causes and relationships. This is modern technology. We tend to dismiss this observation as mere trivia and treat the mallet as a morally neutral object. Turns out, it's not.

To understand this point, let me get out of the handyman's toolshed and into something more comfortable to me: digital technology. When anyone writes software, they do it with an intention. There is a purpose behind this work, and that purpose becomes embedded in the thing. In philosophical terms, the tools possess moral agency. This is a powerful idea whose implications still have my own mind spinning.

Don't confuse moral agency for free will. An agent is a thing that takes on an active role to produce an effect. It doesn't have to "choose" to do this. Indeed, the argument I am advancing is that this happens necessarily and automatically. If I spend the weekend creating a game for a game jam, that thing has agency in producing an effect in the player. The same argument can be made for the mallet. Consider that if you have a mallet, pounding things becomes a reasonable answer to many problems. Putting it in technical language, the tool reconfigures the moral space around us. Mallets push us toward pounding things. Facebook pushes us toward doomscrolling. (Once again, I am indebted to Bateman for some of his excellent examples such as ultrasounds and drones, which produce significant effects in our moral decision-making.)

A story from this last week will illustrate my point. I was recently at the International Conference on Meaningful Play. One of the keynote speakers was Heidi Boisvert, who talked about her research investigating how people consume media. She records people as they watch screens, using cameras to capture the emotional responses. The reason she does this is that her collaborators, who work across a broad range of technologies, can design media that is more effective in promoting a social justice agenda. For our purposes, it does not matter whether you agree with her goals or not. My point is that the shifting of moral considerations is the goal of this work. It is not a conspiracy theory: it is modern technology.

There are brilliant people working for media and technology companies whose job it is to diminish your moral agency, although they would probably say "improve engagement" instead. Consider the use of intermittent variable rewards for example. We have known since B. F. Skinner's time that intermittent rewards are better than regular rewards for hooking someone into a desired behavior. Slot machines are the example par excellence, but we see this technique across all of our apps and services. Keep scrolling through Facebook, Instagram, your news feed, or your Netflix recommendations: you never know if the next thing is going to give you a dopamine hit, but maybe it's the next one, or maybe it's the next one. This is not just reward cards that give you a cup of coffee after buying ten. This is Jimmy John's giving you unpredictable surprise rewards, if only you'll buy just one more sandwich.

It is important to remember that there are ethical ways to develop, deploy, and use technology as well. This is a recurring theme in my classes, where I try to help students understand the importance of empathy in the design process, of evaluating your impact, and that there is a responsibility to act ethically. More broadly, not every micropayment is unethical, and technology-mediated engagement with a supportive and creative community can be a boon. However, it may not be obvious which technology is pushing us toward ethical behavior and which is not. This is why it is important that we recognize our human failure modes. We all succumb to intermittent variable rewards. We all fall victim to cognitive biases such as confirmation bias and fundamental attribution error. These, also, are part of being human. When we recognize that we have a nature, and we recognize that technology is not neutral, we position ourselves to consider how to live well with modern technology.

I conclude that our response must be to cultivate habitual and firm dispositions toward doing the good, lest the impact of technology overwhelm our capacity for moral agency. More succinctly, we should practice virtue.* I believe that the traditional cardinal virtues of prudence, fortitude, temperance, and justice are up to the task. Temperance ensures that we not spend inordinate time and resources in relationship with technology. Fortitude gives us the courage to avoid immoral uses of technology regardless of its popularity. Justice ensures that all are given their due in the production, use, and distribution of technology. Prudence remains the queen of the moral virtues, where our intellect powers the decisions that drive our actions.

Technology cannot do everything, and technology is not neutral. Yet, part of what it means to be human is to be integrated with technology. To live a good life requires that we be free to choose the right moral path, and we are best prepared for this if we arm ourselves with knowledge and cultivated virtue.

Thursday, October 6, 2022

The Unprecedented BSU participation in Ludum Dare 51

Over a year ago, I started up a Discord called "Ball State University Game Design & Development." It's a slowly growing community that includes students, staff, faculty, and alumni. It's mostly quiet, but we sometimes talk about games or game design. I also gives me a place to post about opportunities and encourage participation in them. I hope we are starting to see some fruits from this effort since last weekend we had an unprecedented number of BSU-affiliated people participate in Ludum Dare 51. This included one alumnus and four students. 

I wrote about my project and my sons' projects two days ago. Here are links to the other projects I know of that came from BSU. If you know of more, let me know, and I will add them to my list!

I am hopeful that this is positive momentum and that we'll get even more in the future. The Fall Ludum Dare tends to come at the best time. It's a couple of weeks in the semester, so I can encourage students and even incentivize their participation. For example, my CS222 students can earn an achievement by participating in a jam (although none did, as far as I know), and I gave my CS315 students the option to do Ludum Dare instead of their normal weekly work. The next Ludum Dare is in January before the semester starts, which means more people may have free time, but there's no opportunity for in-person nor course-based encouragement. The Spring one tends to fall right before final exams, when students are overwhelmed with work, though I tend to be in a mode where I'm just answering questions and waiting for projects to come in. This pushes me slightly back in the direction of hosting a local jam in Spring. We'll see how the semester goes!

Tuesday, October 4, 2022

Ludum Dare 51: Base Defense (plus four games from the boys)

In today's blog post, I share the experiences that my sons and I had participating in Ludum Dare 51. Each section starts with the name of the game, and this is followed by a link and then the creator's reflection. Enjoy!

My Game: Base Defense

This past weekend was Ludum Dare 51, the latest instance of what might be my favorite jam. What I love about the traditional Ludum Dare "compo" event is that each person handcrafts a game in 48 hours based on a shared theme. That creator does the art, the music, the programming, the writing, and the sound effects, and so everything that comes out of the Ludum Dare compo is wonderfully unique. There's an unadulterated bit of each creator within each game.

The theme was "Every 10 Seconds." I prefer themes that evoke an aesthetic rather than those that almost demand a mechanic. I did my voting before the jam, and so at some point one simply has to live with the results. As I contemplated the theme, I considered other constraints: What kinds of games have I wanted to make lately? What technology have I wanted to explore? I quickly narrowed my focus to making a tower defense game in 3D using Godot Engine. I've never made a tower defense game, but I've long wanted to. My game programming students elected to having a project in 3D, but I've really only built one 3D experience in Godot

My original idea was that new waves of enemies would come every ten seconds, but as I tinkered with the core game loop, I realized two problems with this. One is that creating different kinds of enemies, enough to call it a "wave," was possibly out of scope. The other was that ten seconds is actually a really long time when you're waiting for something to happen in a videogame. I decided to pivot on the integration of the theme and, instead, to have the player lose a random turret every ten seconds. This way, there's a constant pressure on the player to keep building and to stay aware of the board.

The result is Base Defense. You can check it out on the Ludum Dare page which links to the Web build as well as the native clients for Windows and Linux.

I'm happy with how it turned out. I had originally hoped to add more interesting enemy models than just colored spheres, and it clearly calls out for different kinds of turrets or defenses. Both of these features hit the chopping block pretty early. The end of the game is still actually a placeholder from when I got the original loop working, but you know, old memes are the best memes. The one thing I really wanted to add that didn't fit into the schedule was that meteors destroy not just a random target but also adjacent ones, recursively. I think this would have been a really fun way to force players to spread out their defenses, and I also think it would have made it less likely that someone can set up an unstoppable defense force. Yes, if you have the right combination of luck, patience, and skill, you can get the game into a state where there's no way for the enemies to win and you can accumulate points forever. I haven't gotten this, but I've seen my son do it. The positive side of this though is that the game is engaging enough to get someone to want to reach that goal, which is pretty good for a jam game.

Speaking of sons, all four of my boys created their own games for Ludum Dare 51. I asked each one to write a little reflection about the experience that I can share here. The older two boys have their accounts, and so I have linked to their project pages. The younger two boys do not have such accounts, so I've linked directly to Web builds where you can try the games. In each case, the creator's reflection follows the game link. Thanks for checking it out! I'll be sure to share any feedback here with the guys.

#1 Son: Shifting Dungeons

Check it out at the Ludum Dare site.

Shifting Dungeons is not my best game jam project. It’s not really fun. I think that is at least partially because the game does not require many (if any) interesting choices. Once you’ve figured out the strategy, you can win almost every time without needing much skill.

I did enjoy using shaders for the glow effects and styling the UI, and I am happy with the overall color scheme. At one point, I realized that the walls and floor were a cold grey instead of a brownish-yellow grey, and once I fixed that, everything looked a lot better. I also liked the way I organized the attack functionality in the player. When you press a button, it calls an attack function that then calls another function to resolve the appropriate effect.

I learned (not in this project, but recently) that enumerations really just assign names to positive integers, which is very useful for a wide variety of things. In this project, I used enums to distinguish types of attacks and different wall tiles.

Next time, I would like to try to make a more technically interesting game. Nothing in this project was new or unusual, which made it rather uninteresting to build. I also might not make a 2.5-d project next time, since it makes the artwork much harder to draw.

Anyway, thanks for playing my game, and please leave any suggestions you have about ways to improve it!

#2 Son: You vs. the Clock Featuring the Narrator

Check it out at the Ludum Dare site.

This year’s theme for Ludum Dare was “every ten seconds”. In my game, you have ten seconds of life to get as far as you can. The game is text-driven using Dialogic, partially because I wanted to practice my typing skills but also because I know very little Gd script.

I learned how to connect Dialogic to the script, which is how I got the timer, points, and duck to work. I wish I had had the time to add a timer that might make the connection to the theme a bit more clear by visualizing the ten-second countdown.

#3 Son: 10 Second Bomb

Play online now.

Hi, I made 10 Second Bomb, using Construct 2 (free edition) game engine. My idea was that every ten seconds a random tile would explode, like you've seen (or will see) in my game. I did not know how to do that, so my brother taught me about global variables and we could use that to fix our problem. Once I knew how to use global variables, making the player get bombs and the score tracker were easy to code.

Then came the timers (boom tile and new bomb). After I made those, I made the different screens (lose, win, main, start, and rules). I met most of my goals, although if you lose and then you play again and win, you have to click through both the win and lose screens. I don’t know why that happens, so if you do please let me know.

I learned some new things, like how to use global variables. I hope you enjoy (or have enjoyed) my game!

Thanks for reading!

#4 Son: Tim the Hunter

Play online now.

Hi, my game is “Tim the Hunter” in Construct. My idea was every ten seconds enemies shoot, and spawners make new enemies. If you get shot you die.

It was hard to make the coding. At first, you couldn’t move because the gun was stopping you from moving. Then I made the gun be able to move with Tim. I figured that out on my own. I also learned how to make text follow the screen. The point tracker used to not move with Tim, so the text would go offscreen. My brother helped me make the text move with Tim so that the player could see the points no matter where they went. If you press enter to play again, the music will play twice. I didn’t want it to do that, but I didn’t know how to make it stop.

I was happy with Tim’s costume. The bowler hat and overcoat and tie were fancy.

Story: you were hunting when a tornado and you landed on a floating island.