I need a training progression for academia and programming

As some of you might know, I am currently a fellow, aka at my personal writing retreat at Wolfenbüttel. And I decided to combine this with some sort of a training camp for my bouldering progress because you do need to have some breaks from writing during the day anyway and I can’t always watch Bones or create CV templates. You might have been following some of my bouldering on epigrammetry, the blog, or epigrammetry, the Twitter.

 

Training progressions in sports

Also very few of you might know as well, I used to train a lot for long-distance running (10k) during my teens. So I know what training progressions are. I used to have detailled training plans, eating regimes, supplements to take and all that jazz. I stopped at some point because my immune system kept bullshitting me and as an ambitious person, I couldn’t take the idea of having to start from scratch after a half-year of being very sick and weak. I’d had it with having to arrange my whole life around my training. Yet the principles I’d learned over the course of the years, plus the high level of discipline required in those persuits, have helped me a lot during my early university studies.

 

Systematic progress needs training goals

Looking back now, I used to approach studying and my ‘university progress’ just like I would have had planned my training progression. And it worked. I was really productive, things were going well. For me, at the time, this consisted mostly of getting all the translation homework done, reading a lot of Latin and Greek (at least an hour every early morning before starting my day) and getting through all the classics. Because I was fucking motivated.

This might have been due to there being actual goals to be achieved daily which I could measure my progress on. Like the speed, and thus number of pages, I would get through during my early morning reading practice. Back then, by the way, I also used to combine physical exercise with mental workouts like I have taken up again for this summer’s ‘training camp’. It works quite well. I should probably continue with it back home.

 

How do you create a training progression for programming?

My problem is now: Over the years, I seem to have gotten out of the habit of approaching progress systematically. Or, well not exactly, but – let’s say – I follow academic learning goals with a lot less zeal ever since I got my degree. Which probably is the case for mostly everyone else. Because it’s quite a bit harder to find time and motivation for non-goal oriented learning after a hard day at work than when you had all the time in the world to study. I really envy my youger self for having all this time for learning. I love learning. But life-long learning isn’t exactly the same and doesn’t end after your degree, espeically not if you’re an early career scholar. Now I have a vague idea of some skills I want to improve in. But I am very good with training progressions and thus I know that the common advice ‘just program a lot’ or ‘do a private programming project’ just really is crap advice. Of course, it’s true. You just need a lot of practice. But there still are ways of approaching this effectively or ineffectively.

There are some good books out there which actually provide some learning progression. There is John Sonmez’s Software Dev Career Guide which is the single only thing close to a book providing a progression to systematically get better at programming. And, who would have thought, he is an athlete too. I always thought I was the only one who wanted a systematic training plan. But apparently, he felt that need, too. And for good reason. I have already complained many times about why people don’t approach learning like training and still expect to get reliable, constant results. With learning, this systematic training approach is called ‘curriculum’. In the post linked above, I mentioned that I thought online programming platforms were the answer.

 

Which tools or medium can actually provide curriculum?

At the moment, I am at the point where I have let those online trainings slip again, a long while ago already. As it has happened to me multiple times over the years. If I can deduce from experience, I am likely or restart eventually and go crazy at online programming workouts for a while, then drop it completely again. But what you really need is consistency and daily workout. Plus, I can’t just do the apps. I always have a lot of books to read as well, which is quite important to me so they can’t be neglected either. But then I often end up only spending half of the time I would want to spend, read the book or, if you want to call it that, finish my ‘reading time’ and get tired after that. Also, I should already be at work, so I skip the programing workout.

While something surely is better than nothing, I should probably focus more on the practial work if I want to make faster progress. But in programming, that’s different from bouldering. In bouldering, it’s easy to see which routes I am capable of doing or whether I nailed a particular route. Or count how many pushups and pullups I can do (not enough, I have to admit). So I can measure progress easily. But with programming, this just isn’t the case. And in addition to that, for bouldering, there are tons of youtube gurus with mulitple videos each on how to get over plateaus and make progress, what you can work on, etc.

 

Willpower alone isn’t enough

For programming, most of the advice isn’t too good in my opinion because it’s often too generic (“get a project”). Bouldering tips are concrete like “Perfect your flagging technique”. It’s easy to look up how you do that. It’s easy to notice when you’ve got it, physical feedback makes sure of that. So I decided I’ll have to look at my programming workouts the way I approach my pushups for now (they need to get done no matter what and no whining around). But it’s not really a solution to the problem to rely on willpower alone. Willpower alone will ultimately fail once you get stressed or anything comes up. And when that happens, I have a really hard time getting back into the routine. Which I hate. And then I hate myself for not managing to and then the vicious circle goes on. It’s really annoying.

 

We need curriculum for systematic and swift progress

Of course, even with a good curriculum or a training plan, there will still be plateaus. You will still get stuck. But a good curriculum can help you over that last edge of the boulder. It can help you re-gather yourself after a failure or after you’ve let it all slack for a few weeks.

So this subject also makes me think with regard to this blog, it’s all the more important that curriculum gets developped for learning advanced LaTeX, so a willing user can make rapid progress. Rapid progress is good. It keeps you motivated. Plateaus are really dangerous because the can make you lose motivation and give on up the goal alltogether. So let’s find ways of measuring progress and collecting tips of what you can do to actively and systematically improve if you’re willing to.

Step one probably is to get the people to shut up who sneer at systematic approaches like this one. “Learning to program just doesn’t work this way”, they repeat time and time again. Yet I think this is not true. Getting better at programming is like learning any other skill. There is a systematic approach to it and when we have a systematic progression and training goals, we can figure out the steps we need to take.

That was it for now,

best,

the Ninja

Buy me coffee!

If my content has helped you, donate 3€ to buy me coffee. Thanks a lot, I appreciate it!

€3.00

Advertisements

Hipster CV – A Template

Dear all,

sorry you haven’t been hearing from me so much lately. It’s been quite busy. To make it up to you, I wanted to share my hipster CV template on this occasion 😉 I will probably explain it later and also probably modify it in a way that it’s easiert to use for a beginner. If you want to use it and but don’t feel comfortable with how the template works, just check where the text you are looking to replace is in the main.tex and replace it with your content. That way, you should get away with fairly limited LaTeX skills and still be able to use the template if you want it.

hipster-cv

 

It is available on the newly created LaTeX Ninja Github! The template is not exactly the same as shown in the Teaser: LaTeX Resumé Template Preview.

hipster-cv-github

 

So you can look forward to more versions which will be kind of the same style. But I now have so many different elements that I could fill at least 10 different CV templates. Since I didn’t want to fall victim to my own perfectionism, I dedided to share the template now even though it could probably be better. It also doesn’t really comply with my own standards regarding good code, etc. 😉 Well, you can’t always have it all.

It is, however, more of a Saturday afternoon fun thing I did. I won’t give any recommendations as to whether it will be considered as appropriate in your field of work to actually use this CV 😉

Also, I hope I am allowed to have the Jack Sparrow images in the example. I am not so sure about it however. Come visit me in prison if this should go wrong 😉

Buy me coffee!

If my content has helped you, donate 3€ to buy me coffee. Thanks a lot, I appreciate it!

€3.00

XML to LaTeX (simple)

Today, I wanted to share this super simple XML to LaTeX tutorial. Using XSLT, you are going to transform XML data to LaTeX output which you can then go on to compile into your desired output PDF. There will be no fancy stuff whatsoever in this post, just the basics and what to keep in mind with these transformations. It is the quick intro to XML to LaTeX I did with my students a while ago which was done one day after they had their first contact with XSLT, so it should really be beginner-friendly. I labeled it “Advanced LaTeX” anyway because I think starting to automate things is always a step in the right direction 😉

Configuring the transformation scenario in Oxygen

I am going to assume you use Oxygen now because that’s what a lot of people in the DH do and this post is directed towards my friends in the DH. Especially those who think print editions are an obsolete concept in times of the Digital Edition. Maybe having a nice little intro to XML to LaTeX transformations available will change their minds 😉

To set up the transformation scenario, choose XML transformation using XSLT, then choose your XML document and your XSL stylesheet (set up and open those document in the editor before you configure the scenario). Then choose a Saxon 9 version (whichever you like). Then ignore the FO tab and get right to the output tab.

Here you configure how to name your output. Best click the green arrow and choose cfn, then append -latex.tex. So the result the current filename with -latex.tex appended to it. This is an important step so you don’t accidentally overwrite the original. Which in this case is not so dramatic since it has a different ending anyway but if you do XML to XML transformations, this is even more crucial. Then tell Oxygen to show it in the editor as XML (even though you know it isn’t). The editor will then, of course, complain about the non-valid XML but don’t worry. Just copy all (CTRL+ACTRL+C) and paste it (CTRL+V) into a completely empty (!) project in Overleaf  or just compile the LaTeX directly if you have it installed on your machine.

There it is, you’re set. Now let’s get to the stylesheet.

The stylesheet

So, this is the whole thing. You can just grab it and go if you don’t care for the explanation or read on to find out why things were done the way they were done. This tutorial assumes you’re already familiar with how XSLT works, just haven’t done transformations to LaTeX yet, by the way. I am also assuming, your base XML is in the TEI standard.

 

 

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"     xmlns:xs="http://www.w3.org/2001/XMLSchema"     xmlns:t="http://www.tei-c.org/ns/1.0"     exclude-result-prefixes="xs"     version="2.0">
    <xsl:strip-space elements="*"/>
    <xsl:output method="text" encoding="UTF-8" indent="no" omit-xml-declaration="yes"/>

    <xsl:template match="/">
        <xsl:text>\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\DeclareUnicodeCharacter{2060}{\nolinebreak} % might not be necessary for you

\title{</xsl:text><xsl:apply-templates select="//t:title"/>
        <xsl:text>}
\author{</xsl:text><xsl:apply-templates select="//t:author"/>
        <xsl:text>}\date{\today}
\begin{document}
\maketitle
\tableofcontents\newpage</xsl:text>
        <!-- get some metadata from the TEI header using the push paradigm -->
<xsl:text>\begin{itemize}</xsl:text>
<xsl:for-each select="//t:persName[ancestor::t:teiHeader]">
    <xsl:text>\item </xsl:text>
    <xsl:value-of select="." />
    <xsl:text>

    </xsl:text>
</xsl:for-each>
<xsl:text>\end{itemize}
\newpage</xsl:text>

        <!--  <xsl:apply-templates/> OR -->
        <xsl:apply-templates select="//t:text"/>
        <!-- just use the pull paradigm on the TEI body so you don't get a meaningless TEI header dump in your document -->

        <xsl:text>\end{document}</xsl:text>
    </xsl:template>

    <xsl:template match="t:head">
        <xsl:text>\section{</xsl:text><xsl:apply-templates/><xsl:text>} </xsl:text>
    </xsl:template>

    <xsl:template match="t:p">
        <xsl:apply-templates/>
        <xsl:text>

        </xsl:text>
    </xsl:template>

    <xsl:template match="t:hi">
        <xsl:text>\emph{</xsl:text><xsl:apply-templates/><xsl:text>} </xsl:text>
    </xsl:template>

    <xsl:template match="text()">
        <xsl:analyze-string select="." regex="([&amp;])|([_])|([$])">
            <xsl:matching-substring>
                <xsl:choose>
                    <xsl:when test="regex-group(1)">
                        <xsl:text>\&amp;</xsl:text>
                    </xsl:when>
                    <xsl:when test="regex-group(2)">
                        <xsl:text>\_</xsl:text>
                    </xsl:when>
                    <xsl:when test="regex-group(3)">
                        <xsl:text>\$</xsl:text>
                    </xsl:when>
                    <xsl:otherwise/>
                </xsl:choose>
            </xsl:matching-substring>
            <xsl:non-matching-substring>
                <xsl:value-of select="." />
            </xsl:non-matching-substring>
        </xsl:analyze-string>
    </xsl:template>

</xsl:stylesheet>

 

The XSLT declaration and the LaTeX preamble

Put the following after your XML declaration. This will ensure output is LaTeX-friendly.

 

<xsl:strip-space elements="*"/> <!-- for LaTeX -->
<xsl:output method="text" encoding="UTF-8" indent="no" omit-xml-declaration="yes"/>

 

\DeclareUnicodeCharacter{2060}{\nolinebreak} was added because LaTeX complained about an undefined character in some of my students XML data. Personally, I had never gotten this error before, so you might as well leave it out.

Creating environments

As we had just learnt some XSLT basics, I wanted the students to use at least one push and one pull paradigm type template. So the task was to process any element from the TEI header using the push paradigm and then a pull paradigm template for the body. To make this little template more efficient teaching-wise, I decided to introduce how to create a LaTeX environment using XSLT for the TEI Header / push paradigm and do at least one other command using the pull paradigm on the TEI body. Also this demonstrates as opposed to for the body.

So this next piece of code sets up an itemize environment for persons present in the header. In a “real” stylesheet, it would probably be more wise to check, using whether there is one potential element like that present and only paste the \begin and \end on that condition.

Also, as you might have noticed, all the LaTeX commands are inside . This looks a bit confusing at first but really isn’t. Just make sure you don’t create invalid XSLT by shuffling them around.

 

<xsl:text>\begin{itemize}</xsl:text>
<xsl:for-each select="//persName[ancestor::t:teiHeader]">
    <xsl:text>\item </xsl:text>
    <xsl:value-of select="." />
    <xsl:text>

    </xsl:text>
</xsl:for-each>
<xsl:text>\end{itemize}</xsl:text>

 

Pull paradigming emphasis

When creating simple commands using the pull paradigm, be sure that you don’t end up with too many “overlaps” since “simple” commands in LaTeX don’t take multiple paragraphs as arguments. If in doubt, always use environment and the global switches (like \bfseries). Since you are automating things, you always have to take into account that data might not always be marked-up in a way which makes sense to you. There can easily be linebreaks inside a single italic highlight. If this is the case in you data, better create an environment. For simple purposes, however, this is good enough:

 


<xsl:template match="t:hi"><xsl:text>
\emph{</xsl:text><xsl:apply-templates/><xsl:text>} <xsl:text></xsl:template>

 

With these commands (and genereally when transforming to LaTeX), you sometimes need to make sure you don’t involuntarily add spaces or lack space which will make the output hard to read and debug.

In this example, I made sure not to add any whitespace inside the template rule and also did not have Oxygen format or indent the XML to avoid these unwanted spaces.

And finally: Escaping entities

As you might remember, markup languages tend to use entities to escape certain characters. Bad thing is, LaTeX and XML use different entities. So we need to escape them. I know that the OxGarage standard stylesheet does this using the translate() function but I prefer to use since it’s less “messy” than a nested translate() construct.

Ah, and side info by the way: There is this standard stylesheet from the TEI consortium which might be of help if you are looking for inspiration. Since it is very generic, however, it might not be helpful if you are a newbie at both XSLT and LaTeX. The XSLT is pretty advanced and also the LaTeX probably uses some commands you might not be aware of.

 

    <xsl:template match="text()">
        <xsl:analyze-string select="." regex="([&amp;])|([_])|([$])">
            <xsl:matching-substring>
                <xsl:choose>
                    <xsl:when test="regex-group(1)">
                        <xsl:text>\&amp;</xsl:text>
                    </xsl:when>
                    <xsl:when test="regex-group(2)">
                        <xsl:text>\_</xsl:text>
                    </xsl:when>
                    <xsl:when test="regex-group(3)">
                        <xsl:text>\$</xsl:text>
                    </xsl:when>
                    <xsl:otherwise/>
                </xsl:choose>
            </xsl:matching-substring>
            <xsl:non-matching-substring>
                <xsl:value-of select="." />
            </xsl:non-matching-substring>
        </xsl:analyze-string>
    </xsl:template>

 

And that’s it. I hope this was useful to you.

Cheers,

the Ninja

Buy me coffee!

If my content has helped you, donate 3€ to buy me coffee. Thanks a lot, I appreciate it!

€3.00

Planning your project for “service providers”

When writing my last post on how to earn money with LaTeX I realized I actually had a lot of advice on planning and scheduling your project as well. So I will sum up my experiences with all sorts of “customers” (be it project partners or whatever you have).

Motivation

This is not to complain how horrible things are but just to sum up a few things you should take into account that an unexperienced person might not find self-evident. Seeing as my days of being unexperienced myself are not very far away, the learning process is still pretty fresh and I still remember the problems a beginner can face, so I hope to be able to provide valuable advice.

Some of the advice is copied out of the earning money post, so don’t be confused if you feel like you might have already read some of this. Initially I had wanted to extend the old article but since it already was so over-long, I decided to take this out into its own post. This is also why I will start with producing print-ready PDFs for a publishing house, since this is where I had started my ramblings in the last post.

Communication between two worlds

Your job is to communicate the technical stuff in a way which makes sense to the (probably non-technical) customer. So you need to understand their language to deduce from it what it is they want. Then, you should reformulate it in a way which is a bit more technical and “re-translate” it to them to check if you got it right. This is a necessary part because mostly, the requirements you get are not specific enough and there are a lot of decisions to be made in the process of planning implementation and acutally implementing these requirements.

Production paradigms and methodologies

In the past, people used the so-called “waterfall model” which means that they would get the requirements once from the customer and then implement them like this, working around any lack of information they might encounter. Modern methodologies lean towards shorter producation cycles where you produce a “minimal working example” fast so you can check whether this is actually what the customers want. If there are any additional decisions to be made or information missing, you re-check with the customers straightaway. You try to avoid implementing unnecessary features you think are cool but the customer didn’t ask for. For now, I will leave it with this super short info on methodologies. Maybe I will follow up here with a post of its own at some point in the future.

Pitfalls in organizing your work. On the example of producing print-ready output

Only because you know some LaTeX doesn’t necessarily mean you will know how to cater to the needs of a publishing house. Try to get the opportunity of working with them for free. Again, small publishing houses or university publishers often offer the option that you hand in the final PDF which comes a lot cheaper than having them typeset it for you. This will save the scientist in question a lot of money (500-2000€ depending on the amount of work). Offer to some university professor that you will typeset their book for free, so you will have done the interaction with the publisher at least once, have a credential to show and know what publishers want. Also, don’t underestimate how long it might take. There is a reason a job like this can pay up to 2000€. Especially scientific publications often have a million changes and corrections before they are finally ready for print.

During the process, you might realize that producing a PDF which corresponds exactly to the publisher’s criteria is more difficult than you would think. At least, that was what it was for me. I had used LaTeX and knew how to do the customizing needed to make my thesis advisors happy, but the publisher ended up wanting a million things changed I had never even dreamt of doing in LaTeX. Advisors will quickly be happy with nicely typeset output and correct citations. Publishers, however, want a very specific look. For example, the first thing I had to change is the typesetting of the footnotes which no advisor of mine had ever cared about. I had never customized footnotes before and wasn’t even aware that could be an issue. So if you haven’t done any of those things, I suggest you start reading up on them now. (An upcoming post on LaTeX for the Accidental Editor will explain all those things).

It will probably be a lot more work than you might have expected and the work might also be pretty different than what you are used to doing with LaTeX. Anticipate this (!). Publishing houses also tend to find typographical problems you hadn’t even dreamt about beforehand.

Scheduling the work

Apart from traditional publishers, I have found any customer really is like this. The version of text etc. you are handed is never the final one. You typeset it and think you’re done and only then they notice the millions of typos and so on. The first “final version” together with the preparatory and consultation meetings is half of the work / hours you need to plan for (believe me!). If have found that usually, the corrections are at least as much work as creating this “first final version” even when I had to create the whole layout and some TikZ for that first version”. Correction work after this is done will seem to expand exponentially! This is not necessarily a horrible thing if you know about it an plan accordingly. If you think like a beginner often does, however,  and don’t feel confident enough dictating your terms and communicating your needs, they won’t be met. You are likely to find yourself in a hot mess. This is great relationship advice too, by the way 😉

The first “final document” they hand you is actually the first draft

This is super annoying and I’m still thinking about how I can prevent this from happening (again) because often, it’s just due to a lack of diligence on their part. But of course, once their document is typeset in LaTeX, you are the only one who still knows how to make changes. Anticipate this and also, probably (secretly) include at least 10 hours more than you need in the fee / estimate of hours needed for corrections (even for teensy mini-projects and probably especially those as people tend to be even more careless with them). There will be many corrections to make. Should you find a way of preventing this from happening, please inform me 😉  So far I have not been very successful. People only see the typos or visual problems in the final fully typeset version. But these extra corrections you are not getting paid extra for are often what turns a profitable side job into one that’s not profitable anymore. Also, these corrections mostly need to be made instantly or last minute. So inquire about when the deadline is and make sure you are available at that time. Probably best plan to be with them at that time (the last hours before submission) and charge them for it preventively. Because you will end up having to do it anyway. Also, the more scientific the content, the more stressful it’s probably going to be.

Creating a ‘safe space’ for your work by saying “No” – Learn to be strict with your customer

Never forget that you are the last part in the food chain. Your customers will hand in the data late, like 2 hours before the deadline and you will be the one whose head is on the line, unless you set up your conditions very clearly before. If you don’t want this side job to become stressful, you need to make the schedule for them. They have no clue how long their own corrections and “completely unforeseeable” addtions will take.

Give them a deadline long before your head is on the line. Imagine you get a LaTeX error in the last minute and don’t know how to solve it. Also, to prevent this, create a minimal working example before you receive the final data (this will be in the last minute and way too late to start). Ask for a mandatory “minimal working example” and implement this right after the first meeting, so they can give feedback. They will probably want  litterally everything changed. Or, even worse, they say it’s perfect and thanks a lot. The most important thing to know is: They will akways have a millon corrections and the correction process will take at least as long as creating the “first final version”. Even if they tell you “it’s perfect, thanks so much” rightaway. Corrections will come. I have not had a single project where this was not the case. If you have other experiences, please let me know. But also from my colleagues I hear nothing else.

You need to know this and never let anything cheat you into believing otherwise. The less corrections or feedback you get after the first draft, exponentially more will come the closer you reach the “real” deadline of the project (by this I mean closing in to the actual end, after the “first final version”).

Helping the customer find out what they really want

Often customers will end up realizing that they don’t like their own idea anymore once it’s implemented. Or they might not have an idea of their own and you need to make multiple mockups until they’re happy. But the customer not having an idea of their own should never be mistaken for them happily accepting whatever result you produce. Once you have come up with an idea, they will probably tear it apart. This is not meant in an unfriendly way, but it’s just a fact that after you serve them a concrete implementation they will suddenly realize exactly what they would have wanted. Hint: It’s probably the exact opposite of what you just laboriously produced.

Protect yourself by insisting that extra features are all super difficult to implement (charge extra)

I don’t say this to discourage you but just to give a realistic idea of how it’s going to go. This is the same for any kind of work where you produce a technical implementation for a “customer” who will hand you the data to be represented. This can be an XML-based project in the Digital Humanities or a LaTeX-based poster printable. Also, another tip from the DH world: Always say everything is incredibly hard and takes super long and you are not sure if it can be done at all if people ask for extra stuff which wasn’t part of the contract before. I used to hate this and think it was a sign of  “bad service” or laziness but it’s really just a necessary precaution. You need to protect your own time or else you will end up working for free. If necessary, charge extra. This also means that you need to write down a very clear “contract” of what you agreed to do for which money. Don’t add extra goodies for no extra pay. Once you ask additional money, the feature probably isn’t all that important anymore.

Always make a first draft with (at least snippets of) real data straightaway

Be sure to make the “mockup” using their “real data”, not lorem ipsum only, if possible. Their data might not look anything like lorem ipsum. Do it right after the first meeting, so you did your part. If they fuck it up and don’t hand you any data before the deadline, this proves that you did your work and they will not be able to back out of paying you.

Some security is never a bad idea. Also, this makes sure that you get “most” of the work (maybe the first third) done early. Remember, if you are somebody who is always Mr. Last Minute, this job probably isn’t for you. The customers will likely hand you the data way too late. If you wait with the first mockup until after they give you the final data, you are never going to make it since they will want to give feedback and have changes made as well.

Specificities of the Humanities

In the Humanities, it is most imporant that you learn all the features MS Word offers and how to reproduce a Word-like-but-better look. If they are to let you use LaTeX, you first have to prove it has all the features they are used to from MS Word.

Like I complain about in my quitting word post, everything revolves around MS Word in the Humanities. This means that even if you choose not to use Word in your own private life, you will have to know how to work with it. Most importantly, how to make the best of it by extracting the data to further process it using a different data format.

Closing thoughts

So, these are some general thoughts on working as a “service provider”. The experiences are both from some contract or freelance work with LaTeX and project work in the DH. At some point, I will probably write a post specifically on DH project management as well. But for now, I just want to stress again that this post is not to bitch about anybody or to scare anybody away. I just wanted to share some of my experiences which could be useful for someone looking to get started, so they might have an idea of a few things to take into account.

So long and thanks for the fish!

The Ninja

 

Buy me coffee!

If my content has helped you, donate 3€ to buy me coffee. Thanks a lot, I appreciate it!

€3.00

Fast typing LaTeX

I recently became aware of this post where somebody asked how you can become faster at typing LaTeX. Just a little post with a few recommendations.

Experience from constantly using LaTeX for everything

I have to say, I think it really gets better with experience. And experience from doing your everyday stuff in LaTeX (like to do lists, taking notes, etc.). Else you probably just won’t get enough experience to become really fast.

Raise awareness

But then again, slowing down might not be a bad thing if you’re supposed to produce high quality work. Using LaTeX, then, will force you to take the subconscious back into your conscious mind. Maybe not what you want when just quickly taking notes, but maybe something to reflect upon in the long term.

I also found that, since I don’t constantly use MS Word’s auto-correct anymore, I’m actually better at spelling and grammar (even though, as someone holding a degree in Latin, I probably never was bad in the first place).

However, I find it useful that LaTeX forces you to be more conscious on some stuff (like typing correctly instead of bad touch typing and relying on auto-correct to clean up your mess).

10 finger system touch typing

Quick typing generally comes down to correct 10 finger system touch typing (Zehnfingersystem being the German name, focusing on the fact that  you use all your ten fingers, whereas the English name touch typing focuses on the fact that you type by muscle memory and don’t look at the keyboard). So if you don’t know that already, please stop complaining about LaTeX. You’re probably super slow and make tons of mistakes, so don’t pretend LaTeX plays a big part in slowing you down.

The free open-source Tipp10 app is a great resource for learning touch typing (available for all distributions, your Linux package mangager will probably have it) . Especially as you can use it to target LaTeX-specific typing effectively since the program allows you to use your own texts for typing practice. This means, if you want to get better at typing LaTeX, you should create a “fake” document which contains tons of the commands you use most often, then add it to the app as a custom practice text and practice for 5 minutes daily (ideally before starting work as a “warm-up“). You will get better very quickly. Here is an example text I created for this purpose. Feel free to add what you need or remove what you don’t need.

This is what I would recommend for now,

Cheers,

the LaTeX Ninja

 

Buy me coffee!

If my content has helped you, donate 3€ to buy me coffee. Thanks a lot, I appreciate it!

€3.00

How to quit MS Word for good

This post I want to dedicate to the pressing question of how to live without Word in the Word-filled environment of Academia where Word lurks behind every tree and jumps at you when you’re not paying attention.

Do you actually enjoy this eternal distraction of a non-working text editor? Well, I don’t. And even though it’s not actually a good tool (if you’re being honest with yourself, deep down in your heart, you know I’m right), it has infested the world (not only of Academia).

 

How the story begins…

At some point, now over a year ago, I decided that I wanted to quit MS Word once and for all. I had hoped to do that before but every single time, I had came up with about a million excuses why I just couldn’t. Probably kind of like you are now already preparing your counter arguments as to why that might work for me but it sure as hell is completely impossible for you. You can’t survive in your workplace without Word because everyone’s using it.

Like Tim Ferriss, I want to invite you reflect on this Mark Twain quote now and better yourself:

“Whenever you find yourself on the side of the majority, it is time to pause and reflect.” – Mark Twain

The impossibility of quitting Word? Rehab.

Think of this post as your rehab where you can get sober once and for all. And I’ll provide you with answers to a few key problems which you might encounter during the process to make sure you stay sane.

I got fed up with Word so much that at some point, I wanted to quit but wasn’t sure it would actually be possible to get rid of it for good. Everybody was using it. How was I going to communicate or collaborate with my Word-loving colleagues? But I had really had it with Word and it needed to go. Because, you know, Word really is like drugs – it’s not good for you but you keep using it. I needed to break the habit. And, believe it or not, I have lived a happy, Word-free life for over a year now.

Transitioning to full-time LaTeX

So as this blog is called “The LaTeX Ninja”, of course, I urge you to quit Word in favour of LaTeX. “But that will everything take forever”, you say. What if I need to take a quick note? Well, as you might remember from somewhere way back in the past you most certainly have some basic text editor or notepad tools already installed on your system. It’s just that you never use it. But isn’t that exactly for that purpose of taking quick notes? You can still use that. Or just make it a habit to always use LaTeX. I also started that habit a while ago (for documents where I want some visual structure, highlight something, make lists, etc.) and really, you learn those few commands by heart so fast. Just make a mini project to commit to taking all your notes with LaTeX for two days (where you preferably don’t have important meetings where it’s vital you can keep up with your note-taking).

So if you say this will slow you down, that’s a blatant lie. Taking your hands off the keyboard to take the mouse, select and click to make something bold definitely takes longer than just writing it. If you’re using keyboard shortcuts, congrats you’re an advanced user. So you don’t have an excuse why you can’t learn a text editor like VIM which provides some auto-completion for LaTeX. No more excuses.

A side-effect of transitioning to LaTeX completely will be accelerated learning of LaTeX, since you will be forced to look things up and learn new concepts regularly. So if your goal is to become an advanced LaTeX user, I can tell you one thing – your progress will be exceptionally slow if you never expose yourself to having to rely on LaTeX. If you always use Word, your LaTeX skills won’t get better at a steady pace.

Problem 1: I sometimes work on computers without LaTeX installed and no rights to install anything

Working on a computer that doesn’t have LaTeX? It’s horrifying, I know. Yes, it’s a disaster. I tend to get panic attacks and so on, but hey – thank God there’s Overleaf, the tool that allows you to compile LaTeX even from weird, Word-infested computers, if they only have internet.

Problem 2: But I need to see what my text will look like while writing.

No, actually you don’t. You’re just so used to Word or Word-style WYSIWYG editors that you don’t remember anything else. The tools we use shape how we think and work. With Word being a tool which suggests to its users that they are so apt at typesetting that they should do it. Info: No, you shouldn’t, unless you’re a qualified professional. So, if typesetting really isn’t your job, you totally don’t need to see what the typeset final output will look like. Just focus on the fucking content. That’s your job.

Like typewriters, or an actual notebook and a pen, LaTeX is just a different medium. You were ok using a pen, weren’t you? That’s a different medium too. When you transitioned from analogue notebook to MS Word, that was a transition, too. And you mastered it. If you’re old enough, you might remember typewriters. There you didn’t have much control over how your output looked like either. Other than instant-typesetting Word, typewriters required you to write out the manuscript by hand, on paper, so you wouldn’t screw up too many times when actually typing it out. That was a completely different style of working. It took more time and precision. You had to pause and reflect before acting. So maybe transitioning to a new way of doing things will make you more aware than just typing away in Word where you write on auto-pilot. If you’re someone who needs nice looking output: transition to LaTeX. If you’re a knowledge worker: Congratulations, your professional worth is not determined by how fast you create content but by how good it is. Using a tool that takes a little longer to type it out forces you to reflect more and will up your awareness. Win-win! Transition to LaTeX.

You don’t need Word. You’re just addicted to the Word way of life and I want you to quit and live a happier life in the long run – you’ll thank me later. Especially should you ever come to have some advanced typesetting needs. Like a 500 page PhD thesis in Archaeology with 2000 images. Or the honour of editing conference proceedings is bestowed upon you. Start learning the skills now, save time and tears in the future. Thank me later.

Problem 3: Everybody else uses Word – how will I be able to communicate?

The conversion routine, part 1: Pandoc

Just use a PanDoc conversion whenever you feel like sharing. It works as follows (and more info can be found in the PanDoc demos):

pandoc main.tex --smart --bibliography=literature.bib -S -o output.docx

This means that Pandoc will use your main .tex document as a source and pandoc-citeproc (the citation plugin) will use literature.bib as the bibliography file. -o means that output.docx will be the name of the output. However, please note that a) you have to install both pandoc and pandoc-citeproc for this to work and b) this is a very generic transformation. If you have custom commands or citation styles in your document, these elements will not be correct in the output. So if you already know you’ll have to hand in a document as .docx, just don’t do anything complicated. The citation might not come out the way you’ll need it but for a normal length paper, this doesn’t take more than 10 minutes to correct (and you’d have to check your citations before handing it in anyway – at least I assume you, as a good scientist, hopefully, always do that…). Use search and replace wisely. If you need to hand in author-year style, the big changes to be made are going to be only in the bibliography anyway.

Part 2: Manipulating and sharing documents with GoogleDocs (version control included)

Then, once this is done, you are just one more final step away from the bliss of Word-free life: Sell your soul to Google, so you can use Google Docs. Now, open a new document and import output.docx. Now you can do all your editing (without Libre Office messing everything with their .odts) and download in the requested file format (probably .docx). Also, in case you didn’t know, GoogleDocs has a footnote plugin you have to add manually (Add-ons > Get Add-ons > Footnote Style). Once this is done, you can mark any footnote and say something like “apply this style to all footnotes”. This will come in very useful because GoogleDocs don’t automatically support batch editing multiple footnotes at once.

Plus, the benefit of the “comment”, “share” and “track changes” (version control) features GoogleDocs provides. This even allows you to collaborate with version control while multiple contributors work on the same document simultaneously. No more “Document-1”, “Document-1-1”, “Document-1-correction”, “Document-1-final”, “Document-1-final-revision”. Who the hell is supposed to remeber which one is the current version? Get version control. Overleaf also has version control by the way. You can use any version control tool you want when working with LaTeX. Version control might still be a strange and scary topic if you’re a non-technical person. But it’s really no big deal and I’ll explain it in some other post. Also, for tools I suggested, like GoogleDoc or Overleaf, you don’t need to know shit. Thank God!

You still think you can’t live without Word in your life? If I managed to quit Word for good, so can you. And just so you know: I never regretted it for a second. Now I can’t imagine how people even live with Word in their lives.

Best,

your LaTeX Ninja

 

PS: If you think using LaTeX would slow you down, see this post on Typing fast in LaTeX.

 

Buy me coffee!

If my content has helped you, donate 3€ to buy me coffee. Thanks a lot, I appreciate it!

€3.00