Why Dynalist is My Favorite Notetaking Tool

Why Dynalist is My Favorite Notetaking Tool

Managing code snippets is extremely important when it comes to doing development. Because it is extremely difficult to remember all the things a programming language can do, while trying to solve a difficult problem. Even more so if you aren’t familiar with that language.

Having ready-baked software that you have tested makes development significantly easier. Forgot a specific syntax? Forgot how to write an algorithm in a specific language? Forgot what a function does and the language’s official documentation / examples are too hard to relate too? Can’t recall which function should be used for converting strings to array, or different data types? Can’t trust someone elses code until you’ve tested and verified it yourself on your machine?

If you have any of these problems like I do, you’ll understand the importance of having your own code repository that you can refer to.

You might ask “Isn’t that what github is for?”, the answer is both yes and no.

Github and git subversion control is extremely important when it comes to keeping track of note / changelogs of a software package over time (as well as collaboration). But occasionally I want to jot snippets used in multiple applications

By code snippets, I am referring to short 5-10 liners of code that handle common sets of problems that you encounter.

For instance, say I use this python code snippet when reading .txt files

<span class="token keyword">import</span> os
dir_path <span class="token operator">=</span> os<span class="token punctuation">.</span>path<span class="token punctuation">.</span>dirname<span class="token punctuation">(</span>os<span class="token punctuation">.</span>path<span class="token punctuation">.</span>realpath<span class="token punctuation">(</span>__file__<span class="token punctuation">)</span><span class="token punctuation">)</span>
lines <span class="token operator">=</span> os<span class="token punctuation">.</span>path<span class="token punctuation">.</span>join<span class="token punctuation">(</span>dir_path<span class="token punctuation">,</span> <span class="token string">"lines.txt"</span><span class="token punctuation">)</span>

<span class="token keyword">def</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
    fh <span class="token operator">=</span> open<span class="token punctuation">(</span>lines<span class="token punctuation">)</span>
    <span class="token keyword">for</span> line <span class="token keyword">in</span> fh<span class="token punctuation">.</span>readlines<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
        <span class="token keyword">print</span><span class="token punctuation">(</span>line<span class="token punctuation">)</span>

<span class="token keyword">if</span> __name__ <span class="token operator">==</span> <span class="token string">"__main__"</span><span class="token punctuation">:</span> main<span class="token punctuation">(</span><span class="token punctuation">)</span>

There’s no way I will distinctly remember how to write this all out from memory since I haven’t used python long enough, but if I had this snippet of code somewhere I can easily copy+paste this snippet and modify things as needed. This way I only have to remember one piece of information at ANY point in time – where that file lives at – as opposed to knowing all the semantics / syntaxes

By only having to remember one thing as opposed to many, it makes it much more difficult to completely “forget” how to do things, if not impossible.

So instead of remember everything about a specific topic, I could just remember the place I remembered how to do something. This in turn enables me to retain essentially infinite amounts of information without really forgetting it and relearning it (since those notes are personalized to me), in fact this is sometimes referred to as a mind palace.

Managing Code Snippets

Back on topic

When it comes to managing code snippets, you could always resort to snippets named by subfolders, but this would get really complicated.

Especially when you have 1000+ of these code snippets and you start having trouble finding which code snippet was placed in which directory, or it takes too long to access those files

Because of this, its imperative to have a robust solution for taking short snippets of codes that can be accessed fast and scale well overtime

Previously, I had been using an app called https://app.gistboxapp.com/, which runs off your github gists into a nice user-friendly format.

I won’t cover all the specifics of gistbox. The problem I had with gistboxapp is the following:

  • I can’t really add notes that quickly
  • It takes me far too long to find whatever code snippet I stashed away
  • I can’t organize regular notes along with it
  • Too much wasted real estate on my screen

I ended up ditching gistboxapp for dynalist.io and haven’t looked back

Enter Dynalist

I wrote 2 other posts on how I use dynalist in general, as well as what tools I use to make it awesome. It also covers how to add on codesnippets into dynalist using Piotr’s PowerPack extension.

One thing that Dynalist does well with Piotr’s PowerPack extension (see previous post) is the ability to create code snippets. This, along with all the other tools I use along with it allows me to take rich notes like these:

What you see above is my conceptual understanding of how a fibonacci sequence works in python as well as the math that goes behind it. Its powerful in the fact that I can combine:

  • Lists
  • Latex
  • Images
  • Code snippets

all at the same time to break down information in whatever form I want. This helps me understand a specific concept much easier, in turn makes it a very personalized note that I cannot really forget because its etched in my mind now

We can even take it further by adding mathmatical gifs to help break the concept down. E.g.

But I digress. This isn’t even the most powerful features I use with dynalist to help manage my code snippets

Below are the reasons why Dynalist is a superior code snippet manager to all its competitors

1 . You can take any flavor of notes you want effectively

One issue that I have with ANY dedicated code snippet manager, is that its purely dedicated to only handling code snippets for the most part.

Dynalist is first most a notetaking tool, not a code snippet manager, so you have powerful ways of organizing pieces of information together. These include

  • The ability to collapse notes you don’t want to see
  • Add as many sublists as yo uwant
  • Bold and highlight important text as needed
  • Markdown formatting
  • Latex and Math
  • Ability to add images, gifs
  • Ability to add embedded youtube videos / codepen snippets, and much more

By having all of these features you can customize contextual text around those snippets much easier, allowing you to make those code snippets yours and therefore easy to recall

2. You can customize code snippet colors using CSS

I didn’t like the way some of code snippets looked like when appearing on the browser, so I modified my CSS so that its easier to look at :

<span class="token selector"><span class="token class">.hljs-selector-class</span> </span><span class="token punctuation">{</span>
    <span class="token property">color</span><span class="token punctuation">:</span> <span class="token hexcode">#FFEBCD</span><span class="token punctuation">;</span> <span class="token comment" spellcheck="true">/* Blanched Almond */</span>
<span class="token punctuation">}</span>
<span class="token selector"><span class="token class">.hljs-selector-tag</span> </span><span class="token punctuation">{</span>
    <span class="token property">color</span><span class="token punctuation">:</span> <span class="token hexcode">#FF355E</span><span class="token punctuation">;</span> <span class="token comment" spellcheck="true">/* Radical Red*/</span>
<span class="token punctuation">}</span>

Before and after:

3. You can search everywhere for your code snippets

If you used github to manage to code snippets you can only search within the same repo for notes.

With dynalist, you can search across any document and add as many notes as you want

You can even add your entire repos worth of notes in dynalist if you wanted too even if it spanned a thousand lines

4. You can take organized code-driven course notes easily and refer back

If your taking a computer science course or programming class, you can easily format your notes based on the class rubrick.

And then refer back to these code notes easily at any point in time.

Here is an example of what my course notes look like from lynda.com, on a course called “Javascript Essential Training” Section 6 and 7 notes

This adds onto the point that you can search everywhere for your code snippets, and see which document they are at

5. You can highlight code by using Chrome’s CTRL+F tool

One of the nice features of using an online notetaking tool is you can highlight words

You can also do this with code snippets as well

Use Chrome’s CTRL+F and type in the word like “while”


6. You can take notes on Python’s IDLE easily

Python has IDLE which is a tool to help understand what is going on underneath the hood when writing python.

This is extremely helpful when getting feedback on your coding practices and when learning concepts from other


This is what I do when taking notes from Python IDLE

  1. Write my python code and see its output
  2. Copy everything into dynalist
  3. Format typo errors if needed
  4. Add breakpoints so its easier to look at
  5. Break down any information I don’t understand

7. You can interject notes in your code snippets

Normally this feature is something you only get with a blog platform like jekyll and wordpress

With dynalist, you can interject notes in your code snippets (on top of the traditional way of adding comments as well). This aids in allowing you to document code in as many ways as you want

The above example highlights this

8. You can toggle line numbers in your code snippets

What’s nice is that you can also toggle the line numbers on and off at any point in time, so dynalist can be used as a tool to help teach code or taking better notes by simply referring to line numbers.

Example of toggling line numbers:

9. You can take CSS and Javascript notes with ease

By adding images and gifs to your code snippets you can clearly see what those code notes are for, especially since CSS / Javascript notes are highly driven by what the end result looks like.

Or you can embed codepen.io files, etc. Like so:

10. Automatically backed up on your end

One problem I have with gistbox or even github is that there is no native way of backing up my code repos without using a 3rd party app or script.

With Dynalist Pro it syncs everyday to my dropbox so my mind is at ease that I can reproduce any notes in the event they are lost

11. I can clearly see what I don’t understand

This is one of the biggest Pros of dynalist as a code snippet manager

Having the ability to swap between my IDE’s theme / atmosphere and into dynalist helps give my code a different set of eyes.

There’s a tip that I have always been told when writing english essays in school – if you have trouble spotting errors in your document simply change the font. This helps break out any familiarity you had with a specific formatting so you can pinpoint errors more easily

The same is true with Dynalist. But its much more powerful. Here’s how I use this with dynalist + code snippet

Whenever I come across a piece of code I don’t quite understand, this is my general workflow:

  • Copy that code and compile it myself in my IDE
  • Debug / use Linters or use http://pythontutor.com/ until I thoroughly understand every step in that code
  • Copy the tested code into dynalist
  • Add sub-bulletpoints to those notes, explaining how it works to myself
  • Draw diagrams (by hand) if needed to explain
  • Break down long chains of code into their own bulletpoints

By having another tool for adding many flavor of notes to my code, I can contextually break down information I don’t understand. Essentially what I am doing is givig myself feedback in an indirect way effectively

An example of how I use this is in the first image I linked above about fibonacci sequences in python

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.