Writing as a Software Engineer
As a preface to this article, I would like to suggest that a software engineer has five advantages with regards to writing in general.
- Build systems
- Writing scripts
- Using Grep (Search)
- Code Editors
- Git (Version Control)
Revelation As a Software Engineer
The above has brought me to the following revelation after much consideration. If you are a software engineer, and you plan on writing notes, authoring an article, or book, you should strongly consider using LaTeX.
(In fact, I would argue that we would see much benefit from using LaTeX for internal documentation for software. Primarily for the barrier of entry, and streamlining process outside of enterprise software. A discussion for another time.)
First, I would like to go through why I think LaTeX makes sense given the above five reasons for a software engineer. Second, I will go through how you can set up your LaTeX development environment in a jiffy. As well, as to how you can contribute to LaTeX in general.
For writing in general, I have for simplicity sake, three tools at my disposal: 1. Microsoft Word 2. Google Docs 3. LaTeX
Issue with End to End Applications
The issue that I had with Microsoft word and Google Docs is that I didn’t control the environment at all. If I wanted to change the background, open a specific chapter, tell when a certain edit was made, or automatically create settings for my application, those were huge unknowns. Also, over the years, I have used OneNote, Evernote, and the idea of another writing application popping up seems more than probable. I would like to invest my time in a central writing application that I can apply my efforts to, and bring to other places.
Using Current Pool of Software Tools
Another large reason as to my decision, is because as a software engineer, LaTeX has been a natural fit. As of now, I am able to create a very simple build system within two hours that watched my files, and re-compiled the pdf. In addition, I am able to write python scripts(,or whatever your language of preference,) to automatically generate files based on circumstance.
I am able to load these files using my code editors fuzzy finder, which definitely maximizes my workflow. In addition, using grep, I am able to search for text in all files, fuzzy find to that file, and then fuzzy find out. It’s a very quick workflow. Also, my code editor of choice Atom has packages, which has great syntax highlighting for LaTeX, as well as spell checking.
In addition, as someone with a background in Computer Science, I have used LaTeX for notes in mathematics and CS classes. It’s a way of maximizing my abilities in general.
In all situations, I have been able to simply e-mail the pdf to another and found that they are always receptive. Not necessarily something that I have come across with regards to Microsoft Word, or Google Docs. Therefore Microsoft Word and Google Docs, in my opinion, do not compete in ways of nativity. In addition, the recent advent of OverLeaf has made it easy to share actual LaTeX files with others and sync accordingly.
Setting up Your Own LaTeX Environment
I think I’ve made a pretty good case as to why one should use LaTeX. Now the question can we streamline the effort so that it is extremely easy for others to be involved.
Steps to create your own LaTeX environment on Mac OS
- Download MacTex(Looking into alternatives for Windows and Linux. Feel free to comment on alternatives).
- Install Atom if haven’t already.
- Install Skim which has an auto-update feature that Adobe Acrobat does not have (Currently looking into using a script to auto-generate for use with Adobe Acrobat).
- Go to the following Github LaTeX repo and clone into your directory. Feel free to keep in mind your git remote origin. If you want to change to own personal git repo, you will have to use
git remote set-url origin yourgitremoteurl goes here
- Open repo in atom, and install language-latex inside of atom (Atom --> Preferences --> Install).
npm installinside of repo root.
That should be it, your LaTeX repo should compile automatically to pdf, and open up Skim. Happy writing, and Congrats!