Replacing MS Office has been something I have been meaning to do for awhile. It is not because I hate MS Office or want to stick to GNU tools. The reason actually comes down to workflow.

I like the idea of having a bunch of markdown files and data files that I can generate documents from. This just fits more into the way I like to work.

Key advantages I see are:

  • I can set it up with some CI system like github actions so every time I update a document’s markdown I get a nice fresh document automatically.

  • I can have documents that are generated out of data and don’t require me to mess around with a gui.

  • Code generation tools can be also used to generate documentation.

  • Python is a much nicer language to work in than VBA or some closed Microsoft api in javascript.

  • I like working in my code editor more than I do in MS Word.

  • I don’t have to deal with locked up UI for calculations that are slow. I can kick the script off and go get a coffee.

Scenarios

Below are all the scenarios I can think of that I use MS office (or similar tools) for at the moment. As I identify more I will probably come back and add them.

Scenario 1: My Resume

This one is pretty straight forward. I have my CV normally in 2 formats docx and pdf. The formats unfortunately are pretty standard and required when dealing with recruiters.

It is just a nice cleanly formatted document with static information in it that I update every time I am looking for a job.

There are other static documents like this I will need like cover letters etc.

Scenario 2: Work instructions

Sometimes I document how to complete a process in word for other people to follow. This is actually less often then not now though as most companies I work for have moved this into an online wiki type site where you can just enter them in markdown.

Scenario 3: Reports/Proposals etc

There are also lots of situations where I have to write up some kind of business document that is quite large and requires lots of tables, figures and text. These are usually created in some form of company template with their standard styles.

Scenario 4: Slide shows

I don’t have to do these all that often but generating slide shows in PowerPoint is a standard way of doing it I guess. I am looking at doing this a bit more when I start creating some more video content.

Scenario 5: Notes

I used to be a really big user of OneNote. It is really easy to store notes in and keep them synced between your mobile devices and other people.

Current I keep documents in there that I share with my wife.

I used to also make a lot of use of hand written notes in there as it was really easy to grab a device and start writing on it.

Scenario 6: Capturing data

There are always situations where something goes wrong or you start working on something and you get a heap of data be it tabular or just a series. Normally the first point of call is to just dump it into an excel spreadsheet.

Scenario 7: Crunching Data

Usually when analyzing some data and creating a report with pretty graphs in it I have to create a spreadsheet to get said graphs so I can either forward it to someone else or insert it into a word document/email.

Scenario 8: Generating Flow charts

A lot of the time its nice to generate flow charts to add to documents to help people visualize process flows or to create certain types of images. While I don’t do these types of graphs in MS office any more it would be nice to have a more code based approach to it.

Scenario 9: Collaborating with other people

Obviously this is going to be the hardest scenario to work with because I am not going to be able to convince other people to drop Office and start working with my markdown approach. There are also really 2 sub scenarios to this one.

  • Creating a document and having other people send edits and suggest feedback.

  • Giving other people feedback and edits.

Scenario 10: Creating books

This is not something that I use MS office for but is something I would like to start doing. I have looked at doing this with LaTeX in the past which generates nice documents but its a pain in the arse to work in. MS word on the other hand would be much worse because it would start to run slow after you get over a certain size.

Replacements

To resolve the above scenarios I essentially have to replace some of the functionality of the following MS office programs.

  • Word
  • Excel
  • PowerPoint
  • OneNote
  • Visio/Draw.io
  • Something to create books

Word replacement

To replace MS word I plan on using R Markdown. For the most part it is regular markdown but it also lets you add more content to the document. It lets you run code to have dynamic content generated from external sources and it also gives you more control on the layout of the document compared to vanilla markdown.

R Markdown also lets you output into DOCX and PDF format which makes working with other people easy as they can work in formats they are expecting.

Cooperating with other people

Working with other people is going to be really difficult with this workflow. It is possible to work with other developers who are interested in learning this workflow. You just have to share the git repo with them and off they go.

With anyone else though its going to have to work in the following way:

  • For people sending you edits you will need to either diff the changes between the word documents and update the original or convert the changes back to markdown and diff them against the current version.

  • For people asking you for edits it makes no sense to convert the documents. Just work on said documents in MS Office format.

Excel replacement

For this one I am going to use R Markdown to generate nice reports of the data with graphs etc that everyone wants. This can ideally be presented in a pdf since it will look the best and prevent people from wanting to fiddle with the output document.

If they absolutely want a excel document though I will probably look at generating/modifying excel workbooks with python.

Working in this way means i don’t have to convert data into any special formats. I can keep it in its regular state and use python or R to convert it into however we want it to be presented when the documents are generated.

For quick data entry that excel is nice for I plan on just using a csv file. I can either create it in a text editor or even in a spreadsheet application if it makes sense.

PowerPoint

This one is going to be easy. There is nothing compelling about PowerPoint that keeps anyone using it so I am going to replace it with Reveal JS presentations which look a lot better and are more flexible.

I am still considering if I am going to try to use R Markdown integrated reval js or use it on its own. I like the idea of all of my documents using the same syntax styles but I guess it will depend on what I am doing.

OneNote

This one i have already partially replaced with Joplin which is a nice OpenSource note app that lets you write notes in markdown and syncs them with cloud services like NextCloud which is what I currently do.

The only thing I don’t use it for at the moment is sharing documents with my wife. She is currently still on OneNote and doesn’t really want to move so I might create some scripts that sync between the two.

For the hand writing stuff funnily enough I have started going back to paper for that kind of thing. In meetings its less messing about with getting the stylus to work and getting into the note taking app.

I also saw a really awesome presentation the other day where someone used a pen to work in Blender to do pen style stuff and had an unlimited canvas. It also allowed them to generate a video of the presentation using blenders animation system. So I plan on having a look at that later at some point.

Viso/Draw.io

There are some diagram generation tools that take some form of markup and spit out pretty looking flow charts. I plan on using those. Having access to both R and Python means I will have no limit to what types of visualizations I can put in.

I will still make use of Draw.io for things like wireframes or flow charts I want to create in a more visual way. Having both options will be good.

Book creation

For book creation I am going to use an addon for R markdown called bookdown which as the name suggests is specifically designed for creating books.

RMarkdown Series