I've been writing about technology in education since 2006. I include entries below about Linux, Computer Science, Personal Notes, Mindfulness, and Educational Technology. My writing is generally informal and I write for an audience of my peers and friends. My writings started as a blog and now I hope they serve as resource and conversation starters on interesting topics.

Updated November 2022: Recent writing emerges!

Filter by type:

Sort by year:

The volume of the fringe…more science fiction

Blogging Writing published on Monday, March 04, 2024 (one month, 3 weeks, and 11 hours ago)

More thinking about the future, and science fiction.

The United States has about 330 million people and about 231 million social media users (about 311 million people are connected to the internet). To the extent people use social media and the internet, they can be known. They can be observed in an intimate, private, and near-total manner. They can be tracked, followed, and influenced. There is probably a relationship between amount of screen time and amount of potential influence

Much of this nudging, influencing, sequestering, and controlling is in service for the free market. But there is enough political and social nudging to raise a wondering.

100 years from now, if the free market is still free marketing, what might the visibility into our lives look like? Might there be a backlash where people disconnect and delete everything? Might social engineering divorce us so much from our nature that we decide not to be socially engineered?

Or perhaps, might the consequence of control be so high that a shadow war is fought for attention. That activists, social workers, and radicals do everything they can to subvert a message of "more and buy". Might monk-like religious / spiritual pull us away from devices and into actual communion and connection with each other.

Science fiction shouldn't ignore trajectory. And in our current world, the trajectory of personal, technological, and privacy is profoundly impactful.

I end with a quote from which I mostly agree with:

The real problem of humanity is the following: We have Paleolithic emotions, medieval institutions and godlike technology. And it is terrifically dangerous, and it is now approaching a point of crisis overall.

Edward Wilson

Transcend and Include - the future will have part of the past in it….

Blogging Writing published on Saturday, March 02, 2024 (one month, 3 weeks, and 2 days ago)

Science fiction asks us to imagine a possible future, often fantastic (sometimes quite dark) and live amongst the people who take it as normal.

So the good and the bad that accompany us now will most likely accompany us in the future - but it will be different. This is why I think many science fiction writers use a cataclysm as a device to purge the past. But we are still who we are - and moving humans through a crucible of change will not erase our fundamental nature. Aldous Huxley's book Brave New World addresses this through the London Hatchery and Conditioning Center - where this inconvenient human nature is purged and genetically altered. A terrifying future. The point here is science fiction should consider the way humans might evolve in the future.

Ken Wilber's integral theory, which posits that each stage of evolution transcends yet includes aspects of previous stages, provides a compelling lens through which to examine the trajectory of human progress as depicted in science fiction narratives. This philosophical framework suggests that as humanity evolves, it does not simply cast aside its former self but rather integrates and builds upon it, leading to increasingly complex and inclusive forms of existence. Science fiction, in its exploration of future possibilities, inherently grapples with this concept, presenting visions of humanity that are at once radically transformed and deeply familiar.

In considering how science fiction can incorporate Wilber's ideas, it's useful to explore the notion of developmental stages within human societies and individuals that are depicted in these stories. For instance, the genre often portrays technological advancements not just as tools but as catalysts for new forms of consciousness and social organization. This mirrors Wilber's assertion that each new stage of evolution brings about a greater capacity for complexity and empathy, suggesting a future where humanity's technological growth is matched by its moral and spiritual development.

However, science fiction also serves as a cautionary tale, warning against the potential pitfalls of neglecting the "include" aspect of Wilber's principle. Stories like H.G. Wells' "The Time Machine" illustrate a future where humanity has split into two distinct species, the Eloi and the Morlocks, representing a failure to integrate the spectrum of human capabilities and impulses. This bifurcation is a direct consequence of societal choices that favor technological advancement at the expense of holistic development, underscoring the importance of integrating all aspects of human nature as we move forward.

Moreover, science fiction challenges us to consider not only how we might evolve but also how we ought to evolve. Octavia Butler's "Parable" series, for instance, delves into the concept of adaptability as a form of evolution, positing that the future of humanity lies not just in our physical or technological augmentation but in our ability to empathize, cooperate, and coexist with each other and with our environment. This reflects Wilber's idea of integral evolution, where the transcendence of previous stages of development includes a moral and ethical dimension, suggesting that our future evolution will be as much about who we choose to become as it is about the external forces shaping us.

In essence, science fiction, through its speculative lens, provides a rich milieu for examining the trajectory of human evolution in light of Ken Wilber's integral theory. By envisioning futures that both transcend and include our current state, the genre offers insight into the potential paths humanity might take, highlighting the importance of holistic development that encompasses not just technological prowess but also moral and spiritual growth.Spiritual may not directly equate to religious here... As we stand on the cusp of significant societal transformations, perhaps accelerated by technological advancements, the reflective mirror held up by science fiction becomes an invaluable tool for navigating the complexities of human evolution, urging us to consider not just what we can become, but what we should aspire to become.

This essay is my ideas and my thoughts. I used a LLM to help me edit and form parts of it

What about the future, what about science fiction?

Blogging Writing published on Friday, March 01, 2024 (one month, 3 weeks, and 3 days ago)

I'm not sure of course, but it is really fun to think about it.

I am a voracious reader and consumer of science fictionEven early we encounter a problem! The definition of science fiction, science fantasy, and fantasy is pretty nebulous. There are sub-genre's of science fiction. More on that in a bit.. Books, movies, TV shows, video games and RPG's all shape and inform my view of science fiction. I note a few common themes in science fiction:

  • a near-future dystopian hell-scape (fallout)
  • a dystopian far-future empire (warhammer, maybe Starfield)
  • a cyberpunk, hyper-modern world (William Gibson, and Cyberpunk 2077)
  • an idealized clean-future federation (star trek)
  • a dark dystopian steampunk-like setting (China Miéville and Perdido Street Station)
  • a feudal / science-fictiony setting like Star Wars
  • a science fantasy - where magic / multiple races are present (starfinder)
  • a near-future apocalyptic / hard science fiction (Seveneves by Neal Stephenson)
  • a far future, fantastical world (Stanislaw Lem)

We could almost say for every piece of science fiction work, there is a different vision / idea about what the future will be like. This is very interesting because thinking about the future, imagining the future, putting ourselves into a future can start us building towards it.

Of course in all science fiction we explore what it means to be human in a very different culture, place and context. Science fiction is a unique genre allowing this sort of placement-of-self.

In the next few posts, I will be exploring ideas around science fiction, and ask for your thoughts and ideas as I do so.

Sabbatical update 2

Blogging Personal Teaching Diary Update published on Friday, December 01, 2023 (4 months, 3 weeks, and 3 days ago)

Deep Dive into AI and Machine Learning

My fascination with AI and machine learning has only grown during this period. I've been thoroughly engaged in understanding complex concepts such as Manhattan distance, greedy algorithms, and the minimax strategy. My sabbatical has also been an opportunity to learn about knowledge graphs, uncertainty in data, optimization techniques, and neural networks. These areas are fundamental to understanding how AI and machine learning systems learn and make decisions. This knowledge will be invaluable in my teaching and ongoing professional development. It's been refreshing to delve into these areas, and I'm always eager to discuss and exchange ideas with anyone interested.

I'm starting to design an ASW-exclusive Local Large Language Model (LLM) designed specifically for our students' needs. This initiative aims to harness the power of AI in education, offering a revolutionary approach to learning support. The idea is to develop a local LLM that is fine-tuned and optimized to understand and cater to the unique educational requirements of our students at ASW. This model will not be a generic AI tool, but a specialized, school-specific system that comprehends the nuances of our curriculum and the common challenges faced by our students. It will be a local system (not internet connected) and meet all the current legal guidelines being proposed in the EU for using AI in education. The diagram has been helpful to guide my thinking about what an educational LLM should consider:

Work with the IB and Travel to The Hague

Part of my sabbatical has been dedicated to contributing to the International Baccalaureate (IB) organization. Recently, I returned from a productive visit to The Hague, where I collaborated on several initiatives related to the new IB computer science curriculum. This opportunity has allowed me to apply my expertise in an international context and contribute to shaping global education standards. I learn so much about the IB in these visits, and they always enrich my understanding of computer science.

Personal Time with My Chocolate Labrador

On a personal note, my chocolate labrador (Obi-Wan MackObi) , who is now 5 months and a healthy 23 kilograms, has been a constant and joyful companion. Taking care of him has brought much-needed balance and happiness to my days. He is just starting his teenage years now, and that's ...pretty...cool...most...of...the...time... He likes to eat things.

Innovative Educational Endeavors

One of my key projects has been the development of virtual mini-courses for students. These courses are designed to empower students by offering them the flexibility to choose what and when they learn within the course structure. This initiative aims to enhance the learning experience and adapt to the evolving educational landscape. Students will be able to choose how they want to proceed in the course, and multiple pathways will help facilitate interest in different areas of computing. I'm currently offering 4 languages (PHP, Python, Javascript and Rust) and 4 pathways (business, biology/science, computer science and software engineering). At some point I may ask to split these into different courses, but I am quite excited to design, develop and trial these pathways.

"Date Night with Your Mac" Presentation

Looking ahead, I am preparing for the "Date Night with Your Mac" presentation in January. This event will focus on the practical, nuanced and discerning use of Large Language Models (LLMs) in education. Additionally, I plan to explore some practical legal aspects related to technology use in the classroom. One of the main points I will be making is the way we can use LLM's to reduce the amount of time we spend doing administrative tasks.

As I continue on this sabbatical journey, I am grateful for the time to grow, learn, and contribute to the field of education and AI. I look forward to bringing back a wealth of knowledge and experiences to share with my colleagues and students. I miss you all very much.

Sabbatical update 1

Personal Teaching Diary published on Thursday, August 31, 2023 (7 months, 3 weeks, and 4 days ago)

Connections and collaborations

The ACM is the Association of Computing Machinery. It’s the world's largest educational and scientific computing society.

I’ve been reading, parsing and communicating with members of SIGCSE - the ACM’s special interest group for computer science education. This learning has been deeply satisfying. I look forward to summarizing and presenting “best practices of K-12 computing education”. Needless to say, ChatGPT, AI, and large language models have captured the attention of this community.

Core learning tools

Moving on to the classroom tools, I've been focusing on making Git and Visual Studio Code (VSCode) more accessible for our students. VScode is a code editor and Git is the industry standard version control system that helps keep track of changes in code amongst many people. With the new materials I’ve developed, I'm confident our students will be committing and pushing code like they were born to do it - and be better prepared to work with modern tools in University and the real-world. I should also mention Git is a superb platform to use as a portfolio of student work and learning.

Modernizing PHP

In my continued quest for modernization, I've dived into the world of PHP Object-Oriented Programming (OOP), MVC (model-view-controller) architecture, and strictly typed PHP. This will enable our students to be more industry-ready and familiar with modern development practices ( all of which are transferable between languages). PHP has been in the top 10 of all programming languages for more than a decade, and is still used by about 78% of all websites in the world. I first learned PHP 20 years ago, so this is a welcome and refreshing upskill. Next up: javascript, rust, and python.

Working with the IB

As for my collaboration with the International Baccalaureate (IB), I'm still deeply involved in fine-tuning the new computer science curriculum. While I can't spill all the beans just yet, I'm eagerly awaiting the day I can share these substantial updates with you.

Obi-Wan MacKobi

A personal update. We’ve added a new member to our household: Obi-Wan, a 9-week-old chocolate Labrador. He’s both a delight and a handful, keeping me active when I’m not buried in research or code. He’s snoring at my feet as I write this; a little bundle of love.

The future

The next big chunk of learning for me is machine learning, artificial intelligence, and building a large language model that can run locally at my school (does not need an internet connection to work). The discussions I’ve seen at every level of the IB, ACM, and in the popular press has reinforced in me the need to capture and use this technology effectively for our benefit. Lot’s more to say about this.

The future of high school computing

Computer Science Teaching Diary Writing published on Monday, July 03, 2023 (9 months, 3 weeks, and 2 days ago)

This article will discuss the importance of differentiation between software engineering and computer science in secondary (high school) educational settings and the impact of large language models on the former. Without correct understanding of computing, we can't fully appreciate how LLM's change it.

In the 2020 Computing Curricula recommendation, the Association for Computing Machinery (ACM) states that within the domain of computing, there are five primary disciplines. The reason it is important to understand this is because while there are some shared characteristics between these disciplines, they are different enough to be taught as distinct disciplines.


  1. Computer Engineering (CE)
  2. Computer Science (CS)
  3. Information Systems (IS)
  4. Information Technology (IT)
  5. Software Engineering (SE)

To acquire a deeper comprehension and appreciation of these disciplines' distinctions and interconnections, please refer to the following documents:


  1. Overview of Computing Fields
  2. Field Characteristics
  3. ACM 2020 Computing Curricula Recommendations

For some more serious approachesThere is a lot of noise and hype around AI in education - I tried to find respected institutional research to help frame LLM's within education. to AI in education research, please refer to the articles below:

  1. Artificial Intelligence and the Future of Teaching and Learning
  2. Artificial intelligence and the Futures of Learning
  3. The Position of Artificial Intelligence in the Future of Education: An Overview

High schools (and even some universities) often blur the lines between software engineering and computer science, using these terms interchangeably and without recognizing their essential distinctions When your students are applying to university please - I'm begging you - insist they read the actual courses they will be taking. . This conflation creates an ambiguous academic journey for students entering the computing field. While there is some overlap between the disciplines, clearly defined tracks are important in guiding students along the right trajectory.

In numerous educational institutions, students are exposed to programming (akin to software engineering), robotics (related to computer engineering), and occasionally resource management and abstract data structures (pertaining to computer science). Often, the overarching terms used for this education are "computer science", "technology" or "computers".

To make the distinction clearer and prepare students for the evolving world of computing, it is essential to design two distinct tracks within high school computing:

Track 1: Software Engineering

The significance of this track stems from the transformative impact large language models (LLMs) like ChatGPT have on problem-solving through programming. Students should be taught the fundamental coding concepts such as variables, control structures, and data structures. However, they must also learn to harness the power of LLMs in solving problems. By integrating LLMs, students can explore innovative ways to create solutions. Essentially, software engineering should focus on basic programming, computational thinking, and the astute utilization of LLMs. I include tools like co-pilot, tabnine, and YouCompleteMe, which use LLM-like technology to vastly improve programming output.

Track 2: Computer Science

The second track should concentrate on the foundational aspects of computer science. This encompasses theoretical data structures, advanced mathematics, and computing theories. The core areas of study within Computer Science include artificial intelligence, computer systems and networks, security, database systems, human-computer interaction, vision and graphics, numerical analysis, programming languages, software engineering, bioinformatics, and the theory of computing.

Conclusion

With the advent of LLMs, it is imperative for the education system to adapt and prepare students for the dynamic computing landscape. While LLMs present extensive possibilities for problem-solving, it is also crucial to nurture the next generation of computer scientists who will forge cutting-edge tools. Equipping students with the right skills and knowledge will be an important differentiator for students entering college and universities.

This article was supported with the use of chatGPT. I used the prompt "please provide your opinion on this article" and then I pasted in the article.

Project management tools

Blogging Personal Teaching Diary Writing published on Monday, April 10, 2023 (one year, 2 weeks, and 2 days ago)

The best advice I've heard about project management tools is they should help you manage your projects, and stay out of the way for everything else. I'm sure there is some witty corollary here...That is, the extent to which a project management system is useful is directly linked to how well it does that one job it should do.

I investigated several project management tools, first opting for locally hosted, open-source projects (my preferred solutions for most problems). I got open project working, but the UI felt sludgy / kludgy. I then joined monday.com and love the UI / ease-of-use but their pricing model doesn't accommodate 1 single user. There is a minimum for three person teams - which is expensive.

I settled on Trello. Which has everything I want and a pricing model I like.

My project management plan for my sabbatical is on Trello.

Customers will only buy your product if they believe that the value they’re receiving is greater than the price they’re paying; otherwise, why would they pay?

Warren Buffett

Sabbatical planning

Blogging Teaching Diary Writing published on Monday, April 03, 2023 (one year, 3 weeks, and 2 days ago)

Next year (school year 2023 - 2024) I will taking a sabbatical (proposal here). 14 years at my current school (American School of Warsaw), 22 years in education = time for some reflection and a recharge. Many of the technical skills I use and teach every day I first learned more than 20 years ago. Technical languages, software development practices, and development tooling has changed quite a bit in the last 20 years! With the rise of large language models and their ilk, it looks like the next 20 years will be even more interesting. I don't think the practice of teaching has changed as rapidly as technology but it also has benefited from years of researchI wonder how much has changed about imparting knoweldge, skills, and lessons in the last 20 years....

Other than technical upskill / refresh I am also looking for some time for deep reflection. I am a fan of a book by Daniel Kahneman, Thinking Fast & Slow. Taking the time to consider and thoughtfully and deliberately act is wise. I still feel quite full of motivation, ambition and drive. But at 53 years old, I'd like to move deliberately and maximize meaningful impact.

By three methods we may learn wisdom: First, by reflection, which is noblest; Second, by imitation, which is easiest; and third by experience, which is the bitterest.

Confucius

A mostly terrible time

Blogging Writing published on Sunday, March 26, 2023 (one year, one month, and 11 hours ago)

Being a parent brings the greatest joys and deepest pain. Recently our teenager has been struggling with things many teenagers struggle with On a good day being a teenager is hard... and it's just painful to see someone you love struggle. At the same time I appreciate and value struggle; some things you just need to learn the hard way. I suppose at that moment, just showing up and loving you kid is the best you can do. My instinct is to protect, prevent, and cover my daughter from pain and painful experiences. But in that difficulty arises strength and courage; and it is something each of us must find ourselves.

If your goal is to avoid pain and escape suffering, I would not advise you to seek higher levels of consciousness or spiritual evolution. First, you cannot achieve them without suffering, and second, insofar as you do achieve them, you are likely to be called on to serve in ways more painful to you, or at least demanding of you, than you can now imagine. Then why desire to evolve at all, you may ask. If you ask this question, perhaps you do not know enough of joy.

M. Scott Peck

Regular Update

Update published on Sunday, March 12, 2023 (one year, one month, and 2 weeks ago)

  • Laravel - I'm writing a crm-type-app for small business folksThis is really about learning Laravel and that ecosystem.
  • Wargaming for better decision making - I'm finding a group
  • I moved all web stuff to a dedicated web server, sill loving Linode pretty hard
  • Getting sabbatical plans finalized
  • Changed CSS of my site using Edward tufte-inspired CSS. That man is one of my heroes.
  • Grading and marking papers - my students hand-write most of their stuff, and it takes a long time to process this
  • Secret Projects A, B and C
  • Helping mom get organized to move to a new place
  • Desigining a "tank-identification party" with my friends

Success usually comes to those who are too busy to be looking for it.

Henry David Thoreau

on postfix…

Blogging Personal published on Friday, February 24, 2023 (about one year, 2 months, and 11 hours ago)

I've been wrestling with postifx, MX records, DMARC and other such nonsense lately. Oh, the pull to simply pay someone to do the work for me is great! However I am determined to setup a dedicated email server for all my various domains. This learning is not easy and requires effort. I meet failure often, in fact we are becoming rather good friends over this whole thing.You know, THAT kind of friend.

However, in each unsuccessful attempt I learn something new, and my goal of owning the system remains clear. I really understand how main.cf works, I really see how messages are routed. I learn the guts of /var/log/mail.log I'm learning, and if you don't mind me saying, I love it. 

The English language . . . becomes ugly and inaccurate because our thoughts are foolish, but the slovenliness of our language makes it easier for us to have foolish thoughts.

George Orwell, “Politics and the English Language”

The faltering

Writing published on Monday, February 20, 2023 (one year, 2 months, and 4 days ago)

Being brave and being brave. Doing the right thing. The whole nonsense of "the greater good" for the greater good - which, to be honest, is for the greater good.  A sisyphean task; should we surrender to the wants of others or live in the self-centeredness of our own ego?

The answer lay in the wise words of Ken Wilber I think he's wise. who posited the truth of things is in both the ascendent and the descendant. That is; to shun the descendent in the name of godly virtue is an error. But also, to practice gaia Sex Magik without abandon is also an error. That balance seems a prescription best filled regularly.

Dedicated servers for dedicated things

News published on Saturday, February 18, 2023 (one year, 2 months, and 6 days ago)

I run a web server and an email server (MTA, MUA and MSA) on one virtual machine. I have learned this is probably a mistake. I'm slowly changing my setup so I have one server do one thing; an email server should just do email. A web server should just do web stuff. The problem is the more services running on a server, there seems to be a disproportionate rise in complexity when an issue emerges. I would imagine for an experienced and seasoned system administrator, this is obvious. But I am learning, and curious, and always exploring things. Today that's what I've learned. 

Entity-Component-System 〈ECS〉

Computer Science Teaching Diary published on Thursday, February 02, 2023 (one year, 2 months, and 3 weeks ago)

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?

Computer Science Teaching Diary published on Sunday, January 29, 2023 (one year, 2 months, and 3 weeks ago)

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

https://github.com/bmackenty/s...

DEIJ - part one

Personal published on Wednesday, January 25, 2023 (one year, 2 months, and 4 weeks ago)

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

Computer Science Teaching Diary published on Sunday, January 22, 2023 (one year, 3 months, and 3 days ago)

  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

Computer Science Teaching Diary published on Friday, January 20, 2023 (one year, 3 months, and 5 days ago)

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

Linux Personal published on Wednesday, January 18, 2023 (one year, 3 months, and one week ago)

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. 

#dungeon23

Personal Twitter published on Sunday, January 08, 2023 (one year, 3 months, and 2 weeks ago)

As I am a fan of procedurally generated content (and making procedurally generated content), I've decided to build different systems and eventually combine them so people can have rich, varied and different dungeons and settings. The link to the github repository is here. I'm following a basic schedule here:

• Sunday — Settlement description, a village or a town. Could also be a bandit camp if that strikes your fancy

• Monday — Environment description. Think the local weather, geology, flora and fauna

• Tuesday — More in-depth settlement description

• Wednesday — Culture description of something fun or interesting about the local people. Something to make them stand out

• Thursday — NPC description, someone important or interesting on the island

• Friday — Faction description of either a new or existing faction. Be sure to make ties between factions and peoples

• Saturday — A rumour about something from the past week

Mastering uncertainty: A predictive processing

Games in education Practical Advice published on Friday, January 06, 2023 (one year, 3 months, and 2 weeks ago)

Yet, current models struggle to explain why such balanced challenges best afford these experiences and do not straightforwardly account for the appeal of high- and low-challenge game genres like Idle and Soulslike games. In this article, we show that Predictive Processing (PP) provides a coherent formal cognitive framework which can explain the fun in tackling game challenges with uncertain success as the dynamic process of reducing uncertainty surprisingly efficiently. In gameplay as elsewhere, people enjoy doing better than expected, which can track learning progress. In different forms, balanced, Idle, and Soulslike games alike afford regular accelerations of uncertainty reduction. We argue that this model also aligns with a popular practitioner model, Raph Koster’s Theory of Fun for Game Design, and can unify currently differentially modelled gameplay motives around competence and curiosity.

Full article (locally hosted) here.

Linked article here.

Our Wisla

Bushcraft published on Sunday, January 01, 2023 (one year, 3 months, and 3 weeks ago)

Walking along the embankment of the Wisla; unseasonably warm weather and yet the unmistakable signs of winter. In the distance you can see the Wistula river. 

The bear

Writing published on Friday, December 30, 2022 (one year, 3 months, and 3 weeks ago)

The bear had verifiable reports of Great Deeds. The bear had big muscles, and was physically huge. At one point, the bear's territory was massive; entire nations lived under his rule. He had untold and unimaginable riches. His music, song, and dance were elevated to the highest places. His science and industry were potent. 

All of this led to great pride for the bear. He would rightly walk with his head high and his chest out. He could exercise influence. He could will something and make it happen. Smart, strong, and competent minions worked hard to actualize the bear's goals. People feared the bear, and this was his source of power and control over many people. Some people respected the bear, some people (comfortable and warm) ignored the bear. 

But somewhere, along the way, perhaps as he became old, the bear became sick. So enamored with his power and past, he didn't support and make ready young leaders to replace him. He didn't adapt or change. He fought wars that had no business being fought. He fell into his cave; afraid of losing his power? 


He could be great, of course, but he isn't, anymore. 


setting up a podcast

Personal published on Tuesday, December 27, 2022 (one year, 3 months, and 4 weeks ago)

In the myriad choices and sea of information we are forced to clarify greatly our goals, objectives and ideas. This process of clarification is truly wonderful. 

Merry Christmas!

Personal published on Sunday, December 25, 2022 (about one year, 4 months, and 20 hours ago)

Celebrating Christmas, giving and getting gifts, connecting with family, listening to music, eating food, and appreciating the holiday season. The best I can do is to describe the area around Christmas; the outline of a shape that has none. The coming together. 

Building an LMS (or virtual learning experience) - part 3 of 3

Teaching Diary published on Wednesday, December 21, 2022 (one year, 4 months, and 4 days ago)

My first moodle course is almost complete, introduction to programming languages. This has been a long process, but in the daily editing and revision I am pleased with the overall outcome. I'm sure more activities and resources will be added as students provide feedback, but now this course is "ready enough" for learning. I set up a badge for students to earn when they are done, and I have three assessments students must complete to demonstrate they understand this material at the right level.

I continually read how important building community is for online courses. I want this course to be as self-directed as possible, but I get how automated assessment misses subtle and nuanced points about the topic. Building this course has helped me focus on what I want the learning experience to be like; I suspect I will use this course in conjunction with my day-to-day teaching - but I want it structured so virtual students can derive maximum value from it. 

The good news is the first course is the most difficult (time intensive). But once created, I can re-use elements in other courses. And of course, once I create a digital asset, I can reuse (embed) it in other courses and other digital spaces.

Building an LMS (or virtual learning experience) - part 2 of 3

Teaching Diary published on Tuesday, December 20, 2022 (one year, 4 months, and 5 days ago)

H5P is a plugin for existing publishing systems that enables the system to create interactive content like Interactive Videos, Presentations, Games, Quizzes and more. The problem with formal and structured learning on the internet is that it remains mostly read-only (or watch-only, or listen-only). H5P helps to solve this by enabling interactive assessment for almost any content. Please click here for many interactive examples.

This is a huge deal, but it wasn't until moodle and other LMS's incorporated H5P that teachers could track assessment for digital learning. This means the kind of learning students can experience and the kind of assessment data a teacher can have are exceptional. No longer do we just "watch a youtube and discuss" but we can add assessment and track that assessment for different topics. 

H5P helps us help students evaluate their understanding of a topic. 

Building an LMS (or virtual learning experience) - part 1 of 3

Teaching Diary published on Monday, December 19, 2022 (one year, 4 months, and 6 days ago)

This is an entreatment I have oft repeated; focus on the verbs around learning rather than the nouns of technology. As I rebuild a virtual learning experience I am asking myself "How can I make this best for my students"

I'm building out some moodle courses - my hope is my students will be use this resource to independently learn about different topics within high school computing. I curate material for them and ask them to learn it. But the key differentiator here is assessment.  Anyone can watch a video, but to what extent do they understand it? By using forums, H5P assessment, and built-in moodle quizzes I can evaluate student understanding (and students can evaluate their understandings).  I'm still looking for a way to embed jupyter notebooks and auto-graders for code. 

...but whatever plugins and features I include all need to direct learning toward encouraging student interaction and collaboration, providing support and resources, and organizing content and activities.

The key points here are:

  1. Have clear learning goals: It's important to have a clear understanding of the learning goals and objectives for the virtual learning experience, and to design the experience around those goals. This might involve creating a lesson plan or course outline that outlines the topics and activities for each unit or module.
  2. Use a variety of teaching methods: Virtual learning requires a different approach than in-person teaching, so it's important to use a variety of teaching methods to keep students engaged. This might involve using video lectures, interactive activities, and small group discussions.

I have to think "to what extent will this course be an independent learning experience"? 

Giving students as much of a choice as possible is important, freeing me to focus on helping my students to solve problems - where there is the biggest bang for the buck for my students. 

Displaying courses in grid format on moodle homepage

Computer Science HOWTO Teaching Diary published on Friday, December 16, 2022 (one year, 4 months, and one week ago)

On the front page of moodle when using the boost theme, there is a linear list of courses. If you want a grid of courses, you can use the suggestion from here, a plugin named filter codes. I tested this on moodle version 4.1 and it works perfectly. 

just trying to make it to vacation…

Blogging Personal published on Thursday, December 15, 2022 (one year, 4 months, and one week ago)

Sadly, I have little of all of it. Many of my students are sick, and my energy levels are quite low. Ugh. 

Procedural fantasy weapon generator

Games in education Practical Advice Teaching Diary published on Tuesday, December 13, 2022 (one year, 4 months, and one week ago)

Here is the file on github, enjoy. I had quite bit of fun making this. Here's some sample output: 

Long ago, during the age of Destruction, Gnomish smiths forged Yosyur Wargebas's exquisite crossbow. The wood on this weapon is constructed in a spiral-shaped combination of dark wood and exotic wood, it is clear careful and extraordinary craftmanship went into the creation. This weapon is a masterpiece of craftsmanship, and is a veritable work of art. You have +2 on any rolls to pick up romantic partners while holding this weapon. This weapon is sentient. Moving your hand near it, you can feel a vague sense of neutral uncertainty. For 30 years, this weapon was used as a table ornament in the modest home of Prince Fumbledick, who was unaware of its importance.

Long ago, during the age of Light, Dwarven smiths forged Vosgrolin Bloodshield's flaming scimitar. Elegantly crafted in a spiral-shaped combination of semi-precious gems and rare metals, it is clear careful and extraordinary craftmanship went into the creation. This weapon is aflame, and does 4d6 fire damage. This weapon is sentient. Moving your hand near it, you can feel a vague sense of neutral pessimisticness. This weapon was once stolen by a goblin. When the litch who owned the weapon found the goblin, he punished the goblin severely, which is why goblin soup is now a popular dish amongst evil wizards and litches.

Long ago, during the age of Doom, Dwarven smiths forged Erirnoick Orehead's exquisite whip. Elegantly crafted in a helix-shaped combination of rare stone and semi-precious gems, it is clear careful and extraordinary craftmanship went into the creation. This weapon is a masterpiece of craftsmanship, and is a veritable work of art. You have +2 on any rolls to pick up romantic partners while holding this weapon. This weapon is sentient. Moving your hand near it, you can feel a vague sense of unaligned uncertainty. This weapon was once wielded by a young Kawian apprentice, who later became a fearsome warrior.

As far as dinners go,

Writing published on Monday, December 12, 2022 (about one year, 4 months, and 2 weeks ago)

We enjoyed a wonderful social connection with friends last evening; a warm home - good food and soup on a cold night. There was much to discuss, and we covered many topics. Ostensibly we were there for the 5th birthday party of one of the boys but really, just to see friends. 

After the soup and food, after the fire outside in the snow, after the conversation - with our daughter asleep in the back seat of our car, I just felt...so filled...

Good company does a body good, indeed. 

chatGPT part 3: how do I know you know?

Computer Science Teaching Diary published on Saturday, December 10, 2022 (one year, 4 months, and 2 weeks ago)

As a computing teacher I use standard written assessments with my students. Questions include different assessment objectives such as "state", "describe" and "explain". I also use small code problems where students must solve a problem and write an answer in pseudocode. There is an internal assessment that students write; worth 25% of their final grade students must solve a problem for a real client. This is mostly independent, and a place where students could use outside tutors to solve a problem. 

For any work outside of class, I will add oral component to the assessment.

According to chatGPT, 

Some key steps for structuring an oral exam for computer science include:

  1. Determine the goals and objectives of the exam: The first step in structuring an oral exam for computer science is to clearly define the goals and objectives of the exam. This will help to ensure that the exam is focused and that it effectively evaluates the student's knowledge and understanding of the material.
  2. Identify the key topics and concepts to be covered: Once you have determined the goals of the exam, you can identify the key topics and concepts that will be covered. This could include specific programming languages, algorithms, data structures, or key theories or ideas in computer science.
  3. Create a structured format for the exam: To ensure that the exam is well-organized and focused, it's important to create a structured format for the exam. This could involve dividing the exam into different sections, each focused on a specific topic or concept, or using a specific format (e.g. Q&A, presentation, problem-solving) to evaluate the student's knowledge.
  4. Develop a list of questions: The next step is to develop a list of questions that will be used during the exam. These should be focused on the key topics and concepts covered in the exam, and should be designed to evaluate the student's knowledge and understanding of the material.
  5. Plan for student evaluation and feedback: Finally, it's important to plan for student evaluation and feedback. This could involve using a grading rubric to evaluate the student's performance, providing written or verbal feedback to the student, or allowing the student to ask questions or provide feedback on their own performance.

Overall, the best way to structure an oral exam for computer science is to carefully plan and organize the exam, focusing on the goals and objectives of the exam and the key topics and concepts that will be covered. By following these steps, you can create an effective oral exam that effectively evaluates the student's knowledge and understanding of the material.

chatGPT part 2: how we change our teaching and student learning

Teaching Diary Writing published on Wednesday, December 07, 2022 (one year, 4 months, and 2 weeks ago)

My seniors students have discovered chatGPT. They (like me) were stunned when they saw it. One student asked me why they should study software engineering when there is a tool like this. 

I agree, this tool changes things, but while it can provide snippets of code, I don't think it can write whole systems with various input, processing and output. Much like visual studio code copiliot, I see systems like chatGPT offering support for experienced programmers.

The key thing is evaluation. How will we know the answers we get from chatGPT (and copilot) are correct? I spoke with our school director, always intellectually curious, who suggested teachers ask students to evaluate a reply given by chatGPT. I think this is where we need to be in relation to chatGPT: a smart assistant who needs to be watched carefully. 

That being said, it looks like intelligent agents are going to become better (much better) at being assistants. This seems to be a plausible near-term future

Our job is to teach our students well enough so they can evaluate / analyze the output to determine if the solution is correct / best fit for the problem they are trying to solve. 

chatGPT: teaching computing

Computer Science Teaching Diary published on Sunday, December 04, 2022 (one year, 4 months, and 3 weeks ago)

ChatGPT answers: 

There is no one-size-fits-all answer to this question, as the most effective teaching methods will depend on the specific goals and objectives of your course, the abilities and needs of your students, and the resources and materials available to you. However, there are some general principles and best practices that can help you create an effective and engaging learning environment for your students.

First, it's important to create a clear and organized syllabus that outlines the goals and objectives of your course, as well as the specific topics and concepts that your students will be learning. This will help your students understand what they can expect from the course and how they can prepare for success.

Next, it's important to use a variety of teaching methods to engage and motivate your students. This can include interactive lectures, discussions, hands-on activities, and group work. Using a variety of teaching methods can help keep your students engaged and interested in the material, and can also help students with different learning styles to succeed.

It's also important to incorporate real-world examples and applications into your teaching, to help students understand how the concepts and skills they are learning can be applied in the real world. This can help make the material more relevant and meaningful to your students, and can also help to motivate and inspire them.

Finally, it's important to provide regular feedback and support to your students, to help them understand where they are succeeding and where they may need to improve. This can include providing individualized feedback on assignments and exams, as well as offering extra help and support outside of class. Providing this kind of support can help your students feel confident and supported in their learning, which can in turn help them to succeed in your course.

Overall, the most effective techniques and methods for teaching high school computer science will depend on your specific goals and objectives, as well as the abilities and needs of your students. By using a variety of teaching methods, incorporating real-world examples and applications, and providing regular feedback and support, you can create an effective and engaging learning environment for your students.

Bill comments: 

Yea, about that.

Sabbatical learning - part 2

Blogging Personal Writing published on Saturday, December 03, 2022 (one year, 4 months, and 3 weeks ago)

Part 1 here. With a sabbatical scheduled for next year, I am excited and anticipating some good work to be completed. Being able to coalesce many years of experience to renew learning engagements and refresh my understanding strikes me as a golden time. 

I am not only going to work on "professional Bill" but I will also attend to "personal Bill", where I intend to:

  1. focus on exercise, diet and mindfulness
  2. focus on my garden and backyard - long neglected
  3. focus on hobbies 
  4. focus on friends

I will be reaching out to friends who have taken sabbaticals to learn from them; what they did well, what they didn't do well. I don't intend my learning to stop, but this might be the last time I have for long-term break until I retire.

I can't wait!

As I prepare for my sabbatical I am building mountains of curiosities and interests. "I wonder how XYZ" works. Why is XYZ like that". These types of wonderings prime the pump for engagement and interest in the work ahead. 

Coming together and eating

Personal published on Sunday, November 27, 2022 (one year, 4 months, and 4 weeks ago)

When I was earning my superintendents license in NYC my supervising administrator instilled a simple truth:  feed your people. This resonated and resonates with me as a highly effective means of creating bonds, trust and connection. We just had Thanksgiving yesterday and I was struck how simple it is; good food, relaxed atmosphere, and people ...just connect... There is quite a bit more to leadership, but feeding people carries with it a physical and metaphorical benefit I really love. 

I think there is a certain vulnerability and assurance when we eat - something so basic - I don't know why food doesn't figure more prominently in our day-to-day meetings.  

Enjoying the moment

published on Saturday, November 26, 2022 (one year, 4 months, and 4 weeks ago)

Nothing especially tricky here. We've 14 people coming over for a slightly delayed thanksgiving, and today is the big day!

  1. We spent time to carefully plan what, when and how of the meal prep
  2. We pre-cooked the creamed spinach yesterday
  3. We got some things ordered via caterer (pies and a green salad)
  4.  We've already started setting the table a day prior

Other than that, honestly engaging with "what's the worst thing that could happen" is a fun way to manage anxiety around large meals, and I find myself relaxing through meal preparation and enjoying the process of cooking (and preparing food for people I love). 

A quote from the Joy of Cooking:

We can offer reasoned counsels and repeat the lessons of experience and tradition, but the truth is that if the table is attractive and clean, the food and drink honest and good, the company amiable and interesting, and the host generous and calm, an affair can be a resounding success no matter where the glasses go or who is sitting where. And that is our last word on entertaining. 

Sabbatical learning - part 1

Blogging published on Wednesday, November 23, 2022 (one year, 5 months, and one day ago)

If a good replacement can be found, I'm approved for sabbatical leave next year. My plan for learning includes: 

  1. Design and construct curriculum to substantially improve student usage of git (a version control system) and the IDE visual studio code
  2. Design and construct curriculum for OOP Python
  3. Design and construct curriculum for advanced Python
  4. Design and construct curriculum using Jupyter notebook
  5. Design and construct curriculum for artificial intelligence / machine learning / advanced topics
  6. Rebuild every learning engagement and assessment in the two year IB computer science course (this is hundreds of learning engagements and 30+ assessments)
  7. Design and construct curriculum for Rust
  8. Design and construct curriculum in node.js, javascript, mongo DB, Linux

I'm already doing some of this stuff, but this sabbatical will help me by granting me the time to invest deeply in learning and reflection. Exciting stuff. 

Robotics

Teaching Diary published on Saturday, November 19, 2022 (one year, 5 months, and 6 days ago)

This weekend, we are immersed in a Lego robotics competition. Students and coaches have come from other international schools to compete in a robotics challenge. The nature of the challenge is to program a robot to perform different manipulative tasks of various difficulties (within 2 minutes and 30 seconds). For example student robots need to push the red section of the windmill.

This will then trigger a different piece to fall, which must be collected for different points. The cool thing about this project is how many different times student-groups can attempt these challenges. It's ultimate design in my opinion, where a student will try / fail / try / fail many different times. This constant cycle of iteration is really at the heart of learning, construction and design - and is just such good stuff. 

Procedural generation as a teaching approach

Computer Science Teaching Diary published on Thursday, November 17, 2022 (one year, 5 months, and one week ago)

The amazing thing about procedural generation is that infinite unique possibilities can be created with little work from humans (ref). I've been interested in procedural for a few years, and would encourage you to take a peek at the following resources to learn about procedural generation: 

  1. This is an excellent introductory article
  2.  Dwarf Fortress (an incredibly complex game that is largely procedurally generated)
  3.  No Man's Sky (this a wiki article describing how procedural generation works)

What is cool about procedural generation is how easy it is to start with procedural generation.  In the example code below, we can get the following output: 

  1. Discovered in the small village of Tr'lor
  2. Hatched in the ocean of Greenest
  3. Born in the small village of Mirkwood

# procedural generator to write a brief history
import random

origin_1 = ["Born", "Hatched", "Invoked", "Discovered"]
origin_2 = ["in the land of", "in the wilds of", "in the forest of", "in the ocean of", "in the small village of", "in the modest hamlet of"]
origin_3 = ["Tr'lor", "Kor'mer", "Kobiyashi", "Greenest", "Mordora", "Gondor'e", "Rivendell", "Mirkwood"]

story_part_1 = random.choice (origin_1) + " " + random.choice(origin_2) + " " + random.choice(origin_3)
print(story_part_1)

I have some students working at high levels of complexity and other students working with more basic levels, as seen above. But for all of them, this is a fun approach to deconstructing a complex system, identifying the patterns within the system, and introducing the correct randomness to the system to make it unique. 

Procedural generation gets us close to modeling and simulation where a student must understand a system in order to create a model of it. In my opinion, modeling and simulation is close to the the very best learning we can get

Procedural generation goes into the stratosphere when students apply machine learning to highly complex systems. 

update from Poland

Blogging Writing published on Wednesday, November 16, 2022 (one year, 5 months, and one week ago)

Welcome to the occasional update for the academic year 2022 - 2023.  I’ve lived and worked in Warsaw for almost thirteen years and these are my perspectives about current events in Poland. 

We learned yesterday (Tuesday) there was a Russian missile strike in Poland. The village is located less than 10 km from the Polish-Ukrainian border. It is inhabited by about 500 people, 2 people have died.

There is much we don't know but we know the missile was russian-made, and it exploded in Poland. 

According to Polish press, General Waldemar Skrzypczak stated:

It was probably hit by Ukrainian anti-aircraft weapons and misaligned, or it was misprogrammed and, as a result of various errors, went where it saw a different target. Or she got lost and flew until she ran out of fuel, the general estimates.

(almost all words in Polish have a gender associated with them, hence the word she)

To say the least, things are a bit tense in this area of the world. IF this is an attack, this would trigger article 5, which states:
 


“The Parties agree that an armed attack against one or more of them in Europe or North America shall be considered an attack against them all and consequently they agree that, if such an armed attack occurs, each of them, in exercise of the right of individual or collective self-defence recognized by Article 51 of the Charter of the United Nations, will assist the Party or Parties so attacked by taking forthwith, individually and in concert with the other Parties, such action as it deems necessary, including the use of armed force, to restore and maintain the security of the North Atlantic area.
 

This is essentially Poland asking for formal help from the alliance, and falls under a key NATO idea “an attack on one of us is an attack on all of us”. Many things to unpack here:

  1.  Russia is losing the war Ukraine. badly
    1.  Russia's military has been pushed back to pre-February 24 borders, and the Ukrainian military has made stunning gains. If you are interested in non-political reading of the war, I cannot recommend understandingwar.com highly enough.
    2. Napoleon famously quipped:  Never interrupt your enemy whilst he is in the midst of making a mistake. Putin is making a doozy
       
  2. …but there's still a war…
    1.  missile attacks continue, and just yesterday there were more attacks on Kiev, and Russia fired over 100 missiles.
    2. Following a pattern in recent weeks of lashing out far from the front after battlefield losses, Russia fired long range strikes at the capital Kiev, where air raid sirens rang out, two explosions were heard and columns of smoke rose into the sky. The mayor of Kiev said Russian missiles hit two residential buildings (ref).
       
  3. Russia made an uncharacteristically rational decisions by retreating from Kherson
    1. Russian military action has been irrational, disorganized and remarkably inept.
    2. The manner in which the Russian military retreated from Kherson was more careful and competent than what they have done in the past
       
  4. Since this conflict began weapons, supplies and help have been pouring into Ukraine from Poland
    1. but the missile hit a grain storage in a tiny village, nowhere near anything of strategic importance
    2. There are also tens of thousands of American (and NATO) troops / equipment / missile defense in Poland
       
  5. Seems to me the last thing Russia wants if to trigger a war with NATO
    1. Considering their stunning failure in Ukraine, a war with NATO would be unimaginably stupid and result in a catastrophic defeat of the Russian military
       
  6. Please understand: nothing unites the Polish people like an attack 
    1. In Poland, as a rule, there is bickering, complaining and division but when the need arises, the Poles unite at remarkable speed and in remarkable solidarity.
       

We simply pay attention, listen carefully, and get on with our lives as best we can. 

Different categories of games in education

Games in education Practical Advice published on Monday, November 14, 2022 (one year, 5 months, and one week ago)

I've used three different kinds of games in my classroom. 

The purpose of this blog post is to help teachers understand the differences, similarities, and characteristics of the three types of games. 

COTS - Commercial, Off the Shelf game. I've covered COTS games for a while. COTS games are designed for the mass market - they are designed for enjoyment, challenge, and fun. COTS games can often cost many millions of dollars to make, and a hit game (AAA title) can generate hundreds of millions of dollars. COTS games are increasingly being released for the personal computer and consoles. COTS games offer: 

  1. High production value (very high quality graphics and sound)
  2. Low technical problems and very strong technical support 
  3. Strong user communities (fan sites, active forums, etc...)
  4. Often these games have very active modding communities
  5. Work on a fairly new machines; older computers (more than 3 years) might have problems.
  6. Run locally (from the internal hard disk) 
  7. Have exceptionally good gameplay
  8. Very good tutorials, which check for understanding
  9. Adjust difficulty based on the players skills
  10. A game kids want to play at home 

Edutaintenment Many teachers are familiar with these titles - Millies Math House, Reader Rabbit, Sammy's Science House The hallmark of these games are kid-friendly graphics with gameplay that follows a "solve these problems and get to the next fun thing to do". Sometimes players are asked to do something like bowl for math problems. 

The general feel of the games is really fun math or reading worksheets. These games are fun, and build basic skills. They are valuable and good learning tools. In my context of games in education, these games generally don't fit well. They are a little to oriented to the drilling model (but who says drilling has to be no fun?). Characteristics of edutainment titles: 

  1. Marketed exclusively for schools / education
  2. Content-specific (titles focusing on math, reading, spelling, foreign language, etc)
  3. Marketed for specific age or grade levels
  4. ESRB ratings are often intended for general
  5. The back-story of the game is minimal
  6. Gameplay is generally segmented and measured around learning objectives 

 

Serious games Serious games are a relatively new phenomena (although people have been seriously playing games for a long time). Here's wikipedia's view on the matter; I like what they say. I think of serious games a single-topic, highly specific semi-simulations. Serious games have similar profiles: 

  1. They are usually web-based
  2. They usually have a very specific theme (peace in the mideast, health sim)
  3. They are not meant to be in-depth simulations, they are meant to model the most important dynamics of a system
  4. They are short-term games 
  5. They are deliberately designed to teach, explain an issue, or clarify the dynamics of an issue

Of course, playing  a game invites a healthy dissociation and leans heavily towards recreation. As much as I have tried over the years to integrate incredible student passion playing games and learning, I have failed.

If you really want cream-of-the-crop, high-level learning with games, ask kids to develop models and simulations. It takes a long time to do this well, but learning is magnificent. 

saying goodbye to an idea

Blogging Writing published on Thursday, November 10, 2022 (one year, 5 months, and 2 weeks ago)

After more than 20 years of development, I have shut down moderncommand.com, a text-based game built on pennmush. I haven't touched code on moderncommand.com in more than 10 years. Github repo here.

 

Modern Command simulates running a contemporary nation-state. You assume the role of a Prime Minister (or President), and make decisions that effect the lives of millions of people in your country.

 

Technology, social, political, military, and economic issues all reflect events in today's news. You will control and manipulate this world just like real life leaders do; you will issue orders, sway opinions, budget resources, provide a vision and structure for your apt minions to do their work. You will negotiate, order, ask, sign, give, take, listen and talk.

 

Here's the final announcement. My avatar's name was Boris: 

Announcement: Boris shouts, "Thank you, Modern Command."
Announcement: Boris shouts, "you have provided me with many hours and days of escape, enjoyment, and fun"
Announcement: Boris shouts, "it is time for me to move on, but you will always have a special place in my life"
Announcement: Boris shouts, "I am saying goodbye"
Announcement: Boris shouts, "the enjoyment of creating and crafting and making"
Announcement: Boris shouts, "was made possible by you"
Announcement: Boris shouts, "so long, and thanks for all the fish."
 

@shutdown
GAME: Shutdown by Boris
Going down - Bye

 

The purpose of this blog post is to reflect on the grief of saying goodbye to an idea. Moderncommand was a dream for me, made real. I suffered a little bit from perfection; waiting until the game was “just right”. But I was proud of the systems I wrote and the time and effort I put in to make a good game. 

The game was a dream and it's time to say goodbye - this frees me to embrace other ideas and other stories. But the feelings of grief are real. I think when you have an idea you also have dreams about the idea; what it could be, what life would be like with the idea. 

I don't think you can fully move on until you say a proper goodbye. 

No peace without balance of power

Blogging Writing published on Wednesday, November 09, 2022 (one year, 5 months, and 2 weeks ago)

Power is possession of control, authority, or influence over others (source). There are different kinds / types of power, and different contexts with which it exists. 

Peace is not the absence of conflict; peace is about a real balance of power between and amongst groups. We cannot negotiate through a position of weakness, but rather strength. 

I live in Warsaw, Poland. As the war rages on in the Ukraine I see how power (coalitions of power and alliances of power) can create peace, but only when there is a balance of power - that one group is not dominate over another. For Ukraine, the only path to true peace is to fight. I think this may be true for all of us.

The design cycle works

Computer Science Teaching Diary published on Tuesday, November 08, 2022 (one year, 5 months, and 2 weeks ago)

My 9th and 10 grade (ages 15 and 16) students are working the design cycle as they solve a problem through programming. The problems are all unique, and fit the student's skill / capacity window.  An example of some the projects are below:

How to find the perfect guitar?A web-based application to help people find a guitar based on certain criteria
Which sport should you play?A web-based application help people decide what sport they might enjoy
Dungeons & Dragons character builder helperA web-based application to help people build a D&D character

The students have begun to really think and understand their problem. As they dig into the problems, I note they are changing their success criteria and more carefully adding features based on research into solutions. This process - of inquiry into a problem and understanding the problem deeply - reinforces the power of design. 

In education, we talk about transfer learning, where students can transfer learning to novel scenario or situation. A key question I like to ask is:

What do I want my students to know / be able to do in 5 years, 10 years

This kind of approach to solving problems is extraordinarily powerful, and a good thing™ to have in schools. Students who do not attend to this process generally do not have high quality solutions.

Tramping in Kabaty

Bushcraft published on Monday, November 07, 2022 (one year, 5 months, and 2 weeks ago)

Went for an early-morning tramp in the woods in the Kabaty woods. Stunning area in the heart of Warsaw with plentiful wildlife and beautiful flora to enjoy. I brought my normal kit with me; my pathfinder canteen with a small folding titanium stove. I had planned for a nice walk and perhaps a stop to make some tea. Instead though, I walked almost all the way to Kabaty; almost 45 minutes one way. It was cold, and I regretted not bringing a small backpack with me; my hands were cold as I carried the canteen. 

 

I saw a beautiful woodpecker, red nose and jet-black body. He didn't want to let me look at him for a long time, so I only caught a brief look. The sound of the other birds singing was serene and beautiful. I saw one, maybe 2 other people during my walk (it was early). 

I was wearing my normal hiking boots with normal socks. I wasn't even half-way through my tramp when I recognized the classic sensation of a blister on my right foot. Chastising myself, I thought my shoes were broken in enough to prevent blisters. I suspect the shoes are fine, but a winter of light walking has made my feet a bit thin. 

Big learnings: backpacks are best for tramping in the woods, a bit of foot powder and shorter walks are in order to break in my feet for the upcoming camping / bushcraft season. And of course, nothing beats a tramp in the woods. 

The original hum

Blogging Writing published on Monday, November 07, 2022 (one year, 5 months, and 2 weeks ago)

Lithe and moving, lost and ecstatic. There was nothing but the dance. The music flowed through him and he through the music. a perfect connection of sound and movement. He flowed as he flowed, as the music took him, each person did; each with their own call to the sound. 

But everyone on the dance floor was lost (and found) in the sound. The descendent; the earth, the ground, the body were triumphant. It was just perfect movement. 

It started adequately episcopal. 

A Proper Wedding (with People In Formal Attire). A lovely couple, a nice setting. A chuckle and tear as vows were exchanged. Toasts were made. Dinner was enjoyed and some wine was drunk. 

(Some wine was drunk, indeed).

And the traditional party favorite songs, and the traditional party dancing, mostly constrained and happy. 

It wasn't until a few minutes before the last song. Ties had been discarded, shoes had been cast aside, when it just. simply. started. The beat began and people just became lost in the movement, the moment and the move. Made of red light,  a thread emerged on the dace floor and oscillating and the guests just had to follow it; they had the surrender; then came the joy. And then the ecstasy.  The bodies began moving and couldn't stop if they wanted. The light from the thread spread out and everyone who was dancing coalesced. 

The music and dancing consumed them. And as it consumed it sought ground; with feet, with the earth. In a moment they all knew the first sound. Each person knew the hum. The body. The sound of life. 

..and he became, for a moment, fully alive

A wonderful way to learn software engineering

Computer Science published on Sunday, November 06, 2022 (one year, 5 months, and 2 weeks ago)

I teach two different courses primarily concerned with software engineering; 

  1. Designing Solutions Through Programming
  2. Solving Complex Problems Through Programming

In both courses I offer students a choice about what problem they want to solve. As long as the problem isn't too easy or too difficult I approve the project. This creates agency which well-serves my students. I find I get increased engagement, excitement, a sense that students are working a “real” solution which matters. From AMLE:

Student agency relates to ways that students can intentionally influence their own circumstances (Bandura, 2006). Agency can also be defined as a “student’s desire, ability, and power to determine their own course of action” (Vaughn, 2018, p. 63). Agency depends on “intentionality and forethought to derive a course of action and adjust course as needed to reflect one’s identity, competencies, knowledge and skills, mindsets, and values” (Nagaoka et al., 2015, p. 6). These elements suggest areas within which teachers can support student agency: through curriculum, instruction, assessment, and the ways in which they structure learning opportunities (source).

This is though, more difficult to manage. I like to use templates that students can alter and modify to build solutions. We deliberately and carefully learn about each part of a template so students can understand the code, and not just copy-and-paste chunks without understanding how it works. 

I plan on writing more about this, but this overall structure, where we teach students how to code, walk them through a template, and then build an authentic application allows them to transfer their learning to build applications and then “think software engineering”. 

The two types of forests

Bushcraft published on Saturday, November 05, 2022 (about one year, 5 months, and 3 weeks ago)

As we tramped through kabaty forest  I was reminded there are two types of forests; one where man decides how it should look and one where nature decides. This one is the former; the forest is beautiful, but is unmistakably touched by humans in every way. We would ideally like a more diverse forest floor; with evidence of decomposing tree's and a more wild, unkept look. I was taught the average lifecycle for old-growth forests was about 400 years. When man steps in to interrupt that natural cycle it can take a few hundred more years to get back into the natural rhythm. 

There is debate about how to best manage forests. There is often discussion about harvesting forests, utilizing them responsibly, or just letting them be. As dead trees decompose, a very specific ecosystem develops; one in which very specific bacteria and insects thrive. These bacteria and insects give rise to a connected ecosystem that continues the growth cycle of the forest, creating topsoil that then in turn nourishes more growth, etc… Old growth forests are increasingly rare in our world, and deserving of every bit of protection we can offer them. 

This is one aspect of bushcraft I find appealing; leave no trace, never cut live wood unless absolutely necessary, and to work with nature as opposed to against it. The wild isn't something to be tamed; man's insatiable desire to destroy it is. 

Early morning

Blogging Writing published on Thursday, November 03, 2022 (one year, 5 months, and 3 weeks ago)

I've always been an early bird. Lately I've been getting up around 4 or 4:30. I get so much work done. 

I should clarify: I don't mean work for work. I mean making progress on things I care about. Giving myself time to focus on personal goals and make progress on growing in a way I like.

There is a cost to this of course. Going to bed early I miss time with my wife, who is a bit of an evening starling. We still connect - but I suppose I get my quiet time in the morning and she gets hers in the evening. There's a balance in that. 

To the morning, to the start of things, to the time of focus and clear thought, free of interruptions, I salute you.

Letting go / picking up

Blogging News Personal published on Wednesday, November 02, 2022 (one year, 5 months, and 3 weeks ago)

I have made a list of projects I am letting go. I'm doing this so I have have space / room for new projects and ideas I want to work on. I have feelings of nostalgia and genuine loss as I let go of these older projects, but I am also feeling excited about working on projects I feel have value and interest for me. 

So, without any further ado, I'm letting of of the following projects: 

  1. balanced gaming (a site where I wanted to engender a conversation about balanced gaming for schools, parents and students).
  2. modern command (a text-based game simulating the command of a modern nation-state, powered by the pennMUSH server).
  3. interactive fiction

I'm picking up: 

  1. writing
  2. bushcraft
  3. drawing

How do we measure students computational thinking?

Computer Science Teaching Diary published on Friday, May 13, 2016 (7 years, 11 months, and 2 weeks ago)

Building a computer science wiki

Computer Science Teaching Diary published on Wednesday, May 11, 2016 (7 years, 11 months, and 2 weeks ago)

I've been very busy online lately, just not here 😊 Please do take a look at my computer science wiki. I'm building it for my high school, middle school, and IB students. Once it is filled-out enough, I will probably ask the internet for some help to add to it. Please enjoy, and check out the list of recent changes.

Linux server with lots of students - assigning individual read / write for students in /var/www

HOWTO Linux Teaching Diary published on Monday, April 25, 2016 (8 years, 2 days, and 13 hours ago)

I use (and love) linode for my web hosting, email, database, and other linux needs. I'll be using linode for my web applications class next year (about 15 students). I had a problem thinking how would I enable students to write to a web directory (var/www) without giving them all SUDO access (and allowing them to write into another students directory). 

This took me some time to find a solution, and it is beautifully simple (of course). Click here to see the thread

If you make /var/www writeable by its group and add the user to the group, that user will not have to use sudo. 

Try this: 

sudo adduser www-data 

sudo chown -R www-data:www-data /var/www 

sudo chmod -R g+rwX /var/www 

 

The user should then be able to edit /var/www/ files without hassle. The first line adds the user to the www-data group, the second line clears up any files with messed up ownership, and the third makes it so that all users who are members of the www-data group can read and write all files in /var/www. If you are logged in as you need to log out and log back in for the group membership to take effect. I confirm this works.

Six rules for asking questions in computer science

Computer Science Teaching Diary published on Tuesday, April 12, 2016 (8 years, 2 weeks, and one day ago)

The more complex code is, the longer it takes to understand and debug. If it is poorly written code, a multiplier is added to the time required to read it. I have worked with my students to build a "must do before asking questions" list in computer science. 

1. Google your question 
2. Re-read your code (or function). It can be helpful to read this backwards 
3. Use debugging tools 
4. Ask the person next to you 
5. Read error messages! 
6. If you have to ask a teacher for help, make sure you ask a very specific question about a very specific topic

 Great questions get great answers. Bad questions get, well, not-great answers.

Increasing complexity == increasing time to read

Computer Science Teaching Diary published on Friday, April 08, 2016 (8 years, 2 weeks, and 5 days ago)

I need some advice about a common question: "can you look at my code really quickly"?

I am starting to work on increasingly sophisticated programs with my students. My students ask me to help them diagnose a problem, suggest alternatives, or figure out what is broken in their code.

My problem is reading their code takes time, thinking about what they are doing takes time, and suggesting a good alternative takes time. This isn't something I can do in 30 seconds.

How do you manage student requests for support and assistance when their code is very complex and requires more than 5 or 10 minutes to read? 

Object construction

Computer Science published on Thursday, April 02, 2015 (9 years, 3 weeks, and 5 days ago)

I'm continuing my learning in JavaScript. 

Today, I reviewed and refreshed my understanding about objects, and object instantiation. 

I have always clearly understood creating, modifying, and deleting objects and their attributes. Today, though, I learned a new term: object literal notation and object constructor

In my PHP work, I've seen "constructor" term, and truthfully, never fully understood it. After review and practice today, I see how it works. 

It's funny, I always "hook" my new learning onto something I learned in the past. In this case, my work building text-based games was instrumental in my understanding of objects. @create foo; @set foo=thing/value, etc... 

I have forgotten how much I enjoy /just coding/ and hacking. It is a real pleasure.

Computational thinking, Minecraft and a 5 year old?

Computer Science published on Monday, March 30, 2015 (9 years, 4 weeks, and one day ago)

According to wikipedia, the primary characteristics of computational thinking are decomposition, data representation, generalization/abstraction, and algorithms. 

Specifically, computational thinking is a problem solving framework where: Analyzing and logically organizing data Data modeling, data abstractions, and simulations Formulating problems such that computers may assist Identifying, testing, and implementing possible solutions Automating solutions via algorithmic thinking Generalizing and applying this process to other problems ...are used to approach problems. How then, can we use minecraft to help a 5 year old (my daughter) start to understand these concepts? 

I think the best way is to build a trap for monsters. Firstly, she would have to use cause-and-effect thinking. She would also need to break the trap into it's different parts. She would need to design a trap, and test it. In broad strokes, we will approach like this: 

  1. Define the problem (zombies, skeltons, and creepers)
  2. Understand the component parts of a trap
  3. With the component parts, she will design a trap
  4. She will test the trap
  5. She will generalize ways the trap can be used in other situations 

Ok, I'll be honest, this isn't a good example of computational thinking. The classic decomposition, data representation, generalization/abstraction, and algorithms are not really present. But this would get us on a good road, wouldn't it? What do you think?

Yea! I learned something that I actually used!

Computer Science Teaching Diary published on Tuesday, March 24, 2015 (9 years, one month, and 4 days ago)

I'm refershing my javascript skillset by going through a code academy course. Laborious, but helpful. Today, while supporting a co-worker on a powerschool customization, we were looking at a problem. I realized a variable was declared within a function but wasn't scoped to be used outside of the function (globally). Once fixed, we were running strong.

I just studied variable scope in my refresher course, and I'm grateful I did! As always, the wonderful stack exchange has a well-written piece about variable scope within javascript.

I suppose it is mildly depressing that I am excited about learning something that I can actually use. That must mean I normally learn things that are useless.

Cultivating admiration in brands: Warmth, competence, and landing in the “golden quadrant”

Jennifer Doe, Emily N. Garbinsky, Kathleen D. Vohs
Conference Papers Journal of Consumer Psychology, Volume 22, Issue 2, April 2012, Pages 191-194

Abstract

Although a substantial amount of research has examined the constructs of warmth and competence, far less has examined how these constructs develop and what benefits may accrue when warmth and competence are cultivated. Yet there are positive consequences, both emotional and behavioral, that are likely to occur when brands hold perceptions of both. In this paper, we shed light on when and how warmth and competence are jointly promoted in brands, and why these reputations matter.