\[ \newcommand\pd[2]{\displaystyle\frac{\partial #1}{\partial #2}} \]
Banner Image
About

Some Information

About me

A little bit of detail

My [English] name is Don. I'm currently an engineering student at UCLA, pursuing by Bachelor of Science in Computer Science and Engineering. I was born an American, but I grew up outside of the United States and only moved to Greater Los Angeles back in 2022. Outside of school, I enjoy writing (on this website), reading, movies, poker, and traveling. I love exploring new places, especially trying out new food. I also enjoy poker and board games in general. Recently, I've been playing a game called Catan. Regarding school: engineering has been quite an experience. Lots of ups and downs, and certainly a lot of work to be done. Read more about my engineering experiences here.

If you want to know more about my curriculum and professional experiences, please check out my portfolio and résumé at ddonle.com. I'm also currently working as a math, physics, and computer science tutor, I left some of my personal notes in the Notes section above, feel free to use them.

Is that all you have to say about computer science?

Of course not. Here's a bit more to my story:

At the age of 15, I was introduced to computers and programming after inheriting my first laptop from my older brother. I wrote my first few lines of code in C, starting with a simple script to solve quadratic and cubic equations, and then an unsuccessful attempt at solving the quartic. Soon after, I built a simple scientific calculator, a game of tic-tac-toe, followed by a basic version of Snake on the terminal.

Throughout my teenage years, I've tried many other programming languages (like Python or J*vascript), but it turns out I prefer languages that are closer to the hardware, yet high-level enough to be productive like C or C++, and most recently, Rust. Overtime, I also found myself drawn slightly more to the electrical engineering side of computers—which ultimately led to my choice of major in college.

I have some experiences in various technologies in web development, but I prefer to work in fields that involve system and low-level programming, which includes: Low-latency C/C++; Computer vision; ODEs/PDEs modeling and physics simulation; 2D and 3D Graphics Rendering; and General-purpose GPU programming.

About this website

Background and choice of design

I started digging through the internet back in middle school to collect and read scientific textbooks. While doing so, I couldn't help but encounter a lot of interesting computer science and math blogs. As a result, I got inspired by some of them and decided to create this website: a place for me to upload my writings and projects. I primarily write about math, programming, and physics, and occasionally about everyday topics like food reviews.

This website was formally built back in summer of 2024, but I've been writing a lot of the content on this website on LaTeX documentations way before that. I coded this website from scratch using HTML, CSS, and vanilla Javascript (ancient and primitive, I know, but they works). For this reason, the website might not be very well-optimized, so please excuse me. To view the source code, click on the logo on the side navigation bar or follow this link.

  • Question: Why not use a framework or a static site generator?
  • Answer: I wanted to learn the basics of web development, so in order to learn, I must create things. This website the became my first web project. Plus, this site has no complex API calls, so a framework would be overkill, although using a framework would have probably been a bit easier. Ok, but why not a static site generator like Jekyll? I feel like static site generators offer much less control over things, such as the ability to easily create highly customizable components like this one:
    There is no nonvanishing continuous tangent vector field on even-dimensional n-spheres.

Structure: There are two types of blogs on this website: articles and posts. Articles are technical and focus specifically on topics in math, computer science, physics, or engineering. Posts, on the other hand, are shorter, usually non-technical, and primarily cover everyday niche topics.

Reflection

Building an entire blog system from scratch is no easy task, but the fun part about doing so is me having fine-grained control over everything. However, too much control over something can be a real headache. This means that if something goes wrong on this website, it's entirely my fault.

mr. incredible meme

Instead of using pre-built components or a template like any sane person would, I decided to write thousands of lines of CSS and Javascript and I had to constantly fix the code to ensure that it works well on both desktop and mobile. Now that I'm looking back, I think that it was a real pain and a waste of time, but here we are.

That said, all of it still ties back to one thing: future-proofing my work. Whenever I create something, I always think about my future self. I constantly ask how I can make things a bit easier down the line, like the choice of loading certain components dynamically. This choice actually tanked performance, but it did make things easier for me whenever I want to add, let's say a new section on the top bar. Because of that, I've lost count of how many times I've changed the design just to make the process of updating content easier.

Please don't get me wrong. I DO place a major emphasis on efficiency, optimization, and speed. But that's only for my work in system programming, or if it's something related to web dev that really needs performance, I'd just use a framework like Next. For a personal, hobby project like this, I don't really care. The slight inefficiency is small enough to be considered negligible, and I'm happy with that.

Third party tools

carl sagan apple pie quote

Earlier, I did say that I built this website from scratch. I was lying. Nobody builds anything from scratch, we're all standing on the shoulder of someone. Some other tools I used are MathJax, a javascript library that helps display fancy equation like this:

$$ \rho h\frac{\partial^2 w}{\partial t^2} = - D\nabla^4 w + T\nabla^2 w -K_0w -K_1\pd{w}{t} + T_1\nabla^2\pd{w}{t} + F(\textbf{x}, t). $$

On your left side, in the side navigation bar, I used ghchart by 2016rshah to display my GitHub activities. I wish he had added an option to change the cell colors, as it would've worked better with dark mode. Someone even opened a pull request for it, but the author is nowhere to be seen. I also use prism.js to provide some nice code syntax-highlighting for websites like below. You can change the code theme in the setting

About the logo: that's the trajectory of a double pendulum in a computer simulation.

Check list

The general layout of this website should be completed, but I will still add some new features every once in a while, if I have time. This website is still relatively new anyway.

Some features I might add in the future:

  • A comment system.
  • A screen reader for better accessibility.
  • Export page as pdf.

Disclaimer

This website is private, and it was created solely to display my writings, projects, and personal things that are interesting to me; therefore, the quality of this website is subjective only to me. If you have any suggestions on how this website can be improved, or if you find any:

  • wrong information,
  • errors in the source code,
  • contents that you are not happy about,
  • spelling or grammar errors,

feel free to reach out to me using the email address below. Any feedback or thoughts about this website would be greatly appreciated.

I am also open for conversations, so if you just want to have a chat, you can reach out to me via discord or telegram.