Donald Norman argues that a well-designed product should make functions visible and intuitive: users should be able to grasp how it works, what their options are and get feedback about the results of their actions. That is all very wise, but our modern devices have managed to become so intuitive and versatile by concealing from us how they really operate. Laying bare the true complexity of the supercomputers in our pockets would boggle the mind. We cannot be exposed to how these things really work, lest we lose our grasp on reality. (See also: ChatGPT.)
Month: June 2024
The First World War is the fourth in my Adventures in Time series, and in many ways was the most exciting to write. It’s a colossal, epic tale, telling the story of the war from the murder of Archduke Franz Ferdinand and his wife Sophie in the summer of 1914 to the moment the guns fell silent on the Western Front on 11 November 1918.
We often remember the First World War as a muddy, bloody, tragic waste, and in many ways it was. But purely as a story, it could hardly be bettered. The cast of characters includes everybody from Kaiser Wilhelm II, Edith Cavell, Rasputin and the Red Baron to Wilfred Owen, T. E. Lawrence and J. R. R. Tolkien.
There are some breathtakingly dramatic moments: the German attack on Scarborough, the sinking of the Lusitania, the first day of the Somme and the outbreak of the Russian Revolution. There are Sikhs and Cossacks, dashing air aces and footballing Tommies.
And at its heart, as in all the Adventures in Time, are the stories of ordinary people themselves: teenage heroines and plucky Boy Scouts, plunged into a clash of empires that would change the course of history for ever.
With The First World War – Adventures in Time, Dominic Sandbrook carves his way through the First World War, zooming in and out throughout. I think that what makes this a ‘children’s book’ is that Sandbrook does not get bogged down in nuisance and complexity. Instead, the book picks out some interesting bits and pieces, such as Franz Ferdinand shooting 275,000 animals, including kangaroos, taxis driving soldiers to the Battle of the Marne, and coffee made from sand, that make it more than a jump from one battle to the next.
What I enjoyed the most about the book is Sandbrooks ability to pick particular individuals and situations that helps us appreciate the human side of the war. In some part this approach reminded me of Anthony Hill’s Soldier Boy and the fictional recreation of the past.
I think that it is a useful book in grasping the main parts of the First World War and offers a useful jumping off point for readers who then want to explore various elements further.
ininUnlearning Exercises shares a set of collective “unlearning exercises” to make way for a culture of equality, difference and fairness in art organizations; and aims to inspire active critical investigation of normative structures and practices in order to become aware and get rid of taken-for-granted “truths” and values.
I searched online for any further explanation on the change, but was simply sent to Awesome Tables support page.
I started exploring other options online and short of paying for API connectors, I could not really find anything. I subsequently turned to
, wondering what it might give me. Surprisingly, it gave me a basic script for everything that I needed.function listFilesInFoldersGEN() {
var folders = [
{folderId: 'URL', sheetName: 'General'},
// Add more folders as needed
];
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
for (var i = 0; i < folders.length; i++) {
var folderId = folders[i].folderId;
var sheetName = folders[i].sheetName;
var folder = DriveApp.getFolderById(folderId);
var sheet = spreadsheet.getSheetByName(sheetName);
if (!sheet) {
sheet = spreadsheet.insertSheet(sheetName);
}
// Save the existing data
var range = sheet.getDataRange();
var values = range.getValues();
try {
sheet.clear();
sheet.appendRow(["Name", "Date", "Size", "URL", "Folder"]);
listFilesInFolderRecursiveGEN(folder, sheet, folder.getName());
} catch (e) {
// If an error occurs, revert to the saved data
range.setValues(values);
// Log the error
var errorMessage = 'Error: ' + e.toString();
Logger.log(errorMessage);
// Send an email
var emailAddresses = ['bwillis@edu.au', 'nlapin@edu.au'];
// Enter your email address here
var subject = 'Error in Support Catalogue - General script';
var body = errorMessage;
MailApp.sendEmail(emailAddress, subject, body);
}
}
}
function listFilesInFolderRecursiveGEN(folder, sheet, path) {
var files = folder.getFiles();
while (files.hasNext()) {
var file = files.next();
sheet.appendRow([file.getName(), file.getDateCreated(), file.getSize(), file.getUrl(), path]);
}
var subfolders = folder.getFolders();
while (subfolders.hasNext()) {
var subfolder = subfolders.next();
listFilesInFolderRecursiveGEN(subfolder, sheet, path + '/' + subfolder.getName());
}
}
After a bit of back and forward, I had a new working catalogue which I provided to the team to provide feedback on.