Useful tools for the academic
Throughout my time in academia, there are many instances where I witnessed the quickness of my colleagues in picking up and gaining proficiency in some new skills or tools that serves to enhance their work.
These not only include new domain knowledge, e.g., learning machine learning to solve a niche problem, but also tools that aids in their work. The regnant LaTeX need no introduction, and picking up C/C++ to speed up computation or learning Git for collaborative work are quite common.
However, it seems to me that many are satisfied in their “local minima”, and do not have the time or effort to look for new tools that might enhance their work. Therefore, here I introduce some tools that I found to be useful that I think more academics should use1.
1 This list might be updated as more tools prove themselves useful.
Pandoc
Pandoc is a universal document converter. It can convert MS Word to and from LaTeX, an HTML page to EPUB, or MS PowerPoint to HTML, and many more! However, the most popular feature of the universal converter is the ability to write in Markdown and convert it to a document or a presentation slide.
Here, we write in simple Markdown and convert to a PDF document via LaTeX2.
2 We can also convert to presentation slides via LaTeX beamer (or reveal.js): 
For a long time I have used Pandoc for all my write-ups, notes, and presentation slides due to the simplicity of writing Markdown over LaTeX, MS Word, and MS PowerPoint3, but I have since moved to better tools below.
3 Combined with wrangling data in Python/Julia/R over MS Excel, I have completely ditched MS Office.
Quarto
Coming from the lovely R community and building on top of Pandoc, Quarto is the successor to R Markdown, an attempt at literate programming. R Markdown does the same as Pandoc, allowing one to write in Markdown and outputs to documents and presentations etc., with the exception that it also allows one to run and output R code inside the document. Quarto extends this functionality to include Python, Julia, and Observable in addition to R.

This functionality allows us to mix computation with its documentations, explanations, or mathematics in the same document.
This allows for reproducible research where the codes and outputs are contained in the same research write-up, and is perfect for cases where one wants to share technical reports complete with implementation details to a colleague.
But this is not all! Even without using the ability to run code in your documents, Quarto can still do a lot more, e.g., writing books, creating dashboards for data science, or creating web apps to interact with data4. One can also publish to Quarto Pub to share their Quarto documents easily.
4 In fact, this very website is written in Quarto!
Typst
Typst is a modern typesetting system that aims to be an alternative to LaTeX. Fast, easy, sensible, with an actual scripting language, and actively developed, it has completely replaced LaTeX for me except for papers that are submitted for publication5. I even made a conference poster recently with Typst6.
5 As far as I am aware, IJIMAI is the only journal that accept Typst at this point of time.
6 The package peace-of-posters can be used to easily create posters.
Not only does Typst has a simple Markdown-like syntax, it is also extremely fast, allowing almost instant live previews while typing.
Typst also has an active package ecosystem, from drawing diagrams with CeTZ, creating presentation slides with Touying, drawing quantum circuits with Quill, to plotting with Lilaq, Typst covers my entire workflow. My research notes that I share with my colleagues are written in Typst, I make diagrams in Typst, and I make worksheets for students in Typst.
Typst has also gained enough popularity that Pandoc and Quarto now supports it as a PDF backend in place of LaTeX. It even comes preinstalled in Quarto. Unlike LaTeX, there are almost no wait time in compiling a document, and error messages are not cryptic, making Typst a good PDF backend for Quarto7.
7 Take a look at the talks “Never again in outer par mode” from Posit Conference 2023 and “Styling Quarto PDFs with Typst” from SatRdays London 2024, where they discusses the advantages of using Typst over LaTeX in Quarto
An RSS feed reader
You most likely have come across this little orange icon
in your time on the internet. In fact, there is one at the top right of this very site (though it’s not orange). This is RSS (Really Simple Syndication), a standardized format to aggregate news or contents into a single feed.
Imagine having a single feed where you can read articles from multiple sources such as news websites, right when they are published. This is not an uncommon concept as some smartphones such as the iPhone provides such features with their news app. So how is this useful for academics?
Well, turns out journals typically provide a link to subscribe to their RSS feed too. One can then easily keep up with current research in journals relevant to their fields by aggregating them into a single RSS feed reader.
I check the feed every day, reading through the titles, and then the abstracts for titles that caught my attention. If I find the paper interesting or relevant, I can easily open the paper on a browser with a single hotkey to download or add it to my bibliography manager.
I am subscribed to 11 journals, totaling to around 50 to 100 new papers everyday (arXiv takes up the bulk of this number), a number that is small enough that it’s not a hassle to go through the feed every day8.
8 I’m also subscribed to some news site and even some YouTube channels, eliminating the need for an account.
Given how important keeping up with current developments in the field is for a researcher, an RSS feed reader (and there are many) makes the aggravating task of checking for new papers effortless, and greatly increases one’s exposure to current research.
Shiny
Shiny is an interactive and reactive dashboard/web app package that came out of the R community like Quarto (it is now also available for Python).
For most academics, in addition to exploring, analyzing, and visualizing your data and results by yourself, you will have to present and discuss your results with your colleagues. Most of the time such discussions take place with an opened PDF document or a couple of slides with plots. It is also not uncommon for someone to ask a question where the only answer is:
“I’ll go back and check.”,
even when you already have the data, because opening your favorite programming language and plotting it will take too long, leaving everyone in awkward silence while you embarrass yourself with your programming skills.
Here’s the solution: instead of static plots, use Shiny to present your results9!
Shiny is quite powerful. You can even let user upload say a CSV file and let them choose which columns of the uploaded data to plot. If you find the code too boilerplate-ish, you can also write Shiny in Quarto, easily adding Markdown and LaTeX maths into your Shiny app.
As an interactive and reactive app, Shiny requires a server to run, i.e., typically your own laptop while presenting. But it is also possible to publish your Shiny app online on shinyapps.io or Posit Connect10.
10 Both of which are free with limitations.
A general purpose editor
Typically, one uses different integrated development environments (IDEs) for different purposes, e.g., TeXstudio or Overleaf for LaTeX, RStudio for R, Spyder or Jupyter for Python, etc.
However, there are general purpose editors that can function as IDEs for almost anything. One popular example is VS Code11, which tops the Stack Overflow survey as the most used editor almost every year.
11 VS Code is what most people starts with, but use VSCodium if you want VS Code without Microsoft’s telemetry and tracking.
12 As shown in the screenshot/video examples for Pandoc, Quarto, and Typst above
Other well-known editors that comes up in most online discourse are probably Sublime Text, Vim/Neovim, and Emacs. Personally, I am using Helix12 and Emacs.
Having a single general purpose editor makes entry to new programming languages or markup languages easy; why learn different tools for different programming languages when they are just plain text at the end of the day? There’s no need to download a new program, just start writing in what you are already comfortable with.
The editor will then be just another general purpose tool on your computer that you are already comfortable with, just like your file explorer, browser, image/video viewer, notepad etc., improving your productivity.
This is even more true for a Linux user, who might write simple shell scripts or edit config files frequently. This is partly why there are very enthusiastic Vim/Neovim and Emacs communities in the Linux space13.
Speaking of Linux…
Linux
Free14 and open source, highly customizable, actually respect you instead of shoving products and ads down your throat, actually own and control your tools instead of the other way round, doesn’t spy on you, no bloatware with random preinstalled programs that you don’t care about.
14 both in terms of freedom and price.
Honestly, there are so many good reasons to use Linux. But on a more practical level, Linux open the doors to more efficient and productive workflows.
Perhaps you might find it hard to get started with all the tools that we talked about above. Going to each of their website, look for a download button, running the .exe to install it, figure out where and how you should be writing the Markdown or Typst codes, figure out how to compile it from a command prompt, only to see an error because the command prompt is not at the same directory as your file etc.
All these complications is one of the reason why most people use Overleaf instead of having a local installation of LaTeX. More specifically, I believe the main roadblock seems to be the lack of a good general purpose editor and an accessible terminal in the typical workflow of Windows users.
Furthermore, installation of programs is extremely easy in most Linux distro. For example, here’s how I install Firefox, Pandoc, Typst, LaTeX, R, and Julia all in one go in Arch Linux15:
15 Want to use C/C++ or Python? Guess what, they are already preinstalled in almost all Linux distros.
sudo pacman -S firefox pandoc typst texlive r juliaand to update all programs installed:
sudo pacman -SyuUltimately, I find the accessibility and efficiency in installing and working with various programs an important factor in whether academics try, utilize, and tinker with tools that can improve their workflow and productivity, and Linux is the gateway to these16.
You might not be convinced by this. But imagine having to do your work on a smart phone instead of a PC. The lost accessibility to software and the inefficiency in working with them will greatly affect how you work as compared to on a PC. The transition from Windows to Linux will feel the same for an experienced Linux user.
Marimo over Jupyter
Here’s a bonus one.
I take the somewhat popular yet controversial opinion that Jupyter notebooks are a scourge to scientific research. There are some annoying issues, such as how it’s saved as JSON instead of plain Python files, and how it teaches bad programming practices and habits to scientists. The latter can easily compound with carelessness to lead to invisible bugs and mistakes that produce wrong results, which might even end up in published research17!
17 I haven’t encounter many researchers who actually write unit tests for their spaghetti code function.
But much more troubling is the fact that Jupyter notebooks increase the chances of making these mistakes due to the creation of hidden states. In fact, a study showed that out of over 800 000+ valid notebooks on GitHub, only ~24% are executed without errors, and only ~4% produced the same results (Pimentel et al. 2019).
Perhaps this warrant a separate post18, but in short, if one wants to present some results with their corresponding codes, use Quarto, and if one really require a notebook environment, use Marimo, an alternative to Jupyter notebooks (only for Python).
18 For now, take a look at this talk from JupyterCon 2018 to understand some of the problems with Jupyter notebooks, as well as this FAQ from Marimo.
The main difference between Marimo notebooks and Jupyter notebooks is the fact that the former is reactive. What this means is that Marimo notebooks always run in the correct order and always rerun the entire notebook on edits, eliminating the hidden states that plagues Jupyter notebooks.
If a code cell defining a variable is deleted, but the variable is used elsewhere, an error will be thrown. On the other hand, Jupyter notebooks continue to sneakily use that variable even when the programmer meant to remove it from the program.
A researcher should be aware of how certain shortcomings of their tools can be detrimental to their work, and should be open to finding alternatives or engage in self-improvement to eliminate them to minimize bad research outputs.
For example, learning to write properly unit tested functions instead of spaghetti codes, or learning to use type hinting in Python (which has been around since version 3.5) to pair with type checkers to minimize invisible bugs caused by carelessness that can lead to wrong published results.




