2026-03-02
\[ \def\Er{{\mathrm{E}}} \def\En{{\mathbb{E}_n}} \def\cov{{\mathrm{Cov}}} \def\var{{\mathrm{Var}}} \def\R{{\mathbb{R}}} \def\arg{{\mathrm{arg}}} \newcommand\norm[1]{\left\lVert#1\right\rVert} \def\rank{{\mathrm{rank}}} \newcommand{\inpr}{ \overset{p^*_{\scriptscriptstyle n}}{\longrightarrow}} \def\inprob{{\,{\buildrel p \over \rightarrow}\,}} \def\indist{\,{\buildrel d \over \rightarrow}\,} \DeclareMathOperator*{\plim}{plim} \DeclareMathOperator*{\argmax}{argmax} \DeclareMathOperator*{\argmin}{argmin} \]
| Goal | Tool(s) |
|---|---|
| Correct | tests, static analysis |
| Maintainable | version control, CI, documentation, dependency management |
| Efficient | benchmarks, profiler |
BestieTemplate.jlPkgTemplates.jlDoctorWatson.jlor
using PkgTemplates
tpl = Template(; dir=pwd(),
user="schrimpf", # github username
authors=["Paul Schrimpf"],
plugins=[ProjectFile(), SrcDir(),
Tests(project=true, aqua=true, jet=true),
License(; name="MIT"),
Git(),
GitHubActions(),
Codecov(),
Citation(),
Documenter{GitHubActions}(),
PkgBenchmark(),
Formatter()]
)
tpl("SomeNewPackage")activate in pkg mode) put utilities that you always want availableactivate . when in TestPackage directory) put dependencies that are required for the re-usable code in the package in TestPackage/srcTestPackage/test or TestPackage/docs
TestPackage/Project.toml as described in the Pkg docs(@v1.12) pkg> activate
Activating project at `~/.julia/environments/v1.12`
(@v1.12) pkg> st
Status `~/.julia/environments/v1.12/Project.toml`
[6e4b80f9] BenchmarkTools v1.6.3
[31a5f54b] Debugger v0.7.16
[b2ad6718] EmacsVterm v0.3.0
[7073ff75] IJulia v1.34.4
[5903a43b] Infiltrator v1.9.7
[5fb14364] OhMyREPL v0.5.32
[295af30f] Revise v3.13.2
[0c614874] TerminalPager v0.6.10 [loaded: v0.6.9]Tests or TestItems.jl (good VS Code integration)println, @show, or similar is an okay starting pointInfiltrator.jl and Debugger.jl lets you halt execution anywhere and examine variables