Hi! I'm Jacky Song.

A physicist, designer, and developer with a passion for open source software.

Professional inquiries

Interested in working with me or hiring me? See my resume, portfolio and contact information on this info page →

Fundamentals of Chemistry

This is a mini-book on chemistry, including atomic structure, general chemistry and the theory of reactions, using chemical equations, stoichiometry, Lewis theory, and a brief introduction to quantum chemistry. Topics to be added with time include valence bonding theory, VSEPR theory, and energy changes within reactions.

Read more...

A guide to modern theoretical physics

Modern theoretical physics is a vast and technically challenging subject, which is often explained in a very unhelpful manner and with an overwhelming amount of mathematical language that is introduced too quickly. This guide attempts to explain the broad theoretical physics concepts in a clear and relatively less-mathematical/jargon-based way.

Read more...

My HTML boilerplate

Starting an HTML file for a website or webapp can be a very frustrating process; it requires a lot of boilerplate. So this is one that I generally use, that I'm sharing here for hope that others might find it useful.

Read more...

How I make my online notes

In the spirit of sharing and open-source, I thought it might be helpful to share I make these free online notes.

Read more...

Fundamentals of Electromagnetic Theory

These are my personal notes (in some sense, more of a mini-book) on classical electromagnetism. Topics covered include Coulomb's law, electromagnetic fields, electrical potential, introductory circuit analysis, and the Maxwell equations.

Read more...

Introductory Quantum Physics

This a mini-book on quantum physics, with topics covered including wavefunctions, various solutions of the time-dependent and independent Schrödinger equation, the uncertainty principle, and expectation values.

Read more...

Derivations of formulas for elastic collisions

This is an in-depth step-by-step derivation for elastic collisions in 1D, a companion guide to the Classical Dynamics Notes.

Read more...

Computer Science series

These are my personal notes on computer science, programming, and numerical computing taken at my time at RPI.

Read more...

Introduction to Python programming

There are notes taken in CS1100 at RPI, and cover introductory programming using the Python language.

Read more...

Philosophy notes

These are notes from the "Great Ideas in Philosophy" course taken at RPI, covering the history of philosophy, questions of identity and ethics, Eastern and Western philosophical traditions, and key figures in both ancient and modern Philosophy.

Read more...

Series and sequences

These are notes taken in MATH 1020 (Calculus II) at RPI, covering sequences, series, Taylor expansions, convergence and divergence tests, and examples of each.

Read more...

Notes on Differential Equations

These are notes taken in RPI's MATH 2400 course, on an introduction to differential equations. A special thanks to Dr. Kam of Rensselaer Polytechnic Institute for her excellent instruction and permission to share these notes.

Read more...

Directory of all notes

These are notes (well, more mini-books), some I've taken while pursuing a degree in applied physics at Rensselaer Polytechnic Institute, others in my independent research and learning. Most of these notes are aimed at a college undergraduate or advanced high school level, some at a graduate level, but I firmly believe that anyone with a curious mind and a determined willingness to learn can read through and get to understand all of them.

Read more...

Physics series

These are my personal physics notes taken at my time at RPI. They include Classical Mechanics, Special Relativity, Quantum Mechanics, and will in the future include General Relativity and possibly Quantum Field Theory.

Read more...

Introductory classical dynamics

These are notes taken in RPI's Physics 1150 class, relating to introductory classical dynamics - essentially, Newtonian mechanics. Make sure to read the calculus series first as these notes are calculus-heavy.

Read more...

A new way to define functions

When we start to learn about differential equations, one of the first things we're taught about them is that they're often unsolvable - a fact that most students just learn to accept. What we're not often taught is why so many differential equations are considered unsolvable. It turns out, it has everything to do with how we define "solving" a differential equation.

Read more...

Visualizing curvature in General Relativity

General Relativity is a theory of gravity that is formulated in a 4-dimensional spacetime. So how do we visualize spacetimes, if they're 4D? This article will hopefully explain the mathematics of how one type of visualization, embedding diagrams, work.

Read more...

Notes on integrals for calculus

These are notes taken during RPI's MATH 1010 course, on the topic of integrals and their applications in calculus.

Read more...

Notes on ecology

Ecology is the scientific study of organisms and their interactions with each other and the environment. These are my notes on ecology from BIO 1010.

Read more...

The more general kinematic equations

Kinematics is one of the most fundamental parts of physics. In fact, determining the motion of objects is essentially where physics originated. Today, we'll take a close look at kinematics, and in particular, a more nonstandard formulation of kinematics.

Read more...

A proof of the area of a circle

Circles are one of the most ubiquitous yet most mysterious objects found in math. This is because its area formula involves a seemingly unlikely object - an irrational number. And yet circles are some of the most common shapes in the universe, and finding the area of circles (or circle-derived objects) is a must for so many applications in math and physics. So we need a way to find the area of a circle.

Read more...

Notes on special relativity

These are notes taken in RPI's Physics 1140 class, relating to special relativity.

Read more...

Solving the wave equation

The wave equation is a ubiquitous partial differential equation found in many areas of physics. We will attempt to solve it within this post.

Read more...

Genetics & medicine notes

These notes contain the second unit of notes from BIO 1010 at RPI.

Read more...

Solving separable partial differential equations

Partial differential equations have a reputation for being impossible to solve. And in many cases, this is true - they are extremely difficult to analytically solve for a general solution. However, when a partial differential equation is separable, it can be solved fairly straightforwardly, as a system of ordinary differential equations. Here is how to do so.

Read more...

Notes on derivatives for calculus

These are notes taken during RPI's MATH 1010 course, on the topic of derivatives and their applications in calculus.

Read more...

Null Geodesics

It has always been an aim of mine to write a physically-based black hole path tracer. However, before doing that, I thought I would take on an easier challenge - plotting the orbits of photons around Kerr black holes, but with code generalizable to any black hole spacetime.

Read more...

LaTeX math tutorial

LaTeX is a powerful language used for writing academic papers. In this article, we'll focus not on the full language, but only the portions relevant to math typesetting.

Read more...

Calculus series

These are my personal calculus notes taken at my time at RPI. They include Precalculus, Calculus I, and will in the future include Calculus II, Calculus III, and Differential Equations.

Read more...

Introductory biology series

These are my personal introductory biology notes taken at my time at RPI.

Read more...

Feynmann's technique for integration

Feynmann's technique is a technique for evaluating certain difficult definite integrals. Note definite integral here, it doesn't do anything to help find antiderivatives. In fact, Feynmann's technique is especially helpful with finding definite integrals that have no elementary antiderivative.

Read more...

Notes on logarithmic and exponential functions

These are notes taken during RPI's MATH 1010 course, relating to a review of exponential and logarithmic functions for calculus.

Read more...

Notes on limits for calculus

These are notes taken during RPI's MATH 1010 course, on the topic of limits in calculus.

Read more...

Solving ODEs and PDEs with neural networks

Typical numerical methods to solve ordinary differential equations and especially partial differential equations require very fine grids to be able to attain accurate results, and suffer from the curse of dimensionality. This is an alternate method to solve ODEs and PDEs with neural networks, which solves both these issues.

Read more...

Bio evolution notes

These are notes taken during RPI's BIO 1010 course, relating to a review of evolution and life.

Read more...

Notes on a review of trigonometry

These are notes taken during RPI's MATH 1010 course, relating to a review of trigonometry for calculus.

Read more...

Waves and oscillations notes

These are notes taken during RPI's PHYSICS 1140 course, relating to a review of waves and oscillations.

Read more...

Building a neural network library in Rust, part 0

This series details the process of building a neural network library in pure Rust.

Read more...

Mass driver interstellar propulsion

A very rough sketch of a mass-driver based interstellar propulsion method is discussed and analyzed.

Read more...

Simulating superradiance reactors, part 3

In this third part of the superradiance series, a series of posts focused on creating a preliminary, naive raytracer for simulating superradiance reactors, we will explore solving for the vector of a reflected light ray.

Read more...

Simulating superradiance reactors, part 2

Again, we return to the superradiance series, a series of posts focused on creating a preliminary, naive raytracer for simulating superradiance reactors. This time, we will explore differential equation solvers.

Read more...

Simulating superradiance reactors, part 1

We return to the superradiance series, a series of posts focused on creating a preliminary, naive raytracer for simulating superradiance reactors. This time, we will explore geodesics in the Kerr spacetime, and write a Runge-Kutta solver for systems of differential equations.

Read more...

Simulating superradiance reactors, part 0

This is to be the beginning of a series of posts focused on creating a preliminary, naive raytracer for simulating superradiance reactors.

Read more...