Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

As the number of projects I need to maintain keeps growing (3 official websites, 2 systems, and 1 mini‑program, all with separate front‑end/back‑end and independent databases), I’ve encountered many tasks that are trivial to do once but become chaotic when repeated many times across different contexts. I had already experimented with CI on GitHub, and this time I learned and practiced CD (Continuous Deployment).

In bioinformatics visualization, we often need to handle plots containing tens of thousands of data points, such as scatter plots from single‑cell RNA‑seq data. When saved in vector formats like PDF, such graphics can suffer from huge file sizes and slow rendering (most software other than AI will simply freeze), because a vector file records the coordinates, color, size, and other attributes of every single point, resulting in a PDF with an enormous number of objects that hampers viewing and editing efficiency.

Emmmmm, the contract with our official website vendor expired this year, so… I ended up with one more project to manage… This project is still frontend/backend separated, but the difference is that the official site has an English version, and the English version is actually a branch of the frontend project. I’ve used Submodule before to integrate a colleague’s independent module into the main project, but this time, after consulting with AI, I chose a different approach: Subtree.

In CI/CD workflows, dependency management is often a key factor determining build efficiency and reliability. Recently, I tried the setup-pixi GitHub Action in a static website deployment pipeline.

Ah, I didn’t expect that after so many years, Plotly still hits its limits with just a little use. Previously it couldn’t draw timeline charts, and this time I found that the customization of map markers is insufficient…

After using devpod for a short while, I realized that I still needed a tool that could automatically install VS Code on a remote host via SSH without relying on containers, and then forward the port back to my local machine. So I started using Copilot to help me understand devpod’s code…

In a short period of time, I’ve encountered two situations where I needed to fix bugs in R functions, and I’ve also learned how to perform hot replacements…

If you live long enough, you’ll encounter plenty of awkward situations.

In bioinformatics, the more cutting-edge your research direction, the more problems you’ll face from the informatics side. Even when papers are published with excellent results, and the original authors share their code or even provide ready-to-use software tools, it doesn’t mean we can easily use these existing resources for reproduction or further research. Chaotic environment setup is just one aspect - more often than not, since software authors aren’t professional software engineers, we should be grateful if the tool just works. We can’t expect these software to be bug-free, nor can we expect them to have decent performance (unless performance was a development goal). Even tools from well-established labs aren’t free to these issues, such as… Azimuth.

I’ve developed a habit of listening to videos during my bike ride home after work. This week, I came across a video by XPIN about RISC-V. The video presents a viewpoint: RISC-V, as an instruction set architecture, suffers from severe fragmentation in its chip products, which poses significant challenges to the development of its application ecosystem. Therefore, it’s argued that fragmentation must be addressed through unified standards to achieve rapid development. This perspective reminded me of my years of experience using Linux, Android, and the R language, leading me to believe that the video’s argument might not be entirely accurate.