What tools do I use for writing?

Earlier today I was asked about what tools I use when writing. This is not something I have written about here on the blog before, although I do have very strong opinions on my own tools. I actually really enjoy reading about how other people work, so writing about it here may perhaps also be interesting to others.

Text editor: Atom

Most of my writing, whether it is e-mail drafts, meeting notes, or academic papers, is done in the form of plain text files. I use different text editors dependent on what computer/platform I am working on, and that is also one of the beauties of text files. They work everywhere. On my main laptop (running Ubuntu Studio), I primarily use Atom as my main text editor. This is mainly because it is cross-platform, has some plugins that are useful, and has excellent integration with Github.

Most of the time I write using markdown, which is just a structured way to write text files. The nice thing about markdown formatted text files, is that they can easily be converted to other formats using Pandoc. I often have to send off files as either PDFs or DOCX files, and this can easily be done with a terminal command such as:

pandoc file.txt -o file.pdf 

Yes, it is a nerdy way of writing things, but working in a text editor (as opposed to a word processor) is just so much quicker for many things. I use quite a lot of advanced query-replace functions, for example, and then regular expressions are useful. I also like to be able to do multiline editing.

Academic writing: Overleaf

I usually start my academic writing with notes in markdown, but as soon as I start to get into the proper writing mode, I convert into LaTeX. This is also a text-based format, but with a slightly more complex (and also more powerful) syntax than markdown.

Since most of my academic writing these days is collaborative, I almost only work in the web-based LaTeX editor Overleaf. This editor makes it possible for multiple users to work on the same document, and it also handles the compiling into PDFs very nicely. Being a web app, you don’t have to install LaTeX locally on your own computer. This makes it much easier for people to get started with LaTeX than it used to be only a few years ago.

Academic references: Zotero

Zotero is my current reference manager. It is not perfect, but I like that it is cross-platform (and by that I mean Windows, OSX, and Linux), it has a web interface, and it synchronizes between systems. There is a connection from Zotero to Overleaf, but I have found this to be somewhat shaky. So most of the time, I just export a BibTeX file of my complete library from Zotero, and import that .bib file in Overleaf.

Other collaborative writing: Google Docs

When I am writing non-academic texts with others, such as administrative documents, reports, and so on, I typically use Google Docs. I have been using it for several years now, and it really shines when it comes to collaborative writing and editing. I try Office 365 from time to time, but it just cannot compare to the trouble-free collaboration I experience in Google Docs.

Word processor: LibreOffice

When I have to use a normal word processor, it is usually LibreOffice. I never start writing in LibreOffice myself, so this only happens when someone sends me a .docx file that they want me to look at. Fortunately, LibreOffice handles .docx files well most of the time. So I am able to edit documents using “track changes” and send them back to people using MS Word.

In those few cases where LibreOffice does not manage to handle the .docx documents I receive, I connect to a remote desktop at the university and fire up MS Word. This is typically when there are some weird macro functions in the document, or some strange fonts. Fortunately, this happens only once in a while.

Summing up

All in all, I am quite happy with my current set of tools. Relying on text files has worked well for me for many years now. They are also the most future-proof solution I can think of. My software tools will continuously be replaced, but I am sure that plain text files will be around for a long time.

Installing Ubuntu on a HP Pavilion laptop

So I decided to install Ubuntu on my daughter’s new laptop, more specifically a HP Pavilion. The choice of this particular laptop was because it looked nice, and had good specs for the money. It was first after the purchase I read all the complaints people have about the weird UEFI implementation on HP laptops. So I started the install process with some worries.

Reading on various forums, people seemed to have been doing all sorts of strange things to be able to install Ubuntu on HP laptops, including modifying the UEFI setup, changing the BIOS, and so on. I recall that on my Lenovo laptop I had to work quite a bit to turn off all the fancy auto-Windows-stuff.

I am not sure if HP has changed something recently or not, but the final procedure was super-easy: I just hit the F9 button on startup and got a normal “old-school” boot selector. Here I chose the USB drive, and the Ubuntu installer fired up.

I have installed Linux (primarily various Ubuntu versions) on a number of laptops over the years, and it is very seldom that I get into problems with drivers. Also this time things went smoothly, everything worked perfectly right after the install. I think it is important to continue repeating this message, because I still hear people saying that it is tricky to get Ubuntu to play with different hardware. True, there used to be driver issues some years ago, but personally I haven’t experienced that in five years or so.

Which Linux version to choose for a 9-year old?

My 9-year old daughter is getting her first laptop. But which OS should she get started with?

I have been using various versions of Ubuntu as my main OS for around 5 years now, currently using Ubuntu Studio on my main laptop. This distro is based on XFCE, a very lightweight yet versatile OS. The reason for choosing Ubuntu Studio over the regular XUbuntu was to get a bunch of music apps by default. I haven’t been able to explore these as much as I wanted to, unfortunately, primarily due to everything happening at our new centre (RITMO) and master’s programme (MCT).

Even though I like Ubuntu Studio myself, it is not a distro I would install on my daughter’s machine. Buying a new computer with Windows 10 pre-installed, one could argue that it would be best to leave her with that. This may also help her to be more familiar with the computers they are using at school, which run Windows 7 at the moment. But the question in the store about whether I wanted to buy some antivirus-software with the new laptop, was enough to ensure me that a Linux distro would be a better choice.

I have heard that some people like distros such as Edubuntu for kids, but it does not seem to be maintained? After thinking about it for a little while, I have concluded that it is probably useful for a kid to learn to use a normal OS. If you compare how things were a decade or two ago, most modern-day OSes are comparably easy to use anyways.

Finally I decided to make it simple, and installed the regular Ubuntu distro based on GNOME. It looks “modern”, has large icons, and is fairly easy to navigate due to the streamlining of menus, and so on.

Creating circular thumbnails in the terminal

Circular pictures (like the one to the right) has become increasingly popular on the web. We have, for example, included circular pictures in RITMO’s annual report, and we therefore also wanted to use circular pictures in a presentation at our upcoming LARGO conference. The question, then, is how to create such circular pictures?

The circular pictures in the annual report are made through a CSS overlay. So if you try to right-click and save one of those, you will get the original rectangular version. It is, of course, possible to add circular thumbnails in the presentation software, using the circular crop function in PowerPoint or add mask function in Keynote. The challenge with these, however, is that you may get into trouble if you move your presentation from one program to another. I often prefer to make presentations in Google Presentation, and there is no such feature there.

The most bullot-proof solution is therefore to create new circular images. This can be done in photo editing programs, such as the circle image function in GIMP. But for a centre of the size of RITMO (50+ people), and with many people coming and leaving all the time, I would rather prefer an automatic solution. I therefore decided to figure out how to do this in the terminal.

It turns out that Imagemagick comes to the rescue once again. Here is a one-liner for creating a circular PNG image from a JPG file:

convert alexander.jpg \( +clone -threshold -1 -negate -fill white -draw "circle 100,100 100,0" \) -alpha off -compose copy_opacity -composite alexander_circle.png

This will take a regular image like this:

and make it into a circular image like this:

Since the original was a 200x200px image, I used the code “circle 100,100 100,0” in the script to ensure that the circle would be in the centre of the image.

The next step was to extend the script to read all the JPG files in a folder and convert them into circular images. This can be done like this (at least on Ubuntu):

#!/bin/bash

for i in *.jpg;
do
  name=`echo $i | cut -d'.' -f1`;
  convert "$i" \
  \( +clone -threshold -1 -negate -fill white -draw "circle 100,100 100,0" \) \
  -alpha off -compose copy_opacity -composite $name.png;
done

Save the script as circle_image.sh (or whatever else you prefer), make it runable (chmod u+x circle_image.sh), and run it (sh circle_image.sh), and you get a bunch of circular images that you can be used in any program around. Scripting is fun!

Carpentries Train the Trainer

I have spent the two last days at a “Train the Trainers” workshop organized by the Carpentries project. Here I will summarize some thoughts on the workshop, and things that I will take with me for my own teaching practice.

The Carpentries

The Carpentries project comprises the Software Carpentry, Data Carpentry, and Library Carpentry communities, with a shared mission to teach foundational computational and data science skills to researchers. I have taken several Carpentries lessons over the last years, organized by volunteers here at the University of Oslo.

One of the best things about the Carpentry workshops, is that they are very practical. The idea is that you learn some concrete skills, in a hands-on manner. I also like that the workshops are very inclusive. Everyone can participate and in my experience you always find a mix of students, support staff, postdocs and faculty members. It is very rewarding to get acquainted to people outside your regular “bubble”, and it definitely creates a different learning environment than the normal student-oriented semester-long courses. I also think it is healthy for everyone to see professors struggle with the same things as everyone else.

Another great thing about the Carpentries is the focus on short, intensive workshops with a clear focus. This is an example of what I like to call micro-education, as opposed to our regular focus on semester-long courses and year-long degrees. In an ever-changing world, everyone needs to learn new things all the time. I don’t think universities (in general) do enough to meet this need.

Own practice

Inspired by some of the Carpentries courses I had participated in, I decided to develop a carpentry-inspired course myself: Quantitative Video analysis for Qualitative Research. This short workshop is intended as a tutorial for the Musical Gestures Toolbox for Matlab, and was developed with the Carpentries template.

The course material template is but one thing of the Carpentries. There is also a teaching philosophy that I wanted to learn more about. So when I was challenged (and inspired) to become a certified instructor myself, I decided to sign up for the instructor training.

Online instructor training

I am more than averagely interested in new learning methods, so I was curious to see how the Carpentries instructor training was carried out. For the training we were around 20 learners from around the world and two instructors. One of the instructors, Lex Nederbragt, is working at UiO, and he had secured that the six of us that were taken the training from Oslo where gathered in one room on campus. Such a mix of on-campus and off-campus learners is an interesting challenge in itself. Having a sizeable minority of learners being physically co-located creates a different group dynamic than if everyone had been sitting separately.

The video communication was run on Zoom, a platform I have become very acquainted with through the MCT master’s programme. As opposed to Skype, Hangouts, and similar, Zoom consistently works reliably on all platforms (including Ubuntu), and it has great support for handling changing hardware. I have been adding/removing sound cards, headsets, cameras, etc. during Zoom sessions without any issues. Most other solutions would crash or require restarts to make this work.

Another nice thing about Zoom is that allows for creating breakout rooms, which means that a larger group can be split into sub-groups for local discussion. The instructors used this very effectively during the training, splitting us up in smaller groups for exercises throughout the days. The only challenge here was for the six of us sitting physically together. We had to also split up and move into different rooms for these exercises. It worked fine, but it is interesting to reflect on the different experience the Oslo group had from the online participants. Personally I connected primarily with the local Oslo people, and did not interact at all with any of the online participants. I think it might have worked better for the whole group if everyone had been sitting separately. That way we could all have collaborated more easily.

Take-aways

Some of the most interesting things I picked up during the training:

Mental models: It is important to identify the different mental models that learners may use for any given task. These can be used as the starting point for developing better formative assessment, such as creating good wrong answers to multiple choice tests. Rather than just making randomly wrong answers, they should be based on different mental models that one may assume that the learners may have.

Developing skill: Carpentries embrace the Dreyfus model of skill acquisition and the need to move upwards through Bloom’s taxonomy. While I generally agree with this, I often like to start on top of the Bloom pyramid. In my experience, having people feel that they “master” a tool quickly often help in making them interested in learning more about the underlying concepts. Not everyone wants to become software engineers, most people just want to learn enough to solve their problem.

Concept maps: This is a tool to help develop a complete lesson through drawing a picture of someone‚Äôs mental model of a domain: facts are bubbles, and connections are labelled arcs. It is particularly important to explain what the relationship is. Planning how different parts of a course is interconnected is very important, but is something that many of us don’t spend enough time on, I think.

Teach as a learner: This is related to using the mindset of a learner when teaching. Acknowledging your faults as a teacher may be a good strategy for helping students learn more themselves.

Never teach alone: I fully agree with this one. Teaching together helps identify learners that struggle with something, and it is a good way to develop better teaching practice with a colleague. The challenge, of course, is that we usually don’t have the resources available for two teachers for most university courses.

Teach slowly: the live coding strategy employed at Carpentries is an effective way of slowing down the teacher, and makes it easier to follow along.

Make and solve errors: live coding also means that errors will have to be handled on the fly by the instructor. There is a lot of learning involved in seeing someone else troubleshoot code, so this should be embraced. I have been live coding as a teacher for more than a decade now, so I am very used to it. But I still remember how challenging it was to get started with all the realtime, public error-handling in the beginning.

Code of conduct: The Carpentries are very conserned about being an inclusive community. Thus the code of conduct is easily available on the web pages, and it is also explicitly mentioned at the beginning of lectures. I think this is something that should be embraced more generally in teaching.

Feedback strategies: There is a very structured approach to feedback in Carpentries:

  • Feedback is delivered in the form of pre-workshop and post-workshop questionnaires. This is useful to learn about the learners’ skills before the course, but also to follow their progression from beginning to end.
  • Minute cards are used before lunch with the focus on writing down one positive thing and something that could be improved.
  • 1up-1down evaluations are used to receive oral feedback from each of the learners.

Stick-it notes: We didn’t use it during the instructor training, but the use of stick-it notes is another “feature” of Carpentries. When carrying out tasks, learners put a yellow stick-it on their laptop when they are done, and put a read if they have questions. This is an efficient way of ensuring that people are on track or have problems.

Summing up

All in all it was very interesting to take part in the instructor training. I have been doing many different types of teacher training over the years, but this one was by far the most practical and hands-on. As such, it fits nicely into the Carpentry philosophy: provide hands-on tools for real-world problems.

I am looking forwards to developing and running my own Carpentry-courses in the coming years, and I am also quite sure that I will use several of these methods in other teaching as well.