Fode Symposium (2026)

I participated in the FODE Symposium (22 – 23 October 2026). Disrupting Online Learning Futures: Human-Centred Innovation in the Age of Intelligent Education. The opening keynote clashed with my daughter’s 18th birthday breakfast. We went to De Babab Eatery, so I was not completely present. I did however use the conference videos to catch up. You too should be able to watch what I (and other presenters) said.

My presentation was sub optimal (dark zoom, WiFi was patchy), but the materials and thoughts seemed good (article about the keynote speaker, interactive map of all participants, summary of the conference series). I’m kinda pleased about that. The reification of the lecture (and content) through ZOOM, Teams etc has let to Big Tech’s failures. It leads to “verschlimmbesserung”, or “en…fication” (thanks Cory).

There were academics, learning designers, instructional designers, e-learning specialists online facilitators and educational technologists at the event. I was the only Wikipedian there. Perhaps that’s why my computer decided to update itself at a most inopportune time.

The Presentation (I would have like to give)

Here is my brief presentation script, which might (or might not) have worked if I was in a better zone!

Slide 1 – A map of our territory
I love the way that our keynote speaker (Katheryn) started the presentation off with a map. It allowed me to locate her. The pictures that she used to represent herself were remote ones, a few family scenes. She drew on relations, children, futures and tech. It is in remote places where fully online distance education (FODE) makes total sense and knowledge is developed in relation to others. I drew a map back (of all participants).

Action: Look at the FODES Wikipedia Map

Slide 2 – A platform for knowledge
I dislike the way that higher education has reified the lecture and made content the king. I question the assumption that there is one authority who provides all information. Zoom magnifies this assumption. We arrive, quietly listen and then leave. Those who do this remotely, do this for many years. Can we do better?

Action: Go to Wikipedia and create an account to edit Wikipedia

Slide 3 A gap in understanding

Action: This quote is from a MIT report (see below). Think about this conference. Think about the quote. Has this conference allowed you to form an identity, exercise your judgment about AI? THINK! don’t google. THINK!

Slide 4 Passive or active learning?
However, if “…education is understood as a cultural practice through which students learn to make meaning, exercise judgment, form identities, and participate responsibly in community”. Then we cannot just sit there and listen. We also have to do!

Action: Go to Wikimedia Commons and see if there is an image about one of the presentationtopics (or a presenter) Choose a diagram captures its essence or select a significant speaker and upload these image to Commons. Remember they need to be openly licensed.

Slide 5 Getting unstuck
Many have been forced to choose new paths when it comes to higher education. After the disruptions of “Fees must Fall” and pivot that came with the pandemic, it has become more normal to learn online and at a distance. But lectures mode (sage on the stage) still remains.

Action: Are you still stuck in bubble. Can you connect to people with other ideas? Could you be a Conference Wikipedian? Go to the FODES talk page and write down your thoughts

Slide 6 Adapt my pitch
Some conference providers (like FODES) have consolidated their understanding of the different benefits and challenges the remote conference. But they have not yet managed to break free from content delivery paradigm. Wikification asks you to be deliberate. To think before. What will we do differently. To consider during. How can we challenge entrenched patterns of behaviours. To reflect afterwards and then turn our reflections into action and experience.

Action: Find this before, during, after presentations on Codepen. Fork it and modify

Slide 7 Make it yours
Digital is (for better or worse) pervasive. It matters less where the conferences happens, and more how you can connect to people. Ultimately, conferences are a knowledge hub. And when there are more knowledge hubs and you can make different connections between people in different hubs, and express those connections. That’s when you start to really learn

Action. Add a sentence to the current wikipedia stub about FODES about something notable in the event. Remember to reference it.

Slide 8 Five star teatment
There are five “aspects” of a conference

  1. Time, – synchronous (live, shared time) and asynchronous (independent, own time)
  2. Space – my office on zoom, a fancy conference venue at a remote location, a shared room
  3. Place – In places like Zoom on your phone on your laptop, or in a Virtual Spaces (XR, VR, AR, Immersive reality)
  4. Roles and relationships – keynote speaker, host, attendee
  5. Materials – Yes, SWAG is nice. But we also need a hub for storing re-arranging and sharing new knowledge! Where hub where you go to make meaning

Action 8: If someone had to search for FODES on Wikipedia. What would they find? Time, space and place of the conference? Or the materials you shared and the notable people there.

Slide 9 Lets enrich our shared knowledge

Wikification is where point 5 begins. The materials that are placed on Wikipedia and Wikimedia Commons become open to all. The relationships between these materials are created through Wikidata. These sharing become the basis for our learning. Then as a result of the materials, the roles and relationships. the rest (the time, space place) make it possible to earn together

Action 9: Arrange these materials using categories, images, maps, charts, diagrams, headings. Use the tools on Wikimedia at your disposal.

Slide 10 Recap
Conclusion. You saw how we got together at 13:20 (time), on dark Zoom with no presentation (space). You went to the FODE Symposium page, and perhaps you clicked on the map labels (place). You also might have noticed a gap. Did you ignore that. Or did you actually start adding to the materials (or did it together with someone). Was there was an aha moment? A spark? That’s when you started to learn.

Possible Deletions?

This Wikipedia conference entry might be deleted by an anonymous editor. There is contestation in Wikipedia (and higher education). So do take care with the archive and say share your thoughts about why this article should remain on Wikipedia

PS This presentation and the conference video do not correspond. My tech gave up on me just as I was about to present! So I had to do things on the fly.

References

Beetham, H., MacNeill, S. and McGill, L  (2026) Beyond blended: rethinking curriculum and learning design

MIT (2026) AI Use in Teaching, Learning, and Research Training

Mike & Tamsin (2026) Wikifying a Conference

Saridi, M., Mahdaviani, K., Milios, E., & Zeh, N. (2023). Context-enhanced concept disambiguation in wikification. Intelligent Systems with Applications, 19, 200246.

Witten, I.H. (2010). Wikipedia and How to Use It for Semantic Document Representation. In: Yu, J., Greco, S., Lingras, P., Wang, G., Skowron, A. (eds) Rough Set and Knowledge Technology. RSKT 2010. Lecture Notes in Computer Science(), vol 6401. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-16248-0_5

Municipalities Mapped

What does Swartland Local Municipality look like? Well it depends on what you pay attention to…

Below is an entity that represents the region commonly known as “Swartland Local Municipality“. I have categorized and displayed this entity by using Wikidata (blue D) and a GeoJson file (green G)

D
Adding metadata and spatial data
Conceptualising a data driven map.
Entity
Swartland Local Municipality
Q1530051
P625
Coordinates 33°22’00.0″S 18°47’00.0″E
P131
Administrative territorial entity West Coast District Municipality
P402
OpenStreetMap relation ID Use “79633” on Overpass Turbo
P911
South African municipality code Code
P3896
Geoshape Use GeoJSON file to create a map.
coordinates
P625
→
geoshape
P3896
G
Inserting points, linestrings and polygons in a GeoJSON file
To create a data driven map
Municipality code
WC015
https://commons.wikimedia.org/w/index.php?title=Data:WC015(2026).map&action=raw
Polygon
Wikidata
Wikimedia Commons
P625 Coordinates
P3896 Geoshape

If we plot out the boundaries, is this what WC015 looks like?

{
 "type": "Feature",
 "geometry": {
 "type": "Polygon",
  "coordinates": [[[]]]
}
}

The formula is pretty standard, it can be applied to any of the local or district municipality.

Introducing Gov Directory

There’s a project called Gov Directory and the person behind the explainer video is Jan. I briefly met him (username Ainali) at the Wikipedian in Residence (WIR) meeting in Paris. Jan is a sysop on Swedish Wikipedia and is Swedish. We chatted about stuff. This Gov Directory IS a project after my own heart. Government should and could be using open data and file formats (and some are) to represent themselves and their regions (like Swartland local municipality). It seems that Jan has been responsible for WikiProject Govdirectory which has collected Local and District Municipalities Data from all over the world. This is good initiative BUT there is more work necessary from some local folk. Wikipedians (like me) and others who keep the information current (and also available in vernacular). This requires local knowledge and municipal officials.

Maps about South Africa on Wikimedia commons tend to be flatish images, drawn with SVG format. Currently the country has 44 district municipalities, and each of these municipalities have their own Wikipedia page (thanks to Ainali and other volunteers) and a corresponding SVG map. But Jan has not visited (at least he did not say so) Swartland (or any other district municipality), so perhaps the question should be broader.

What does (insert district municipality name) look like?

We could answer this with another representation. Here is a quick SPARQL query. We are going to be looking for geojson files (P3896) that are associated with District Municipalities (Q1589568)

SELECT DISTINCT
?item ?itemLabel ?geojsonFile
WHERE {
?item wdt:P3896 ?geojsonFile ;
    wdt:P31 wd:Q1589568 .
SERVICE wikibase:label {
bd:serviceParam wikibase:language "en" .}
}
ORDER BY ?itemLabel

The result (when I drafted this post) was 12 GeoJSON files. There will be 32 more (since I am creating these files).

Wikidata ID District Municipality GeoJSON File
Q455705 Amathole District Municipality Dc12 (2026)
Q1974486 Cape Winelands District Municipality Dc2 (2026)
Q1053888 Central Karoo District Municipality Dc5 (2026)
Q1077283 Chris Hani District Municipality Dc13 (2026)
Q220249 Garden Route District Municipality Dc4 (2026)
Q654849 Joe Gqabi District Municipality Dc14 (2026)
Q1899307 Overberg District Municipality Dc3 (2026)
Q1886098 Pixley ka Seme District Municipality Dc7 (2026)
Q1024985 Sarah Baartman District Municipality Dc10 (2026)
Q2562901 West Coast District Municipality Dc1 (2026)

Update: I have completed and knitted those 44 GeoJson files together and made this district municipality map

Now who is in charge of representing these 44 municipality? The mayor, the city manager? Or a Wikipedian like me, Jan or other volunteers.

I think that local folks need to be involved

When creating a GeoJSON file for a district municipality map, these are a few key ingredients you need to bake your own GeoJSON file.

Collecting geospatial information
Ingredients and recipes
ENTITY: “West Coast District Municipality” coded as “Dc1”
  • Geometry type
  • Coordinate(s)
  • Open Street map relationships
  • Overpass Turbo
  • Mapshaper
  • Wikimedia.Commons
  • Muncipality code
  • Wikidata
  • Wikipedia
Simple geometry types
▼
Geographic Data
Geometry types
Point LineString Polygon

Above are the ingredients I used to generate an “interactive” map. But the map is not the territory and an abstraction (as we have seen) is not the real thing.
I know that my mental model always needs to be challenged by humans, tested by the territory, modified by leaders and citizens.

Let’s ask the same question. Who gets to decide what Swartland Local Municipality look like. And will the answer be the same in English and vernacular? (excuse the auto translation). I speak code better than other languages.

Isimo sikaMasipala Wendawo waseSwartland sinjani?
Masepala oa Sebaka oa Swartland o shebahala joang?
District Muncipality af nr nso ss st tn ts ve xh zu
Alfred Nzo District Municipality Alfred Nzo-distriksmunisipaliteit Q1664120 Mmasepala Setereke tša Alfred Nzo Q1664120 Q1664120 Q1664120 Q1664120 Q1664120 Q1664120 Alfred Nzo District Municipality
Amajuba District Municipality Amajuba-distriksmunisipaliteit Q452565 Mmasepala Setereke tša Amajuba Q452565 Q452565 Q452565 Q452565 Q452565 Amajuba District Municipality Amajuba
Amathole District Municipality Amathole-distriksmunisipaliteit Q455705 Mmasepala Setereke tša Amathole Q455705 Masepala wa Setereke sa Amathole Q455705 Q455705 Q455705 Q455705 IHlelo Amathole
Bojanala Platinum District Municipality Bojanala Platinum-distriksmunisipaliteit Q891165 Mmasepala Setereke tša Bojanala Platinum Q891165 Q891165 Bojanala Platinum District Municipality Q891165 Q891165 Q891165 Bojanala Platinum District Municipality
Cape Winelands District Municipality Kaapse Wynlande-distriksmunisipaliteit Q1974486 Mmasepala Setereke tša Cape Winelands Q1974486 Q1974486 Q1974486 Q1974486 Q1974486 Q1974486 Cape Winelands District Municipality
Capricorn District Municipality Capricorn-distriksmunisipaliteit Q692290 Mmasepala Setereke tša Capricorn Q692290 Mmasepala wa Setereke sa Capricorn Q692290 Q692290 Capricorn District Municipality Q692290 UMasipala wesiFunda saseCapricorn
Central Karoo District Municipality Sentraal Karoo-distriksmunisipaliteit Q1053888 Mmasepala Setereke tša Central Karoo Q1053888 Mmasepala wa Setereke sa Central Karoo Q1053888 Q1053888 Q1053888 Q1053888 Central Karoo District Municipality
Chris Hani District Municipality Chris Hani-distriksmunisipaliteit Q1077283 Mmasepala Setereke tša Chris Hani Q1077283 Q1077283 Q1077283 Q1077283 Q1077283 Q1077283 Chris Hani District Municipality
Dr Kenneth Kaunda District Municipality Dr. Kenneth Kaunda-distriksmunisipaliteit Q1150452 Mmasepala Setereke tša Dr Kenneth Kaunda Q1150452 Q1150452 Dr Kenneth Kaunda District Municipality Q1150452 Dr Kenneth Kaunda District Municipality Q1150452 Dr Kenneth Kaunda District Municipality
Dr Ruth Segomotsi Mompati District Municipality Dr. Ruth Segomotsi Mompati-distriksmunisipaliteit Q1254171 Mmasepala Setereke tša Dr Ruth Segomotsi Mompati Q1254171 Q1254171 Dr Ruth Segomotsi Mompati District Municipality Q1254171 Q1254171 UGqr. Ruth Segomotsi Mompati District Municipality Dr Ruth Segomotsi Mompati District Municipality
Ehlanzeni District Municipality Ehlanzeni-distriksmunisipaliteit Q1244497 Mmasepala Setereke tša Ehlanzeni Masipala Wesigodzi sase-Ehlanzeni Q1244497 Q1244497 Q1244497 Ehlanzeni District Municipality Q1244497 Ehlanzeni District Municipality
Fezile Dabi District Municipality Fezile Dabi-distriksmunisipaliteit Q1410315 Mmasepala Setereke tša Fezile Dabi Q1410315 Fezile Dabi District Municipality Q1410315 Q1410315 Fezile Dabi District Municipality Q1410315 Fezile Dabi District Municipality
Frances Baard District Municipality Frances Baard-distriksmunisipaliteit Q1263830 Mmasepala Setereke tša Frances Baard Q1263830 Q1263830 Q1263830 Q1263830 Q1263830 Q1263830 Frances Baard District Municipality
Garden Route District Municipality Tuinroete-distriksmunisipaliteit Q220249 Mmasepala Setereke tša Eden Q220249 Q220249 Q220249 Q220249 Q220249 Q220249 Garden Route District Municipality
Gert Sibande District Municipality Gert Sibande-distriksmunisipaliteit Q1515346 Mmasepala Setereke tša Gert Sibande Q1515346 Q1515346 Q1515346 Q1515346 Gert Sibande District Municipality Gert Sibande District Municipality Gert Sibande District Municipality
Harry Gwala District Municipality Sisonke-distriksmunisipaliteit Q549746 Mmasepala Setereke tša Sisonke Q549746 Q549746 Q549746 Q549746 Q549746 Harry Gwala District Municipality Sisonke
Joe Gqabi District Municipality Joe Gqabi-distriksmunisipaliteit Q654849 Mmasepala Setereke tša Joe Gqabi Q654849 Joe Gqabi District Municipality Karolwana sa Joe Gqabi Q654849 Q654849 Q654849 Joe Gqabi District Municipality
John Taolo Gaetsewe District Municipality John Taolo Gaetsewe-distriksmunisipaliteit Q384731 Mmasepala Setereke tša John Taolo Gaetsewe Q384731 Q384731 Q384731 Q384731 Q384731 Q384731 John Taolo Gaetsewe District Municipality
King Cetshwayo District Municipality UThungulu-distriksmunisipaliteit Q311668 Mmasepala Setereke tša uThungulu Masipala Wesigodzi seNkhosi Cetshwayo Q311668 Q311668 Q311668 Q311668 King Cetshwayo District Municipality King Cetshwayo District Municipality
Lejweleputswa District Municipality Lejweleputswa-distriksmunisipaliteit Q1816477 Mmasepala Setereke tša Lejweleputswa Q1816477 Q1816477 Q1816477 Q1816477 Lejweleputswa District Municipality Q1816477 Lejweleputswa District Municipality
Mopani District Municipality Mopani-distriksmunisipaliteit Q611074 Mmasepala Setereke tša Mopani Q611074 Mopani District Municipality Karolwana sa Mopani Q611074 Mopani District Municipality Mopani District Municipality Mopani District Municipality
Namakwa District Municipality Namakwa-distriksmunisipaliteit Q617646 Mmasepala Setereke tša Namakwa Q617646 Q617646 Q617646 Q617646 Q617646 Q617646 Namakwa District Municipality
Ngaka Modiri Molema District Municipality Ngaka Modiri Molema-distriksmunisipaliteit Q1984191 Mmasepala Setereke tša Ngaka Modiri Molema Q1984191 Q1984191 Ngaka Modiri Molema District Municipality Q1984191 Q1984191 Q1984191 Ngaka Modiri Molema District Municipality
Nkangala District Municipality Nkangala-distriksmunisipaliteit Q1856181 Mmasepala Setereke tša Nkangala Q1856181 Q1856181 Q1856181 Q1856181 Nkangala District Municipality Q1856181 Nkangala District Municipality
OR Tambo District Municipality O.R. Tambo-distriksmunisipaliteit Q2007299 Mmasepala Setereke tša O.R. Tambo Q2007299 Q2007299 Q2007299 Q2007299 Q2007299 Q2007299 OR Tambo District Municipality
Overberg District Municipality Overberg-distriksmunisipaliteit Q1899307 Mmasepala Setereke tša Overberg Q1899307 Q1899307 Q1899307 Q1899307 Q1899307 Q1899307 Overberg District Municipality
Pixley ka Seme District Municipality Pixley ka Seme-distriksmunisipaliteit Q1886098 Mmasepala Setereke tša Pixley ka Seme Q1886098 Q1886098 Q1886098 Q1886098 Q1886098 Q1886098 Pixley ka Seme District Municipality
Sarah Baartman District Municipality Cacadu-distriksmunisipaliteit Q1024985 Mmasepala Setereke tša Sarah Baartman Q1024985 Sarah Baartman District Municipality Karolwana sa Sarah Baartman Q1024985 Q1024985 Q1024985 Sarah Baartman District Municipality
Sedibeng District Municipality Sedibeng-distriksmunisipaliteit Q2038939 Mmasepala Setereke tša Sedibeng Q2038939 Mmasepala wa Setereke sa Sedibeng Q2038939 Q2038939 Sedibeng District Municipality Q2038939 Q2038939
Sekhukhune District Municipality Sekhukhune-distriksmunisipaliteit Q1544445 Mmasepala Setereke tša Sekhukhune Q1544445 Q1544445 Q1544445 Q1544445 Sekhukhune District Municipality Q1544445 Sekhukhune District Municipality
Thabo Mofutsanyana District Municipality Thabo Mofutsanyana-distriksmunisipaliteit Q1437719 Mmasepala Setereke tša Thabo Mofutsanyana Q1437719 Mmasepala wa Setereke sa Thabo Mofutsanyana Q1437719 Q1437719 Thabo Mofutsanyana District Municipality Q1437719 Thabo Mofutsanyana District Municipality
Ugu District Municipality Ugu-distriksmunisipaliteit Q2091235 Mmasepala Setereke tša Ugu Q2091235 Q2091235 Q2091235 Q2091235 Q2091235 Ugu District Municipality Ugu
Umkhanyakude District Municipality Umkhanyakude-distriksmunisipaliteit Q1654018 Mmasepala Setereke tša Umkhanyakude Q1654018 Q1654018 Q1654018 Q1654018 Q1654018 Q1654018 Umkhanyakude
Umzinyathi District Municipality UMzinyathi-distriksmunisipaliteit Q2226837 Mmasepala Setereke tša uMzinyathi Q2226837 Q2226837 Q2226837 Q2226837 Q2226837 Umzinyathi District Municipality Umzinyathi
Uthukela District Municipality UThukela-distriksmunisipaliteit Q1324549 Mmasepala Setereke tša uThukela Q1324549 Q1324549 Q1324549 Q1324549 Q1324549 Uthukela District Municipality Uthukela
Vhembe District Municipality Vhembe-distriksmunisipaliteit Q2305610 Mmasepala Setereke tša Vhembe Q2305610 Q2305610 Q2305610 Q2305610 Vhembe District Municipality Q2305610 Vhembe District Municipality
Waterberg District Municipality Waterberg-distriksmunisipaliteit Q2096830 Mmasepala Setereke tša Waterberg Q2096830 Q2096830 Q2096830 Q2096830 Waterberg District Municipality Q2096830 Waterberg District Municipality
West Coast District Municipality Weskus-distriksmunisipaliteit Q2562901 Mmasepala Setereke tša West Coast Q2562901 Q2562901 Q2562901 Q2562901 Q2562901 Q2562901 West Coast District Municipality
West Rand District Municipality Wesrand-distriksmunisipaliteit Q1789890 Mmasepala Setereke tša West Rand Q1789890 Q1789890 Q1789890 Q1789890 Q1789890 Q1789890 Q1789890
Xhariep District Municipality Xhariep-distriksmunisipaliteit Q2006764 Mmasepala Setereke tša Xhariep Q2006764 Q2006764 Q2006764 Q2006764 Q2006764 Q2006764 Xhariep District Municipality
ZF Mgcawu District Municipality Siyanda-distriksmunisipaliteit Q1773268 Mmasepala Setereke tša ZF Mgcawu Q1773268 Q1773268 Q1773268 Q1773268 Q1773268 Q1773268 ZF Mgcawu District Municipality
Zululand District Municipality Zululand-distriksmunisipaliteit Q2309262 Mmasepala Setereke tša Zululand Q2309262 Q2309262 Q2309262 Q2309262 Q2309262 Zululand District Municipality Zululand
iLembe District Municipality ILembe-distriksmunisipaliteit Q311794 Mmasepala Setereke tša iLembe Q311794 Q311794 Q311794 Q311794 Q311794 ILembe District Municipality ILembe
uMgungundlovu District Municipality UMgungundlovu-distriksmunisipaliteit Q311803 Mmasepala Setereke tša umGungundlovu Q311803 Q311803 Q311803 Q311803 Q311803 UmGungundlovu District Municipality UmGungundlovu

My congratulations go to Twin and Fanjane and their NSO and ZU team. You will notice that other language groups. have un named local municipalities The Q numbers, instead of vernacular names, means that nobody has added a label.

SPARQL on the Western Cape

If we narrow things down and create a sparql query for the Western Cape

?district wdt:P31 (instance) wd:Q1589568 ; (district municipality)
wdt:P131 (administrative territory) wd:Q127167; (western cape)
wdt:P17 (country) wd:Q258; (south africa)

You will get five entities. They are the Wikidata entries for the five western cape district muncipalities. We don’t have much metadata about any of these district or local mayors.

Data Dc1(2026).map
Seat:Moorreesburg | Mayor:?
West Coast District Municipality (Q2562901)
Data Dc2(2006).map
Seat:Worchester | Mayor:?
Cape Winelands District Municipality (Q1974486)
Data Dc3(2006).map
Seat:Bredasdorp | Mayor:?
Overberg District Municipality (Q1899307)
Data Dc4(2026).map
Seat:George| Mayor:?
Garden Route District Municipality (Q220249)
Data Dc5(2026).map
Seat:Beaufort West | Mayor:?
Central Karoo District Municipality (Q1053888)

A few of these district municipalities have been in the news for running excellent municipalities. Their Wikipedia pages however are still in need of attention. With a SPARQL query, we can see how open government works. For example, here are the recent mayors in Capetown since Helen was running the show.

SELECT
?mayor ?mayorLabel ?image ?startDate ?endDate
WHERE {
wd:Q5465 p:P6 ?statement.
?statement ps:P6 ?mayor.
OPTIONAL {
?mayor wdt:P18 ?image.
} 
OPTIONAL {
?statement pq:P580 ?startDate.
}
OPTIONAL {
?statement pq:P582 ?endDate.
}
SERVICE wikibase:label {
bd:serviceParam wikibase:language "en".
}
}
ORDER BY ?startDate
District Muncipality mayorimagestartDateendDate
Q260693Helen Zille2006-03-15T00:00:00Z2009-04-30T00:00:00Z
Q379122Dan Plato2009-05-12T00:00:00Z2011-06-01T00:00:00Z
Q445654Patricia de Lille2011-06-01T00:00:00Z2018-10-31T00:00:00Z
Q5535621Geordin Hill-Lewis2021-11-01T00:00:00Z

Perhaps you can click on the Wikidata number and follow the example from Cape Town?

Now if local or district municipalities are not drawing their own maps or representing themselves or their leaders on a platform that promises to offer the sum of all knowledge, then is doing all this representation work? I am one of them. It would be great if we could get a few more local citizens and officials involved.

Heritage Month

Today was a heritage day at my local high school. Kids could dress in their local heritage gear, or wear blue. Mine chose the latter. The other outfits…well they were lovely. I’d like to highlight another Wikipedia group who is standing out for me at the moment. They are from the Basque region and their “taal” is a language isolate. Located close to the Pyrenee Mountains (42.6681804, 1.0011899) between Spain and France, there are less than a million people who are speakers of Euskara, the ancient language of Euskal Herria. I don’t know too much about this group, the region or their heritage. I have however noticed their online efforts. They have put together a children’s encyclopedia called Txikipedia. Here is the backstory (there are some similarities to SWiP).

Wikipedians from  Euskal Herria (the Basque Country ) started conversations with the Basque Government about “auzolan” a tradition of community collaboration. The government bought their pitch…as they soon realized that “Wikipedia is a must for a language to survive.” The Basque Education Program encouraged university students to improve existing Basque articles as part of their classroom assignment. The result was “that at least 2.200 students worked on improving 1.740 articles with students adding more than 2 million words.” Their contribution makes up 5% of Basque Wikipedia words. Then part of the vision was to create Txikipedia, the first children’s Encyclopedia inside Wikipedia. See Basque Education program presentation

I’ve frequently covered grown up knowledge resources. But frankly, children’s reference resources are more important. Much like Childcraft, Txipedia is a children’s encyclopaedia that Basque Wikimedians have incorporated into Wikipedia. “Txiki” is Basque for “small” and this resource stands as an example of how language communities can amplify their vernacular language with Wikipedian. Here are my few thoughts on making a local vernacular equivalent.

My annotation of the Txikipedia header. We will be deconstructing the code
  • Introduction to Heritage Month
  • Choose your CSS stylesheet
  • Making the logo work
  • The Header
    • Thinking more about blocks (or classes) in the header
    • Picturing a schema
    • Designing multiple stylesheets
  • Adding more links and categories
  • Details are in the design
    1. Locate your stylesheet
    2. Setup the two columns
    3. Refer to the stylesheet
    4. Choose a colour palette
    5. Creating before, during and after navigation

Introduction

South Africa is celebrating Heritage Month 2026 and Wikimedia SA has created a “Challenge”. Post 1 article a day about art, music, food, history into your own local language for 30 days. You could share your communities history, translate key terms, or document your culture. The event has a reward – the possibility of winning vouchers! I think that we need to be making Wikipedia more colourful, bright and interesting.

Choose your stylesheet.

What am I doing for Heritage Month? You might have noticed, that I speak code better than languages. So my contribution to Heritage Month is 10 funky new colourful stylesheets for the official languages to deploy on their own Wikipedia instance.

  1. Sjabloon:Afipedia/styles.css is my “pers” banner on the top of my Afrikaans sandbox.
  2. Umhlahlandlelasakhiwo:Nripedia/styles.css this is my incomplete isiNdebele tutorial
  3. Template:Nsoipedia/styles.css has two CSS lamposts and is shaded in pink. Sepedi
  4. iThempleti:Ssipedia/styles.csssees me raising my peak to the king.
  5. Template:Stipedia/styles.css contains a single lamppost on my Sesotho page.
  6. Tempolete:Tnipedia/styles.css offers a palette of Wikimedia Colours for Setswana
  7. Template:Tsipedia/styles.css is where I get a bit formulaic on Xitsonga (original work is hard).
  8. Template:Veipedia/styles.css has funky Tshivenda buttons
  9. iThemplethi:Xhipedia/styles.css I need to add more style and substance to my isiXhosa page
  10. Template:Zuipedia/styles.css is a suitably regal isiZulu page tutorial.

Feel free to click on both the stylesheets and the sandboxes. Note that either is incomplete. That’s normal Wikipedia depends on crowdsourced labour. This is volunteer work. Others assist.

These Cascading style sheets (CSS) are used to control the appearance of a displayed webpage. They are “cascading” because they bring multiple sources together. A cascading stylesheet can change the whole look of a website. When you create a CSS sheet on Wikipedia, you can add it in a few places.

Location Purpose
Template:Css-styleA template that allows you to style some text
Template:ipedia A template that could be created on vernacular Wikipedia
Template:ipedia/styles.cssCSS associated with your vernacular template (see the examples above)
User:Derek J Moore/ipedia/common.cssCSS that is applied on your own sandbox. The example I’m showing is mine. Please feel free to use it.
https://en.wikipedia.org/wiki/MediaWiki:Common.cssCSS that is applied to the entire Wikipedia. Be careful here! The may be CASCADING effects if you mess about with this sheet

Making the logo work

The Txikipedia logo is text (and is not an image) and a fancy font. I’ve created a logo with two capital letters at each end. The font is ‘Linux Libertine’ a serif text that is styled in CSS to give large bookends. I could have used an image, but the text gives greater flexibility when seen on a small screen. Its also quicker to adjust depending on how you spell Wikipedia in your language.

Designing a header

A few weeks ago, I wrote about building a banner from blocks. One block had a gradient background, a heading sat in the block and and three hyperlinks (also blocks) were there. Today I’ll take it further and develop a “header” for your page. The header will be split into two with logo, a slogan and small horizontal navigation links on the left of the page (column 1). On the right hand side of the header, we’ll have a grid. With icons that link to certain categories. In CSS these blocks are known as “classes”.

Picturing a schema

Sometimes it’s hard to understand all these abstractions. That’s when I like to draw (or prompt). If you click on any of the stylesheets (linked below), you will find a small drawing like this below in the CSS. This schema is NOT necessary for the CSS to function. Its just a helpful reminder for my brain to remember all the parts that go into a page.

┌────────────────HEADER───────────────┬──────────────────┐
│ FIRST COLUMN                        │ SECOND  COLUMN   │
│ Logo                                │                  │
│ Tagline                             │  GRID|GRID|GRID  │
│  (Pill 1)  (Pill 2)  (Pill 3)       │  GRID|GRID|GRID  │
└─────────────────────────────────────┴──────────────────┘
  • .header
  • column 1 and column 2 (.header left and .header right)
  • .logo
  • .tagline
  • .pill and
  • .grid
Slogan
📚 Link
🎨 Icon and category

Adding more links and categories.

The example above has some elements (the link and the category) that can be repeated.

📚Hyperlink
🎨 Icon and category

We could style the little pill shaped link. Small font size, green background, rounded corners.

<a href="/wiki/Example" class="ipedia-pill"><span class="ipedia-pill">📚</span>Hyperlink</a>

.ipedia-pill {
    display: inline-block;
    font-size: 0.85em;
    padding: 4px 12px;
    border-radius: 20px;
    background: green;
    color: white !important;
    text-decoration: none !important;
}

.ipedia-pill:hover,
.ipedia-pill:focus {
    background: darkgreen;
    color: white !important;
    text-decoration: none !important;
}

Multiple Stylesheets

For Wikimedia South Africa, the multiplicity of language raises a thorny question. Should we have once central service for all the official languages in South Africa. That would be easier to maintain, if you are not sure about the levels of CSS expertise in each of the communities, then its probably a safe bet. However, if you would like language communities to shape and own their Wikipedia platform, like the Basque Wikipedians did, then more become constructionist and make resources that reflects the identity of their community, then perhaps a few more people should learn how to code.

Step 1 | Locate the local language stylesheet

You’ve seen the 10 stylesheets I created. They are particular to a particular ISO 639 language code. (Saffers who speak English, there’s a footnote for you.). The classes in the stylesheet will begin with the two or three letter codes. Let’s start With isiZulu

.zu + ipedia + header

  • .zuipedia-header-left and .zuipedia-header-header-right
  • .zuipedia-logo
  • .zuipedia-tagline
  • .zuipedia-pill and
  • .zuipedia-grid

Details are in the design

This is how you can go about doing this on your own Wikipedia Platform

Step 2 | Layout two columns

This is a two-column page layout (a grid). The first column fills the available space and then the second column fits the content that’s been placed therein. If the screen is too narrow, then the column on the right (the second one) will appear underneath. A coloured container with rounded corners acts as a header. Anything that sticks out is clipped. The header is pulled 20px upward (it can be pulled higher), and there is some space underneath.

ipedia-header {
display: grid;
grid-template-columns: 1fr auto;
border-radius: 12px;
overflow: hidden;
margin-top: -20px;
margin-bottom: 1em;
background-color: var(--primary);
}
.ipedia-header-left {
padding: 1.4rem 1.75rem;
color: var(--white);
}
}
.ipedia-header-right {
background: rgba(0,0,0,0.22);
padding: 1.1rem 1.25rem;
display: flex;
flex-direction: column;
justify-content: center;
min-width: 270px;
}

Step 3 | Refer to the stylesheet (on code view)

When creating a normal webpage in HTML, you’ll refer to the stylesheet (see example on the left). When creating the same on Wikipedia, you probably should first create a stylesheet under your sandbox (see example on the right).

HTMLWikipedia
<link rel=”stylesheet” href=”./style.css”>
<templatestyles src=”User:Derek_J_Moore/ipedia/common.css ” />

Step 4 | Choose your colour palette

Wikimedia has created three lovely colour palettes and so (instead of using a colour picker) you could choose from these codes. I’ve drawn on the vivid colour palette to create this colours lovely collection of colours.

Vivid Colours you might use in Wikipedia

Now you might know what the colour of the Txikipedia banner is (hint the answer is above). I’m going to start off with making a banner with a colours I use frequently on my website. If I was working on codepen, I’d use the root folder.

:root {
--primary: #819637;
--white: #FFFFFF;
--black: #111111;

BUT, You go ahead and choose your colour using the hexidecimal palette I created.

.ipedia-header {
background-color: var(--primary);
}

Step 5 | Add more links, categories or images

You might have the structure now, and would like to add more pill shaped links or more categories. Or you may want to add an image or two. Now if you visit Q26127718, you will see that I have installed an image upload feature. This works with almost all vernacular versions of Wikipedia. There might be a problem with the names I used to create the function. Please tell me and I will rectify my mistake. This function permits the user to upload images to Wikimedia commons. I’ve written much more about this upload.

Last Words

My challenge to my local Wikipedia colleagues who are concerned about their language (this Heritage Month) is to also think about learning how to code on your vernacular instance. Perhaps make a button or banner, or even a CSS image. Or join Bobby Shabangu (and a few others ) and follow me on GitHub.

P.S. You might have noticed that there is no ENGLISH examples. That’s because English Wikipedia does not want plain CSS but prefers Sanitized CSS. There is a setting that you can change to make Sanatized CSS, but that setting is limited to administrators. You can still make english Wikipedia look funky.

  1. Enter Special:ChangeContentModel on English Wikipedia
  2. Give your page title a name. I suggest that you use your sandbox.
  3. Select the new content model (sanitized CSS)
  4. Give a reason and hit create.
  5. You now have a CSS stylesheet.

If you check out Nomfundo’s sandbox, you can see her page that we have started working on. Process of creating a style sheet is a bit complicated on English Wikipedia. Play around with your Sandbox on vernacular platforms.

Next post will be about JSON and how we create empty structural containers, while the JSON becomes the actual manuscript/content.

Images wanted

Introduction

I’ve often wondered where our statesmen choose to go once they have retired. Cecil John Rhodes, for example, died at 49 in a modest cottage at 246 Main road (Q20617285), on the way to Vishoek. Poor bloke. His Groote Schuur Mansion had burnt down about 10 years before. Today, Rhodes Cottage is a thatched building, but originally structure had an asbestos roof. The warrior / statemen Jan Smuts lived in wood-and-iron building. This pre-fabricated structure was made of wood and iron components and was once used as an officers’ mess. It was bought in Middelburg and re-erected on the farm Doornkloof. The house was also known as die GROOT HUIS*. (Q61930814) and is also known as the Smuts House Museum. Dr AB Xuma, medical doctor, leader, activist, president-general of the African National Congress (ANC) and signatory of the doctors pact, had a home on the corner of Toby and Thornton street. (Q20981521) in Sophia Town. Forced to leave in 1959, the house is known as Empilweni (the place of healing) is the Sophiatown Heritage Centre.

These are places worth visiting.

The cottage at Muizenberg where Mr Rhodes died "General Smuts’ Irene house in course of reerection"

When Nelson Mandela was released from prison he moved in to a house in 13th street in Houghton. After he and Winnie were divorced, he moved to a place in 12th street in Houghton in 1998. Madiba moved to 12th avenue when he married Graça Machel. Sanctuary Mandela is the name of the boutique hotel that now sits where Madiba’s house is. The hotel was amazing. I was a guest there of the Wikimedia Foundation and we had a superb lunch. The hotel has 9 rooms and each is centred around the decades he lived. I wish I’d taken more pics. This was also his last residence, any my kids left flowers outside.

I’d like to take pictures of these stateman’s places. For example, what about Thabo Mbeki’s house bordering on Riverlea and Houghton Estate. There is also Kgalema Motlanthe’s place in 8th Street, Houghton Estate. Each of these houses are an important part of our countries heritage. We can’t only have early colonists and nationalists on Wikipedia. This is part of the my (unpaid) work about communities that I am doing as a Wikipedian in Residence for Code for Africa (and my almost completed WIR).

Upload Images Features

Within the set of stylesheets I put together for Heritage Month, I’ve created place for something called “Images Wanted”, or “Upload images”. This is a function that allows the average Wikipedian to upload images when the template is called. Some have suggested that this function be placed on talk pages, while others put it right on the page that needs a picture. I’m going to suggest that this function can also be located in the Sandbox.

Screen shot of Template:画像募集中

I saw this function originally in Japanese (see Template:画像募集中) and Korean (see 틀:이미지업로드요청). It looks complicated, but there is a simple explanation.

You can initiate the function by writing familiar words in curly braces{{画像募集中}} . No, I don’t speak Japanese or write it. Neither do I speak vernacular languages. I can however code switch. For example, what does 利用者:Derek J Moore mean. Look at this in context.

On Japanese Wikipedia in my sandbox I added {{画像募集中}} and I call this function

After adding {{画像募集中}} and saving it, I can use the upload images function. You can upload images by pressing a hyperlink (or a blue button) or clicking the image of photographs and magnifying glass. This takes you to the upload wizard and you can there upload the desired pictures.

The template also permits you to place pictures into categories (Wikipedia:画像提供依頼/カテゴリ一覧). But I still need to figure this out.

Schema

We talked about blocks recently. Wikipedia allows you to create blocks too. If you write this on Wikipedia, then you’ll get a block.

{| class="infobox"
|This is an infobox
|}

Below is a more complicated block. The diagram shows how an infobox is combined with the function {{laisa setshwantsho}} and the associated parameters.

laisa setshwantsho

A Wikimedia Template.

{{laisa setshwantsho}}
Template Preview
▧ laisa setshwantsho

laisa setshwantsho

Please provide an image related to these parameters.

Usage Example
{{Infobox
|name    = Derek J Moore
|title   = Laisa setshwantsho
|data1   = 
{{laisa setshwantsho
 |type=2
 |size=100px
 |cat=People
 |cat2=Cities
}}
|label2 = Instructions |data2 = {{{item_four|weblearning.co.za}}} }}
TemplateData Parameters
Parameter Type Default Description
type
Recommended
number 1 Placeholder image type.
1 = General
2 = People
3 = Buildings
size
Optional
string — Image width. Example: 100px
cat string — Image request category.
cat2 string — Second category.
cat3 string — Third category.
cat4 string — Fourth category.
cat5 string — Fifth category.
Template Structure
{{laisa setshwantsho}} Template
→
type Image type
→
size Image size
→
cat – cat5 Request categories
Prompted with Chat GPT

Notable code

The function consists of two words that describe the action you want to perform. Here are these words in the various languages. Please feel free to correct me (and Aunty Google) if we have made mistakes.

  1. nr Umhlahlandlelasakhiwo:Layisha isithombe
  2. nso Template:Kenya setshwantsho
  3. ss iThempleti:Layisha sitfombe
  4. st Template:Kenya setšoantšo
  5. tn Tempolete:Laisa setshwantsho
  6. ts Template:Upload xifaniso
  7. ve Template:Dzhenisa
  8. xh iThemplethi:Layisha umfanekiso
  9. zu Template:Layisha isithombe

For illustration purposes, I'm just going to focus on one language - Setswana. The same principles apply in all languages

Detailed Specifications

Step 1: Create the shell

"Upload images" (according to Google translate) in Setswana is "laisa setshwantsho". Go to the vernacular Wikipedia (e.g. tn.wikipedia.org) and enter the URL https://tn.wikipedia.org/wiki/Tempolete: followed by "laisa setshwantsho"

Screenshot of the template:laisa setshwantsho being created

Some people (like me) cannot understand this message that I highlighted in blue, but aunty Google knows the answer: "No text on this page. You can search for the title of this page on other pages".

Go ahead and press Dira motswedi (Create source).

You might see another message. "O setse morago kgolagano ya tsebe e, ise e nne teng gompieno. Go dira tsebe ye, simolola ka go kwala mo lebokosong le le latelang (bona tsebe ya thuso go itse thata). Ga o lefa ka phoso tobetsa boelamorago". Aunty Google translates this and says "You are following the link to this page, it is not available today. To create this page, start by filling in the following box (see the help page to know more). If you pay by mistake click reverse".

This is a bit garbled and it probably means that the instance is not being maintained. When I find confusing code, I look for other examples to draw on. The function is called https://www.wikidata.org/wiki/Q26127718 on wikidata. When I click on the Japanese version, I see the following

This might look a bit unfamiliar to some, but you can see the code in the tab called " ソースを閲覧" Go ahead and view the code there. What I do is I copy and past this code into a text editor. Then I translated bits of it.

[[File:{{#switch: {{{1|{{{type|}}}}}} | 1 = Gthumb.svg | 2 = Replace this image JA.svg | 3 = Requestpicture.JPG | #default = Gthumb.svg }}|{{#if: {{{2|{{{size|}}}}}} | {{{2|{{{size}}}}}} | {{#switch: {{{1|{{{type|}}}}}} | 2 = 150px | 3 = 230px | #default = {{{size}}} }} }}|link=commons:Special:UploadWizard]]
{{Clickable button|c:Special:UploadWizard|Upload Image|class=mw-ui-progressive}}

{{#switch: {{NAMESPACE}} | {{ns:0}} | {{ns:1}} = {{#if:{{{cat|}}} | [[Category:{{{cat}}} Image Request]] }} | #default= }}{{#if: {{{cat1|}}} | [[Category:{{{cat1}}} Image Request]] }}{{#if: {{{cat2|}}} | [[Category:{{{cat2}}} Image Request]] }}{{#if: {{{cat3|}}} | [[Image Request for Category:{{{cat3}}}]] }}{{#if: {{{cat4|}}} | [[Image Request for Category:{{{cat4}}}]] }}{{#if: {{{cat5|}}} | [[Image Request for Category:{{{cat5}}}]] }} {{Documentation}}

Step 2 | Copy and paste code for templates and modules

After pasting the code into the code frame, you can see a clickable picture in the view frame. This takes you to the Upload Wizard.

We want to also have a clickable button below (see the red link). So we create a Module:Clickable button and enter this code

-- This module implements {{clickable button 2}}.

local yesno = require('Module:Yesno')
local delink = require('Module:Delink')._delink

local p = {}

function p.main(frame)
local getArgs = require('Module:Arguments').getArgs
local args = getArgs(frame)
return p._main(args)
end

function p._main(args)
-- If first arg or a url is not provided,
-- but we have a second arg, make a button.
-- Otherwise, return nothing.
args.originalInput = args[1]
args[1] = delink({args[1]})
if args[1] == "" then
args[1] = nil
end

if not args[1] and not args.url then
    if args[2] then
        p.nolink = true
    else
        return ''
    end
end

local data = p.makeLinkData(args)
local link = p.renderLink(args.originalInput, data)
local trackingCategories = p.renderTrackingCategories(args)
return link .. trackingCategories

end

function p.makeLinkData(args)
local data = {}

-- Get the link and display values,
-- and find whether we are outputting
-- a wikilink or a URL.
if args.url then
    data.isUrl = true
    data.link = args.url
    if args[1] then
        data.display = args[1]
    elseif args[2] then
        data.display = args[2]
    else
        data.display = args.url
        p.urlisdisplay = true
    end
else
    data.isUrl = false
    p.urlisdisplay = false
    data.link = args[1]
    if args[2] then
        data.display = args[2]
    else
        data.display = args[1]
    end
    if args[1] and args[1]:find('http') then
        data.isUrl = true
    end
end

if yesno(args.link) == false then
    p.nolink = true
end

-- Colours
-- For the merge with {{clickable button}}
local colour = args.color and args.color:lower()

-- Classes
local class = args.class and args.class:lower()
data.classes = {}
if class == 'ui-button-green'
    or class == 'ui-button-blue'
    or class == 'ui-button-red'
then
    table.insert(
        data.classes,
        'submit ui-button ui-widget ui-state-default ui-corner-all'
            .. ' ui-button-text-only ui-button-text'
    )
else
    table.insert(data.classes, 'mw-ui-button')
end

--If class is unset,
--then let color determine class
if not class then
    if colour == 'blue' then
        class = 'mw-ui-progressive'
    elseif colour == 'red' then
        class = 'mw-ui-destructive'
    elseif colour == 'green' then
        class = 'mw-ui-constructive'
    end
end

if class then
    table.insert(data.classes, class)
end

-- Styles
do
    --[[
    -- Check whether we are on the same page as we have specified in
    -- args[1], but not if we are using a URL link, as then args[1] is only
    -- a display value. If we are currently on the page specified in
    -- args[1] make the button colour darker so that it stands out from
    -- other buttons on the page.
    --]]
    local success, linkTitle, currentTitle
    if not data.isUrl then
        currentTitle = mw.title.getCurrentTitle()
        success, linkTitle = pcall(mw.title.new, args[1])
    elseif p.urlisdisplay then
        currentTitle = mw.title.getCurrentTitle()
    end
    if success
        and linkTitle
        and mw.title.equals(currentTitle, linkTitle)
        and not p.urlisdisplay
    then
        if class == 'ui-button-blue'
            or class == 'mw-ui-progressive'
            or class == 'mw-ui-constructive'
        then
            data.backgroundColor = '#2962CB'
            data.color = '#fff'
        elseif class == 'ui-button-green' then
            data.backgroundColor = '#008B6D'
        elseif class == 'ui-button-red' or class == 'mw-ui-destructive' then
            data.backgroundColor = '#A6170F'
        else
            data.backgroundColor = '#CCC'
            data.color = '#666'
        end
    elseif p.urlisdisplay then
        data.dummyLink = tostring(currentTitle)
    end
    -- Add user-specified styles.
    data.style = args.style
end
return data

end

function p.renderLink(originalInput, data)
-- Render the display span tag.
local display
do
local displaySpan = mw.html.create('span')
for i, class in ipairs(data.classes or {}) do
displaySpan:addClass(class)
end

 displaySpan
        :css{
            ['background-color'] = data.backgroundColor,
            color = data.color
        }
    if data.style then
        displaySpan:cssText(data.style)
    end
    displaySpan:wikitext(data.display)
    display = tostring(displaySpan)
end

-- Render the link
local link
if originalInput and originalInput:find('|') then
    link = string.format('[[%s|%s]]', delink({originalInput, wikilinks = 'target'}), display)
elseif p.nolink then
    if p.urlisdisplay then
        link = string.format('[[%s|%s]]', data.dummyLink, display)
    else
        link = string.format('%s', display)
    end
else
    if data.isUrl then
        link = string.format('[%s %s]', data.link, display)
    else
        link = string.format('[[%s |%s]]', data.link, display)
    end
end

return string.format('<span class="plainlinks clickbutton">%s</span>', link)

end

function p.renderTrackingCategories(args)
if yesno(args.category) == false then
return ''
end
local class = args.class and args.class:lower()
if class == 'ui-button-green'
or class == 'ui-button-blue'
or class == 'ui-button-red'
then
return '[[Category:Pages using old style ui-button-color]]'
else
return ''
end
end

return p


Step 3 | Where are we ?

  • Done | We have written the template shell called Laisa setshwantsho
  • Done | We have added the code to go into the template shell called Laisa setshwantsho which calls on many pre-installed modules. It works but...
  • Oops | The red line suggests tha there is a missing module called Clickable button
  • Done |We have added the code to go into the Clickable button module.
  • Todo | We now need a template with instructions to also call (or invoke) the Clickable button module

If you go back to https://tn.wikipedia.org/wiki/Tempolete:Laisa_setshwantsho you will still see two big gaps. A red link and no documentation.

We need to create a Template called Clickable button. Click on the red links and then add this code. Check to see if everything works

{{#invoke:Clickable button|main}}
{{documentation}}

Step 4 | Register the template on Wikidata

Now go to Wikidata and register this template:

Step 5 | Lets use {{Laisa setshwantsho}}

A template by the name Laisa setshwantsho has been created. You call a template with curly braces {{}}.

Step 6 | Application, testing and documentation

You can include and upload images function by referring to {{Laisa setshwantsho}}. The Template documentation (as you can see) is blank and it needs to be created, preferably in vernacular. I'll leave that for a person who writes in Setswana (aunty Google gets things wrong often) .

I'm going to demonstrate how I included this function in my sandbox. First I go to Derek J Moore in Setswana.

I turn on code view, look for the {{Infobox}} and insert the function {{Laisa setshwantsho}}.

There, the upload image function now sits in my pretty sandbox. Would appreciate it if you can improve the documentation.

*Thanks to Mario for the spell checking

References

Statesmen and their websites: Rhodes, https://rhodescottage.co.za/, Smuts, https://www.smutshouse.co.za/ , Xaba, https://www.trevorhuddleston.net/ Mandela https://www.nelsonmandela.org/news/entry/a-tale-of-two-houghton-houses, Mbeki https://mbeki.org/ and Motlante https://motlanthe.org/

To find out more about translation and the work of South African Wikipedians in vernacular, do visit https://translatewiki.net

A post about lamp posts

🌞

Introduction:

Streetlights – it seems like there are far more pressing things to be irked about. But poorly maintained public lighting is a very visible instance of failing infrastructure and the opportunity to show that city management responds to reports and addresses them. An app to the rescue? That is magical thinking. Devices don’t bring about change. Systemic thinking does. Let’s avoid the pothole app solution. Perhaps there is someone in the municipality who can think wholistically about public safety and lighting and design an internal reporting system that encourages all municipal employees (and citizens) to do a streetlight watch (and doe not require the closure of a walk-in centre)? The specifications below are only for the application.

Features

Geolocation so that the latitude and longitude of the faulty street lamp can be mapped on a mapping service like leaflet. A photograph can be taken of the faulty light and shared for identification purposes. Textfield is available to report the nature of the problem in greater detail, but this should not be essential. User account so that reporters are acknowledged and appreciated. Data is submitted to an open database. The information then is available to all to inspect and it can can appear on an open street map (see the Daily Maverick example). Data can also be exported.

Schema for data flow

     Municipal Employees & Citizens
                │
                ▼
         Streetlight Watch 
                │
    ┌───────────┼───────────┐
    ▼           ▼           ▼
  GPS         PHOTO       REPORT
    │           │           │
    └───────────┼───────────┘
                ▼
       Insert to OPEN Database
                │
      ┌─────────┼─────────┐
      ▼         ▼         ▼
    MAP       ADMIN     EMAIL
              DASHBOARD  ALERT
                │
                ▼
         Maintenance Team
                │
                ▼
              FIXED

Noteworthy code

View the (incomplete) example on codepen.

Detailed Specs

  • Analysis: Current system and the desired state. Data flow diagram. Performance indicators and standard user
  • User Interface & Design: Choice of software, proposed new design, detailed design, template
  • Testing: App documentation, Problem reporting and resolution flow, Functionality (GPS Location, Photo Upload, map functionality)
  • Evaluation: Status Management, Report Numbers, Streetlights fixed

Credit to Pat Heathcote and her series of textbooks about ICT projects. Her work is far more comprehensive than this brief example.

Open Education Week

Wikipedia is 25!
by Visual Thinkery is licensed under CC-BY-ND

This post is over a year late. Sorry peeps. It took a visit to Wikipedia 25 to pep me up. It was GREAT!

A few minutes before going live!

3 – 7 March 2025 was Open Education Week 2025 and I took part in one of the OEWeek Live conversational webcasts . Clockwise (from at top left), Bryan, Gracie from Visual Thinkery, Alan at OE Global playing the ever gracious host, Werner (Library of Congress), myself (I like giving a backstage view), and Connie (Athabasca University) who is not pictured.

This was an informal and spontaneous regular cross continental conversation. Two topics stood out for me.

I’m a bit of a compulsive remixer. I mash up media components. I’ve played with PowerPoint and saved the layout of my slides as images in a PNG format. At one time, I spent lots of time on Adobe Express (the free version), arranging icons into patterns on a consistent colour palette (#002e67). Can’t license those images openly though.

.

Icons from the Ready for Work package at Pretoria University

Now Bryan’s Fabulous Remixer has a special flair. He makes use of well known patterns which become “cognitive templates”. Another piece of jargon? Let me explain.

In my mind, when you say “lampost”, I have a stored representation in my noggin that responds to this stimulus. I think about a tall pole standing straight up with a working light fixture on top. This is used for illuminating public spaces. Yes, check out my streetlight. Sadly you cannot save electricity and turn off the light. But you can toggle the switch from night time to day time. Which is very convenient.

So when you say postcard, I think of a postage stamp, address and short message. Bryan plays with this further with this idea with Field Notes and combines a taped photograph, a small note and a location. Now here in South Africa working streetlights are rare, and I can’t tell you when I last received a postcard. But these cognitive template still remain.

Now Bryan and Gracie have used creative and openly licensed layouts and applied a few cognitive templates to these visual arrangements. You feel creative because you can change and contextualize the information therein and what is generated feels like it comes from you.

I took the top trumps layout (the card game silly), inserted a logo, screenshot and book cover, selected own particular colours and added text. I now have a standard format and they can act as thumbnails or an image in a CSS card. If I was very able, I’d be able to use JSON and CSS to switch the images, colours and information. But without extra assistance, I’m struggling.

isiXhosa.click, Mthuli Buthulezi’s YouTube Channel and Digital & Visual Inter-Media Scholarship are three DH-OER Projects that I remixed using the Remixer Machine

Confession

I’ve succumbed to chatgpt’s JIT assistance with javascript and CSS. Been having fun with cognitive templates, like slideshows, maps, badges, certificates and palettes. Below is another cognitive template:

When palette is mentioned, you might think of the kidney or rectangular boards with thumbholes, that artists use when painting with oil paints. That’s if you you know an artist or did art at school. Now not everyone went to a school with an art class, or have friends who are artists. And so there is no cognitive template there (like with me and SPARQL).

I did do art and have a number of friends and family who paint, sculpt and potter. Clearly this is true for the LLM. I took a shortcut and prompted chat gpt to draw a classic wooden artists palette. It refused parroting “Image generation requires you to log in. Once you’re logged in, I can create a classic wooden artist’s palette suitable for your CodePen project.” I refined my prompt “draw a classic wooden artists palette in HTMLS, CSS and JS for Codepen”. And of course it obliged.

Now again, this is way beyond my CSS or JS capabilities. But I can go to the brand colours of Wikimedia and learn how to switch between different palettes. Or to Online Higher Education Sites and see how they morph from one brand to another.

Yes, the second topic was Humans and Ai? And in a way I suspect that AI has a range of cognitive templates (or ontologies) that have been engineered. I’m able to draw and combine on these patterns. I’ve got another template developing in my head, and it has to do with the root folder, and look and feel can be quickly changed, depending who is visiting. More about that later.

References

Jenny Y Sung, Olivia K Harris, Nicholai M Hensley, Anthony P Chemero, Nathan I Morehouse, Beyond Cognitive Templates: Re-Examining Template Metaphors Used for Animal Recognition and Navigation, Integrative and Comparative Biology, Volume 61, Issue 3, September 2021, Pages 825–841, https://doi.org/10.1093/icb/icab040