Welcome to the award-winning website of Bill MacKenty - where I discuss technology and education! I'm the Director of Technology at the American School of Warsaw, where I support the effective use of technology in schools and classrooms.

Games work in education

I am especially interested in the use of computer games in learning and teaching. I have successfully used games in my classroom to help students learn. Please click here to see what I've written about games in education, and feel free to explore Balanced Gaming, my consulting business that helps parents, schools, and gamers understand how computer games fit into a balanced life.

Educational Technology

Technology strengthens, deepens, and broadens our learning. Want a hint how to successfully integrate technology into learning? It's not about the what, it is about the how. Click here to learn more....

Expression Engine

Expression Engine is a best-of-class content publishing system. I've used Expression Engine to provide powerful and flexible solutions for my school. Built on the Code Igniter PHP framework, it is an excellent tool for schools.

Text Based Games

Text based gaming has been around since the earliest days of computing. Using only text, players enter in another world, and explore, socialize, achieve and impose in the game world. There is no sound, no flashy graphics, simply text. Click here to learn more.


I first realized I was a geek in the 6th grade. My 6th grade math teacher put me in front of a Texas Instruments 99A and 4 days later I was teaching the class how to program. I absolutely love hacking around in OS X and Linux. I have worked with kids and helped others my entire life. I love teaching, and watching a kid “get it” really lights me up. I am very interested in effective education, educational theory, assessment, and learning.

From the Blog

Entity-Component-System 〈ECS〉

I've learned about the Entity-Component-System (ECS)

Obligatory chatGPT / wikipedia definition: ECS is a pattern for game development that provides a way to organize and structure game logic. It is a way of designing games that separates the data (components) and behavior (systems) of entities.

In an ECS, entities are objects in the game, such as characters or enemies. Components are data structures that define the properties and attributes of an entity, such as its position, health, or sprite. Systems are responsible for updating and manipulating the components of entities.

The separation of data and behavior in an ECS allows for more flexible and modular game development, as it is easier to add or change components and systems without affecting the rest of the code. It also allows for better performance and scalability, as systems can be optimized for processing specific types of components.

Overall, the ECS pattern provides a clean and efficient way to structure game logic, making it a popular choice for game development, especially for large and complex games.

Entity Component System (ECS) is a software architectural pattern mostly used in video game development for the representation of game world objects. An ECS comprises entities composed from components of data, with systems which operate on entities' components.

ECS follows the principle of composition over inheritance, meaning that every entity is defined not by a type hierarchy, but by the components that are associated with it. Systems act globally over all entities which have the required components.

Entity: An entity represents a general-purpose object. In a game engine context, for example, every coarse game object is represented as an entity. Usually, it only consists of a unique id. Implementations typically use a plain integer for this.

Component: A component labels an entity as possessing a particular aspect, and holds the data needed to model that aspect. For example, every game object that can take damage might have a Health component associated with its entity. Implementations typically use structs, classes, or associative arrays.

System: A system is a process which acts on all entities with the desired components. For example, a physics system may query for entities having mass, velocity and position components, and iterate over the results doing physics calculations on the sets of components for each entity.

The behavior of an entity can be changed at runtime by systems that add, remove or modify components. This eliminates the ambiguity problems of deep and wide inheritance hierarchies often found in Object Oriented Programming techniques that are difficult to understand, maintain, and extend. Common ECS approaches are highly compatible with, and are often combined with, data-oriented design techniques. Data for all instances of a component are commonly stored together in physical memory, enabling efficient memory access for systems which operate over many entities.


Need a procedurally generated country?

Not much sure how much better you could do than this: 



DEIJ - part one

Obligatory chatGPT reference: 

Diversity refers to the variety of differences among individuals within a group or population. This can include differences in race, ethnicity, gender, sexual orientation, socioeconomic status, age, physical abilities, religious beliefs, political beliefs, or other ideologies. Diversity can also include differences in personal experiences, values, and perspectives. The goal of diversity is to create an inclusive environment that recognizes, respects, and leverages these differences to create a more equitable and equitable society.

Within this lay extraordinary scope. I've always thought to measure & evaluate each person equally, irregardless of their gender, sexuxal orientation, race, SES, age, etc... The truth is I've met truly beautiful human beings from every corner of life, and the obverse is also true. 

I believe to know someone, that is, who someone is takes time. That careful measure and often conversation and time are required to know someone. That the enemy of truth is haste. That a glimpse does give us perspective. That when I rush to judgement, when I hurry to act I often err. This is why the slow work movement appeals to me so; as a seeker of truth, it takes time.

There can be parts of someone I love and parts I don't care for. That nuance, discernment and careful thinking can find a person.

What could be more diverse than all of us?


Current thinking about chatGPT

  1. Ensure students understand the technical boundaries
  2. Teach students to ask precise questions (with follow-up questions if necessary)
  3. Teach students to evaluate answers

  4. As teachers we should encourage students to ask all questions via a text interface (so we can capture questions) and fine-tune the model to reply. The goal is to have a "reasonably good" assistant that can support students as they work through content required by the syllabus. The input for questions should be textual / copy-paste / and spoken word. 


Writing a report card comment generator

I wrote a report card generator. The GitHub repo is here. It's version 0.1 but I used it and it saved me some time. There are many things to add and edit, but perfection is the enemy of good (I'm not sure I got that quote right). 

I'm hoping to eventually offer it as a web service for students and parents to use so we can co-create a story about student learning. 


Multiple versions of PHP on the same web server

For better or worse I administer my own web server / web-services. I actually quite enjoy this, but I'm not a professional, which means sometimes I learn things the hard way, and sometimes I make mistakes. I recently installed an invoicing system, which needed PHP 8.1+. Most of my web applications run on 7.4, specifically mediawiki. I would prefer it if everything was on 8.1 and I'm slowly getting there. 

I learned about a nifty new tech PHP-FPM, which enables (among other things) multiple versions of PHP on a per-site basis. Which is cool. The end goal is to (of course) use only one version of PHP but for now I am enjoying the tinkering. 



I am the director of technology at the American School of Warsaw. I am committed to strengthening, deepening and broadening student learning through technology. I honestly believe HOW we teach is far more important than WHAT we use to teach. I am a technology skeptic and a technology evangelist. I am certified school building leader and school district leader in New York State. I love technology, and hacking around - especially in Linux and OS X. I am a text-based gaming aficionado, and I enjoy smoking a pipe now and again. Please feel free to poke around and learn more about me and my views of educational technology.

I do almost everything there is to do in technology and education. My goal is create the conditions for excellence in education through technology. And I'd like to share what I know with the educators in Poland.


Bill is a true pioneer in educational technology who knows his stuff and who has a knack for explaining that stuff without denegrating or belittling his audience. He taxes the audience's attention, not their education or intellect.

Chuc M....

Conference Notes and Press

Baruch College - 2010

Keynote: The Right Circumstances for Games in Education

Schenectady Museum & Suits-Bueche Planetarium, New York - August 19 2008
Presentation here (1.8mb PDF file).

Top 10 best ed tech blogs June 2008

M*U*S*H: Online lecture: the advantage of ignorance

Boston Globe: blogging in the classroom

Article here | pdf here (42.5 KB PDF file)

School Library Journal: Games in the classroom

Article here | pdf here (58.8 KB PDF file)

Tech Forum Chicago

eSchool News blog award & roundtable

Games Developer Conference

Hunter College High School: Integrating Technology

2006 Martha's Vineyard Technology Professional Development Day

Introduction to Blogging (4.4 MB PDF file)

2005 MassCUE Annual Technology Conference

This is the blogging presentation in PDF format (about 2.5 MB)
Games in Education (warning, 14 MB file !!!)

Tech Forum New York

Public forum on Video Games, Kids, and Education

Games in Education Conference at E3Expo 2005