<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Posts on Han Wang's Blog</title><link>https://www.hansolowang.com/posts/</link><description>Recent content in Posts on Han Wang's Blog</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Wed, 13 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://www.hansolowang.com/posts/index.xml" rel="self" type="application/rss+xml"/><item><title>Coding Agents at a Startup</title><link>https://www.hansolowang.com/posts/coding_agents/</link><pubDate>Wed, 13 May 2026 00:00:00 +0000</pubDate><guid>https://www.hansolowang.com/posts/coding_agents/</guid><description>&lt;p&gt;&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;
&lt;p&gt;Personally, my own experience of using coding agents has been all over the place. Claude Code helped create a product prototype in minutes that would have taken me at least a week, and then a few minutes later it&amp;rsquo;s dripping over itself trying to import stdlib. It behaves like a hippie dev who is usually reasonably competent, sometimes takes &amp;hellip; ahem&amp;hellip; mind enhancers to achieve extraordinary leaps of logic that leaves me taken aback, and at other times, crashes from that drug-induced high to generate such ridiculously dumb conclusions that I&amp;rsquo;m left scratching my head.&lt;/p&gt;</description></item><item><title>Zero Cost Principle in C++</title><link>https://www.hansolowang.com/posts/zero_cost_principle_cpp/</link><pubDate>Sat, 29 Mar 2025 00:00:00 +0000</pubDate><guid>https://www.hansolowang.com/posts/zero_cost_principle_cpp/</guid><description>&lt;p&gt;&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;
&lt;p&gt;Modern programming languages use abstraction to help engineers avoid dealing with computer related terms. A list of strings can be handled and thought of as a list of strings rather than a list addresses that we may miuse with the slightest typo. Abstractions relieve the trouble of bugs and make the code more expressive by using concepts from the domain of the application.&lt;/p&gt;
&lt;p&gt;An example of C++ abstractions by comparing the code for the problem: &amp;ldquo;How many Sarahs are in this list of name&amp;rdquo;.&lt;/p&gt;</description></item><item><title>TA feedback from 5 years ago</title><link>https://www.hansolowang.com/posts/ta_feedback/</link><pubDate>Mon, 11 Nov 2024 00:00:00 +0000</pubDate><guid>https://www.hansolowang.com/posts/ta_feedback/</guid><description>&lt;p&gt;&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;
&lt;h1 id="background"&gt;Background&lt;/h1&gt;
&lt;p&gt;Recently, I reconnected with a professor I TA&amp;rsquo;ed for back at UW-Madison in 2019. He took the opportunity to share the feedback I received. It made my day reading what students have to say about me as a teacher 5 years ago.&lt;br&gt;
&lt;/br&gt;&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve been the lucky beneficiary of awesome teachers and mentors who shared their wisdom, and from the school of hard knocks. Grateful for the opportunities to give back!&lt;/p&gt;</description></item><item><title>Improving Mujoco-MJX with First Principles</title><link>https://www.hansolowang.com/posts/mjx_kinematics/</link><pubDate>Sun, 20 Oct 2024 00:00:00 +0000</pubDate><guid>https://www.hansolowang.com/posts/mjx_kinematics/</guid><description>&lt;p&gt;&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;
&lt;p&gt;TLDR: Current MJX implementation of quaternion multiplication is not efficient on the GPU. Re-implementing quaternion multiplication with a GPU friendly method leads to noticeable improvements in compile and execution time.&lt;/p&gt;
&lt;h1 id="background"&gt;Background&lt;/h1&gt;
&lt;p&gt;Last year Mujoco released &lt;a href="https://mujoco.readthedocs.io/en/stable/mjx.html#"&gt;Mujoco XLA&lt;/a&gt;. A JAX implementation of physics simulation. MJX is best for simulating in parallel on the GPU. However, while profiling an MJX simulation of kuka_iiwa14 on GPU. I noticed that the forward kinematics is unusually slow. The jit time of forward kinematics is 1.83s and the execution time is 0.00213s, over 20x slower than the python binding of the C implementation&amp;hellip;.&lt;/p&gt;</description></item><item><title>Resources I would recommend a Cpp beginner</title><link>https://www.hansolowang.com/posts/cpp_resources/</link><pubDate>Mon, 13 May 2024 00:00:00 +0000</pubDate><guid>https://www.hansolowang.com/posts/cpp_resources/</guid><description>&lt;p&gt;&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;
&lt;p&gt;Cpp can be difficult to learn. Do not worry! There are plenty of resources out there. Here are a few that I have used personally!&lt;/p&gt;
&lt;h1 id="books"&gt;Books&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;The C++ Programming Language&lt;/li&gt;
&lt;li&gt;A Tour of C++&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="websites"&gt;Websites&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;cppreference.com&lt;/li&gt;
&lt;li&gt;learncpp.com&lt;/li&gt;
&lt;li&gt;cppstories.com&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="youtube-channels"&gt;Youtube Channels&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;The Cherno&lt;/li&gt;
&lt;li&gt;CoffeeBeforeArch&lt;/li&gt;
&lt;li&gt;Jason Turner&lt;/li&gt;
&lt;li&gt;CppCon&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>A Cool Script</title><link>https://www.hansolowang.com/posts/scripts/</link><pubDate>Sat, 06 Apr 2024 00:00:00 +0000</pubDate><guid>https://www.hansolowang.com/posts/scripts/</guid><description>&lt;p&gt;&lt;br/&gt;&lt;br/&gt;
Recently, I have been bothered by having to write &lt;code&gt;git diff&lt;/code&gt; everytime I am preparing a PR. &lt;a href="https://github.com/WangHanSolo/dotfiles/blob/master/scripts/watchcmd"&gt;Here is a script&lt;/a&gt; that watch files in an infinite loop.&lt;/p&gt;</description></item><item><title>Dockerizing Your CPP Projects</title><link>https://www.hansolowang.com/posts/docker_cpp_projects/</link><pubDate>Sun, 18 Feb 2024 00:00:00 +0000</pubDate><guid>https://www.hansolowang.com/posts/docker_cpp_projects/</guid><description>&lt;p&gt;In this post, I will share how to create a docker environment for C++ projects targeted for Ubuntu.&lt;/p&gt;
&lt;h1 id="it-works-on-my-machine-but-fails-on-ci"&gt;It works on my machine but fails on CI!&lt;/h1&gt;
&lt;p&gt;C++ does not provide an default package manager like Cargo in Rust, pip in python, or npm in JavaScript, etc. Third party libraries are added using a mix of techniques such as installing from Linux distro&amp;rsquo;s repositories (apt-get), or git submodules, or half-baked solutions like Conan. Unfortunately they all have disadvantages:&lt;/p&gt;</description></item><item><title>Have You Heard of Jax</title><link>https://www.hansolowang.com/posts/jax/</link><pubDate>Tue, 22 Nov 2022 00:00:00 +0000</pubDate><guid>https://www.hansolowang.com/posts/jax/</guid><description>&lt;p&gt;Jax can be envisioned as &lt;code&gt;numpy&lt;/code&gt; with built in &lt;code&gt;autograd&lt;/code&gt;, &lt;code&gt;vmal&lt;/code&gt;, &lt;code&gt;pmap&lt;/code&gt; and jit capabilities. This alone makes it one of the most versatile and powerful numerical methods library that handles multidimensional data. Jax makes it simple to write standard numpy code and immediately be able to&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Compute the gradient of a function via &lt;code&gt;jax.grad&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Just-in-time compile a function to run efficiently with &lt;code&gt;jax.jit&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Automagically vectorize a function with &lt;code&gt;jax.vmap&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="jaxgrad"&gt;jax.grad&lt;/h1&gt;
&lt;p&gt;&lt;code&gt;jax.grad&lt;/code&gt; takes a function and returns a new function that computes the gradient of the original function. The input function must have a scalar output.&lt;/p&gt;</description></item><item><title>Internship</title><link>https://www.hansolowang.com/posts/internship/</link><pubDate>Sat, 12 Nov 2022 00:00:00 +0000</pubDate><guid>https://www.hansolowang.com/posts/internship/</guid><description>&lt;p&gt;Congratulations on securing an internship or research opportunity! I personally benefited enormously from these experiences. I recommend that every undergraduate work at a company for at least one summer (and possibly more) and do research during the school year. Here are some tips I have learned from experience to make the most out of your time. Be warned! My advice here might be a little sketchy as I am still learning myself.&lt;/p&gt;</description></item><item><title>Reflecting on Two Years of Leadership in a Robotics Club</title><link>https://www.hansolowang.com/posts/wa_reflection/</link><pubDate>Tue, 01 Nov 2022 00:00:00 +0000</pubDate><guid>https://www.hansolowang.com/posts/wa_reflection/</guid><description>&lt;p&gt;Recently, I found myself discussing leadership with my colleagues. On multiple occasions in the past, I&amp;rsquo;ve been hesitant to pen down my thoughts. It&amp;rsquo;s because this topic often feels somewhat intangible compared to the more concrete world of engineering and science. But then I realized where my hesitation stemmed from &amp;ndash; it was the perfectionist in me desiring to write my own comprehensive guide to leadership. Rather than do that, though, I decided to own the imperfection and simply share what I&amp;rsquo;ve learned from being team captain of a robotics competition team of 50 members with 6 direct reports.&lt;/p&gt;</description></item><item><title>Campus Ministry</title><link>https://www.hansolowang.com/posts/sg_journey/</link><pubDate>Thu, 27 May 2021 00:00:00 +0000</pubDate><guid>https://www.hansolowang.com/posts/sg_journey/</guid><description>&lt;h1 id="as-for-me-i-am-in-your-hands-do-with-me-whatever-you-think-is-good-and-right-jeremiah-2614"&gt;As for me, I am in Your hands; do with me whatever you think is good and right. Jeremiah 26:14&lt;/h1&gt;
&lt;p&gt;If you are wondering&amp;hellip; yes! I am an unshamed disciple of Jesus Christ! Whether we believe the same or different, I&amp;rsquo;m SO thankful to have you here. I plan to share my journey as a faith leader on campus; what I have learned and the many blessings I experienced.&lt;/p&gt;
&lt;p&gt;As an undergraduate, I was active in Asian American InterVarsity (AAIV) at UW-Madison.&lt;/p&gt;</description></item><item><title>What I Wish I Knew Freshman Year</title><link>https://www.hansolowang.com/posts/first_year_wish/</link><pubDate>Wed, 05 May 2021 00:00:00 +0000</pubDate><guid>https://www.hansolowang.com/posts/first_year_wish/</guid><description>&lt;h1 id="actively-search-for-my-calling"&gt;Actively search for my calling&lt;/h1&gt;
&lt;p&gt;You are going to have a job or you can have a career or you can have a calling. If you can somehow figure out how to have a calling early, you have hit the jackpot. It is a big deal because not only do you get a large head start, most people go their whole life without finding it. You&amp;rsquo;re very lucky if you have a career and a lot of people end up with a job. You have to actively search for it and it requires a great amount of luck. Luckily college is a great place to explore interests. When you are excited for life and the future, you are probably onto something.&lt;/p&gt;</description></item><item><title>My Approach To Leading Campus Ministry</title><link>https://www.hansolowang.com/posts/sg_approach/</link><pubDate>Fri, 01 Jan 2021 00:00:00 +0000</pubDate><guid>https://www.hansolowang.com/posts/sg_approach/</guid><description>&lt;p&gt;These are effective methods I used to build community in small group in college. I should point out that it always start with the bible study. I do not feel qualified to give advice on how to lead an effective study on the Word of God. In fact, I was known to come to bible study completely unprepared&amp;hellip;&lt;/p&gt;
&lt;p&gt;Below are tips for building community outside of your typical 1.5 ~ 2 hr bible study.&lt;/p&gt;</description></item><item><title>Be a Good Leader</title><link>https://www.hansolowang.com/posts/leader/</link><pubDate>Sat, 26 Dec 2020 00:00:00 +0000</pubDate><guid>https://www.hansolowang.com/posts/leader/</guid><description>&lt;h1 id="they-may-see-your-good-deeds-and-glorify-your-father-in-heaven-matthew-516"&gt;They May See Your Good Deeds and Glorify Your Father in Heaven. Matthew 5:16&lt;/h1&gt;
&lt;p&gt;I started my first leadership position in campus fellowship as a sophomore. I had a mentor named &amp;ldquo;Bob&amp;rdquo;. When I ask questions, he always listens attentivly and responds patiently. In between, he prays quite a lot. The following is a story he told me.&lt;/p&gt;
&lt;p&gt;One day, the student asked the teacher, &amp;ldquo;If I climb to the 3rd floor, and no one around me has climbed higher. How can I be a good leader?&amp;rdquo;&lt;br&gt;
&amp;ldquo;Those who climbed to the 3rd floor must tell others about the existence of a 4th floor,&amp;rdquo; replied the teacher.&lt;br&gt;
&amp;ldquo;Why?&amp;rdquo; the student asked.&lt;br&gt;
&amp;ldquo;If you don&amp;rsquo;t, it will become a bottleneck. If others want to climb to the 4th floor, they will be surpressed by you, driven away by you.&amp;rdquo; the teacher patiently responds.&lt;/p&gt;</description></item><item><title>Effective Study Tips</title><link>https://www.hansolowang.com/posts/study_tips/</link><pubDate>Sat, 27 Jun 2020 00:00:00 +0000</pubDate><guid>https://www.hansolowang.com/posts/study_tips/</guid><description>&lt;p&gt;&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;
&lt;p&gt;Some study techniques accelerate learning, whereas others are just a waste of time. Below are studying techniques that I used to great effect during undergrad.&lt;/p&gt;
&lt;h1 id="distributed-practice"&gt;Distributed Practice&lt;/h1&gt;
&lt;p&gt;Spread your study over time. I like to prepare for exams at least 2 weeks in advance and set milestones for each day. Maybe its a chapter, maybe its self testing, you have higher recall after spaced study&lt;/p&gt;
&lt;h1 id="organizing-notes"&gt;Organizing Notes&lt;/h1&gt;
&lt;p&gt;I strive to organize my notes in a manner such that I can share it with everyone in my study group. Not only does this help me identify what areas where my understanding is not concrete, but also gives a chance for my peers to point out gaps in my knowledge.&lt;/p&gt;</description></item><item><title>On Grand Strategy</title><link>https://www.hansolowang.com/posts/grandstrategy/</link><pubDate>Wed, 27 Nov 2019 00:00:00 +0000</pubDate><guid>https://www.hansolowang.com/posts/grandstrategy/</guid><description>&lt;h1 id="my-002"&gt;My $0.02&lt;/h1&gt;
&lt;p&gt;In the book On Grand Strategy, author John Lewis Gaddis analyzes grand strategic theory and practice from the perspective of various case studies across two millennia.&lt;/p&gt;
&lt;p&gt;The dictionary definition of strategy is: a plan of action or policy designed to achieve a major or overall aim.&lt;/p&gt;
&lt;p&gt;Gaddis goes a step further in his definition: “I’ll define that term, for the purposes of this book, as the alignment of potentially unlimited aspirations with necessarily limited capabilities. If you seek ends beyond your means, then sooner or later you’ll have to scale back your ends to fit your means. Expanding means may attain more ends, but not all, because ends can be infinite and means can never be. Whatever balance you strike, there will be a link between what is real and what is imagined: You won’t have a strategy until you’ve connected these dots&amp;ndash;dissimilar though they are&amp;ndash;within the situation in which you are operating .“&lt;/p&gt;</description></item><item><title>Simulation in Robotics</title><link>https://www.hansolowang.com/posts/simulation_in_robotics/</link><pubDate>Sat, 05 May 2018 00:00:00 +0000</pubDate><guid>https://www.hansolowang.com/posts/simulation_in_robotics/</guid><description>&lt;p&gt;&lt;em&gt;I wrote this while a sophomore at UW-Madison. It is awesome to look back and see how much I have grown. I feel blessed (added 11/11/2024)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The first things that comes to mind on the topic of simulation is Neo(Keanu Reaves) fighting Agent Smith(Hugo Weaving) in the Matrix. The film describes a future where reality perceived by humans is actually a simulated reality created by evil machines. This nefarious reality is so real that most humans cannot tell the difference and live their lives in the simulated reality.&lt;/p&gt;</description></item><item><title>GPU Programming for Beginners</title><link>https://www.hansolowang.com/posts/gpu_for_beginners/</link><pubDate>Sun, 04 Mar 2018 00:00:00 +0000</pubDate><guid>https://www.hansolowang.com/posts/gpu_for_beginners/</guid><description>&lt;p&gt;GPU computing has been a buzzword of late. It has applications that include virtually every industry. For example, GPU programming has been used to accelerate image processing, audio signal processing, statistical physics, scientific computing, medical imaging, deep learning, computer vision, cryptography, games, just to name a few.&lt;/p&gt;
&lt;p&gt;So what exactly is GPU computing?&lt;/p&gt;
&lt;p&gt;Growing up in Minnesota, I loved building snow castles in the winter. Being a Lord of the Rings fan, I always tried creating fortresses like Helm’s Deep or Minas Tirith on the nearby hills. Needless to say I was never successful. Besides having the attention span of a gnat, I just couldn’t shovel snow fast enough. The question I’d like to ask today is how could I have shoveled faster? Well I could have digged faster, used a better shovel, or ask my siblings to help.&lt;/p&gt;</description></item><item><title>Mission Statement</title><link>https://www.hansolowang.com/posts/mission_statement/</link><pubDate>Mon, 01 Jan 2018 00:00:00 +0000</pubDate><guid>https://www.hansolowang.com/posts/mission_statement/</guid><description>&lt;p&gt;Mission Statement&lt;/p&gt;
&lt;h1 id="why-develop-a-mission-statement"&gt;Why develop a mission statement?&lt;/h1&gt;
&lt;p&gt;I call my junior year in college the juggling year. During that year, I held a senior leadership position in a Christian fellowship of 80 people. I was leading 15 undergraduates to write robotic software for a competition. I was an active undergraduate researcher working on a journal paper. I was a full time student. How did I make it all fit? How did I possibly deal with all the challenges, the issues that were pounding upon me? The answer is I couldn&amp;rsquo;t. I was not able to find harmony between all those responsiblities. I was exhausted and lacked conviction to continue to challenge myself.&lt;/p&gt;</description></item></channel></rss>