Fachgespräch E-Learning in Stuttgart

Auf Einladung des Kultusministerium Baden-Württemberg habe ich heute den einleitenden Vortrag gehalten. Ziel war es mit etwa 50 Stakeholder/innen der Sonderpädagogik sich auszutauschen inwieweit e-Learning Arrangements eine wichtige Funktion für behinderte Schhüler/innen einnehmen können. Nach meiner eher allgemein gehaltenen Einleitung wurden dann in den weiteren Beiträgen vor allem praktische Umsetzungen und Erfahrungsberichte vorgestellt.

Weiterlesen
Veröffentlicht unter Auftritt | Verschlagwortet mit , , , | Hinterlasse einen Kommentar

Neuer Webauftritt: Motive und Pläne

Ich bin gerade in einem Hotel in Stuttgart, weil ich Morgen früh eine Keynote auf einer Veranstaltung des Kultusministeroum von Baden-Württemberg halte. Eine gute Gelegenheit endlich mal meine Ideen und Arbeiten der letzten Monate zu berichten. Seit mehreren Monaten arbeite ich nämlich bereits an einem neuen persönlichen Webauftritt. Die Gründe dafür sind vielfältig:

Neuer Webauftritt: Organisatorische und technische Motive

  • Das Design, das Gedankensplitter verwendet, ist in die Jahre gekommen. Weil ich etliche „Hacks“ daran vorgenommen habe und es daher nicht laufend updaten kann, ist es nicht responsiv, d.h. für mobile Nutzung auf Smartphones sehr schlecht geeignet.
  • Gedankensplitter ist mit Features überladen: 113 Plugin, die einersits ständig gewartet werden müssen und deren neue Versionen andererseits häufig nicht-intendierten  Auswirkungen (Konflikte) auf andere Erweiterungen zeigen. 
  • Gedankensplitter ist langsam geworden, weil ich auch kostenlose einen interaktiven Kurs zur Actors-Network-Theorie (ANT) anbiete, der unter anderem nur dann funktioniert, wenn ich den Plugin, der für Cache zuständig ist, ausschalte.
  • Nach jedem geschriebenen Artikel brauche ich für Endausarbeitungen etwa eine Stunde (Suchen nach einem passenden Feature-Bild, Texte nachträglich so anpassen, dass er möglichst gut optimalen Einstellungen für die Suchmaschinen (SEO-Search Engine Optimization) entspricht.

Neuer Webauftritt: Inhaltliche Motive

Neben diese unmittelbaren technischen/organisatorischen Gründen für einen neuen Webauftritt gibt es vor allem aber auch inhaltliche Ursachen:

  • Meine inhaltlichen Schwerpunkte haben sich verschoben: Statt E-Learning Didaktik  interessiert mich nun weit mehr, wie sich der Workflow bei Forschungsprozessen ändert und welche Möglichkeiten hier (Bildungs-)Technologien bieten. 
  • Diese für mich nun aktuellen Thematik hat eine andere Community als Zielgruppe. Statt deutschprachige Interessierte zu E-Learning und Weiterbildung möchte ich nun mit einem internationalen, englisch-sprachiges Publikum diskutieren.
  • Die Thematik ist wegen ihrer Aktualität noch recht wenig bearbeitet und schließt ein großes Gebiet auf, das jedoch trotzdem sehr technisch und letztlich einen engen Rahmen hat: Werkzeuge und Methoden für reprodouzierbare Forschung die alle auf Rahmenpaktete wie R, RStudio, verschiedene Versionen von Markdown, Git,  – um nur einige zu nennen, beruhen.
  • Diese neue Arbeitsweisen erfordern insgesamt auch eine neue technische Infrastruktur, die ganz wesentlich auch den Schreibprozess betrifft. Alle Werkzeuge sind nicht nur Open Source,  sondern fokussieren auf normale Textdateien als Rohgegenstände zur Bearbeitung. Damit soll sowohl freie Zugänglichkeit (kein Eingesperrtsein in proportiären Softwaresystemen) als auch Nachhaltigkeit (für Menschen leserliche Textdateien, die von jedem Texteditor bearbeitet werden können) gesichert werden.
  • Gedankensplitter ist auch eine Website, die über meine Aktivitäten (Vorträge, Projekte, Dissertationen, Ehrungen etc.) berichtet. Dieser „Karriere-“ bzw. „Portfolio-“ Aspekt meiner Website interessiert mich – angesichts der näher kommenden Pensionierung – immer weniger. Ich habe schon seit längerer Zeit keine Lust mehr, wertvolle Lebenszeit für den Nachweis meiner professioneller Kompetenz zu verschwenden. Vor allem auch deshalb, weil es sowieso -zig andere Berichtssyste 😎 me an der Uni gibt. (Der Zeitaufwand für bürokratischen Verpflichtungen einer Universitätsprofessur ist in den letzten jahren enorm angewachsen!)

Neuer Webauftritt: Meine Pläne

Auch wenn sich die Themen ein wenig verschieben (wie das ja auch schon in den letzten Monaten der Fall war) wird es weiterhin deutschsprachige Texte in Gedankensplitter geben. Zum Beispiel wenn ich für das ganz neue Buch „Statistik mit R“ eine Rezension schreibe.  Aber es wird ein neues Design geben, das responsiv ist.

Ob und wie ich die vielen Erweiterungen loswerde, weiß ich noch nicht. Die nahe liegende Idee wäre es, wenn ich den interaktiven Kurs auf eine eigene Domäne lege und auch andere, kaum benutze Plugins de-installiere und/oder deren inhaltlichen Teile auslagere. (Das sieht nach viel Arbeit aus und einer unübersichtlichen Flut von Websites…)

Ich habe inzwischen ein englisches Weblog begonnen, das ich in R/RStudio mit Hilfe des Programmpaketes Blogdown und dem statischen Website-Generator Hugo schreibe und über das kooperative Versionskontrollsystem GitHub schließlich durch Netlify („All-in-one platform for automating modern web projects“) publiziere. So lange diese Liste der Prozesschritte auch klingen mag, das Endprodukt wird ohne Gebühren erstellt und der Ablauf ist schnell und größtenteils automatisch. (Ich werde über diese Prozesskette und ihre Werkzeuge noch ausfürlich berichten – aber im Englischen Weblog  😎 

Ich überlege mir ob ich auch eine englisches Portfolio-Website brauche bzw. führen werde. Eher nicht, meine Begeisterung dafür hält sich derzeit in Grenzen

Neuer Webauftritt: Aktueller Stand der Dinge

  • Ich habe mir eine neue Domäne www.peter-baumgartner.net zugelegt. Das Problem mit peter.baumgartner.name ist, dass dafür keine Subdomänen angelegt werden können. (‚peter‘ ist bereits die Subdomäne von ‚baumgartner‘ und der TLD ’name‘.) Auch meine peter-baumgartner.at Domäne ist nicht gut für englische-sprachige Webseiten geeignet.
  • Das neue englische Weblog ist unter https://notes.peter-baumgartner.net zwar noch im Aufbau aber bereits einsehbar.
  • Die englische Portfolio-Seite https://portfolio.peter-baumgartner.net ist zwar im Design soweit fertig, es gibt aber vorerst fast nur Mustertexte. Ich müsste sie nun mit meinen persönlichen Inhalten „befüllen“.
  • Geplant ist eine „Landing-Page“ (Hauptseite), von der dann auf die verschiedenen Webauftritte von mir verlinkt wird. Das sind nicht nur Webseiten, sondern auchandere soziale Netzwerke, wo ich tätig bin wie Twitter, Github, Stackoverflow. Ein – leider nicht für mehrere Webseiten und daher für mich nur bedingt brauchbares – Service   veranschaulicht ganz gut die Idee einer about.me/baumgartner „Landing Page“.
Veröffentlicht unter Persönliches, Weblog | Verschlagwortet mit , | Hinterlasse einen Kommentar

Digitalisierung von Forschungsprozessen

Die nachfolgende Fallstudie zeigt an einem Beispiel auf, welche Änderungen die digitale Transformation von Forschungsprozessen bereits heute ermöglicht. Ich ziehe dabei als Beispiel die Publikation eines Forschungsberichts heran, der empirische Daten nutzt, auswertet, kommentiert und veröffentlicht.

Medienbrüche als Kennzeichen bisheriger Arbeitsprozesse

Screenshot der Webseite: Reproduzierbare Webseiten für alle

– Ein Projektbericht aus dem Fellow-Programm Freies Wissen (Wikimedia Blog)

Die bisher häufigste Vorgangsweise ist die Nutzung getrennter Software-Pakete, in denen das jeweilige Produkt des vorherigen Arbeitsablaufes durch eigene Verfahrensschritte z.B. durch Export/Import-Funktionen oder auch durch Kopieren und Einfügen für den nächsten Arbeitsschritt adaptiert wird.

Kennzeichen dieses Arbeitsprozesses ist es, dass zusammenhängende Arbeitsschritte infolge von Medienbrüchen keine digitale Weiterverarbeitung ermöglichen. Diese Vorgangsweise ist nicht nur wegen der vielen manuellen Zusatzarbeiten („copy & paste“, Konvertieren etc.) ineffizient, sondern bedeutet auch, dass jede Änderung im Ursprungsdokument (z.B. geänderte Daten) neuerlich händische Eingriffe erfordert. Damit steigt die Fehlerhäufigkeit und leidet die Transparenz der einzelnen Verfahrensschritte. Außerdem wird nur das Endprodukt (die eigentliche Publikation) veröffentlicht und damit eine Reproduzierbarkeit (in unserem Beispiel der Forschungsergebnisse), die für die Qualitätssicherung extrem wichtig ist,  erschwert. 

Digitalisierung von Forschungsprozessen

Im nachfolgenden Beispiel werden Daten mit R – einem sehr populären Open Source Statistik Programm – verarbeitet, ausgewertet und publiziert. Die Ergebnisse werden daher nicht wie üblich zwischen gespeichert und dann von einem anderen getrennt arbeitenden Programm weiter verarbeitet — oder noch schlimmer: mit copy & paste in das andere Programm (z.B. eine Textverarbeitungssoftware) kopiert, wo das Material weiterbearbeitet wird und dann als Druckvorlage dem Verlag übermittelt wird. In vielen Fällen, z.B. bei Grafiken, ist vielleicht auch das Exportieren und unter Umständen auch das Konvertieren von Dateien mit Hilfe weiterer Programme notwendig.

Durch die Gestaltung eines einheitlichen Arbeitsflusses, der alle notwendigen Schritte miteinander kompatibel macht, können diese Nachteile überwunden werden. Prinzipielles Ziel dieser neuen Wertschöpfungsketten ist es, dass ausgehend von einem einzigen Quelldokument (single source publishing), die gesamte Kette der weiteren Verfahrensschritte ohne Medienbrüche bedient werden kann. Das bedeutet nicht nur eine effizientere Arbeitsweise und eine Reduktion von Fehlerquellen, sondern bringt auch eine Erweiterung der Publikationsmöglichkeiten mit sich (cross media publishing, multi-channel  publishing).

Zusammenspiel von R, RStudio, RMarkdown und knitr

Dieser bruchlose Arbeitsprozess wird in R durch eine speziell für R adaptierte Markdown Sprache erreicht. Das speziell dafür entwickelte R Paket knitr  ermöglicht eine Weiterverarbeitung in viele andere Formate. knitr ist DAS Allzweck Paket für dynamisches Generieren von Berichten in R (A General-Purpose Package for Dynamic Report Generation in R). Damit kann das in RMarkdown geschriebene Ausgangsdokument nicht nur die Programmiersprache R ausführen, sondern auch eines der bereits 11232 R-Zusatzpakete (Stand: 15.8.2017), wie z.B. knitr  selbst eines ist. Vor allem aber können Text und Daten und die aus dem Programm generierten Grafiken und Tabellen bruchlos in andere Formate überführt werden. Es lassen sich Dokumente in HTML, PDF, Word bzw. Open Office / Libre Office, LaTeX (bzw. LyX, das eine einfache Word-ähnliche Benutzeroberfläche hat, ) erstellen. Selbstverständlich können durch entsprechende Porgrammierung auch andere Möglichkeiten (z.B. Excel, XML, SPSS, SAS, Mail, Webseiten etc.)  wahrgenommen werden. Ein öffentlichen kostenloser Upload ist bereits vorgefertigt in der häufig für R verwendeten Programmierumgebung RStudio eingebaut.

Obwohl hinter diesen Prozessen eine komplexe Software-Maschinerie steht (so nutzt knitr selbst wiederum einen universellen Dokumentenkonverter ist eine detaillierte Kenntnis der verschiedenen unterschiedlichen genutzten Werkzeuge für die Nutzung nicht (mehr) notwendig. Mit einer Standard-Installation von R über https://cran.r-project.org/ und der Entwicklungsumgebung RStudio (https://www.rstudio.com) sind alle Voraussetzungen für cross media publishing geschaffen. Gelernt werden muss jedoch die Bedienung der Werkzeuge und die zur Verfügung stehenden Optionen, die eine detailreiche Adaption auf die je eigenen Wünsche und Aufgabenstellungen ermöglicht. (Siehe dazu genauer: Xie 2015; Xie 2016; Gandrud 2015) 

 

Screenshot der R Programmierumgebung RStudio zeigt vier verschiedene Fenster

Arbeiten in der Entwicklungsumgebung von RStudio: Links oben befindet sich das Fenster des Quellcodes, darunter die interaktive R Console, rechts oben die generierten R Objekte und rechts unten die Darstellung des Endprodukts (in diesem Fall HTML – eine Webseite.) Durch eine einfache Umstellung können auch andere Endformate direkt produziert werden.

Zusammenfassung

Dieses Beispiel zeigt vier Vorteile der Digitalisierung von Forschungsprozessen:

  1. Reproduzierbarkeit: Ausgehend von einem Quelldokument wird durch einen einzigen Befehl – ohne manuelle Zwischenschritte – das gewünschte Ausgangsdokument produziert. Das Ergebnis kann dann – wie bei diesem Beispiel oben in der Grafik gezeigt – auf derselben Benutzeroberfläche in einem eigenen Fenster gleichzeitig mit dem Quelldokument inspiziert werden. Änderungen, die im Quelldokument vorgenommen werden, lassen sich daher in ihren Ergebnissen unmittelbar einsehen und für alle nachvollziehen.
  2. Versionskontrolle und Kooperation: Zwischenschritte lassen sich mit Systemen der Versionskontrolle wie Git oder Subversion öffentlich über Webseiten wie z.B. GitHub oder Bitbucket nicht nur nachvollziehen, sondern auch gemeinsam, d.h. in kooperativen Arbeitssettings, weiterverarbeiten.
  3. Open Source Software: Alle eingebundenen Software-Pakete (mit Ausnahme von Microsoft Word) sind Open Source und frei verfügbar. Sie grenzen daher nicht durch proprietäre Regelungen aus, ermöglichen die Adaption auf individuelle Bedürfnisse und können sich auf eine aktive helfende Gemeinschaft (z.B. Stack Overflow, die größte Online-Community für Programmierer/innen) stützen.
  4. Nachhaltigkeit: Dadurch, dass vorwiegend offen zugängliche Texte ohne spezielle verschlüsselte Codierungen verwenden werden, ist auch große Nachhaltigkeit gesichert. Weil die Text von allen Texteditoren gelesen und weiterverarbeitet werden können gibt es keine Abhängigkeit von einem bestimmten Softwarepaket (oder noch schlimmer: von der konkreten Version einer bestimmtes Software).

Dieses ausführlich dargestellte Beispiel zeigt auch mein Verständnis von Educational Technology: Es handelt sich dabei nicht bloß um Autor/innen-Werkzeuge, die direkt für die Produktion von Bildungsmaterialien bzw. für die Entwicklung von eLearning-Szenarien genutzt werden können, sondern ich zähle darunter auch Technologie bzw. Software, die inkrementelles Lernen durch eigenständige Anwendung ermöglicht.

Gleichzeitig wird im obigen Beispiel auch meine didaktische Sichtweise demonstriert: Statt die Funktion eines Werkzeuges abstrakt einzuüben (z.B. indem die Benutzeroberfläche erläutert wird), findet im einem projektierten bzw. praxisorientierten Zugang der Lernprozess im Kontext eines (neuen) Arbeitsprozesses statt. Damit wird nicht nur die Vielzahl möglicher Tastenkombinationen – und damit die sog. „cognitive load“ (Sweller, Ayres und Kalyuga 2011) – eingeschränkt, sondern auch ein unmittelbarer motivierender Bezug zur Arbeitsaufgabe hergestellt.

Literatur

Gandrud, Christopher. 2015. Reproducible Research with R and R Studio, Second Edition. 2 Rev ed. Boca Raton: Routledge.
Sweller, John, Paul Ayres und Slava Kalyuga. 2011. Cognitive Load Theory. 2011. Aufl. New York: Springer.
Xie, Yihui. 2015. Dynamic Documents with R and knitr, Second Edition. 2 Rev ed. Boca Raton: Routledge.
—. 2016. Bookdown: Authoring Books and Technical Documents with R Markdown. Boca Raton, FL: Chapman & Hall/Crc: the R Series.
Veröffentlicht unter Forschung, Lehr-/Lern-/Werkzeug | Verschlagwortet mit , , , , | 4 Kommentare

Learning how to use the RWordPress package

This contribution is part of my ongoing effort of the last few months to collect material for a new book. I want to describe new working procedures in scientific research which are — thanks to progress in digitization like open source tools, open data — now feasible. My focus on these new work flows are guided on the one hand by the goal to improve reproducibility of all research phases and on the other hand to facilitate research procedures in closing the digital gaps between different research tasks. On this page I am going to experiment how to write a program in R and to publish the results directly into WordPress.

  • The following chunks are ordered from top to bottom.
  • All chunks have to be run separately according to the intended action.
  • You can see the resulting page on my weblog Gedankensplitter.

General remarks

Many of the features are only rudimentary described and implemented. One has to read in detail the description at RWordPress-package. There are listed all the relevant functions with their links to the different WordPress APIs. But most of these links our outdated, because of newer WordPress versions. Now the XML-RPC API is the only relevant code; it supersedes the legacy Blogger, MovableType, and metaWeblog APIs.

A look into the RWordPress-pages in GitHub could also be relevant. See also the XMLRPC package of the same author (Duncan Temple Lang) which is necessary for programming and understanding the functionality of the RWordPress package.

Setting startup conditions

Global chunk options for knitting reports

## Set the global chunk options for knitting reports
knitr::opts_chunk$set(
        echo = TRUE,
        eval = TRUE,
        message = TRUE,
        error = TRUE,
        warning = TRUE,
        highlight = TRUE,
        prompt = FALSE
        )

Load required packages

We need to load several packages:

  • RWordPress functions as the interface to WordPress
  • ‚XMLRPC is necessary for the transfer protocol
  • knitr as the Swiss knife for dynamic report generation with R.
  • reshape2 for restructuring data sets
  • RCurl as a general Network (HTTP/FTP/…) Client Interface for R
## load required package `RWordPress` and `XMLRPC`
## as the interface and transfer protocol to WordPress
if (!require('RWordPress')) {
        devtools::install_github(c("duncantl/XMLRPC", "duncantl/RWordPress"))
}
library(RWordPress)
library(XMLRPC)
##
## ------------------------------------------------------------------------
##
## load `knitr`: A general-purpose tool for dynamic report generation in R
if (!require("knitr")) {
        install.packages("knitr", repos = 'http://cran.wu.ac.at/')
}
library(knitr)
##
## ------------------------------------------------------------------------
##
## load `reshape2`: Flexible restructuring and aggregating of data
if (!require("reshape2")) {
        install.packages("reshape2", repos = 'http://cran.wu.ac.at/')
}
library(reshape2)
##
## ------------------------------------------------------------------------
##
## load `RCurl`: Provides functions to compose general HTTP requests
if (!require("RCurl")) {
        install.packages("RCurl", repos = 'http://cran.wu.ac.at/')
}
library(RCurl)

Provide login data and URL for connecting to WordPress

For the connection with WordPress one has to provide log-in data. To prevent that secret data can be seen in the script – or worse – on the public GitHub account I generated variables in my .Rprofile-file with the following code:

options(WordPressLogin = c(yourUserName = 'yourPassword'),
        WordPressURL = 'yourWordPressURL')

The place of the quotes are mandatory. Fill in your own data. The URL is the address for your WordPress installation + xmlrpc.php. For instance https://user.wordpress.com/xmlrpc.php or in my case http://peter.baumgartner.name/xmlrpc.php.

To find the location of your .Rprofile-file read the help section ?Startup. To shorten up the somewhat complicated description: Usually the .Rprofile-file can bee found in the Users‘ Home directory. You can locate it with the r_profile() function of the package pathological. The . at the beginning of the file name means that this file normally is not visible. Use the terminal or make your hidden file visible by reading this article.

Uploade resulting images automatically to imgur.com

In the following chunk I have written commands for uploading automatically all those images (graphics), that are generated by R as output. These pictures are uploaded automatically to the social website imgur.com, a hosting and sharing place for images like flickr or instagram. See for more details to understand the knitr-procedure on Upload images and on the corresponding example page.

opts_knit$set(upload.fun = imgur_upload, base.url = NULL)  # upload all images to imgur.com
opts_chunk$set(fig.width = 5, fig.height = 5, cache = TRUE)

Establishing an upload facility of images is very important because otherwise the transfer to WordPress would encrypt the pictures to an awful peace of code. An example how this looks can be seen from my first trial.

Generated encrypted code when transferring images directly from R to WordPress.

This encryption slows down WordPress tremendously. You have to wait several seconds to load the page and it is practically impossible to inspect the result directly in WordPress. Not to transfer images but to upload pictures and provide just the URL is also necessary if you want to adapt the article in WordPress itself. I do not recommend this option because it violates principles of reproducible research but sometimes it is the only way to use additional functionality provided by some WordPress-Plugins.

Start workflow for publication

For every new work flow (posting an article) all the different phases (generating, editing and publishing the article) several variables have to be adapted. Do not open a new workflow before you have closed the previous workflow. If you need to work on two post blogs at the same time, save this file with a different name and generate the variables for the second post in this new file.

Generate two basic variables: title and file location

Before generating the new post on WordPress we need to specify the title of the article and the location of the RMarkdown file we want to transfer. This assumes that you have already finished an article written in RMarkdown with alternating text and programming snippets (chunks), which have already produced output (graphics, tables etc.) you are satisfied with.

In my case the file, which I intend to transfer to WordPress is in the same directory as the calling program (a chunk in this file here).

postTitle = "Testpage from R resp. knitr"
fileName = "post-this-rmd-file-to-wordpress.Rmd"

postID = 13456 # for my test post

Create new post in WordPress

The following chunk creates a new post in WordPress. If you want publish your article as a page in WordPress change the line action = "newPost" to action = "newPage"

postID <- knit2wp(
        input = fileName, 
        title = postTitle, 
        publish = FALSE,
        action = "newPost"
)

Creating a new post returns the postID which we will need for the other steps in the workflow. But before we need some more information, so that we also can provide other information like categories, tags etc.

How to get information on categories and tags

General remarks

From here one has to take into account that the some functions of the RWordPress package uses an older implementation of XML-RPC protocol. The differences can be inspected between the old XML-RPC_wp and the new XML-RPC_WordPress_API page.

At the moment (August 2017) I have not understood completely how to write function using the new API. I am lacking knowledge in R programming but I need also to learn more about the structure and components of the XML-RPC protocol. So most of the time I have either used or slightly adapted functions from the RWordPress-package. My focus was to provide essentially information about

  • categories
  • tags
  • media library (e.g. to use a picture as thumbnail or for uploading files) and
  • supported methods (e.g. wp.newPost, ‚wp.editPost)

Get general information of your blog

The next chunk provides information to the taxonomy terms (categories and tags) and to the available methods. Methods are operation like creating or editing a new post (e.g. wp.newPost, ‚wp.editPost etc.).

## get terms of a specified taxonomy
getTermList =
        function(
                blogid = 0L,
                login = getOption("WordpressLogin", stop("need a login and password")),
                ...,
                .server = getOption("WordpressURL")
                )
                {
                        xml.rpc(
                        .server,
                        "wp.getTerms",
                        as.character(blogid),
                        names(login),
                        as.character(login),
                        ...
                        )
                }
myCatList <- getTermList(taxonomy = "category")
myTagList <- getTermList(taxonomy = "post_tag")

## convert to dataframe for easier inspection via the `View()` command
df_cats <- do.call(rbind.data.frame, myCatList)
df_tags <- do.call(rbind.data.frame, myTagList)

## get available methods (actions, operations)
myMethods <- supportedMethods()
df_methods <- as.data.frame.character(myMethods)

Get information from a specific post

getPost = 
        function(
                postid,
                login = getOption("WordpressLogin", stop("need a login and password")),
                ...,
                .server = getOption("WordpressURL")
                )
        {
                xml.rpc(
                .server,
                "metaWeblog.getPost",
                as.character(postid),
                names(login),
                as.character(login),
                ...
                )
        }
myPostList <- getPost(postID)
## convert to dataframe for easier inspection via the `View()` command
## df_post_wide <- as.data.frame(myPostList) 
# scroll the dataframe from top to bottom instead from left to right
df_post_long <- melt(df_post_wide, id.vars = "postid")

Continue with worfklow for publishing

Edit article

The following chunks demonstrates how to add/change categories and tags (= mt_keywords). I have also included a thumbnail which appears on the homepage of my theme.

Here you could use the information from the different data frames and add for instance text for the excerpt (mt_excerpt), the name of the author (wp_author_display_name and wp_author_id), the post status (post-status) and many more.

If you are using a new category or tag then this term is created. There is no selection via a drop-down menu, so every typo in a term expression generates a new term.

my_exerpt = 'This is the follow-up article from the previous post <a href="http://peter.baumgartner.name/2017/08/10/publishing-r-statistics-directly-in-wordpress/">Publishing R Statistics directly into WordPress</a>. This time I will explain in more detail how to apply the different packages. There is a <a href="http://rpubs.com/pbaumgartner/r2wp">companion webpage</a> where you can see the content of the different program chunks. You will see how to post text, graphic, uploading files, setting categories and tags, fill in the excerpt and providing a thumbnail.

In contrast to the previous post I have now establised the facility to upload graphics resulted from R calculation automatically to the <a href="http://imgur.com">imgur.com</a> website. This is very important because otherwise the transfer to WordPress would encrypt the pictures to an awful peace of code. An example how this looks can be seen from my first trial.'
knit2wp(input = fileName, 
        title = postTitle, 
        publish = FALSE,
        action = "editPost",
        postid = postID,
        categories = c('Forschung', 'Lehr-/Lern-/Werkzeug'),
        mt_keywords = c('data science', 'knitr', 'R', 'R-Programming', 'WordPress', 'XML-RPC'),
        wp_post_thumbnail = 13433, # same number cannot be uses in serie- alternate *13433* with 12403
        mt_excerpt = my_exerpt
)
## output file: post-this-rmd-file-to-wordpress.md
## [1] TRUE

Upload file

How to upload files (images, videos, pdfs) into the media library of WordPress?

uploadFile =
        function(
                what,
                type = guessMIMEType(what),
                blogid = 0L,
                login = getOption("WordpressLogin", stop("need a login and password")),
                remoteName = basename(what),
                overwrite = TRUE,
                ...,
                .server = getOption("WordpressURL")
                )
                {
                if (inherits(what, "AsIs")) {
                        content = what
                        } else {
                        if (!file.exists(what))
                        stop("no such file ", what)
                        content = readBinaryFile(what)
                        }

                info = list(
                name = remoteName,
                type = type,
                bits = content,
                overwrite = overwrite
                )
                xml.rpc(
                .server,
                "wp.uploadFile",
                as.character(blogid),
                names(login),
                as.character(login),
                info,
                ...
                )
                }

readBinaryFile = 
        function(filename){
                con = file(filename, "rb")
                on.exit(close(con))
                fs = file.info(filename)$size
                readBin(con, raw(fs), fs)
                }

Uploading the file does work but it generates a warning:

Skipping names on vector!Calling 'structure(NULL, *)' is deprecated, as NULL cannot have attributes.
  Consider 'structure(list(), *)' instead.
mediaFileList <- uploadFile("figure/chunk-evaluation-with-graphic-outcome-1.png")
## convert this nested list with vectors of different length into a data frame
## the problem is the metadata sublist
## separte metadata and generate a data frame just for the metadata
metaDataList <- mediaFileList$metadata
metadataString <- unlist(metaDataList)
df_metaData <- as.data.frame.character(metadataString)

## now continue with the same procedure with the rest of mediaFileList
mediaFileList$metadata <- "see df_metadata"
mediaFileString <- unlist(mediaFileList)
df_fileInfo <- as.data.frame.character(mediaFileString)

Publish article and make it visible for the public

This is the final step in the publication work flow. If you do not add information on categories and tags WordPress publishes the last information as set – for instance – in the edit-post chunk.

knit2wp(input = fileName, 
        title = postTitle, 
        publish = TRUE,
        action = "editPost",
        mt_excerpt = my_exerpt,
        postid = postID
)
Veröffentlicht unter Forschung, Lehr-/Lern-/Werkzeug | Verschlagwortet mit , , , , , , | Hinterlasse einen Kommentar

Testpage from R resp. knitr

Introduction

Many of the features in the package are only rudimentary described and implemented. One has to read in detail the description at RWordPress-package. There are listed all the relevant functions with their links to the different WordPress APIs. But most of these links our outdated, because of newer WordPress versions. Now the XML-RPC API is the only relevant code; it supersedes the legacy Blogger, MovableType, and metaWeblog APIs.

A look into the RWordPress-pages in GitHub could also be relevant. See also the XMLRPC package of the same author (Duncan Temple Lang) which is necessary for programming and understanding the functionality of the RWordPress package.

Description

  1. Hello World! — This is my first paragraph, creating a new post with the R chunk upload-article. This chunk is generating the variable postID which I can use for working and elaborating on the same post.

  2. Another line of comment. — I have added this paragraph later on using the R chunk edit-article.

  3. With my next revision of the post I am going to add a code snippet and its output. I am again using the R chunk edit-article. As the output is a graphic I have to declare how to upload the picture. This is done in the R chunk setup-conncection-to-wordpress.

Establishing an upload facility of images is very important because otherwise the transfer to WordPress would encrypt the pictures to an awful peace of code. An example how this looks can be seen from my first trial.

Generated encrypted code when transferring images directly from R to WordPress.

Example of a chunk evaluation with graphic aoutcome

par(mar = c(3, 2, 0.1, 0.1))
matplot(t(scale(mtcars)), lty = 1, type = "l", xaxt = "n", ylab = "")
axis(1, seq(ncol(mtcars)), colnames(mtcars))

plot of chunk chunk-evaluation-with-graphic-outcome

Other features

Posting with the RMarkdown Language to WordPress are many hidden features like

  • different types of header
  • different styles of charakters (like italic or bold)
  • active links
  • tables and gprahics

Using RWordPress I have not only transfered text and graphics, but also set different options and some other action in WordPress from the RMarkdown file:

  • Post title
  • Categories
  • Tags
  • Excerpt
  • Thumbnail
  • File upload

But there is much more as one can use all the different WordPress methods. Here is a complete list of supported methods of my weblog. (The ngg.XXX methods refer to the NextGen-Gallery Plugin).

df_methods
##                           myMethods
## 1                  wp.getUsersBlogs
## 2                        wp.newPost
## 3                       wp.editPost
## 4                     wp.deletePost
## 5                        wp.getPost
## 6                       wp.getPosts
## 7                        wp.newTerm
## 8                       wp.editTerm
## 9                     wp.deleteTerm
## 10                       wp.getTerm
## 11                      wp.getTerms
## 12                   wp.getTaxonomy
## 13                 wp.getTaxonomies
## 14                       wp.getUser
## 15                      wp.getUsers
## 16                    wp.getProfile
## 17                   wp.editProfile
## 18                       wp.getPage
## 19                      wp.getPages
## 20                       wp.newPage
## 21                    wp.deletePage
## 22                      wp.editPage
## 23                   wp.getPageList
## 24                    wp.getAuthors
## 25                 wp.getCategories
## 26                       wp.getTags
## 27                   wp.newCategory
## 28                wp.deleteCategory
## 29             wp.suggestCategories
## 30                    wp.uploadFile
## 31                    wp.deleteFile
## 32               wp.getCommentCount
## 33             wp.getPostStatusList
## 34             wp.getPageStatusList
## 35              wp.getPageTemplates
## 36                    wp.getOptions
## 37                    wp.setOptions
## 38                    wp.getComment
## 39                   wp.getComments
## 40                 wp.deleteComment
## 41                   wp.editComment
## 42                    wp.newComment
## 43          wp.getCommentStatusList
## 44                  wp.getMediaItem
## 45               wp.getMediaLibrary
## 46                wp.getPostFormats
## 47                   wp.getPostType
## 48                  wp.getPostTypes
## 49                  wp.getRevisions
## 50               wp.restoreRevision
## 51            blogger.getUsersBlogs
## 52              blogger.getUserInfo
## 53                  blogger.getPost
## 54           blogger.getRecentPosts
## 55                  blogger.newPost
## 56                 blogger.editPost
## 57               blogger.deletePost
## 58               metaWeblog.newPost
## 59              metaWeblog.editPost
## 60               metaWeblog.getPost
## 61        metaWeblog.getRecentPosts
## 62         metaWeblog.getCategories
## 63        metaWeblog.newMediaObject
## 64            metaWeblog.deletePost
## 65         metaWeblog.getUsersBlogs
## 66               mt.getCategoryList
## 67           mt.getRecentPostTitles
## 68             mt.getPostCategories
## 69             mt.setPostCategories
## 70              mt.supportedMethods
## 71          mt.supportedTextFilters
## 72             mt.getTrackbackPings
## 73                   mt.publishPost
## 74                    pingback.ping
## 75 pingback.extensions.getPingbacks
## 76                    demo.sayHello
## 77               demo.addTwoNumbers
## 78                    ngg.installed
## 79             ngg.setPostThumbnail
## 80                     ngg.getImage
## 81                    ngg.getImages
## 82                  ngg.uploadImage
## 83                    ngg.editImage
## 84                  ngg.deleteImage
## 85                   ngg.getGallery
## 86                 ngg.getGalleries
## 87                   ngg.newGallery
## 88                  ngg.editGallery
## 89                ngg.deleteGallery
## 90                     ngg.getAlbum
## 91                    ngg.getAlbums
## 92                     ngg.newAlbum
## 93                    ngg.editAlbum
## 94                  ngg.deleteAlbum

The API can also be used to organise WordPress functionality. So is for instance possible to inspect and manipulate tags in a much more convenient way as this is possible under WordPress it self. The above tables gives you a first impression of summary displays.

At the moment (August 2017) I have not understood completely how to write function using the new API. I am lacking knowledge in R programming but I need also to learn more about the structure and components of the XML-RPC protocol. So most of the time I have either used or slightly adapted functions from the RWordPress-package.

Conclusion

This post war completly written in RMarkdown with the R environment RStudio an open source professional software for R. R Markdown documents are fully reproducible. I used the productive notebook interface to weave together narrative text and code to produce elegantly formatted output. The origin file is just text and can be read and/or manipulated easily with many other programmes. As everything is just marked text and based on open source there is no dependency from propiretary programs. Therefore reproducibility of the results but also the sustainability of the pure text publication is high.

Following this trend one should (in the future) — instead of the very complex machinere of WordPress — use web publishing systems that are open source and purely text based like for instance Jekyll. And in that case one can use for complete books collabortive versioning systems Git and GitHub.

Additional Material

RPubs: You can also inspects both articles how the look at RPubs, a free service by RStudion.

GitHub You can also inspect the source code and comment or push changes, improvements etc.

Veröffentlicht unter Forschung, Lehr-/Lern-/Werkzeug | Verschlagwortet mit , , , , , , | Hinterlasse einen Kommentar

Publishing R Statistics directly in WordPress

© 2016 The R Foundation (CC-BY-SA 4.0)

© 2016 The R Foundation (CC-BY-SA 4.0)

This post is an experiment: Writing a program in R and publishing directly the results into WordPress. This experiment is part of my ongoing effort of the last few months to collect material for a new book. I want to describe new working procedures in scientific research which are — thanks to progress in digitalization like open source tools, open data — now feasible. My focus on these new work flows are guided on the one hand by the goal to improve reproducibility of all research phases and on the other hand to facilitate research procedures in closing the digital gaps between different research tasks.

Co-operation between RWordPress and knitr

I am using a special the R package RWordPress. This is a package for publishing blog posts from R to WordPress. The package bridges the gap between R as a free software environment for statistical computing and graphics with the likewise open source website and blogging tool WordPress. I will explain the procedure in R in another post with more details, but to get an overview have a look at this page by Yihui Xie.

Data from Gapminder.org

For the demonstration, I am using data from Gapminder.org. Following is a quote from the Gapminder-about-page:

Gapminder is an independent Swedish foundation with no political, religious or economic affiliations. Gapminder is a fact tank, not a think tank. Gapminder fights devastating misconceptions about global development. Gapminder produces free teaching resources making the world understandable based on reliable statistics. Gapminder promotes a fact-based worldview everyone can understand. Gapminder collaborates with universities, UN, public agencies and non-governmental organizations.

Publishing a table without R code

Show the median of life expectancy per continent in 2007.

  continent lifeExp
1    Africa 47.7920
2  Americas 67.0480
3      Asia 61.7915
4    Europe 72.2410
5   Oceania 73.6650

Publishing a graph with R code

Show the life expectancy of Rwanda.


> plot(lifeExp ~ year, gapminder, subset = country == "Rwanda", type = "b")

plot of chunk gapminder-demo1

Bubble plot for lots of countries

Different bubbles for different countries. The size of the bubbles represents the population.

plot of chunk gapminder-demo2

Veröffentlicht unter Forschung, Lehr-/Lern-/Werkzeug, Weblog | Verschlagwortet mit , , , , | Hinterlasse einen Kommentar

Efficient R Programming – Book recommendation

Efficient R ProgrammingRelatively new to R I thought Efficient R Programming is not a book for me. But I was wrong! Title and subtitle („A practical guide to smarter programming“) suggested for me that the book is only for advanced programmers. If I am still a newcomer to R, my worries are not so much for efficient programming but to solve programming problems at all.

But if you have ever worked on two or three (small) projects with R, then the book will be very helpful. For instance, it covers in the second chapter important setup questions like updating R, installing and updating R packages, the location of startup files, installing and using RStudio, an important Integrated Development Environment (IDE). With maybe the exception of chapter 7 and 8 (Optimization and Hardware), the book presents many tips for everyday usage like tips search and select packages, to Input/Output routines, to coding style and last not least to effective learning resources.

Efficient R Programming

The book refers to a huge amount of relevant online material. I decided to collect all these links and present it to the interested reader. To help you with the menu, the following list presents the subject of all the chapters:

  • Chapter 01: Introduction
  • Chapter 02: Efficient Setup
  • Chapter 03: Efficient Programming
  • Chapter 04: Efficient Workflow
  • Chapter 05: Efficient Input/Output
  • Chapter 06: Efficient Data Carpentry
  • Chapter 07: Efficient Optimization
  • Chapter 08: Efficient Hardwar
  • Chapter 09: Efficient Collaboration
  • Chapter 10: Efficient Learning

A collection of Links from the book „Efficient R Programming: A Practical Guide to Smarter Programming“ by Colin Gillespie & Robing Lovelace (see also the repo at GitHub.)

 

Veröffentlicht unter Material, Rezension | Verschlagwortet mit , | Hinterlasse einen Kommentar

R – most minimal learning resources

R – most minimal learning resources

© 2016 The R Foundation (CC-BY-SA 4.0)

With December last year, I have started to learn data science using R. In the meanwhile I have some intermediate knowledge and have started to look into more advanced topics. For me, it is a very strange but important experience to change the perspective: As a professional teacher in educational technology, I am now using educational technology myself to learn something. And as a self-determined learner, I have not only to find resources, that are adequate to my learning goals and status of competencies but also to plan and organize my spare time for my self-organized continuing education.

It turned out that with every new learning activity I pursued two objectives: On the one hand to learn the subject and on the other hand to judge the educational value of the learning material. It turned out that I am dedicated to a learning style that is comparative. I like to learn in comparing different teaching approaches, to repeat a complicated set of facts and procedure with different explanations and hands-on exercises.

My strange learning behavior

This results in a pretty strange behavior:

  • I am reading several books on the same subject at the same time. 
  • I am reading books not always from start to end, but I select chapters covering a subject I am interested in.
  • I use several media at the same time: Reading books in hardcover and as eBooks, consulting web pages and fora, follow online exercises and at the same experimenting with own data and own challenges.

This behavior is not very cheap: I bought more than 20 books, visited and paid for two MOOCs courses and printed out much online material. (Yes, what a shame: I printed OER material and helically coiled it to a binder. I am not very good at reading on the screen and converting PDFs into eBook did not always result in material easy to read – especially if they included complicated tables and charts.

The advantage of this seldom learning behavior: I have developed some in-depth, multi-perspective knowledge and achieved an overview about adequate learning resources. For the prospective data scientist, the problem is not to find learning material. Quite the contrary! There is a huge amount of learning resources available for free and the real art is to select a minimum to start with.

3 tips to start with R – most minimal learning resources

I cannot (yet?) oversee all the material and I doubt if this is ever possible with this amount – and continually growing – of material. But still, I believe that my experiences could be valuable for people starting a learning career in data science. My own challenge is to limit the advice to just 5 free learning resources where each educational resource is of a different type and has one next step.

  1. Setup the Environment:
    Start with: Install R for your system: https://cloud.r-project.org/ 
    Follow up: Install RStudio Desktop: https://www.rstudio.com/products/rstudio/download/
    Shortest installation guide I found: http://web.cs.ucla.edu/~gulzar/rstudio/
  2. Book:
    Start with: Grolemund, G. (2014). Hands-On Programming with R: Write Your Own Functions and Simulations (1st ed.). Sebastopol, CA: O’Reilly and Associates. (See my review. See appendix A for a more detailed installation guidance of R & RStudio (pp. 198-192)
    Follow up:  Grolemund, G., & Wickham, H. (n.d.). R for Data Science. Retrieved from http://r4ds.had.co.nz/
  3. Tutorial / Help:
    Start with: Swirl: Learn R, in R.
    Follow upStack Overflow is the largest online community for programmers to learn. Google your questions, starting with „r <here comes your question>“
Veröffentlicht unter Lehr-/Lern-/Werkzeug, Lehre/Studium, Persönliches, Weiterbildung | Verschlagwortet mit , , | Hinterlasse einen Kommentar

Hands-On Programming with R – Book recommendation

„Hands-On Programming with R – Write your own Functions and Simulation“ is a very gentle introduction to programming with R. Even if it starts very low key it broadens your skills step by step to an intermediate level. With many exercises, you will learn step by step how to use R for data science.

I will especially emphasize t the pedagogical concept of the book. It teaches you the R programming skill by way of three practical challenges which functions as an advanced organizer for the story line: All the relevant knowledge is integrated into the programming of casino games: Simulating unfair (weighted) dice, playing cards, and the design of a virtual slot machine. These tasks not only motivate but are taken from real life experiences.

Practicing with real world examples

The third case study, for instance, the slot machine example, was taken from a much-discussed scandal in the 1990s, where Video Lottery Terminals in Manitoba, Canada were believed to cheat the public. All three projects are chosen in a way not only to learn program(e.g. logical operators, if-else statements, loops) but also to understand important concepts of data science (e.g. sampling without and with replication, calculating the probability of expected events).

Hands-On Programming with R is friendly, conversational, and active. It#s the next-best thing to learning R programming from me or Garret in person. – Hadley Wickham (Chief Scientists at RStudio)

Not only for the programmer but also for the data scientist

Even if the book targets R beginners, it covers concept you will not find in other introductions. I refer here to the S3 classes, questions of speed (vectorized code) and even handling of debugging issues. „Hands-On Programming“ is not only oriented to the programmer but should also especially beneficial for scientists who have used R in their daily work but just for statistical analyses and not for programming their own functions. With „Hands-On Programming“ you will learn to write your first function already in chapter one!


Grolemund, G. (2014). Hands-On Programming with R: Write Your Own Functions and Simulations (1st ed.). Sebastopol, CA: O’Reilly and Associates.

Tipp: Try in google the following sequence: hands-on programming with r pdf

Veröffentlicht unter Lehr-/Lern-/Werkzeug, Rezension, Weiterbildung | Verschlagwortet mit , , | Hinterlasse einen Kommentar

Twitter word clouds explained

Word Cloud for my Twitter Account (pbaumgartner)

Word Cloud for my Twitter Account (pbaumgartner)

In yesterday’s post, I have experimented with R packages for generating Twitter Word clouds. In this post, I will give some hints how to proceed. I will also refer to my GitHub repository, where you can find the complete program code. I have added some examples in generating all the twitter clouds for all member of the IBM staff with a Twitter account, for the department and the university account. 

Steps for generating twitter word clouds 

1. Generate Twitter API key

For the purpose of authentication, you have to get a Twitter API key. You have to create an application in Twitter via https://apps.twitter.com/app/new. Creating a Twitter application is free and you don’t need to know all the details for programming a Twitter API. This is done by the R packages twitteR

There are several tutorials how to get the Twitter API key: See for instance this YouTube Video or read the article on R-bloggers.

2. Install R and copy the R word cloud program

If you haven’t installed R yet, read one of the many tutorials: For instance: How to install R and a Brief Introduction to R. I recommend also to install RStudio as THE interactive integrated development environment (IDE) for R. (You must install first R, and after that RStudio.) If you want more to do with R as just producing the word cloud, then you should read the (in my opinion) best and still very gentle introductory book by Hadley Wickam: R for Data Science. It is free available on the internet!

You have to fill in your authentication keys and the user account for the word cloud. For instance, the line with my account would be:

user = 'pbaumgartner'

3. Experiment with the different parameters

The last task before you run the program is to adapt the parameters for your word cloud.

Twitter Word clouds: Setting parameters

 # experiment with different settings of the parameters
 if (require(RColorBrewer)) {      # using color palette from RColorBrewer
     pal <- brewer.pal(9,"Blues")  # sequential color palettes
     pal <- pal[-(1:4)]            # for a one color (shaded) appearance
     wordcloud(                    # call the essential function
        words,                     # used words by this account
        freqs,                     # frequencies of every word in this account
        scale = c(4.5, .3),        # size of the wordcloud
        min.freq = 6,              # high (5+) if not many different words
        max.words = 200,           # use less (100) if the account is new 
                                   # (< 500 tweets)
        random.order = FALSE,      # most important words in the center
        random.color = FALSE,      # color shades provided by RColorBrewer
                                   # remove RcolorBrewer and set to TRUE
        rot.per = .15,             # percentage of words 90% rotated
        colors = pal)              # use shaded color palette from RColorBrewer
 }

You see this is a little bit complex as there are many different parameters. The best and fastest way is to duplicate the program snippet above and to run it as a separate program. For this, it is essential that the hard word (text mining and transforming the data from the Twitter account is already done and all the variables are still in the R memory.

Examples of Twitter word clouds

You can see a big difference in comparison with the clouds I have published yesterday. This time I have adjusted the parameters so that all word cloud have a similar size and have more or less the same amount of information. You can see the parameters I have used on this page here.

The Twitter account of Wolfgang Rauter is a very new one. So he has not many tweets yet (21). Therefore I had to tweak the parameters. Instead of using a minimum frequency of 5(yesterday)  I had to use 1 and to limit to 100 (yesterday: 200) words.

Adjusted Word Cloud for @wolfgangrauter

Adjusted Word Cloud for @wolfgangrauter

Wordcloud @wolfgangrauter

Wordcloud not adjusted @wolfgangrauter

 

 

 

 

 

 

 

Another interesting tweaking example is the timeline of @donau_uni.  The word ‚presseaussendung‘ (yesterday) is very dominant (frequency = 240) and destroys a nice appearance of the word cloud. I could delete this word from the list or – I used a greater scale for the cloud with the effect that the huge word ‚presseaussendung“ could not be displayed in the predefined limits.

Word Cloud adjusted: @donau_uni

Word Cloud adjusted: @donau_uni

Wordcloud not adjusted @donau_uni

 

 

 

 

 

 

 

Enjoy!

Veröffentlicht unter DUK, IMB, Tutorial | Verschlagwortet mit , , , | Hinterlasse einen Kommentar

IMB Twitter Wordclouds

Wordcloud von @pbaumgartner

Wordcloud von @pbaumgartner

Die Produktion aller IMB Twitter Wordclouds in R war nicht besonders schwierig. Ich habe mir dazu einige Beispiele im Netz angesehen und das für mich am besten geeignete Programm als Musterbeispiel (sog. Advanced Organizer) her genommen. Meine Wahl fiel dabei auf die Twitter Cloud aus dem Weblog Walking Randomly. Viele der anderen Beispiele und Tutorials im Netz sind schon recht alt und verwenden alte, nicht mehr funktionsfähige Programmpakete von R. 

Meine Kenntnisse in R sind bereits soweit fortgeschritten, dass ich keine Mühe hatte das Programm zu verstehen und meine Änderungen vorzunehmen. Den Zugang zur API von Twitter hatte ich mir bereits früher – im Zuge des MOOCs zu Data Science den ich besucht habe – zugelegt.

Wordcloud von @IsabellGru

Wordcloud von @IsabellGru

Wordcloud von @AndreaGhoneim

Wordcloud von @AndreaGhoneim

Wordclouds in deutscher Sprache

Wordcloud von @donau_uni

Wordcloud von @imb_duk

Wordcloud von @imb_duk

Bei meinen Eingriffen in das Muster-Programm handelte sich überwiegend um Adaptionen, die sich aus den Besonderheiten der deutschen Sprache (Umlaute und deutsche Stop-Wörter) ergaben. Die meisten Beispiele im Internet funktionieren nur mit englischer Sprache. Weil wir am Department sowohl in Deutsch als auch Englisch twittern, habe ich englische als auch deutsche Stoppwörter verwendet.

Die meiste Zeit hat mir eigentlich das „Tuning“ der Parameter und der Farbpaletten gekostet. Das beinhaltete Experimente mit:

  • Wie groß soll die Cloud sein?
  • Ab welcher Wiederholung sollen Wörter angezeigt werden?
  • Wie viele Wörter soll die Cloud maximal anzeigen?
  • Wie viele Wörter sollen um 90 Grad gedreht werden?
  • Welche Farbskala soll verwendet werden?
WordCloud von @TGrubermuecke

WordCloud von @TGrubermuecke

WordCloud von @AnSchlager

WordCloud von @AnSchlager

Wordclouds für Tweets von 1000 – 10.000 optimiert

Die hier gezeigten Beispiele sind zwischen 1.000 und 10.000 Tweets recht hübsch. Sowohl darunter als auch darüber sollte an den obigen Parametern „gedreht“ werden. Ich werde dies in einem späteren Blogbeitrag genauer beschreiben und dabei auch das (dokumentierte) Programm in einem Repositorium auf meinem GitHub-Account zur Verfügung stellen.

WordCloud von @ElkeLantschik

WordCloud von @ElkeLantschik

Wordcloud @wolfgangrauter

Wordcloud @wolfgangrauter

Veröffentlicht unter DUK, Forschung, IMB | Verschlagwortet mit , , | Hinterlasse einen Kommentar

How to support self-determined learners? (Part 2)

the-sky-is-the-limitIn the first episode about my personal learning experiences, I have reported that rigid curricula are not adequate to support experienced self-determined learners. This is not reduced to experienced academic learner but I believe one has to enlarge the above proposition to all adult learners who have work experiences and want to improve their knowledge and skills in their respective field of expertise.

Like me, these people want to use their present competencies to build on and do not want to be treated like blank slates. To support this kind of learners we need more flexibility. Isn’t it strange that in the age of individualism we still use in education cohort learning like in the mechanic assembling line?

How to support self-determined learners?

To put my critical remarks about my personal learning experiences into affirmatory action some lesson learned for teachers may be drawn:

  • Provide students as soon as possible with those meta-skills that are necessary to ask (the right) questions and to find support for their problems. This task was done in my Coursera experience quite well. There is for the R data science course on Coursera a special lesson Getting Help, where students learn how und where to get help. 
  • Preparing lessons ask you the following questions:
    • What examples are representative for the intended learning outcomes?
    • What kind of meta-information are to provide so that student can advance on their own?
  • Preparing exercises ask you the following questions:
    • What kind of basic knowledge should the exercises cover in order to acquire general skills to solve many problems of the same category?
    • How to ensure variability and flexibility in our task assignments?

How to ensure individualization?

How can we assure flexibility and variation with limited teaching resources? As a matter of fact, this question was one important motivation for me to start learning R and to look into data science. I want to explore the potential of learning analytics for individualized learning. But here, in this blog entry,  I will not talk about learning analytics but limit my suggestions to general teaching strategies.

In the Coursera MOOC on R Programming we had mainly three types of assignments:

  • Using swirlThe swirlify R package provides a comprehensive toolbox for swirl instructors. Students can install the swirl R package with the standard <install.packages(„swirl“)> command to get a learning environment inside R and programmed in R. Although this seems to me a very interesting approach, the solution is focussed narrowly on one specific subject area: R programming. Furthermore, it was not a mandatory part of the course and had therefore not much relevance in the course design.  I will talk about different strategies for learning R in other episodes and will here discuss problems on a more general level which are independent of the subject area.
  • Multiple Choice Test: This may seem boring, but actually, these tests are in the MOOC I attended pretty well done, very motivating and provided much room for flexibility. Students are provided with a real data set and get some specific questions to solve, like ranking hospitals according to certain characteristics. Students are free to find their own solution. In the test, we were asked questions like „What hospital in a specific state is on a specific rank according to a specific characteristic?“ You couldn’t answer this kind of questions without correct solutions. The different answer possibilities didn’t give you a clue for the right answer. They did only help you to judge your solution: If your answer did not appear in the multiple answers possibilities then you knew that your programming solution was not correct and you could start to look for the error. This is a nice example how assignments could provide a new learning opportunity!– But still: This kind of assignment do not provide flexibility according to the background knowledge and working experiences of the learners. For that case, there had to be different data sets, for me, for instance, a data set from an educational subjet-matter, maybe data about schools to mention a concrete example.But how could we as teachers do the grading with so many different feasible tasks? We cannot judge as many different assignments as different interested students we do have in the class. Right, we – as teachers – have not the necessary resources, but how about the (self-determined) learner themselves? 
  • Peer assignment: I have heard already many positive things about peer assignment in MOOCs were a multitude of people are enrolled. But the actual implementation as I had experienced it, was very disappointing. Instead to provide more adaptivity these peer assignments even restricted flexibility: I had to wait for other learners to finish their course work so that the would need my assignment as a peer. During this waiting time, my booked (and paid!) learning time was not stopped but continued to run. (The new business model in Coursera is not payment for finishing the course, but payment per month. I will discuss this model in another episode.)Another disappointment for me was, that all peer assignments I have experienced so far, were just formal judgments in the manner of: „Did the peer provide a readme file? Did s/he comment their programming functions? “ We were explicitly instructed not to ran their programs and to see if they worked but had instead just to evaluate if their appearance and structure seemed to be correct!

Individualization through different model solutions

Under the premise to support the self-determined learner I think we could improve the role of peer assignment. I imagine a three step solution:

  1. Teachers provide students with a concrete solution based on a real data set. This is not additional work as one needs the solution of a concrete example for the multiple choice test anyway.
  2. Teachers provide students with a more abstract solution, e.g. a formal pattern of a solution. „Pattern“ in this context is a specific notion, a terminus technicus, borrowed from the field of pattern theory inspired by Christopher Alexander. I cannot go into details of this approach here, so some pointers will have to suffice:
    1. Helmut Leitner: Pattern Languages and Christopher Alexander: Introduction and Crash Course (Video
    2. Helmut Leitner: Pattern Theory: Introduction and Perspectives on the Tracks of Christopher Alexander (Book)
    3. PURPLSOC: In Pursuit of Pattern Language of Societal Change (Conference)
  3. Students are engaged in groups to check the solution of their peers. They fill their specific parameters into the model solution run the program to see if it works.

It may seem that this solution only works within a formalized learning subject, like programming languages. But I believe that patterns do work everywhere, even in the Humanities. In not formalized cases, teachers would have to provide several different model solutions. In comparing diverse model solutions with the own outcome, students would not only get a better understand of the problem but could also see what different approaches there are possible. 

How to build up a pool of different model solutions?

helpful tipssI know that the critical factor to realize my suggestion is the necessary pool of model solutions. Even if these solutions have to be worked out just once, it would need a lot of time and effort to develop them.

But here again, we could rely on the self-determined learner. Why not design the learning assignments in a way that they result in suggestions for new model solutions? Currently, there is much tutorial work required to answer all the different questions in the fora accompanying MOOCs. Part of this effort could be used to evaluate if some solution from students could be taken as model solutions. Even if they would still need some improvements or enhancements, they would not only aggregate in a relatively short time into a pool of different model solutions but would also provide learner from different subject areas with more motivating examples using their own field of expertise. 

This approach is not new but used anyway in all the fora I have seen. Tutors write special posts where they try to clear up common misunderstandings in a more general form. They could use part of their time to revise solutions from students. I do not mean, that we as teachers have to do this challenging task immediately and completely in the first course. No, I am thinking to build up this pool gradually. With every new course, we should look for another model solution with a different approach and from a different subject area.

It would be also inspiring for students to get the chance that their work on the assignments could be upgraded to a model solution. Course after course we would enlarge our database of model solutions which we could offer not only for the next course but also as additional learning material for public use (e.g. as OER = Open Educational Resources). 

Teaching self-determined learners: Summary

The following list summarizes my suggested procedure.

Activities before the first run of the course:

  1. Provide material which helps students to build up meta-skills for asking (the right) questions and to find support for their problems.
  2. Design a prototypical example with a solution which is representative for the intended learning outcomes.
  3. Develop a more abstract model solution (pattern), which is suitable to serve as a template for comparisons. 
  4. Research material from different subject areas which can be used as specific instantiations (e.g. applications or implementations) of the intended learning outcome.
  5. Prepare this material in a way that it can be used as a starting point for a variety of task assignments from which students can choose from. (In the case of R programming this could be different data sets from one of the many different open repositories addressing a variety of subject areas, e.g. health, population, education, environment, governmental administration, traffic, economy, politics etc.)

Activities during the course:

  1. Offer assignments with materials from different disciplines.
  2. Offer students the model solution and explain how to use it.
  3. Form groups of students for peer assessment.
  4. Look into those evaluations which did not agree with their assessment and check if a bad design of your assignment is the reason.
  5. Look into some  (maybe 10 or so) of the correct judged solutions provided by students and evaluate if they could be used as additional model solutions.
  6. Find two to five solutions which could be used (maybe with some improvements) to function as additional model solutions for the next course.

Activities after the course:

  1. Revise and improve your model solution when necessary.
  2. Enhance some solutions you found in step 6 above.
  3. Add this new material to your assignment pool and continue with step 5 of the course preparation with the new cycle of activities.

 

Veröffentlicht unter Forschung, Lehre/Studium, Weiterbildung | Verschlagwortet mit , , , , , , , | Hinterlasse einen Kommentar

Reports from an adventurous learning journey (Part 1)

journey1Beginning with December – when in a blog entry I recommended a book on Machine Learning with R – I initiated a new personal enterprise: Learning the statistical programming language R to acquire competencies of a data scientist. With „learning enterprise“ I do not mean to get just interested in a new subject, to read from time to time a relevant book and to look into some web-based tutorials. No, with „enterprise“ I mean a much bigger undertaking, to focus and concentrate several months on a systematic study for a new set of qualifications. 

I started with a nine-course introduction to data science, taught by three professors of  John Hopkins University and offered via the MOOC-platform Coursera. After I finished successfully two courses with certificates I turned impatient with teaching style and course philosophy.  My dissatisfaction was not so much caused by these professors or by this special course design but had more abstract reasons: As an experienced adult learner with a very attractive job I had no need to provide evidence of some acquired general qualifications as most of the course participants did. I was rather looking for some kind of Coursera-Certificate-ToolboxPersonal Knowledge which I could combine with my own life and working experiences.  After a long time again in the learner role, I found it very strange that I had to spend much time on material arranged by other people which I  could not need and had, on the other hand, to learn material superficially or to skip altogether, which was very useful for me. 

To exemplify the situation more in detail: In the third course on Getting and Cleaning Data we had to learn different ways to get data into the R environment: To download it with URLs, to scrap it from web pages, to load it from Excel sheets, to collect it via an API. But – for instance – we didn’t learn how to get data from an SQL database. I appreciate Coursera-Certificate-R-Programmingthat all these different methods are potentially important and as a data scientist one should know how to apply them. I also understand that it is impossible to learn all the different cases in detail. But I disagree that the best teaching method is an exemplary journey through some of these potentially important methods. A teaching strategy which would have better suited me would haven been a systematic and complete list of all methods with their pointers to the relevant R packages and supplemented with some prototypical program snippets to get started with. After getting a systematic overview and helpful material for future usage, one should have the opportunity to choose two or three methods and learn the nitty-gritty in practical assignments.

How to support the self-determined learner?

 

Consequently, I stopped my course attendance and started to look for tutorials, courses and other learning material on my own. I have to confess that I didn’t know how exciting but also how difficult this self-paced and self-determined learning approach was respectively is. Between us educators, we are talking routinely about self-determined learning , but it is quite a different thing to experience related problems yourself.

 

On a non-regular basis, I will share my experiences from this adventurous learning journey in a series of blog comments. This was the first one.

References

Veröffentlicht unter Lehr-/Lern-/Werkzeug, Persönliches, Weiterbildung | Verschlagwortet mit , , , | Hinterlasse einen Kommentar

Bildung für eine joblose Gesellschaft

In diesem Beitrag versuperintelligencetrete ich die Ansicht, dass die Singularitätshypothese auch für den Bildungsbereich gültig ist. Der Begriff Singularität stammt eigentlich aus der Astronomie, wo eine Situation gemeint wird, die nicht mehr kalkulierbar und abschätzbar ist. So wird z.B. in der klassischen astronomischen Theorie davon ausgegangen, dass in sogenannten schwarzen Löchern  unkalkulierbare Bedingungen herrschen, weil die Gravitation so stark ist, dass keine Kommunikation (weder über Masse noch über elektromagnetische Strahlung, wie z.B. Licht) möglich ist. Wir können also nicht wissen, was in einem schwarzen Loch wirklich passiert. Alleine die Idee, dass beliebige Massen zu einem Null-Volumen zsuammengepresst werden, ist kaum vorzustellen.

Superintelligente Maschinen?

Der Singularitätsbegriff wird nun aber auch für die kommende technische Zukunft verwendet. Im Allgemeinen wird damit die Entwicklung superintelligenter Maschinen gemeint, die für uns Menschen unvorstellbare kognitive Kompetenzen  haben werden. Wenn diese Annahme richtig ist, dann wird die weitere technologische – aber auch gesellschaftliche – Entwicklung nicht mehr abschätzbar und damit auch nicht mehr steuerbar. Das nachfolgende Zitat soll helfen diese Position zu verdeutlichen:

The Singularity is the hypothetical future creation of superintelligent machines. Superintelligence is defined as a technologically-created cognitive capacity far beyond that possible for humans. Should the Singularity occur, technology will advance beyond our ability to foresee or control its outcomes and the world will be transformed beyond recognition by the application of superintelligence to humans and/or human problems, including poverty, disease and mortality. (http://whatis.techtarget.com/definition/Singularity-the)

surviving-aiNamhafte Autoren wie z.B. Ray Kurzweil (The Singularity Is Near: When Humans Transcend Biology), Nick Bostrom (Superintelligence: Paths, Dangers, Strategies) und Calum Chace (The Economic Singularity: Artificial intelligence and the death of capitalism) vertreten diese Hypothese. (Die rein maskuline Verwendung von „Autor“ ist hier kein Gender-Fehler, sondern ich kenne tatsächlich keine Publikation von Frauen, die diese Position vertreten.) Eine Liste einschlägigier Literatur zum Thema „Singularity“ findet sich auf  Goodreads.com.

Natürlich ist diese starke Form der Hypothese umstritten. Sie hat aber immerhin bereits soviel Aufmerksamkeit, Geld und Reputation bekommen, dass eigene Forschungsinstitute sich damit beschäftigen. So hat sich Nick Bostrum, Professor an der University of Oxford am renommierten Future of Humanity Institute auf die Forschungsfrage spezialisiert, wie diese künftige Superintelligenz so programmiert werden kann, dass sie keine Gefahr für die Menschheit darstellt. Seine Schlussfolgerungen sind schockierend, weil solch eine Superintelligenz – wie der Name schon sagt – so intelligent ist, dass sie alle von Menschen vorgesehene Sicherheitsmaßnahmen austricksen wird können. Sie braucht für ihre weitere Entwicklung im Weltall keine Menschen mehr, sondern kann für sich selbst sorgen. Bostrum stellt überzeugend dar, dass selbst ein Verbot von Forschung und Entwicklung zu dieser Frage – was immer man/frau davon halten will – nicht zielführend ist, weil es immer Gruppen/Staaten geben wird, die sich nicht daran halten werden.

Gilt die Singularitätshypothese auch für den Bildungsbereich?

Aber selbst wenn gegen diese starke Version der Singularitätshypothese in Form einer technologisch entwickelten künstlichen Superintellgenz Skepsis angebracht ist, heißt das nicht, dass eine andere gesellschafte Variante der Singularität zu erwarten ist: Durch eine Reihe von technologischen Entwicklungen könnte bereits in einigen Jahren (nicht Jahrhunderten oder Jahrzehnten) die Arbeitslosigkeit soweit ansteigen, dass sie sich zu einer sozialen und ökonomischen aber auch bildungspolitischen Singularität (d.h. Unwägbarkeit) entwickelt. 

In ihrer Aufsehen erregende Untersuchung vertreten Frey und Osborne (Frey, Carl Benedikt, und Michael A. Osborne. „The future of employment: how susceptible are jobs to computerisation“. Retrieved September 7 (2013): 2013.) die Aufassung, dass bis zu 47% der US-amerikanischen Jobs demnächst wegfallen könnten. Es ist ein breites Spektrum an Kompetenzen, das demnächst durch Maschinen übernommen werden könnte:

  • Lebensmittelindustrie: Hier werden beispielsweise Roboter die Zusammenstellung und das Service von Fast Food übernehmen. Erste Installationen gibt es bereits.
  • Transportwesen: Das selbstfahrende Auto ist seit Jahren im Straßenverkehr eingesetzt und hat bereits Millionen von Kilometern unfallfrei zurück gelegt. Die Technologie ist bereits ausgereift, es fehlen noch die gesetzlichen Regelungen.
  • Professionen: In dem sehr lesenswerten Buch (Susskind, Richard, und Daniel Susskind. The Future of the Professions: How Technology Will Transform the Work of Human Experts. 1. Aufl. OUP Oxford, 2015.) wird nachgewiesen, dass selbt hoch angesehene Expert/innen wie z.B. der Arzt-, Anwalts- und Lehrberuf nicht von der Arbeitsplatzrationalisierung verschont bleiben. 

Arbeitslosigkeit betrifft nach diesen Prognosen nicht nur einfache manuelle Jobs  Verrichtungen in der Maschinen-Industrie, Lagerwesen, Buchhaltung, sondern auch eine Reihe [anderer Tätigkeiten] hoch angesehener Berufe, wie die nachfolgende exemplarische Aufzählung durch die Erwähnung von Professionalisten deutlich macht: 

  • future-of-professionsAnwaltsberuf: Ein großer Zeitaufwand bei Anwält/innen ist es, entsprechende vergleichbare Fälle zu finden und für den Prozess aufzubereiten. Dieses Durchsuchen von Text-Datenbanken können Softwareprogramme inzwischen mit einer sehr geringen Fehlerhäufigkeit viel schneller als Menschen.
  • Lehrberuf: Vergleichstests haben ergeben, dass die Auswertung durch maschinelle Texterkennungssystem selbst bei der Bewertung von komplexen geisteswissenschaftlichen schriftlichen Essays nicht mehr von der Bewertung von erfahrenen Lehrer/innen zu unterscheiden ist. Das Argument („Aber die Maschine versteht nicht, was sie da liest oder tut!“) ist bedeutungslos, wenn die praktischen Ergebnisse dieselben sind.
  • Arztberuf: Dass Gesundheitsberufe wie Krankenpfleger/innen einer Rationalisierungswelle entgegensehen (z.B. indem Roboter die Tabletten austeilen, Patienten umlegen etc.), ist bereits absehbar. Bei uns gibt es  – zum Unterschied beispielsweise zu Japan – noch kulturelle Vorbehalte im Umgang mit Robotern. Die Technologie ist aber bereits ausgereift. Aber auch komplexe maschinelle Diagnosen stehen qualitätsmäßig in vielen Fällen erfahrenen Ärztinnen nicht mehr nach und könnten demnächst durch Experten- und Bilderkennungssysteme – zumindest in der Vorbegutachtung – übernommen werden.

Bildung kann steigende Arbeitslosigkeit nicht stoppen

Eine der Gründe warum ich Bildungswissenschaftler geworden bin, liegt darin, dass ich Bildung immer als eine Maßnahme gegen die nächste technologiosche Rationalisierungswelle verstanden habe. Maschinen rationaliseren vor allem die monoten, leicht automatisierbaren Arbeitspätze weg, an denen überwiegend Menschen mit geringer Bildung und Qualifikation arbeiten. Nach dieser Ansicht müssen wir ständig darum bemüht sein, das allgemeine Bildungsniveau zu heben, damit die Arbeitslosigkeit eingedämmt werden kann. Jede Rationalisierungswelle schafft auch wieder neue Arbeitsplätze, weil es Personen geben muss, die diese neuen komplexeren Maschinen bauen, programmieren und bedienen. 

Aber stimmt das (noch)? Ist ein Bildungsaufstieg für alle im gleichen Maße möglich oder wird die Luft „oben“ nicht immer dünner? Gibt es – um eine Metapher zu bemühen – parallel verlaufende (Aufstiegs-)Leitern oder haben wir es mit einer Pyramide zu tun, die nach oben immer schlanker wird?

Rationalisierung hat es schon seit Jahrzehnten, ja Jahrhunderten gegeben und wir haben trotzdem genügend Arbeit gehabt. Warum also soll sich diese Situation jetzt ändern? Welchen Grund gibt es jetzt dafür pessimistisch zu sein? Nun, der einfache Grund liegt darin, dass wir jetzt eine Entwicklung erreicht haben, wo Maschinen und künstliche Intelligenz soweit entwickelt sind, dass sie große Bereiche unserer Arbeitswelt flächendeckend und gleichzeitig übernehmen können. Wir befinden uns sozusagen auf der zweiten Hälfte des Schachbretts, wo wir mit der Verdoppelung von Reiskörnern gemächlich begonnen haben (1, Korn, 2 Körner, 4 Körner etc.) aber inzwischen die die technologischen Entwicklung ein Niveau erreicht hat, das bisher ungeahnte Möglichkeiten nun Realität werden lässt.

Welche Bildung braucht eine joblose Gesellschaft?

In einem aufgezeichneten Vortrag an der Hamburger Universität habe ich meine Gedanken zum Thema Bildungsingularität zum ersten Mal öffentlich dargestellt. Es gibt dazu sowohl eine Prezi-Präsentation als auch einen Blogkommentar von Gabi Reinmann, auf deren Einladung ich in Hamburg war. Ich habe diesen Beitrag (traditionell) damit begonnen, dass wir am Department einige Projekte zur Validierung von non-formalen und informellen Wissen durchführen bzw. bereits abgeschlossen haben (z.B. VALERU). Wir vertreten dabei die Theorie, dass die Anerkennung von non-formalen und informell erworbenen Kompetenzen einem methodisch einwandfreien und nachvollziehbaren Prozess folgen muss. Kompetenzen, die  anerkannt werden, sind dann jedoch völlig gleichwertig einer formalen Qualifikation zu halten. Es gibt also dann keine Zweigliedrikeit oder Unterschied von formal erworbenen Kompetenzen und jenen, die  nicht im staatlichen Bildungssystem erworben sind. Kompetenz bleibt Kompetenz, egal aus welcher Quelle sie stammt.

BIEN-congress-2107So fortschrittlich und integer unser Ansatz auch sein mag: Welchen Bedeutung wird eine Qualifizierung für den Arbeitsmarkt – sei sie nun über unser formales Bildungssystem, durch Weiterbildung (non-formal) oder über Praxiserfahrungen (informell) vermittelt – für eine joblose Gesellschaft haben? Ich meine damit nicht, dass Arbeit insgesamt obsolet wird, sondern ich beziehe mich auf Erwerbsarbeit, auf über den Arbeitsmarkt angebotene Lohnarbeit. In unserem kapitalistischen System wird diese Arbeit vorzugsweise so vergeben, dass sie möglichst viel Profit einbringt. Und hier sind Robotern den Menschen einfach überlegen: Roboter können rund um die Uhr arbeiten, werden nicht krank, sind nicht mit ihren Arbeitsbedingungen unzufrieden, verlangen keine Lohnerhöhung und könnten bei weniger Arbeit ohne Probleme stillgelegt werden bzw. bei stärkerem Arbeitsanfall wieder aus dem Lager hervorgeholt werden.

Finnland: Groß angelegtes sozialwissenschaftlich begleitetes Projekt zum unbedingten Grundeinkommen

Finnland: Groß angelegtes sozialwissenschaftlich begleitetes Projekt zum unbedingten Grundeinkommen

Ich gebe zu – und das habe ich auch in Hamburg erwähnt –, dass ich persönlich keine Lösung für diese mögliche Zukunft habe. Welche Probleme und Auseinandersetzungen sind in einer Gesellschaft zu erwarten, wo die Hälfte der arbeitsfähigen Bevölkerung ohne Job ist (d.h. wir klammern Kinder, Jugendliche, Pensionist/innen vorerst mal aus)? Eine mögliche Perspektive könnte mit einem unbedingten Grundeinkommen geschaffen werden. Nicht erst seit der schweizer Abstimmung ist diese Idee virulent geworden. Es gibt dazu bereits großangelegte abgeschlossene Projekte in realen Settings und eine weltweite wissenschaftliche Gemeinde, die sich im internationales Basic Income Earth Network (BIEN) Forschungsnetzwerk zusammen geschlossen hat.

In ihrem Weblog fasst Gabi nicht nur meine Schlussfolgerungen, sondern meine Intention zusammen:

Was, wenn es nicht mehr für alle oder zumindest die meisten auch Erwerbsarbeit gibt, wenn nur mehr 60, 50 oder 40 Prozent der Bevölkerung Arbeit haben? Wie muss eine Hochschulbildung aussehen, die dann noch sinnvoll ist?  …was ist –, wenn wir Hochschulbildung nicht mehr vor allem als eine (wie auch immer geartete) akademische Ausbildung, sondern ganz überwiegend als eine Form der Persönlichkeitsbildung gestalten müssen, weil eine Ausbildung zum Zwecke der Erwerbsarbeit sozusagen ins Leere führt?

Und weiter heißt es bei ihr – aber das könnte wörtlich, auf Punkt und Beistrich,  auch von mir stammen  😉 

Ich bin nach wie vor dafür, diese Frage als Gedankenexperiment im Konjunktiv zu stellen und in solchen Gedankenexperimenten ernsthafte Gesellschafts-, Arbeits- und Bildungsentwürfe – ja gerade auch an Universitäten – zu entwickeln, abzuwägen, zu simulieren, wieder zu dekonstruieren und neu zu kreieren mit dem Bewusstsein, dass wir es (auch) sind, die an dieser unserer Gesellschaft mitgestalten. Ich bin weniger dafür, diese Frage so zu formulieren, dass sie uns Angst einjagt, fatalistisch macht und letztlich ohnmächtig werden lässt angesichts eines unausweichlichen Sachzwangs, den uns globale Unternehmen, vielleicht auch Staaten, gerne nahelegen.

Diese Überlegungen sind übrigens der Grund dafür, dass ich begonnen habe, mich von mikro(didaktischen) Fragestellungen wieder verstärkt (makro)bildungspolitischen Überlegungen zuzuwenden. So wie ich in den 80er-Jahren als promovierter Soziologie nicht nur interpretierend am Rande des Zeitgeschehens stehen wollte, sondern im Bildungsbereich einen konkreten und vor allem praktisch umsetzbaren Handlungsbedarf gesehen habe, so kehre ich jetzt wieder zu den abstrakteren Fragen mit gesellschaftspolitischer Relevanz – vor allem aus praktischen Gründen – zurück: Was müssen wir tun, damit wir das weitere Anwachsen sozialer Ungleichheit, Radikalisierung, oder gar ein gewaltsames Auseinanderbrechen unserer Gesellschaften verhinderen können?

Veröffentlicht unter Auftritt, Forschung, Gesellschaft, Weiterbildung | Verschlagwortet mit , , | 16 Kommentare

eEducation Werkzeuge und Methoden

eEdcuation: Bildungstechnologische Werkzeugkiste

eEdcuation: Bildungstechnologische Werkzeugkiste

In unserem Masterlehrgang eEducation werden eine Reihe moderner Software-Werkzeuge  eingesetzt. Unser Ziel dabei ist es, dass die Studierenden nicht bloß ein kritisch-reflektiertes Verständnis zu modernen Bildungssettings entwickeln, sondern auch in der Lage sind, sie selbst zu gestalten, zu entwickeln und zu implementieren. 

Der Umgang mit vielfältigen Software-Werkzeugen stellt sowohl neue Anforderungen an unser Team aber auch an unsere Studierenen. Wie ich in einem früheren Beitrag berichtete, haben wir am IMB eine Portfolio-Webseite des Departments eingerichtet, wo wir auch studentische Arbeit vorstellen und besprechen (werden). Dieser Artikel endet mit einer Checkliste, wie Fragen richtig gestellt werden können. Nur so ist es möglich, dass wir schnell und sachkundig bei auftauchenden Problemen im Umgang mit diesen modernen Werkzeugen helfen können.

Unsere Server-Installationen

Mit der Zeit hat sich hier eine recht vielfältige Toolbox an Server-Installationen angesammelt, die ich hier kurz – im Zusammenhang mit den Lernzielen – vorstellen möchten. 

  1. Lernplattform Moodle: Wir setzen nicht nur in unserem Blended-Learning Arrangement selbst Moodle ein, sondern betreiben auch einen eigenen Moodle-Server. Damit bekommen Studierende die Möglichkeit nicht nur die „Innereien“ (das sog. „Backend“) von Moodle kennenzulernen, sondern können auch selbst eigene Kurse entwickeln.
  2. E-Portfolio-Software Mahara: Zu E-Portfolio können wir nicht nur etliche Publikationen vorweisen, sondern wir sind auch führend in internationalen Projektkonsortiums bei der (Weiter-)Entwicklung tätig. Andrea Ghoneim ist unsere international ausgewiesene Spezialistin und selbstverständlich betreiben wir auch einen Lehr- und Testserver, der international breit genutzt wird. Mahara ist in das eEducation-Kurssystem – genau wie Moodle – integriert und steht den Absolventen und Absolventinnen des Lehrgangs auch nach Ende des Studiums zur Verfügung.
  3. MediaWiki:  Die dem Online-Lexikon Wikipedia zugrunde liegende Software wird im Studiengang immer dann eingesetzt, wenn unmittelbare Kollaboration zu bestimmten Themen in Kleingruppen stattfindet. Wir verwenden dazu sowohl eine öffentliche zugängliche Installation zur Präsentation von studentischen Arbeiten im Sinne der Open-Access-Bewegung als auch ein internes Wiki, das nur innerhalb des Lehrganges zugänglich ist.
  4. WordPress: Das Department hostet eine WordPress-Installation, damit Studierende Webseiten aber auch interaktive Lehr- und Lernprogramme in ihrer eigenen Instanz entwickeln können. Besonders zu erwähnen ist, dass wir dafür mit Namaste! LMS als auch  Watu Pro auch kommerzielle Erweiterungen (Plugins) zur Verfügung stellen. Damit können interaktive Kurse, Quizzes und Gamification-Anwendungen mit Leaderboards, Badges etc.realisiert werden. Bezüglich diesen beiden Plugins sind wir die deutschsprachige Referenzstellen und auch verantwortlich für die Übersetzung in die deutschsprachige Version. Isabell Grundschober undich haben die beiden Erweiterungen bereits in internationalen Projekten eingesetzt und können daher Studierenden bei der Projektarbeit gut unterstützen.
  5. Booktype: In einigen Modulen erstellen Sie Ihre schriftliche Arbeit als ein Kapitel eines gemeinsamen Buches. Booktype ist eine webbasierte Open Source Plattform die nach dem Single-Source Multi-Channel Publishing funktioniert. Dabei wird von einem Ausgangsdokument in die verschiedenen gewünschten Zielformate publiziert. Kein zusätzliches Formatieren mehr, wenn Sie Ihr Printbuch als E-Book herausgeben wollen oder ihr Buch-PDF für Bildschirmbetrachtung optimieren wollen. Der Zugang zu unserer Plattform ist unter donau-uni.booktype.pro frei und öffentlich zugänglich.
  6. ThesisWriter: Im Rahmen einer Forschungskooperation mit der Zürcher Hochschule für Angewandte Wissenschaften können Studierende eine interaktive Lernumgebung nutzen, die das Schreiben von Abschlussarbeiten (Bachelor/Masterthesen) unterstützt. Zwar müssen Sie natürlich weiterhin Ihre Masterthese selbst schreiben ;-), aber ThesisWriter hilft Ihnen den dafür notwendigen Forschungskreislauf systematisch zu durchlaufen und bietet Formulierungshilfen zum wissenschaftlichen Schreiben und Formulieren an.

Weitere Werkzeuge und Unterstützungshilfen

Zu den oben angeführten Werkzeuge betreiben wir selbst (bzw. in Kooperation) eigene Serverinstallationen. Aber das ist natürlich nicht die Liste aller Werkzeuge, die wir im Lehrgang einsetzen. Die Liste wird ständig erneuert und hängt auch zum Teil von der Expertise unserer Referent/innen ab. Trotzdem möchte ich mit PowToon und GoAnimate zwei neue Zugänge im Bereich der Animationssoftware erwähnen, wo wir Lizenzen für Studierende besitzen und auch mit Wolfgang Rauter einen Spezialisten für Multimedia-Design am Department haben.

Die oben aufgelistete Serverfarm muss natürlich auch gewartet und betreut werden. Diese verantwortungsvolle Aufgabe wird von Gregor Pirker übernommen. Herr Pirker ist es auch, der die Instanzen für die Studierenden freischaltet und Studierende bei technischen Problemen unterstützt.

Die richtigen Fragen stellen

Wenn unsere Studierenden vermehrt eigenständig Produkte mit komplexer Software entwickeln, entsteht auch ein neuer Bedarf: Punktgenaue Hilfestellung zu auftauchenden Problemen.

Das Problem dabei ist, dass Studierende sich häufig ohne die entsprechenden Kontextinformationen an uns wenden. Es wird weder das Problem genau beschrieben, noch ein reproduzierbares Beispiel, wo das Problem auftritt, übermittelt. Manchmal wird sogar vergessen uns die URL  und den Zugang zu übermitteln, damit wir dann wirklich sachgerecht helfen können. 

Ich habe daher nachfolgend eine kleine Checkliste zusammengestellt, deren Beachtung sowohl für hilfesuchende Studierende aber auch für uns viele Rückfragen und Zeit erspart:

  • Beschreiben Sie das Problem detailliert:
    • Was haben Sie eingegeben und was ist dann passiert?
    • Warum glauben Sie war das nicht die richtige Reaktion des Programms?
    • Was hätten Sie anders erwartet?
    • Was wollen Sie erreichen? 
    • Warum ist die Lösung des Problems für Sie wichtig?
  • Reproduzierbarkeit des Problems sicherstellen:
    • Übermitteln Sie ein einfaches Beispiel, das – auf das Wesentliche reduzierte – das Problem darstellt und für uns nachvollziehbar macht.
    • Verwenden Sie dazu Screenshots oder andere Medien der Informationsübermittlung.
    • Geben Sie uns Informationen über die technische Infrastruktur die Sie verwendet haben, als das Problem aufgetreten ist. (Hardware, Software, Betriebssystem inkl. aktuell verwendeter Versionsnummer.)
    • Nachtrag 15.3.2017: Besonders wichtig ist es, dass Sie für die Reproduzierbarkeit alle speziellen Zusätze (Plugins, Einstellungen) so zurücksetzen, dass Sie eine Standardversion erhalten. Nur so kann sichergestellt werden, dass Ihr Problem nicht durch das Zusammenwirken verschiedener Erweiterungen verursacht wird.
  • Beschreiben Sie Ihre Lösungsversuche:
    • Was haben Sie alles getan um selbständig eine Lösung zu finden?
    • Wo im Manual haben Sie nachgeschaut? In welchen Internet-Foren haben Sie gesucht?
    • Unter welchen Stichworten haben Sie bereits im Internet recherchiert? (Sie sollten nicht verlangen, dass wir lmgtfy betreiben, sondern es selbst tun. – LMGTFY ist Internetslang und bedeutet „Let Me Goolge That For You“.)
    • Haben Sie auch schon an andere Lösungswege nachgedacht? Einige davon bereits versucht. Mit welchen Ergebnissen?

Wenn Sie die obige Liste abschreckt, weil Sie zeigt, dass Sie Arbeit in eine gute Frage investieren müssen, dann denken Sie daran, dass Sie damit ein wichtiges Lernziel verfolgen.

Zu lernen die richtigen Fragen richtig zu stellen ist wichtiger als sich für (einige) Probleme fertige Lösungen eingeprägt zu haben!

 Außerdem ist obige Liste bloß eine kurze Zusammenfassung. Eine ausführlichere Variante finden Sie bei Eric Steven Raymond unter How To Ask Questions The Smart Way (PDF). Nachtrag, 15.3.2017: Dieses umfassende Dokument gibt es auch in einer deutschen Version: Wie man Fragen richtig stellt.

 

Veröffentlicht unter DUK, IMB, Lehr-/Lern-/Werkzeug, Lehre/Studium | Verschlagwortet mit , , , | 1 Kommentar