<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Wu Sun on Sun Lab</title>
		<link>https://wusun.name/</link>
		<description>Recent content in Wu Sun on Sun Lab</description>
		<generator>Hugo</generator>
		<language>en-us</language>
		
		
		
		
			<lastBuildDate>Fri, 21 Aug 2026 11:39:08 +0000</lastBuildDate>
		
			<atom:link href="https://wusun.name/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>Wu Sun</title>
				<link>https://wusun.name/team/wu-sun/</link>
				<pubDate>Fri, 21 Aug 2026 11:39:08 +0000</pubDate>
				<guid>https://wusun.name/team/wu-sun/</guid>
				<description>&lt;p&gt;Wu Sun is an assistant professor at the Odum School of Ecology. An ecosystem&#xA;ecologist and climate scientist, he combines theory, observations, numerical&#xA;models, and statistics to understand ecosystem carbon cycling and its feedback&#xA;to the Earth system, with the goal of protecting ecosystems and informing&#xA;climate solutions from local to global scales. Before joining the University of&#xA;Georgia, Dr. Sun was a research scientist at the Carnegie Institution’s&#xA;Department of Global Ecology, where he led a NASA-funded project on&#xA;Arctic-boreal carbon cycling. Having worked in ecosystems ranging from&#xA;California drylands to neotropical rainforests, Dr. Sun is particularly&#xA;interested in integrating global ecological problems with local perspectives,&#xA;such as studying how Georgia’s diverse ecosystems respond to intensifying&#xA;climate extremes. Dr. Sun earned his Ph.D. in atmospheric and oceanic sciences&#xA;from UCLA and his bachelor’s degree in geology from Nanjing University.&lt;/p&gt;</description>
			</item>
			<item>
				<title>About</title>
				<link>https://wusun.name/about/</link>
				<pubDate>Fri, 21 Aug 2026 11:39:08 +0000</pubDate>
				<guid>https://wusun.name/about/</guid>
				<description>&lt;p&gt;Wu Sun is an assistant professor at the Odum School of Ecology. An ecosystem&#xA;ecologist and climate scientist, he combines theory, observations, numerical&#xA;models, and statistics to understand ecosystem carbon cycling and its feedback&#xA;to the Earth system, with the goal of informing climate solutions from local to&#xA;global scales. Before joining the University of Georgia, Dr. Sun was a research&#xA;scientist at the Carnegie Institution’s Department of Global Ecology, where he&#xA;led a NASA-funded project on Arctic-boreal carbon cycling. Having worked in&#xA;ecosystems ranging from California drylands to neotropical rainforests, he is&#xA;interested in exploring Georgia’s diverse ecosystems and studying how they&#xA;respond to climate extremes such as heat waves and storms. Dr. Sun earned his&#xA;Ph.D. in atmospheric and oceanic sciences from UCLA and his bachelor’s degree&#xA;in geology from Nanjing University.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Contact</title>
				<link>https://wusun.name/contact/</link>
				<pubDate>Sat, 27 Nov 2021 22:07:09 +0000</pubDate>
				<guid>https://wusun.name/contact/</guid>
				<description>&lt;p&gt;To contact me, please email:&lt;/p&gt;&#xA;&lt;ul style=&#34;list-style-type:none; margin-top:-12px;&#34;&gt;&#xA;  &lt;li&gt;wsun {at} carnegiescience.edu&lt;/li&gt;&#xA;  &lt;li&gt;OR&lt;/li&gt;&#xA;  &lt;li&gt;wusun {at} protonmail.com&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
			</item>
			<item>
				<title>OCaml packages for scientific computing</title>
				<link>https://wusun.name/blog/2019-02-19-ocaml-packages-for-scientific-computing/</link>
				<pubDate>Tue, 19 Feb 2019 21:19:09 +0000</pubDate>
				<guid>https://wusun.name/blog/2019-02-19-ocaml-packages-for-scientific-computing/</guid>
				<description>&lt;p&gt;This is a collection of OCaml packages that are potentially useful for&#xA;scientific computing. (Disclaimer: I have only used some of them. But I choose&#xA;to list all I found useful here for future reference.)&lt;/p&gt;&#xA;&lt;h2 id=&#34;numerical-computing&#34;&gt;Numerical computing&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/owlbarn/owl&#34;&gt;&lt;code&gt;Owl&lt;/code&gt;&lt;/a&gt;: The de facto numerical computing&#xA;library for OCaml. Probably the best maintained OCaml numerical computing&#xA;package at this moment.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mmottl/gsl-ocaml&#34;&gt;&lt;code&gt;gsl&lt;/code&gt;&lt;/a&gt;: OCaml bindings to the GNU&#xA;Scientific Library.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mmottl/lacaml&#34;&gt;&lt;code&gt;lacaml&lt;/code&gt;&lt;/a&gt;: OCaml bindings to BLAS and&#xA;LAPACK.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;machine-learning&#34;&gt;Machine learning&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/LaurentMazare/ocaml-torch&#34;&gt;&lt;code&gt;torch-ocaml&lt;/code&gt;&lt;/a&gt;: OCaml bindings&#xA;for PyTorch.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/LaurentMazare/tensorflow-ocaml&#34;&gt;&lt;code&gt;tensorflow-ocaml&lt;/code&gt;&lt;/a&gt;:&#xA;OCaml bindings for TensorFlow.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;data-visualization&#34;&gt;Data visualization&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/owlbarn/owl&#34;&gt;&lt;code&gt;Owl&lt;/code&gt;&lt;/a&gt; contains functions to call an&#xA;external plotting library (&lt;a href=&#34;http://plplot.sourceforge.net/&#34;&gt;&lt;code&gt;PLplot&lt;/code&gt;&lt;/a&gt;).&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/LaurentMazare/ocaml-matplotlib&#34;&gt;&lt;code&gt;ocaml-matplotlib&lt;/code&gt;&lt;/a&gt; OCaml&#xA;bindings to Python &lt;a href=&#34;https://matplotlib.org/&#34;&gt;&lt;code&gt;matplotlib&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;interactive-programming&#34;&gt;Interactive programming&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/ocaml-community/utop&#34;&gt;&lt;code&gt;utop&lt;/code&gt;&lt;/a&gt;: An enhanced OCaml REPL.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/akabe/ocaml-jupyter&#34;&gt;&lt;code&gt;ocaml-jupyter&lt;/code&gt;&lt;/a&gt;: OCaml kernel for&#xA;Jupyter Notebook.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;foreign-function-interfaces-ffi&#34;&gt;Foreign function interfaces (FFI)&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/ocamllabs/ocaml-ctypes&#34;&gt;&lt;code&gt;ctypes&lt;/code&gt;&lt;/a&gt;: Modern C FFI in OCaml&#xA;developed by the OCaml Labs at the University of Cambridge. Note that&#xA;&lt;code&gt;ctypes-foreign&lt;/code&gt; is also required if you need to use &lt;code&gt;Ctypes&lt;/code&gt; interactively.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/thierry-martinez/pyml&#34;&gt;&lt;code&gt;py.ml&lt;/code&gt;&lt;/a&gt;: OCaml bindings for&#xA;Python implemented using C stubs. This package supports both Python 2 and 3.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/dbousque/lymp&#34;&gt;&lt;code&gt;lymp&lt;/code&gt;&lt;/a&gt;: Allows OCaml to interact with&#xA;Python through a Python process. Need to identify the interpreter command to&#xA;execute it.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/zshipko/ocaml-rs&#34;&gt;&lt;code&gt;ocaml-rs&lt;/code&gt;&lt;/a&gt;: Allows OCaml to interact&#xA;with extensions written in Rust without C stubs.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/ahrefs/rust-ocaml-derive&#34;&gt;&lt;code&gt;rust-ocaml-derive&lt;/code&gt;&lt;/a&gt; (WARNING:&#xA;experimental): Two-way FFIs between OCaml and Rust. Provides the &lt;code&gt;ocaml_ffi&lt;/code&gt;&#xA;macro in Rust that reduces the amount of boilerplate code to write.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;development-tools&#34;&gt;Development tools&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/ocaml/dune&#34;&gt;&lt;code&gt;dune&lt;/code&gt;&lt;/a&gt;: The official build system for OCaml.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/ocaml/merlin&#34;&gt;&lt;code&gt;merlin&lt;/code&gt;&lt;/a&gt;: Context-extensive autocompletion&#xA;for OCaml in Vim and Emacs.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/ocaml/opam-depext&#34;&gt;&lt;code&gt;opam-depext&lt;/code&gt;&lt;/a&gt;: Allows OPAM to invoke&#xA;the system package manager (e.g., &lt;a href=&#34;https://brew.sh/&#34;&gt;&lt;code&gt;brew&lt;/code&gt;&lt;/a&gt; on macOS) for&#xA;automated installation.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/janestreet/core_bench&#34;&gt;&lt;code&gt;core_bench&lt;/code&gt;&lt;/a&gt;: Micro-benchmarking&#xA;for OCaml.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/ocaml-ppx/ocamlformat&#34;&gt;&lt;code&gt;ocamlformat&lt;/code&gt;&lt;/a&gt;: An autoformatter&#xA;for OCaml code.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://opam.ocaml.org/packages/ocamlfind/&#34;&gt;&lt;code&gt;ocamlfind&lt;/code&gt;&lt;/a&gt;: A library manager&#xA;for OCaml.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/ocaml/ocamlbuild/&#34;&gt;&lt;code&gt;ocamlbuild&lt;/code&gt;&lt;/a&gt;: A build system for&#xA;OCaml. This package can be used to compile OCaml to native code. But check&#xA;your use case before you use it, because &lt;code&gt;dune&lt;/code&gt; may suffice for most cases.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/reasonml-editor/vscode-reasonml&#34;&gt;&lt;code&gt;vscode-reasonml&lt;/code&gt;&lt;/a&gt;:&#xA;OCaml and ReasonML support for Visual Studio Code.&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
			</item>
			<item>
				<title>Use minted syntax highlighting in LaTeX with Visual Studio Code LaTeX Workshop</title>
				<link>https://wusun.name/blog/2019-01-17-minted-vscode/</link>
				<pubDate>Thu, 17 Jan 2019 22:03:00 -0800</pubDate>
				<guid>https://wusun.name/blog/2019-01-17-minted-vscode/</guid>
				<description>&lt;p&gt;Syntax highlighting in LaTeX is traditionally done with&#xA;&lt;a href=&#34;https://ctan.org/pkg/listings&#34;&gt;&lt;code&gt;listings&lt;/code&gt;&lt;/a&gt;. However, as many pointed out, this&#xA;is a defective solution because the &lt;code&gt;listings&lt;/code&gt; package does not have a lexer.&#xA;Recently, the &lt;a href=&#34;https://ctan.org/pkg/minted&#34;&gt;&lt;code&gt;minted&lt;/code&gt;&lt;/a&gt; package seems to emerge&#xA;as a standard and preferred solution to syntax highlighting in LaTeX. This&#xA;package is now part of the TeXLive distribution.&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;minted&lt;/code&gt; requires &lt;a href=&#34;http://pygments.org/&#34;&gt;Pygments&lt;/a&gt; as an external lexer and&#xA;highlighter. As a result, to use it properly requires enabling &lt;code&gt;--shell-escape&lt;/code&gt;&#xA;option on LaTeX compilers (&lt;code&gt;latexmk&lt;/code&gt; and &lt;code&gt;pdflatex&lt;/code&gt;). Otherwise, it cannot find&#xA;the &lt;code&gt;pygmentize&lt;/code&gt; command. This is a trivial problem if you use LaTeX compilers&#xA;as standalone programs under a terminal environment. However, if you use an IDE&#xA;to write LaTeX, this can be quite a hassle. I found a way to configure the&#xA;VSCode extension LaTeX Workshop so that it can properly compile sources that&#xA;use the &lt;code&gt;minted&lt;/code&gt; package, from a &lt;a href=&#34;https://tex.stackexchange.com/questions/432459/pygmentize-not-installed-error-on-visual-studio-code&#34;&gt;TeX StackExchange&#xA;post&lt;/a&gt;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Update OCaml and OPAM along with packages</title>
				<link>https://wusun.name/blog/2018-10-09-update-ocaml-opam/</link>
				<pubDate>Mon, 08 Oct 2018 22:01:07 -0700</pubDate>
				<guid>https://wusun.name/blog/2018-10-09-update-ocaml-opam/</guid>
				<description>&lt;p&gt;As a beginner of OCaml, it felt a bit unwieldy to perform an upgrade of my&#xA;current environment (OCaml + OPAM + packages). I knew there was not a single&#xA;command that does all the tasks like &lt;code&gt;conda&lt;/code&gt; for Python. Luckily, it was not so&#xA;difficult with OPAM&amp;rsquo;s import/export function [&lt;a href=&#34;https://discuss.ocaml.org/t/right-way-to-upgrade-my-ocaml-packages/1070/2&#34;&gt;1&lt;/a&gt;]. I upgraded my OCaml&#xA;environment with all installed packages retained following these steps without&#xA;much trouble.&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Export the list of currently installed packages:&lt;/p&gt;</description>
			</item>
			<item>
				<title>PEP 484 for type-aware programming</title>
				<link>https://wusun.name/blog/2018-07-24-pep484-for-type-aware-programming/</link>
				<pubDate>Mon, 23 Jul 2018 21:43:48 -0700</pubDate>
				<guid>https://wusun.name/blog/2018-07-24-pep484-for-type-aware-programming/</guid>
				<description>&lt;p&gt;I begin to like sprinkling a few &lt;a href=&#34;https://www.python.org/dev/peps/pep-0484/&#34;&gt;PEP 484 type&#xA;hints&lt;/a&gt; in my Python code. Not&#xA;necessarily because my code is laden with undetectable bugs and I want to use&#xA;static type checking to help; it&amp;rsquo;s mainly because it makes the code more&#xA;&lt;em&gt;self-explanatory&lt;/em&gt;. It is a manifestation of the &lt;a href=&#34;https://www.python.org/dev/peps/pep-0020/&#34;&gt;Zen of&#xA;Python&lt;/a&gt; that &amp;ldquo;explicit is better&#xA;than implicit&amp;rdquo;.&lt;/p&gt;&#xA;&lt;p&gt;Here&amp;rsquo;s a little example. Compare the Python snippet&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#6639ba&#34;&gt;filter_substr&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;strlst&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt; List&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;str&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;],&lt;/span&gt; substr&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#6639ba&#34;&gt;str&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;-&amp;gt;&lt;/span&gt; List&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;str&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#6639ba&#34;&gt;list&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#6639ba&#34;&gt;filter&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;lambda&lt;/span&gt; s&lt;span style=&#34;color:#1f2328&#34;&gt;:&lt;/span&gt; substr &lt;span style=&#34;color:#0550ae&#34;&gt;in&lt;/span&gt; s&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; strlst&lt;span style=&#34;color:#1f2328&#34;&gt;))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;with the equivalent Standard ML one&lt;/p&gt;</description>
			</item>
			<item>
				<title>A comparison of some markdown publishing systems</title>
				<link>https://wusun.name/blog/2018-07-16-markdown-publishing/</link>
				<pubDate>Sun, 15 Jul 2018 20:32:00 -0700</pubDate>
				<guid>https://wusun.name/blog/2018-07-16-markdown-publishing/</guid>
				<description>&lt;p&gt;Markdown is the new LaTeX for technical and academic writing. Although LaTeX is&#xA;still the gold standard, if your writing does not involve a whole lot of&#xA;theorems and proofs, drawing diagrams in TikZ and PGF, or some heavy tweaking&#xA;of the page styles, Markdown may suffice for your use cases. A lightly marked&#xA;text format like Markdown helps the writer concentrate on the contents rather&#xA;than the styles.&lt;/p&gt;&#xA;&lt;p&gt;In the past few years, I have gradually replaced some of my writing tasks in&#xA;LaTeX with automated generation of LaTeX and PDF from Markdown by &lt;code&gt;pandoc&lt;/code&gt;. The&#xA;workflow is simple and quite reliable. You need to spend time making a nice&#xA;LaTeX template first. Once you have it, you can keep using the same template&#xA;until you are bored with it.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Random thoughts on optimizing code for scientific computations</title>
				<link>https://wusun.name/blog/2018-06-13-optimizing-scientific-code/</link>
				<pubDate>Wed, 13 Jun 2018 19:25:00 -0700</pubDate>
				<guid>https://wusun.name/blog/2018-06-13-optimizing-scientific-code/</guid>
				<description>&lt;p&gt;I have no time to write an essay, so here are some fragmentary thoughts.&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Scientists who deal with computationally demanding research subjects can be&#xA;obsessed with code performance, and sometimes rightly so. However, this&#xA;obsession, if not tamed by sound principles and pragmatic wisdom, may lead&#xA;us down the evil path of &lt;a href=&#34;http://wiki.c2.com/?PrematureOptimization&#34;&gt;Premature Optimization&lt;/a&gt;.&#xA;We should always be reminded of its danger. The aphorism by Donald Knuth&#xA;may be recited three times a day:&lt;/p&gt;</description>
			</item>
			<item>
				<title>I&#39;m updating my website</title>
				<link>https://wusun.name/blog/2018-06-02-update-website/</link>
				<pubDate>Sat, 02 Jun 2018 19:41:02 -0700</pubDate>
				<guid>https://wusun.name/blog/2018-06-02-update-website/</guid>
				<description>&lt;p&gt;I&amp;rsquo;m refactoring my academic website using the &lt;a href=&#34;https://github.com/mmistakes/minimal-mistakes&#34;&gt;Minimal&#xA;Mistakes&lt;/a&gt; theme to get a cleaner&#xA;look. Stay tuned!&lt;/p&gt;&#xA;&lt;p&gt;Added on 2018-11-30: In the end I settled on the&#xA;&lt;a href=&#34;https://github.com/jekyll/minima&#34;&gt;Minima&lt;/a&gt; theme. I like its minimalist design&#xA;and it&amp;rsquo;s a good fit for a simple academic website with a blog.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Is there a performance difference between a macro and a global constant?</title>
				<link>https://wusun.name/blog/2018-05-24-julia-macro-vs-globalconst/</link>
				<pubDate>Thu, 24 May 2018 00:00:00 +0000</pubDate>
				<guid>https://wusun.name/blog/2018-05-24-julia-macro-vs-globalconst/</guid>
				<description>&lt;p&gt;&lt;em&gt;Disclaimer on 2018-11-30: These tests were performed under Julia v0.6. Due to&#xA;the incompatible syntax changes brought by Julia v0.7 and v1.0 and improved&#xA;compiler optimization, they may not run or the emitted low-level code may not&#xA;be the same.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;The use of the global variable is discouraged in Julia for performance reasons&#xA;(see the &lt;a href=&#34;https://docs.julialang.org/en/v1/manual/performance-tips/#Avoid-global-variables-1&#34;&gt;Julia documentation&lt;/a&gt;).&#xA;But what about global constants? I&amp;rsquo;m quite new to the Julia language, but I bet&#xA;that it would not be difficult for the compiler to identify a &lt;code&gt;const&lt;/code&gt; and&#xA;optimize over it.&lt;/p&gt;</description>
			</item>
			<item>
				<title>A simple fix to a common issue with Anaconda libgfortran on macOS</title>
				<link>https://wusun.name/blog/2018-04-27-conda-libgfortran-issue/</link>
				<pubDate>Fri, 27 Apr 2018 00:00:00 +0000</pubDate>
				<guid>https://wusun.name/blog/2018-04-27-conda-libgfortran-issue/</guid>
				<description>&lt;p&gt;To compile some Fortran code that used features newer than Fortran 95, I&#xA;switched the default &lt;code&gt;gfortran&lt;/code&gt; from the conda one (version 4.8) to the latest&#xA;GCC one (version 7.3). After that, I found that I could no longer execute some&#xA;previously compiled Fortran programs and I also ran into troubles with some&#xA;Anaconda Python packages. (Maybe it was my fault not to statically link them.)&#xA;I got the same error for all of them:&lt;/p&gt;</description>
			</item>
			<item>
				<title>Some common pitfalls in writing Fortran functions</title>
				<link>https://wusun.name/blog/2018-04-25-fortran-functions/</link>
				<pubDate>Wed, 25 Apr 2018 00:00:00 +0000</pubDate>
				<guid>https://wusun.name/blog/2018-04-25-fortran-functions/</guid>
				<description>&lt;p&gt;Recently, I have been trying to port or interface some Fortran code for a&#xA;project in Python. It was quite an uphill struggle for me. I thought I knew how&#xA;to write subroutines in Fortran 90, but when I decided to write pure functions&#xA;in the latest Fortran style, which was Fortran 2008, it did not go as well as I&#xA;expected. The compiler yelled at me a screenful of errors. After quite a while&#xA;of debugging a simple array function and reading a bunch of StackOverflow&#xA;questions, I learned how to deal with these pitfalls the hard way.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Installing Kanboard on macOS</title>
				<link>https://wusun.name/blog/2018-01-10-install-kanboard/</link>
				<pubDate>Wed, 10 Jan 2018 00:00:00 +0000</pubDate>
				<guid>https://wusun.name/blog/2018-01-10-install-kanboard/</guid>
				<description>&lt;p&gt;Kanban is a lean method for project management that has been popular in&#xA;software development and knowledge work. Recently, after reading a bunch of&#xA;blog articles and technical booklets, I came up with an idea to use the Kanban&#xA;method to manage my scientific projects. After all, speaking of the production&#xA;of knowledge work, scientific research is analogous to manufacturing.&lt;/p&gt;&#xA;&lt;p&gt;I came across a powerful open source Kanban software —&#xA;&lt;a href=&#34;kanboard.org&#34;&gt;Kanboard&lt;/a&gt;. It&amp;rsquo;s PHP and SQLite powered; and it has an intuitive&#xA;user interface. It does not say that macOS is supported. But since PHP and&#xA;Apache Web Server are shipped with macOS, there is no reason it cannot be&#xA;installed on macOS.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Why Python&#39;s ZeroDivisionError for floating-point type is a bad and unnecessary feature</title>
				<link>https://wusun.name/blog/2017-12-18-python-zerodiv/</link>
				<pubDate>Mon, 18 Dec 2017 00:00:00 +0000</pubDate>
				<guid>https://wusun.name/blog/2017-12-18-python-zerodiv/</guid>
				<description>&lt;p&gt;In Python 2.7 and 3.6, dividing a floating-point number by zero results in a&#xA;&lt;code&gt;ZeroDivisionError&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; 1. / 0.&#xA;Traceback (most recent call last):&#xA;  File &amp;#34;&amp;lt;stdin&amp;gt;&amp;#34;, line 1, in &amp;lt;module&amp;gt;&#xA;ZeroDivisionError: float division by zero&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;This is not consistent with mathematics&lt;/strong&gt;, given that $1 / 0 = \infty$.&#xA;Wouldn&amp;rsquo;t it be better to just return &lt;code&gt;inf&lt;/code&gt;? In fact, the exception &amp;ldquo;division by&#xA;zero&amp;rdquo; has been stipulated to return infinities in the IEEE 754 standard for&#xA;floating-point arithmetic [1]:&lt;/p&gt;</description>
			</item>
			<item>
				<title>The Sieve of Eratosthenes in Haskell: A naive implementation</title>
				<link>https://wusun.name/blog/2017-12-09-prime-sieves/</link>
				<pubDate>Sat, 09 Dec 2017 00:00:00 +0000</pubDate>
				<guid>https://wusun.name/blog/2017-12-09-prime-sieves/</guid>
				<description>&lt;p&gt;I have been learning Haskell for a while. The more I am exposed to this&#xA;language, the more I am amazed by the elegance of the functional programming&#xA;paradigm. List comprehension is one of the beautiful things that I like in&#xA;Haskell. Coming from Python, I am familiar with it. But the list comprehension&#xA;in Haskell feels more natural because it is closer to what you would write in&#xA;mathematics.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Merge multiple EPS subfigures into a single figure using LaTeX Beamer</title>
				<link>https://wusun.name/blog/2015-05-13-merge-figure/</link>
				<pubDate>Wed, 13 May 2015 00:00:00 +0000</pubDate>
				<guid>https://wusun.name/blog/2015-05-13-merge-figure/</guid>
				<description>&lt;p&gt;Some academic journals require all subfigures to be combined as one single file&#xA;for submission. This may not be easy to do if you don&amp;rsquo;t have a professional&#xA;software (often proprietary) to edit vector maps, e.g., EPS and PDF.&lt;/p&gt;&#xA;&lt;p&gt;I found a convenient way to deal with in LaTeX Beamer. The idea is to create a&#xA;beamer slide and insert your subfigures with the command &lt;code&gt;\includegraphics{}&lt;/code&gt;&#xA;in the same &lt;code&gt;figure&lt;/code&gt; environment. This beamer slide will then be the combined&#xA;figure.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Adding section numbers to LaTeX floats numbering and other tips</title>
				<link>https://wusun.name/blog/2012-10-04-latex-floats-numbering/</link>
				<pubDate>Thu, 04 Oct 2012 12:00:00 -0700</pubDate>
				<guid>https://wusun.name/blog/2012-10-04-latex-floats-numbering/</guid>
				<description>&lt;p&gt;I have been learning to use LaTeX for some time. Now I do most of my homework&#xA;assignments in LaTeX. It wears quite well on me. I have encountered some&#xA;issues, but most of the time I was able to find elegant solutions on TeX&#xA;StackExchange. Here are a few tips I learned recently.&lt;/p&gt;&#xA;&lt;h2 id=&#34;1-show-chapter-or-section-numbers-in-equationfiguretable-numbering&#34;&gt;1. Show chapter or section numbers in equation/figure/table numbering&lt;/h2&gt;&#xA;&lt;p&gt;By default, LaTeX assigns equation numbers continually across different&#xA;sections. If you need the equation to be numbered like &amp;ldquo;Eq. (3.5)&amp;rdquo; for the 5th&#xA;equation in section 3, add this to the preamble:&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
