Tools
Writing Text & Code
Obsidian – Probably my new note-taking application. Similar to Notable but with much more functionality.
VSCode - Very powerful text editor.
Cursor - VSCode but with supercharged LLM tools.
Quarto - A document preparation package that lets you write and execute code and export in a plethora of formats.
Emacs - A classical and powerful text editor that can be customized for eternity. I use this for command line text editing and when I'm not in the mood for Atom Editor.
Jupyter Notebooks - A markdown and programming environment for Python, Juia, and R within your browser that is very functional for code development, prototyping, or scripting. Can also be extended to writing documents, presentations, and interactive visualization.
Jupyter Books - Jupyter extension to make writing a book from a collection of notebooks more practical. Its still somewhat unpolished but hopefully it becomes a standard approach for writing textbooks or manuscripts that are heavily based on supporting code.
Typst - Basically next generation LaTeX.
Atom Editor - Advance and powerful integrated development environment (IDE) for writing code and typesetting. I use this for programming in Python and Julia, as well as typesetting LaTeX documents. Packages that extend functionality are added easily.
Notable – Simple - Simple but effective markdown note-taking application. Supports multi-platforms. This is a good application for taking digitally typed notes.
Atomistic Modeling
LAMMPS - One of the most powerful molecular dynamics engines with HPC scaling.
ASE - Provides an easy to learn and use API for setting up atomistic calculations and simulations. Also interfaces with a huge number of compute engines.
PyMatgen - Similar to ASE but used by the Materials Project, adds a little more functionality such as surfaces, grain boundaries, dislocations, etc.
OVITO - Provides a convient way to visualize results from atomistic calculations/simulations. Very powerful.
Atomsk - A command line utility that comes in handy to manipulate atomistic configuration files.
GNN Universal Pretrained models - MACE, M3GNet, CHGNet, ORB all provide interatomic forces to run simulations on majority of periodic table.
Scientific Visualization
Veusz - A standalone 2D and 3D multi-platform graphing program suitable for preparing publication visualizations. I use this regularly for generating the final figures of a manuscript. This is because when constructing graphs it is sometimes easier to do this in a "what you see is what you get" (WYSIWYG) where as with plotting libraries through Python or Julia, you have to write the code to do what you want.
Matplotlib - This is a plotting library for Python. Its extremely versatile and powerful, but can require a good deal of tinkering to get the formatting and look you desire. You have to install a python distribution first and then the Matplotlib package.
PGFPlots and TikZ - These are packages for generating plots and graphics using LaTeX. Like Matplotlib there is a great deal of flexibility with what can be done but it can result in a lot of typesetting content. One of the best things about generating figures this way is that the "data" or "source" for the figure can be contained directly within the .tex files, so when you distribute this to a publisher or post on github, anyone can extract the data.
Inkscape - The opensource counterpart to Adobe illustrator for making 2D graphics. I use this in conjunction with Veusz, especially when I want to include a illustration or visual aid.
Blender - I haven't used this program extensively but it is very good for making 3D renders or animations. What makes this useful is the built in physics engines (e.g., light ray tracing).
WebPlotDigitizer/Engauge - There are many instances when you want to extract data from a plot you generated but can't find the original source or you want to compare results to a published result in a figure and you don't have access to the raw data. These two tools (which do the same thing) allow you to conveniently extract the raw data. Do keep in mind that the accuracy and precision are based on how you calibrate axis and select data point locations.
Researching/Publishing
Google Scholar - A indexed search engine for world wide academic, industry, and government publications. I always go here first over other search engines even though they are probably better at indexing (e.g., web of knowledge). With google scholar its easy to grab citations in APA/MLA format or the bibtex file. You can also use it to download author copies or openaccess versions of the publication.
Zotero - A open-source reference organizing tool with great add-ons.
Mendeley - A reference organizing tool for digital publications. Allows for exporting citations and PDF attachment/annotating. I tend to like this a bit over Zotero because its more polished in its features, but I wouldn't say this is the best tool.
Zenodo.org - A really nice tool for adding a digital object identify (DOI) to any content that you would like to make citable. Words well for presentations, code, figures, learning resources, etc.
TeX Live - This is the defacto distribution of the the behemoth typesetting package. There are many other interface distributions that are built upon this. If you want to write documents in LaTeX this is what you should install.
Scientific Productivity Tools
Sumatra - A fantastic command tool for managing, automating, tracking scientific computations. It allows for provenance of simulation code, input scripts and parameters, output data, and analysis of data. Its still an unpolished tool but I'm hoping the developers get renewed interest and funding to further build it.
DrWatson.jl - A more recent scientific workflow managment approach using Julia. Its similar to Sumatra in spirit, although not as through with regard to data and result provenance. For example it doesn't keep records for figures that are produced by scripts and associated simulation code.
Programming Languages
Python - Probably the most practical and flexible programming/scripting language for science and engineering. I would suggest this as your first language for learning if your not studying computer science or software engineering. There are so many libraries and resources available for Python its too hard to keep track of but we live in the age of the internet so its easy to find just what you need.
Julia - This is a new programming language that offers some purported benefits over languages like Python or R. In many scenarios it is possible to generate code that runs as fast as compiled languages like C or Fortran. Although new, there are many active packages being developed and maintained I believe Julia has a very promising future. I currently use this daily.
PkgTemplate.jl - This is the package for generating a Julia template structure for a package .
Documenter.jl - Allows for nice code documentation by extracting information from source code and other files.
Literate.jl - Takes commented Markdown text from source code and creates files in pure Markdown, HTML, or jupyter notebook.
Plots.jl - High-level plotting interface that makes complex plotting simple.
DataFrames.jl - Julia implementation of dataframes similiar to Pandas.
Franklin.jl - Package to generate static webpages for blogs related to math and Julia programming.
Turing.jl - Using Bayesian methods in Julia.
WxMaxima/Maxima - This is probably not a programming language in the traditional sense but it is based off of Lisp. The main use is as a computer algebra system (CAS). This is essentially the opensource competitor to Mathematica, although Python's SymPy + Jupyter Notebooks may be a better competitor. In truth WxMaxima is two things, "Wx" is the graphical interface for the "Maxima" interpreter engine. So if your trying to do derivations or working through the math of a problem this can be a nice tool to use.