RSSAmplifier

Blog

Home on Infinite Script

Recent content in Home on Infinite Script

infinitescript.comRSS feed ↗95 posts

Latest posts

Enable Unattended RustDesk Access on Wayland

Ubuntu uses GNOME on Wayland by default. RustDesk works well once the desktop session is running, but unattended access can become awkward around the graphical login screen. On my Ubuntu 26.04 system, the practical solution was to use an X11-based LightDM login screen while keeping the normal Ubuntu GNOME Wayland desktop after login: LightDM + Slick Greeter + X11 ↓ Ubuntu + GNOME + Wayland This…

Completely Remove Snap from Ubuntu

Snap ships enabled by default on recent Ubuntu releases. It offers a distribution-independent application format, automatic updates, dependency isolation, and optional sandboxing. Those features are useful, but not every system needs a second package-management stack alongside APT. Desktop users may prefer traditional Debian packages, and administrators of minimal servers may want fewer background…

Always Moving: 6D Poses for a Wearable Fisheye Rig

In the last post I calibrated eight ZED cameras bolted to a room’s walls so OptiTrack’s 3D positions could be projected onto each image. Those cameras never moved: one 6-DOF pose per camera is the whole answer. This post is the opposite case: a rig worn on a person, moving every frame . The goal is the same, but “the pose” is now a trajectory recovered at 20 Hz for the…

The Missing Link: Calibrating a Sparse RGB Rig with OptiTrack

It has been a long time since I last wrote a blog post. Honestly, I almost stopped. In the age of LLMs, writing about technical topics feels pointless. Whatever you want to know, an AI will explain it more clearly and faster than any blog. So why bother? What changed my mind was running into a problem where AI could tell me the theory perfectly well but couldn’t tell me what actually went…

DynamicVLA

DynamicVLA: A Vision-Language-Action Model for Dynamic Object Manipulation Haozhe Xie* , Beichen Wen*, Jiarui Zheng, Zhaoxi Chen , Fangzhou Hong , Haiwen Diao , Ziwei Liu S-Lab, Nanyang Technological University CVPRW'26 Best Paper --> visitors arXiv 2601.22153 Stars 🤗 DOM Dataset TL;DR: DynamicVLA enables open-ended dynamic object manipulation by pairing a compact 0.4B VLM with low-latency…

CityDreamer4D

Compositional Generative Model of Unbounded 4D Cities Haozhe Xie , Zhaoxi Chen , Fangzhou Hong , Ziwei Liu S-Lab, Nanyang Technological University visitors arXiv 2501.08983 Stars TL;DR: CityDreamer4D is a framework for unbounded 4D city generation that decouples static and dynamic scenes, achieving superior realism, multi-view consistency, and diverse styles. Spotlight Video Abstract 3D scene…

Setup 802.1X Authentication on Arch Linux

Over the past few days, I attempted to set up 802.1X authentication on Arch Linux, a wired identity authentication protocol widely used in enterprise environments and well-supported on Windows and Ubuntu. However, when it came to Arch Linux, a series of strange issues emerged. To make matters more interesting, the machine in question has two onboard NICs, a Realtek r8169 and an Intel e1000e , and…

GaussianCity

Generative Gaussian Splatting for Unbounded 3D City Generation Haozhe Xie , Zhaoxi Chen , Fangzhou Hong , Ziwei Liu S-Lab, Nanyang Technological University visitors arXiv 2406.06526 🤗 Hugging Face Featured Space Stars TL;DR: GaussianCity is a framework for efficient unbounded 3D city generation using 3D Gaussian Splatting. Abstract 3D city generation with NeRF-based methods shows promising…

Infinite Servers

GitLab Open Source Live servers.infinitescript.com Introduction Infinite Servers is a self-hosted server fleet monitor built around a single design constraint: the agent must run completely unprivileged. Each monitored host installs a PHP script that runs as nobody , reads /proc , and pushes status every 15 seconds to a central dashboard. No root access, no persistent daemon with elevated…

Migrating from WordPress to Hugo

I recently switched from WordPress to Hugo. This post outlines the reasons behind my migration and provides a step-by-step guide on how to make the transition. Rethinking Why Use WordPress I began using WordPress in 2009 when static site generators were not prevalent, and WordPress was the go-to CMS for nearly everyone. However, since my blog had infrequent updates but high readership, I started…

CityDreamer

CityDreamer: Compositional Generative Model of Unbounded 3D Cities Haozhe Xie , Zhaoxi Chen , Fangzhou Hong , Ziwei Liu S-Lab, Nanyang Technological University visitors arXiv 2309.00610 🤗 Hugging Face Stars TL;DR: CityDreamer learns to generate unbounded 3D cities from Google Earth imagery and OpenStreetMap. Abstract In recent years, extensive research has focused on 3D natural scene generation,…

Enable Microsoft Remote Desktop (RDP) on Linux

Gnome 42 has a fantastic new feature that allows Linux users to share their desktops with Microsoft’s Remote Desktop Protocol remotely, namely GNOME remote desktop. In this tutorial, we’ll show you how you can use this great new feature. Without this feature, an alternative solution is xrdp . However, xrdp cannot provide a consistent desktop environment as used in current Linux. Enable Automatic…

Arch Linux ARM on an M1 Mac with VMware Fusion

Arch Linux ARM is a simple and lightweight Linux distribution that is actually the official port of the Arch Linux operating system. It’s built especially for processors that support ARM architecture. With its use, the users can have full control of the system and shape their system according to their needs. In this tutorial, we provide the detailed procedure to install Arch Linux ARM on a Macbook…

Build an iOS App from Scratch with SwiftUI

Background On Valentine’s day 2021 I put together a small static website, Infinite Love , to hold a handful of pictures. Because it is static, adding a new photo means editing the source and redeploying, not something you want to do from your phone. So I set out to wrap it in an iOS app with a proper “new post” button. I had done plenty of web development, but this was my first…

Use Internet Explorer in Windows 11

Background With Windows 11, Microsoft has removed several outdated apps and features, including the long-hated Internet Explorer. However, some proprietary apps and legacy sites still require Internet Explorer functionality to run. Several posts suggest using the IE mode in Microsoft Edge . However, it does not work for some websites: a few government service portals, for instance, still fail to…

RMNet

Efficient Regional Memory Network for Video Object Segmentation Haozhe Xie, Hongxun Yao, Shangchen Zhou, Shengping Zhang, Wenxiu Sun arXiv 2103.12934 Stars Abstract Recently, several Space-Time Memory based networks have shown that the object cues (e.g. video frames as well as the segmented object masks) from the past frames are useful for segmenting objects in the current frame. However, these…

GRNet

GRNet: Gridding Residual Network for Dense Point Cloud Completion Haozhe Xie, Hongxun Yao, Shangchen Zhou, Jiageng Mao, Shengping Zhang, Wenxiu Sun arXiv 2006.03761 Stars Abstract Estimating the complete 3D point cloud from an incomplete one is a key problem in many vision and robotics applications. Mainstream methods (e.g., PCN and TopNet) use Multi-layer Perceptrons (MLPs) to directly process…

DataNinja

Introduction DataNinja is a full-stack machine learning workbench designed for object detection tasks. It provides a browser-based interface to manage datasets, configure and train detection models, evaluate results, and, most distinctively, push trained models to embedded hardware in a single workflow. The motivation behind the project was to bridge the gap between the server side (where GPUs…

Stereo 3D Reconstruction

Toward 3D Object Reconstruction from Stereo Images Haozhe Xie, Hongxun Yao, Shangchen Zhou, Shengping Zhang, Xiaojun Tong, Wenxiu Sun arXiv 1910.08223 Stars Abstract Inferring the complete 3D shape of an object from an RGB image has shown impressive results, however, existing methods rely primarily on recognizing the most similar 3D model from the training set to solve the problem. These methods…

Compile Caffe without Root Privileges

On shared servers or HPC clusters, you often don’t have sudo access, which makes installing system-level dependencies impossible. In this tutorial, we are going to introduce how to install Caffe entirely in user space, without root privileges. We assume that you have installed Anaconda and CUDA on your PC. Note: This tutorial is based on CUDA 9.0, Caffe 1.0, protobuf 3.2.0, and OpenCV 3.4.3.…

Accelerate WordPress with CDN and Cache Servers

It has been a long time since I last wrote a blog post. In the past few days, I updated the architecture of Infinite Script to accelerate the speed for Chinese users. In this article, I share the new architecture of our website with you, illustrated in the figure above. Optimizing a CDN for Static Content Delivery Static content does not change over a period of time. If it does change, the changes…

Pix2Vox

Pix2Vox: Context-aware 3D Reconstruction from Single and Multi-view Images Haozhe Xie, Hongxun Yao, Xiaoshuai Sun, Shangchen Zhou, Shengping Zhang, Wenxiu Sun arXiv 1901.11153 Stars Abstract Recovering the 3D representation of an object from single-view or multi-view RGB images by deep neural networks has attracted increasing attention in the past few years. Several mainstream works (e.g.,…

Build PyTorch Extensions with CUDA and CFFI

Deprecated warning : PyTorch 1.0+ replaced the old TH/THC tensor backend with ATen, and the torch.utils.ffi toolchain described here was removed along the way. If you target PyTorch 1.0 or newer, write your extensions with torch.utils.cpp_extension instead, see this GitHub repository for a working example. The article below documents the older CFFI-based approach and is kept for reference. Python…

Getting Started with JUnit 5: Test your Spring MVC Application with it

In this post, we describe how to use JUnit 5 to test your Spring MVC application with Maven. Before diving into the pom.xml , it helps to know that JUnit 5 is not a single library but three sub-projects: the Platform (the foundation that discovers and launches tests), Jupiter (the new programming and extension model you actually write tests against), and Vintage (a backward-compatible engine that…

Weighted Voxel

Weighted Voxel: a novel voxel representation for 3D reconstruction Haozhe Xie, Hongxun Yao, Xiaoshuai Sun, Shangchen Zhou, Xiaojun Tong Abstract 3D reconstruction has been attracting increasing attention in the past few years. With the surge of deep neural networks, the performance of 3D reconstruction has been improved significantly. However, the voxel reconstructed by extant approaches usually…

Lua in a Nutshell: A Quick Tutorial for Lua

I’m reading source code written with Torch these days. Torch is a well-known deep learning framework written in Lua. So I summarize its grammar and provide a quick tutorial here. Getting Started Like many languages, Lua is case-sensitive. The following code outputs “Hello World” with Lua. Note that the semicolon at the end of a line is optional, like JavaScript. print ( 'Hello…

Similar Patient Finder

GitLab Open Source Introduction Similar Patient Finder (SPF) is a web-based clinical decision support tool that helps physicians explore patient similarities at the molecular level. Given a dataset of high-throughput gene expression profiles, optionally paired with clinical metadata, SPF runs a configurable analysis pipeline and renders the results as an interactive 2D patient map, making it…

Making Requests Non-blocking in Tornado

Tornado is one of the most popular web frameworks for Python, which is based on a single thread IO loop (aka event loop). You can handle high concurrency with optimal performance. However, Tornado is single-threaded (in its common usage, although it supports multiple threads in advanced configurations), therefore any “blocking” task will block the whole server. This means that a…

Install QQ/TIM in Linux with Wine

Note: This post describes a Wine-based workaround from 2017. Tencent now ships an official native Linux client for QQ, rebuilt on the NT architecture and available as deb , rpm , and AppImage packages for both x86-64 and ARM. You should grab the native build from im.qq.com/linuxqq instead; the Wine instructions below are kept only for historical reference. This tutorial introduces how to install…

Single Sign-On with Apereo CAS

This tutorial walks a newcomer through standing up an Apereo CAS server for single sign-on and wiring a Java web application to it as a client. The complete CAS 7.1 server is available as a companion WAR overlay on GitLab . Note: This post has been rewritten for Apereo CAS 7.x. It was originally written for CAS 4.x, which you set up by copying the server source and hand-editing a pile of XML files…

Create a Desktop App with Angular 2 and Electron

Last week, I took part in the Google Developer Day held in Beijing. The Angular team introduced their new Angular 2. Angular is a development platform for building mobile and desktop web applications. This tutorial shows how to configure and use Angular 2 web components with the Electron framework for creating native cross-platform applications with web technologies. As recommended by the Angular…

Gradient Boosting Decision Tree

In the previous article, we’ve talked about AdaBoost which combines output of weak learners into a weighted sum that represents the final output of the boosted classifier. If you know little about AdaBoost or additive model, we highly recommend you read the article first. Gradient boosting is a machine learning technique for regression and classification problems, which produces a prediction…

AdaBoost

AdaBoost, short for “Adaptive Boosting”, is a machine learning meta-algorithm formulated by Yoav Freund and Robert Schapire who won the Gödel Prize in 2003 for their work. The output of the other learning algorithms (weak learners) is combined into a weighted sum that represents the final output of the boosted classifier. AdaBoost is adaptive in the sense that subsequent weak learners…

Random Forest

Random forests are an ensemble learning method for classification, regression, and other tasks. They operate by constructing a multitude of decision trees at training time and outputting the class that is the mode of the classes (classification) or the mean prediction (regression) of the individual trees. Each tree is grown on a random subset of the training data and considers only a random subset…

Setup Raspbian on Raspberry Pi

This post explains how to install Raspberry Pi OS and set up a Raspberry Pi from scratch. You will need another computer with an SD (or MicroSD) card reader to write the image. Note: This post has been updated for Raspberry Pi OS and Raspberry Pi Imager . Raspbian was renamed Raspberry Pi OS in 2020, and the old “download a .zip , unzip the .img , then flash it with Win32 Disk Imager”…

Internet Protocol v6

Internet Protocol version 6 (IPv6) is the current version of the Internet Protocol (IP). The IETF developed it to solve IPv4 address exhaustion, which has since become reality: IANA handed out its last IPv4 blocks in 2011, and the regional registries followed soon after. IPv6 is no longer a future technology but a deployed one, carrying more than 40% of the traffic reaching Google by the…

Setup IPv6 NAT on OpenWrt Router

Introduction This tutorial is a HowTo for setting up IPv6 NAT (NAT66) on an OpenWrt router. Why would anyone want NAT on IPv6, when the whole point of the protocol was to give every device a globally routable address? In my case the campus network (China Education and Research Network, CERNET) authenticates per device and only assigns an IPv6 address to a device that has logged in. Every other…

April Fools Pranks with a Squid Proxy Server

Introduction Note: This guide was tested using Ubuntu Server 14.04.4 LTS. This is a HowTo for setting up Upside-Down-Ternet on Ubuntu. Basically, when a user browses the web, all the images are flipped upside-down. While it’s not useful, it’s quite a good April Fool’s prank. The process uses a transparent proxy, web server, and script to flip the images. Web traffic is routed to…

Signing commits using GPG in Git

Git is cryptographically secure, but it’s not foolproof. If you take work from others on the internet and want to verify that commits are actually from a trusted source, Git can sign and verify work with GPG. Generate a GPG Key To sign anything, you first need GPG installed and a personal key. Check whether you already have one: gpg --list-keys /home/hzxie/.gnupg/pubring.gpg…

Random Projection

Introduction In mathematics and statistics, random projection is a technique used to reduce the dimensionality of a set of points which lie in Euclidean space. Random projection methods are known for their simplicity and low error rates compared with other dimensionality-reduction techniques, and experiments show that they preserve pairwise distances well. Consider a problem as follows: We have a…

Decision Tree

What’s a decision tree? A decision tree is a flowchart-like structure in which each internal node represents a “test” on an attribute (e.g. whether Income is below 50K), each branch represents an outcome of that test, and each leaf node holds a prediction: a class label for classification, or a value for regression. A path from the root to a leaf is therefore a chain of conditions that…

Introduction to Java Virtual Machine

Note: This article has been updated for Java 8 and later . The original 2015 version described the Permanent Generation (PermGen), which Java 8 removed and replaced with Metaspace ( JEP 122 ); the garbage-collection section has also been rewritten to cover the modern HotSpot collectors (G1, ZGC, Shenandoah). The behaviors described here are those of HotSpot; other JVM implementations may differ.…

Use Server-Sent Events in Spring MVC

Server-Sent Events (SSE) let a server push a continuous stream of updates to the browser over a single long-lived HTTP connection. Spring has supported them since version 4.2 through the SseEmitter class, and the API has been stable ever since. This post is a practical how-to: we start with a bare SseEmitter , then build the setup I actually use in production, streaming events from a message queue…

Use WebSockets with Spring, SockJS and Stomp

This guide walks you through building a “hello world” application that sends messages back and forth between a browser and the server. WebSocket is a very thin, lightweight layer on top of TCP, which makes it a natural place to run a subprotocol that gives the raw bytes some structure. Here we use STOMP messaging with Spring to create an interactive web application. Note: This post has…

Spring MVC MyBatis Integration Tutorial

A while back I built a project on Spring MVC and Hibernate, then wanted to see how MyBatis compares. This article shows how to wire MyBatis into Spring MVC, and how to let Spring manage MyBatis transactions for you. A database transaction is an all-or-nothing unit of work: either every statement in it takes effect, or none of them does. We lean on that property at the very end, where a single bad…

Verwandlung Online Judge

Stars Live verwandlung.org Introduction An Online Judge (OJ) is a web-based system used in competitive programming. It presents algorithmic problems, accepts code submissions in various languages, automatically compiles and runs the code against hidden test cases, and immediately tells the user whether their solution is correct, all without any human involvement in the grading process. Platforms…

Use CDN Service in Spring MVC

When I deployed TestZilla on Aliyun Elastic Compute Service, growing traffic made it worth offloading static files (images, CSS, and JavaScript) to a CDN. At the time there was little guidance on wiring a CDN into Spring MVC, so I asked on Stack Overflow and ended up with the setup below. The idea is simple: keep the CDN host in a single property and inject it wherever your JSP views reference…

Create Unit Testing Cases in Zend Framework

A solid unit test suite is essential for ongoing development in large projects, especially those with many people involved. Going back and manually testing every individual component of an application after every change is impractical. Your unit tests will help alleviate that by automatically testing your application’s components and alerting you when something is not working the same way it was…

Create CDN View Helper in Zend Framework 2

In this article, you will learn how to create a custom view helper in Zend Framework 2. A concrete example will be used; a helper which generates links for a subdomain, intended for storing static files. This is especially useful if you wish to use a Content Delivery Network (CDN). With very little modification, the helper can be made generic to support links to subdomains for all purposes. Note:…

Building and Installing HHVM on CentOS 7

What’s HHVM? HHVM is an open-source virtual machine designed for executing programs written in Hack and PHP . Instead of interpreting PHP directly, it uses a just-in-time (JIT) compiler to reach much higher throughput while staying compatible with existing PHP code. Facebook, which created HHVM, reported roughly a 9x gain in web request throughput and a 5x drop in memory use over the old PHP…