Commit f2a9522c authored by ScottWNesbitt's avatar ScottWNesbitt

Added posts from writing blog; updated posts from open source blog

parent 39140b29
layout: post
title: Getting that wiki feeling on the desktop with Zim
published: true
<p align="center"><img src="{{ site.baseurl }}img/iStock_000009897569XSmall.jpg" alt="'Wiki' spelled out with keyboard keys and with pens and pencils pointing at it" /></p>
There's no denying that a wiki can be an very useful piece of software. You can do so much with one &mdash; write notes and drafts, collaborate on projects, even build complete websites. And more.
I've used more than a few wikis in the past, either for my own work or at various contract and full-time gigs I've held. While traditional wikis are fine, I really like the idea of [desktop wikis]( They're small, easy to install and to maintain, and easy to use. And, as you've probably guessed, there are a number a desktop wikis available for Linux.
Let's take a look at one of the better desktop wikis: [Zim](
## Getting going
You can either [download](
) and install Zim from the software's Web site, or do it the easy way and install it through Synaptic. Once it's installed, start it up.
A key concept in Zim is notebooks. They're like a collection of wiki pages on a single subject. When you first start Zim up, it asks you to specify a folder for your notebooks and the name of a notebook. Suggests **Notes** for name, and **~/Notebooks/** for the folder. Change that if you want.
<p align="center"><img src="{{ site.baseurl }}img/zim1.png" alt="Adding a notebook to Zim" /></p>
When you set the name and the folder for your notebook, click **OK**. You get what's essentially a container for your wiki pages.
<p align="center"><img src="{{ site.baseurl }}img/zim2.png" alt="An empty notebook" /></p>
## Adding pages to a notebook
So you have a container. Now what? You start adding pages to it, of course. To do that, select **File > New Page**.
<p align="center"><img src="{{ site.baseurl }}img/zim3.png" alt="Adding a new page to a Zim notebook" /></p>
Enter a name for the page, and then click **OK**. From there, you can start typing to add information to the page.
<p align="center"><img src="{{ site.baseurl }}img/zim4.png" alt="A new wiki page" /></p>
Zim has a number of formatting options, including:
* Headings
* Character formatting
* Bullet and numbered lists
* Checklists
You can also add images and attach files to your wiki pages, and even pull in text from a text file.
### Zim's wiki syntax
You're not limited to using the toolbar and menus to add formatting to a page. If you're old school, you can also use wiki markup.
The markup that Zim uses is based on the markup that's used with [DokuWiki]( It's essentially [WikiText]( with a few minor variations. To create a bullet list, type an asterisk. Surround a word or a phrase with two asterisks to make it bold.
## Adding links
If you have a number of pages in a notebook, you can easily link between them. There are two ways to do that.
The first way is to use [CamelCase]( to name the pages. Let's say I have a notebook called **Course Notes**. I can name the notebook for my JavaScript course **JavascriptCourse** and when I want to link to it from another page in the notebook, I just type *JavascriptCourse* and press the space bar. Instant hyperlink.
The second way is to click the **Insert Link** button on the toolbar. Type the name of the page that you want to link to in the **Link to** field, then select it from the list of options that displays, and then click **Link**.
<p align="center"><img src="{{ site.baseurl }}img/zim5.png" alt="Inserting a link" /></p>
I've only been able to link between pages in the same notebook. Whenever I've tried to link to a page in another notebook, the file (which has the extension .txt) always opens in a text editor.
## Exporting your wiki pages
There might come a time when you want to use the information in a notebook elsewhere &mdash; say, in a document or on a web page. Instead of copying and pasting, and losing formatting, you can export your notebooks pages to one of the following formats:
* LaTeX
* Markdown
* ReStructuredText
To do that, click on the wiki page that you want to export. Then, select **File > Export**.
<p align="center"><img src="{{ site.baseurl }}img/zim6.png" alt="The first export window" /></p>
Decide whether to export the whole notebook or just a single page, then click **Forward**.
<p align="center"><img src="{{ site.baseurl }}img/zim7.png" alt="The second export window" /></p>
Select the file format that you want to save the page or notebook as. With HTML and LaTeX you can choose a template to use. Play around to see what works best for you. For example, if you want to turn your wiki pages into HTML presentation slides, you can choose **SlideShow_s5** from the **Template** list.
Click **Forward**. If you're exporting a notebook, you can choose to export the pages as individual files or as one file. You can also point to the folder where you want to save the exported file.
<p align="center"><img src="{{ site.baseurl }}img/zim8.png" alt="The final export window" /></p>
## Is that all Zim can do?
Not even close. Zim also has a number of [plugins]( that expand its capabilities. It even packs a built-in web server that lets you view your notebooks as static HTML files. This is useful for sharing your pages and notebooks on an internal network.
All in all, Zim is a powerful yet compact tool for managing your information. It's easily the best desktop wiki I've used, and it's one that I keep going back to.
title: Doing data journalism with open source software
layout: post
published: true
<p align="center"><img src="{{ site.baseurl }}img/news-760984_640.jpg" alt="A couple of newspapers and a pair of glasses" /></p>
(**Note:** This post was first published, in a slightly different form, at <a href="" target="_blank"></a> and appears here via a Creative Commons license.)
When I was in journalism school back in the late 1980s, gathering data for a story usually involved hours of poring over printed documents or microfiche.
A lot has changed since then. While printed resources are still useful, more and more information is available to journalists on the web. That’s helped fuel a boom in what’s come to be known as *data journalism*. At its most basic, data journalism is the act of finding and telling
stories using data &mdash; like census data, crime statistics, demographics, and more.
There are a number of powerful and expensive tools that enable journalists to gather, clean, analyze, and visualize data for their stories. But many smaller or struggling news organizations, let alone
independent journalist, just don’t have to budget for those tools. But that doesn’t mean they’re out in the cold.
There are a number of solid open source tools for data journalists that do the job both efficiently and impressively. This article looks at six tools that can help data journalists get the information that they need.
## Grabbing the data
Much of the data that journalists find on the web they can download as a spreadsheet or as [CSV]( or PDF files. But there’s a lot of information that’s embedded in web pages. Instead of manually copying and pasting that information, a trick just
about every data journalist uses is *scraping*. Scraping is the act of using an automated tool to grab information embedded in a web page, often in the form of an HTML table.
If you, or someone in your organization, is of a technical bent then [Scrapy]( might be the tool for you. Written in Python, Scrapy can quickly extract structured data from web pages.
Scrapy can be a bit challenging to install and set up, but once it’s up and running it has a [number of useful features]( and Python savvy programmers can quickly extend those features.
Spreadsheets are one of the basic tools of the data journalist. In the open source world, [LibreOffice Calc]( is the most widely-used spreadsheet editor. Calc isn’t just for viewing and manipulating data. By taking advantage of its [Web Page Query import filter](, you can point Calc to a web page containing data in tables and grab one or all of the tables on page. While it’s not as fast or efficient as Scrapy, Calc gets the job done nicely.
## Dealing with PDFs
Whether by accident or by design, a lot of data on the web is locked in PDF files. Many of those PDFs [can contain useful information]( If you’ve done any work with PDFs, you know that getting data out of them can be a chore.
That’s where DocHive, a tool developed by the Raleigh Public Record for extracting both data and images from PDFs, comes in. DocHive takes a PDF, separates it into smaller pieces, and then uses optical character recognition to read the text and inject them into a CSV file. Read more
about DocHive [in this article at](
[Tabula]( is similar to DocHive. It’s designed to grab tabular information in a PDF and convert it to a CSV file or a Microsoft Excel spreadsheet. All you need to do is find a table in the PDF, select it, and let Tabula do the rest. It’s quite fast and efficient.
## Cleaning your data
Often, the data you’ll grab may contain spelling and formatting errors, or problems with character encoding. That makes the data inconsistent and unreliable, and makes cleaning the data essential.
If you have a small data set, one that consists of a few hundred rows of information, then you can use LibreOffice Calc and your eyeballs to do the cleanup. But if you have larger data sets, doing the job manually will be a long, slow, inefficient process.
Instead, turn to [OpenRefine]( It automates the process of manipulating and cleaning your data. OpenRefine can sort your data, automatically find duplicate entries, and reorder your data. The real power of OpenRefine comes from *facets*. Facets are like filters in spreadsheets that let you zoom in on specific rows of data. You can use facets to ferret out blank cells and duplicate data, as well as see how often certain values appear in the data.
OpenRefine can do a lot more than that. You can get an idea about what OpenRefine can do by [browsing the documentation](
## Visualizing your data
Having the data and writing a story with it is all well and good. A good graphic based on that data can be a boon when trying to communicate and understand that data. That explains the popularity of
*[infographics](* on the web and in print.
If your needs aren’t too complex, you don’t need to be a wizard with graphic design to create an effective visualization. [Data Wrapper]( is an online tool that breaks
creating a visualization into four steps: copy data from a spreadsheet, describe your data, choose the type of image you want, then generate the graphic. You don’t get a wide range of image types, but the process couldn’t be easier.
Obviously, this isn’t an exhaustive list of open source data journalism tools. But the tools discussed in this article provide a solid platform for a journalism organization on a budget, or even an intrepid
freelancer, to use data to generate story ideas and to back those stories up.
title: Creating slides with Emacs org-mode and Reveal.js
layout: post
published: true
<p align="center"><img src="{{ site.baseurl }}img/speaker-1321670_640.jpg" alt="A man speaking into a microphone" /></p>
Over the last year or so, I've started to get back into giving presentations. Nothing too grand &mdash; just 15 to 30 minute talks to small audiences. While I still find doing presentations stressful, I enjoy using those talks to share ideas and information.
And, like most speakers, I use slides. Mine are quite minimal &mdash; either a couple of words or an image. While there are a number of solid open source applications for creating slides, over the last year or so I've been experimenting with [Reveal.js]( It's a framework for creating very nice looking HTML slides. Using Reveal.js also gives me a chance to embrace my inner geek a bit and hand code some HTML.
Recently, I started used Emacs and org-mode again. And, as luck would have it, I stumbled across a package called [org-reveal]( that lets me use org-mode to prepare Reveal.js slides.
Let's take a look at how to use org-reveal and Reveal.js to create simple presentation slides.
## Before we begin
Obviously, you'll need to know how to use Emacs and have a basic knowledge of org-mode to follow the instructions in this blog post. If you don't don't know how to use Emacs, and are interested in learning, a good book is *[Mastering Emacs](* by Mickey Petersen. No, that's not an affliate link &mdash; I don't earn any money from recommending Petersen's book. You can learn more about using org-mode in [its documentation](
What I'm sharing in this post is what I do. It's what works for me. I expect to draw some criticism from some org-mode purists or power users out there. So be it. This is the way I do things, and if that doesn't mesh with the way they do things, then the problem doesn't lie with me.
With that out of the way, let's get going.
## Getting started
I'll assume that you have Emacs and or-mode installed on your computer. You can grab both from your distro's package manager or software centre. If your distro's package manager doesn't have the most recent version of org-mode, you can download it from [its website]( That site also has instructions explaining how install org-mode.
You'll also need to install the [org-reveal package](, and grab a copy of the [Reveal.js]( archive. You can unpack the Reveal.js anywhere you like. I prefer to have it close at hand, so I put it in the folder ~/slides/reveal.js.
Next, add the following to your .emacs file:
;; Reveal.js + org-mode
(require 'ox-reveal)
(setq org-reveal-root "file:///path-to-reveal.js")
(setq org-reveal-title-slide nil)
The *path-to-reveal.js* is where you unpacked the Reveal.js archive a moment or so ago. In my setup, that entry is *file:///home/scott/slides/reveal.js*.
That was a bit of work. Now, you're ready to go.
## Creating your slide deck and slides
Fire up Emacs and create a new file. Name the file whatever you want, but make sure it has the extension *.org*. The extension, as you might have guessed, tells Emacs it’s an org-mode file. Whenever you open a file with that extension, Emacs automatically makes the **Org** menu available on the Emacs menu bar.
Add the following information to the top of the file:
#+OPTIONS: num:nil toc:nil
#+REVEAL_TRANS: None/Fade/Slide/Convex/Concave/Zoom
#+REVEAL_THEME: Black/White/League/Sky/Beige/Simple/Serif/Blood/Night/Moon/Solarized
#+Title: Title of Your Talk
#+Author: Your Name
#+Email: Your Email Address or Twitter Handle
That block is like metadata for your slide deck. Let's look at the first three itmes in that block:
* _num:nil_ and _toc:nil_ suppress the numbering of headings and the creation of a table of contents when you generate your slides
* \#REVEAL_TRANS controls the [transition effect]( when you move between slides. I usually go with _None_, but feel free to experiment
* \#REVEAL_THEME controls the [look of the slides]( I usually stick with _Black_ or _White_, but, again, feel free to experiment
Add a heading after the metadata block by typing an asterisk followed by some text. This will be the title slide. Make it a good one. If you want to add your name below the title, press Enter. Emacs adds a blank, indented space below the heading. Type your name, and any other information, in that space.
Add new slides to the deck by adding headings to the file. Simple, no?
What I just outlined above works well if you want to create slides with only text on them. What about slides with images?
## Adding images
I use images on my slides more than I use text. Not to dazzle or distract my audience, but to offer some visual context and as a visual prompt for myself. It doesn't work for every slide, or every talk, but using the right image can be effective. And it can be fun.
To add images to you slides, first create a sub folder for you images in the folder where you saved your slide file. I usually call that folder *images* which, while unimaginative, does the job. Once you have that folder, drop the images you want to use in your slides into that folder.
Next, create an empty heading in your slides file. Press enter to add a blank space below that heading and then add this block of text to the space:
:reveal_background: images/name-of-image
:reveal_background_size: width-of-image
:reveal_background_trans: slide
Replace *name-of-image* with the image's filename (including the extension). Replace *width-of-image* with the width of the image in pixels &mdash; for example, *640px*. Make sure, though, that your images aren't too wide or they'll go beyond the edges of your screen. I try to keep the images in my slides under 1000 pixels wide.
## Adding speaker notes
Reveal.js has a nifty feature that lets you display speaker notes on the computer that's serving your slides. Only you see those notes, and they only appear when you press the *s* key on your keyboard. Of course, you need to add the actual notes to your slides to use them.
To add notes to your slide, press Enter to create a blank space under a heading and then add this block of text to that space:
Your note
Where you'd replace *Your note* with text that reminds or prompts you about the key points of that slide.
## Generating your slides
You've crafted each slide. Now what? You'll want to generate the HTML version of your slide deck. To do that, press **CTRL-c CTRL-e** on your keyboard. This opens the org-mode export buffer. Next, type **R-R**. Emacs creates a single HTML file in the folder where you saved your slide file.
Open that HTML file in a web browser. You can move through the slides by pressing the arrow keys on your keyboard.
## Final thought
There is a lot more that you can do with both Reveal.js and org-reveal. I haven't explored that in too much depth if only because I like to keep my slides simple.
Using Emacs and org-mode, in conjunction with Reveal.js, to create presenation slides can seem like overkill. And, to be honest, I don't use that combo for all of my slides. But when I need to quickly pull together a slide deck it does the job well.
title: A few links of interest - 31 January, 2016
layout: post
published: true
* How GitLab made [open source its management style](
* [5 reasons]( to switch from Windows to Linux
* How (and why) [FreeDOS keeps DOS alive](
* A guide to help you [clean up your Linux startup process](
This diff is collapsed.
title: Editing PDFs on the Linux desktop with PDFShuffler
layout: post
published: true
<p align="center"><img src="{{ site.baseurl }}img/adobe-27964_320.png" alt="PDF logo" /></p>
The gold standard for editing PDF files on Linux is, in my opinion, [pdftk]( It's a command line tool and, unless you use it regularly, it's easy to forget pdftk's options.
If you want to do some simple editing on a PDF file &mdash; like adding or deleting pages, combining files, or cropping pages &mdash; a good graphical alternative is [PDFShuffler](
Let's take a quick look at how to use PDFShuffler to edit PDF files.
## What you can use PDFShuffler for
To be honest, PDFShuffler is somewhat limited in what it can do. As its name suggests, shuffle pages in a PDF file. It can do a little more, too.
I use PDFShuffler quite often to:
* Extract pages from PDF files
* Add pages to a file
* Rearrange the pages in a file
I'm going to look at how to do each of those.
## Getting the software
You can either [download PDFShuffler's source code]( from Sourceforge, or you can install it using your distribution's package manager.
Be aware that PDFShuffler has a few dependencies, like pyPDF and python-gtk. Usually, installing via a package manager is the fastest and least frustrating route.
When you've installed PDFShuffler, fire it up.
<p align="center"><img src="{{ site.baseurl }}img/pdfshuffler-main.png" alt="The PDFShuffler window right after startup" /></p>
## Extracting pages from a PDF file
I do this with my ebooks when I want to have a table of contents potential buyers can look at, and to extract a sample chapter.
Open a PDF file by selecting **File > Add**.
<p align="center"><img src="{{ site.baseurl }}img/pdfshuffler-book.png" alt="The PDFShuffler window, with a book loaded" /></p>
In this example, I want to extract the first chapter of the book &mdash; pages 7 to 9. Press CTRL+click and select the pages you want to extract. Then, right click and select **Export selection**.
<p align="center"><img src="{{ site.baseurl }}img/pdfshuffler-export.png" alt="Selecting pages to export in PDFShuffler" /></p>
Choose the directory where you want to save the file, give it a name, and then click **Save**.
## Adding pages to a file
I do this in two instances:
* Adding a cover to a book
* Reinserting a scanned, signed page of a contract
Open the PDF file that you want to add the page or pages to. Then, select **File > Add** and find the PDF file that you want to add. Click **Open**.
PDFShuffler has an annoying habit of adding pages at the end of the PDF file you're working on. Click and drag the page you added to where you want it to go in the file. You can only click and drag one page in a file at a time. Yes, that is a bit annoying ...
## Rearranging pages in a PDF file
I don't do this very often, usually to shuffle slides in a slide deck. Or, in the previous example, to move a page that you've added to a file. I'm sure you can find other uses for this feature.
To do that, click and drag the page to where you want to put it in the file.
<p align="center"><img src="{{ site.baseurl }}img/pdfshuffler-move.png" alt="Moving a page in PDFShuffler" /></p>
PDFShuffler is a quick, easy, point-and-click way to do simple edits to a PDF file. Other tools can do more, but PDFShuffler does what little it does very well.
title: Taking notes with Laverna
layout: post
published: true
<p align="center"><img src="{{ site.baseurl }}img/pexels-photo-239548.jpeg" alt="A person taking notes with pen and paper" /></p>
I don't know anyone who doesn't take notes. Most of the people I know use an online note taking application, like Evernote or Simplenote or Google Keep.
All of those are good tools, but you have to wonder about the privacy of your information &mdash; especially in light of [Evernote's great privacy flip flop of 2016]( If you want more control over you notes and your data, you really need to turn to an open source tool. Preferably one that you can host yourself.
And, yes, there are a number of good [open source alternatives to Evernote]( One of those is Laverna. Let's take a look at it.
## Getting Laverna
Head over to []( You can:
* Host Laverna yourself
* Use the web version
* Download a desktop application
In case you're wondering, there's no mobile app. An Android version is under development, but there's no indication of when it will be ready.
Since I have nowhere to host the application, I'm going to focus on using both the web and desktop versions of Laverna. Aside from the installation and setting up storage (more on that soon), the experience with a self-hosted version of Laverna is the same.
## Getting started
If you want to start using Laverna right away, click the **Start using now** button on the front page of Or, launch the desktop application.
On the welcome screen, click **Next**. You'll be asked to enter an encryption password (which lets you secure your notes, and get to them) and to specify a way to synchronize your notes. I'll be talking about synchronization in a moment, so enter a password and click **Next**.
<p align="center"><img src="{{ site.baseurl }}img/laverna-set-password.png" alt="The Set Password screen in Laverna" /></p>
You'll be asked to log in with your password. When you do, you get a blank canvas.
<p align="center"><img src="{{ site.baseurl }}img/laverna-main-window.png" alt="Laverna's main window" /></p>
## Storing your notes
Before diving into how to use Laverna, I'd like to walk you through how to store your notes.
Out of the box, Laverna stores your notes on your computer in your browser's cache. The problem with that is when you clear the cache, you lose your notes. You have two other options for storing your notes:
* Dropbox, which is a popular web-based file syncing and storing service
* [remoteStorage](, which is a way for web applications to store information in a secure location somewhere in what people call _the cloud_
Using Dropbox is convenient, but it's proprietary. On top of that, there are also concerns about privacy and surveillance. Laverna encrypts your notes before saving them, but not all encryption is foolproof. Even if you don't have anything illegal or sensitive in your notes, they're no one's business but your own.
remoteStorage, on the other hand, is kind of techie. There are few, easy-to-use hosted remoteStorage services. I use [5apps](, which provides 1 GB of free storage. 5apps will probably add a paid tier sometime in the near future, but for me it's good enough for now.
To change how Laverna stores your notes, click the hamburger menu in the top-left corner and then click **Settings**. Then, click **Sync**.
<p align="center"><img src="{{ site.baseurl }}img/laverna-sync.png" alt="Changing the way Laverna stores your notes" /></p>
Select the service you want to use, then click **Save**. After that, click the left arrow in the top-left corner. You'll be asked to authorize Laverna with the service you chose. Once you've done that, you'll need to log back into Laverna.
You're probably wondering about synchronization. This is important if you want to use Laverna across multiple devices. I'll be explaning this in a moment or three.
## Using Laverna
With that out of the way, let's get down to using Laverna. Create a new note by clicking the **New Note** icon. The note editor opens.
<p align="center"><img src="{{ site.baseurl }}img/laverna-new-note.png" alt="Creating a note in Laverna" /></p>
Type a title for your note, and then start typing your note in the left pane of the editor. The right pane gives you a preview of your note.
<p align="center"><img src="{{ site.baseurl }}img/laverna-writing-note.png" alt="Writing a note in Laverna" /></p>
You can add formatting to your notes using Markdown. If you don't know Markdown and want to learn it, check out my book *[Learning Markdown](*. Or, you can use the toolbar at the top of the screen to add some basic formatting.
You can also embed an image or file from your computer into a note, or link to one somewhere on the web. When you embed an image, it's stored with your note.
When you're done, click **Save**.
## Organizing your notes
Like some other note-taking tools, Laverna lists your notes with the last one that you created or edited at the top of the list. If you have a lot of notes, it can take a bit of work to find them.
Instead, you can group your notes into *notebooks*. Using notebooks, you can quickly filter your notes based on a topic or a grouping.
When you're creating or editing a note, you can select a notebook from the **Select notebook** list in the top-left corner of the window. If you don't have any notebooks, select **Add a new notebook** from the list and type the notebook's name. You can even make that notebook a child of another notebook. Let's say, for example, you maintain three blogs. You can create a notebook called **Blog Post Notes** and have children named for each blog.
To filter your notes by notebook, click the hamburger menu and then click on the name of a notebook. Only the notes in the notebook you click on appear in the list of notes on the main page.
<p align="center"><img src="{{ site.baseurl }}img/laverna-notebook.png" alt="Contents of a notebook in Laverna" /></p>
## Using Laverna across devices
I use Laverna across three devices: my laptop, a Chromebook, and a tablet powered by Ubuntu Touch. Getting them to use the same storage and, therefore, have access to the same notes takes a little work but it's not difficult.
First, you'll need to export your settings. To do that, log into the wherever you're using Laverna right now and then click the hamburger menu. Click **Settings** and then click **Import &amp; Export**. Under **Settings**, click **Export settings**. Laverna saves a file named *laverna-settings.json* to your device. In case you're wondering, [JSON]( is a popular way to exchange data that both machines and people can easily read.
Make the JSON file available to the other device or devices you want to use Laverna with by emailing it to yourself or syncing the file across devices using a service like ownCloud or Nextcloud.
If this is the first time you've used Laverna on that device, click **Import** on the splash screen. Otherwise, click the hamburger menu and then click **Settings > Import &amp; Export**. Click **Import settings**. Find the JSON file with your settings, click **Open** and then click **Save**.
Laverna will ask you to:
* Log back in using the password you created when you first set it up
* Register with the storage service you're using
Repeat this process for each device that you want to use. It's cumbersome, I know. I've done it. You should only have to do that once.
## Final thoughts
Once you set up Laverna, it's easy to use. The lack of a mobile app is a bit annoying, but in this case patience is a virtue. And I'm hoping that the developers can expand the storage and syncing options to include open source applications like Nextcloud and ownCloud.
While Laverna doesn't have all the bells and whistles of a note taking application like Evernote, it still does a great job of letting you take and organize your notes. That Laverna is open source and supports Markdown are two great reasons for using it.
title: A few links of interest - 23 February, 2017
layout: post
published: false
* Some of the conventions of [contributing to open source](
* What is [the .bashrc file?](
* How to [clean up junk files]( in Ubuntu with Ubuntu Cleaner
* Using the [command line calendar and date functions]( in Linux
title: Easing into open source
layout: post
published: true
<p align="center"><img src="{{ site.baseurl }}img/pexels-photo-38980.jpeg" alt="A lighted sign saying 'Open'" /></p>
(**Note:** This post is based on a presentation I gave at the Lightning Talks on October 22, 2014)
There are many people out there who are interested in, and even eager to use, open source. Not just for one or two tasks, but for their entire computing experience. But, for a variety of reasons, they aren’t able or willing to make the leap from the closed, proprietary world to a more free and open one.
Even the more resolute ones hesitate. Why? A big part of it is change, which no one really likes. And they might not know a lot about open source.
It doesn’t have to be that way.
One of the many ill-fitting hats I used to wear was technology coach. I’d like to share a few things I’ve learned as a technology coach that can help you ease people into open source.
## Don't toss people into the deep end
The temptation is there to toss new users into the deep end, and let them let them fend for themselves. That’s how a lot of us learned about open source. We grabbed a live CD or live USB, or an installation package for an interesting piece of software, and just went to town. We reveled in making mistakes, learning, then repeating the cycle again.
That doesn’t work for everyone. Tossing most people into the deep end doesn’t give them a sense of confidence. Instead, you wind up with a lot of people fussing and whining. A bad experience will turn them away. And that's not the outcome that we want.
## Don't preach
Curb the urge to get up on a soapbox and preach the open source way to the masses. It rarely works. Many people don’t care about the [Four Freedoms](, or the ethical and ideological arguments around using open source. At least, not at first.
If you get up on your soapbox, the people you're talking to will just glaze over. They'll ignore you. They'll walk away.
What do they care about? They care about what open source can do for them. What it can do to help them do what they need to do. It's a selfish motivation, but a real one. And that’s what you really need to focus on.
## Help people confront their fear of open source
>I'm afraid of open source. I can't program
Someone actually said that to me. There’s a perception that open source is the domain of the developer, the system administrator, and the techie.
I don’t have deep technical knowledge, but I live my life in open source and run my business on it. I’m sure that goes for some of you reading this post, too.
It’s always useful to remind people that to use open source software they don’t need to know how to code, They don’t need to know how to compile software. They don’t need to know how use the command line or tweak configuration files. But if they want to they can learn.
## It’s not ...
I run into what I call the *It’s not syndrome* quite a bit. As in *It’s not a Mac* or *It’s not Windows* or *It’s not Microsoft Office*, or *It’s not my favourite tool*. Saying that implies that open source has less value, less merit, and is less useful than proprietary software.
That syndrome is hard to cure. But there is an answer for that. The answer? *So what?*
Open source has its merits. It's useful. It has its strengths. As many, if not more, than proprietary software. Most people can do most (if not all) of their work using open source. They can do it comfortably, quickly, and efficiently.
## Don't focus on features
Don’t go into a feature-by-feature comparison of an open source tool and a proprietary one. That list can be long. It can be involved. It speaks to the technology fetishist more than to the average user.
For many people, a feature-by-feature comparison is boring. They don’t care about that kind of minutiae, and it will trigger an *It’s not a ...* response. Instead, teach them. Guide them. Coach them. Focus on what software they use now, the features that they use, and how they use that software and those features.
Show them, for example, how to set up a document in LibreOffice Writer. How to crop an image in The GIMP. How to get photos off their cameras with DigiKam. How to play media with VLC.
Once you've done that, ease them into more advance features. You might not need to do that, though.
## Open source isn't free
Remind them that open source does have a price. That price doesn’t have a currency symbol in front of it. It’s a price, though, that many people have a hard time paying.
That price? *Time*. Time to adapt to something new. Time to build new habits. Time to learn new or different ways of doing things. As I tell my coaching clients, you need to build discipline and habits. Once you do that, you’re on your road to mastery.
Start them off slowly. Take baby steps, not giant leaps. Don’t, for example, show people all the funky ways that they can use (say) Gnumeric. Instead, show them how to use it to set up a simple household expense spreadsheet.
Then, build from there. Cover more advanced topics, if they need that sort of thing. Remember that not everyone is a power user. Many people who sit in front of computers do a small number of specific tasks. Anything else is unneeded overhead to them.
Getting more people using open source, and embracing the ideas and values behind it, is the right thing to do. It’s not easy, but it can be done with very little pain. Who knows: by showing people the open source way, we might get some of them to spread the word.