Generated by All in One SEO v5.0.0.1, this is an llms.txt file, used by LLMs to index the site. # Anh Totti Nguyen Associate Professor of Computer Science, Auburn University ## Sitemaps - [XML Sitemap](https://anhnguyen.me/sitemap.xml): Contains all public & indexable URLs for this website. ## Posts - [Research](https://anhnguyen.me/research/) - Anh's blog on research, engineering, hacks, arts, photography and more - [SketchVLM: Vision-Language Models Can Annotate Images to Explain Thoughts and Guide Users](https://anhnguyen.me/2026/sketchvlm/) - When answering questions about images, humans naturally point, label, and draw to explain their reasoning. In contrast, modern vision-language models (VLMs), e.g., Gemini-3-Pro and GPT-5, typically respond with only text, which can be difficult for users to verify. We present SketchVLM, a training-free, model-agnostic framework that enables VLMs to produce non-destructive, editable SVG overlays on - [PageGuide: Browser Extension to Assist Users in Navigating a Webpage and Locating Information](https://anhnguyen.me/2026/pageguide/) - Users browsing the web daily struggle to quickly locate relevant information in cluttered pages, complete unfamiliar multi-step tasks, and stay focused amid distracting content. State-of-the-art AI assistants and browser agents can answer questions and automate actions, yet they often return answers without showing where the information comes from on the page, forcing users to manually - [Vision Language Models are Biased](https://anhnguyen.me/2026/vlms-are-biased/) - Large language models (LLMs) memorize a vast amount of prior knowledge from the Internet that help them on downstream tasks but also may notoriously sway their outputs towards wrong or biased answers [3, 50, 11]. In this work, we test how the knowledge about popular subjects hurt the accuracy of vision language models (VLMs) on - [Improving Human Verification of LLM Reasoning through Interactive Explanation Interfaces](https://anhnguyen.me/2026/interactive-llm/) - The reasoning capabilities of Large Language Models (LLMs) have led to their increasing employment in several critical applications, particularly education, where they support problem-solving, tutoring, and personalized study. Chain-of-thought (CoT) reasoning capabilities [1, 2] are well-known to help LLMs decompose a problem into steps and explore the solution spaces more effectively, leading to impressive performance - [Understanding Generative AI Capabilities in Everyday Image Editing Tasks](https://anhnguyen.me/2026/genai-vs-humans/) - Generative AI (GenAI) holds significant promise for automating everyday image editing tasks, especially following the recent release of GPT-4o on March 25, 2025. However, what subjects do people most often want edited? What kinds of editing actions do they want to perform (e.g., removing or stylizing the subject)? Do people prefer precise edits with predictable - [Vision Language Models Are Blind](https://anhnguyen.me/2024/vlms-are-blind/) - While large language models with vision capabilities (VLMs), e.g., GPT-4o and Gemini-1.5 Pro, are powering various image-text applications and scoring high on many vision-understanding benchmarks, we find that they are surprisingly still struggling with low-level vision tasks that are easy to humans. Specifically, on BlindTest, our suite of 7 very simple tasks such as identifying - [TAB: Transformer Attention Bottlenecks enable User Intervention and Debugging in Vision-Language Models](https://anhnguyen.me/2025/transformer-attention-bottlenecks/) - Multi-head self-attention (MHSA) is a key component of Transformers, a widely popular architecture in both language and vision. Multiple heads intuitively enable different parallel processes over the same input. Yet, they also obscure the attribution of each input patch to the output of a model. We propose a novel 1-head Transformer Attention Bottleneck (TAB) layer, - [Understanding Neural Networks Through Deep Visualization](https://anhnguyen.me/2015/understanding-neural-networks-through-deep-visualization/) - Recent years have produced great advances in training large, deep neural networks (DNNs), including notable successes in training convolutional neural networks (convnets) to recognize natural images. However, our understanding of how these models work, especially what computations they perform at intermediate layers, has lagged behind. Here we introduce two tools for better visualizing and interpreting - [3DTouch: A Wearable 3D Input Device for 3D Applications](https://anhnguyen.me/2015/3dtouch/) - 3D applications appear in every corner of life in the current technology era. There is a need for an ubiquitous 3D input device that works with many different platforms, from head-mounted displays (HMDs) to mobile touch devices, 3DTVs, and even the Cave Automatic Virtual Environments. We present 3DTouch, a novel wearable 3D input device worn - [Innovation Engine: Automated Creativity and Improving Stochastic Optimization via Deep Learning](https://anhnguyen.me/2015/innovation-engine/) - The Achilles Heel of stochastic optimization algorithms is getting trapped on local optima. Novelty Search avoids this problem by encouraging a search in all interesting directions. That occurs by replacing a performance objective with a reward for novel behaviors, as defined by a human-crafted, and often simple, behavioral distance function. While Novelty Search is a - [Multifaceted Feature Visualization: Uncovering the Different Types of Features Learned By Each Neuron in Deep Neural Networks](https://anhnguyen.me/2016/mfv/) - We can better understand deep neural networks by identifying which features each of their neurons have learned to detect. To do so, researchers have created Deep Visualization techniques including activation maximization, which synthetically generates inputs (e.g. images) that maximally activate each neuron. A limitation of current techniques is that they assume each neuron detects only - [Synthesizing the preferred inputs for neurons in neural networks via deep generator networks](https://anhnguyen.me/2016/synthesizing/) - Deep neural networks (DNNs) have demonstrated state-of-the-art results on many pattern recognition tasks, especially vision classification problems. Understanding the inner workings of such computational brains is both fascinating basic science that is interesting in its own right - similar to why we study the human brain - and will enable researchers to further improve DNNs. - [Plug & Play Generative Networks: Conditional Iterative Generation of Images in Latent Space](https://anhnguyen.me/2017/ppgn/) - Generating high-resolution, photo-realistic images has been a long-standing goal in machine learning. Recently, Nguyen et al. (2016) showed one interesting way to synthesize novel images by performing gradient ascent in the latent space of a generator network to maximize the activations of one or multiple neurons in a separate classifier network. In this paper we - [Automatically identifying, counting, and describing wild animals in camera-trap images with deep learning](https://anhnguyen.me/2018/identifying-wild-animals/) - Motion-sensor cameras in natural habitats offer the opportunity to inexpensively and unobtrusively gather vast amounts of data on animals in the wild. A key obstacle to harnessing their potential is the great cost of having humans analyze each image. Here, we demonstrate that a cutting-edge type of artificial intelligence called deep neural networks can automatically - [VectorDefense: Vectorization as a Defense to Adversarial Examples](https://anhnguyen.me/2018/vectordefense/) - Training deep neural networks on images represented as grids of pixels has brought to light an interesting phenomenon known as adversarial examples. Inspired by how humans reconstruct abstract concepts, we attempt to codify the input bitmap image into a set of compact, interpretable elements to avoid being fooled by the adversarial structures. We take the - [Strike (with) a Pose: Neural networks are easily fooled by strange poses of familiar objects](https://anhnguyen.me/2019/strike-with-a-pose/) - Despite excellent performance on stationary test sets, deep neural networks (DNNs) can fail to generalize to out-of-distribution (OoD) inputs, including natural, non-adversarial ones, which are common in real-world settings. In this paper, we present a framework for discovering DNN failures that harnesses 3D renderers and 3D models. That is, we estimate the parameters of a - [A cost-effective method for improving and re-purposing large, pre-trained GANs by fine-tuning their class-embeddings](https://anhnguyen.me/2019/biggan-am/) - Large, pre-trained generative models have been increasingly popular and useful to both the research and wider communities. Specifically, BigGANs a class-conditional Generative Adversarial Networks trained on ImageNet---achieved excellent, state-of-the-art capability in generating realistic photos. However, fine-tuning or training BigGANs from scratch is practically impossible for most researchers and engineers because (1) GAN training is often - [Explaining image classifiers by removing input features using generative models](https://anhnguyen.me/2020/counterfactual-generation/) - Interpretability methods often measure the contribution of an input feature to an image classifier's decisions by heuristically removing it via e.g. blurring, adding noise, or graying out, which often produce unrealistic, out-of-samples. Instead, we propose to integrate a generative inpainter into three representative attribution methods to remove an input feature. Compared to the original counterparts, - [SAM: The Sensitivity of Attribution Methods to Hyperparameters](https://anhnguyen.me/2020/sam/) - * Equal contributions. Attribution methods can provide powerful insights into the reasons for a classifier's decision. We argue that a key desideratum of an explanation method is its robustness to input hyperparameters which are often randomly set or empirically tuned. High sensitivity to arbitrary hyperparameter choices does not only impede reproducibility but also questions the - [The shape and simplicity biases of adversarially robust ImageNet-trained CNNs](https://anhnguyen.me/2020/shape-simplicity-bias-cnn/) - * All authors contributed equally. Adversarial training has been the topic of dozens of studies and a leading method for defending against adversarial attacks. Yet, it remains largely unknown (a) how adversarially-robust ImageNet classifiers (R classifiers) generalize to out-of-distribution examples; and (b) how their generalization capability relates to their hidden representations. In this paper, we - [Out of Order: How important is the sequential order of words in a sentence in Natural Language Understanding tasks?](https://anhnguyen.me/2021/word-order/) - Do state-of-the-art natural language understanding models care about word order - one of the most important characteristics of a sequence? Not always! We found 75% to 90% of the correct predictions of BERT-based classifiers, trained on many GLUE tasks, remain constant after input words are randomly shuffled. Despite BERT embeddings are famously contextual, the contribution - [The effectiveness of feature attribution methods and its correlation with automatic evaluation scores](https://anhnguyen.me/2021/feature-attribution-effectiveness/) - Explaining the decisions of an Artificial Intelligence (AI) model is increasingly critical in many real-world, high-stake applications. Hundreds of papers have either proposed new feature attribution methods, discussed or harnessed these tools in their work. However, despite humans being the target end-users, most attribution methods were only evaluated on proxy automatic-evaluation metrics (Zhang et al. - [baller2vec: A Multi-Entity Transformer For Multi-Agent Spatiotemporal Modeling](https://anhnguyen.me/2021/baller2vec/) - Multi-agent spatiotemporal modeling is a challenging task from both an algorithmic design and computational complexity perspective. Recent work has explored the efficacy of traditional deep sequential models in this domain, but these architectures are slow and cumbersome to train, particularly as model size increases. Further, prior attempts to model interactions between agents across time have - [Improving zero-shot object-level change detection by incorporating visual correspondence](https://anhnguyen.me/2025/change-detection-correspondence/) - Detecting object-level changes between two images across possibly different views is a core task in many applications that involve visual inspection or camera surveillance. Existing change-detection approaches suffer from three major limitations: (1) lack of evaluation on image pairs that contain no changes, leading to unreported false positive rates; (2) lack of correspondences (i.e., localizing - [HoT: Highlighted Chain of Thought for Referencing Supporting Facts from Inputs](https://anhnguyen.me/2025/hot/) - An Achilles heel of Large Language Models (LLMs) is their tendency to hallucinate nonfactual statements. A response mixed of factual and non-factual statements poses a challenge for humans to verify and accurately base their decisions on. To combat this problem, we propose Highlighted Chain-of-Thought Prompting (HoT), a technique for prompting LLMs to generate responses with - [B-score: Detecting biases in large language models using response history](https://anhnguyen.me/2025/b-score/) - Large language models (LLMs) often exhibit strong biases, e.g, against women or in favor of the number 7. We investigate whether LLMs would be able to output less biased answers when allowed to observe their prior answers to the same question in a multi-turn conversation. To understand which types of questions invite more biased answers, - [PCNN: Probable-Class Nearest-Neighbor Explanations Improve Fine-Grained Image Classification Accuracy for AIs and Humans](https://anhnguyen.me/2024/pcnn/) - Nearest neighbors (NN) are traditionally used to compute final decisions, e.g., in Support Vector Machines or k-NN classifiers, and to provide users with explanations for the model’s decision. In this paper, we show a novel utility of nearest neighbors: To improve predictions of a frozen, pretrained classifier C. We leverage an image comparator S that - [PEEB: Part-based Image Classifiers with an Explainable and Editable Language Bottleneck](https://anhnguyen.me/2024/peeb/) - * Equal contribution. CLIP-based classifiers rely on the prompt containing a {class name} that is known to the text encoder. Therefore, they perform poorly on new classes or the classes whose names rarely appear on the Internet (e.g., scientific names of birds). For fine-grained classification, we propose PEEB - an explainable and editable classifier to - [GlitchBench: Can large multimodal models detect video game glitches?](https://anhnguyen.me/2024/glitchbench/) - Large multimodal models (LMMs) have evolved from large language models (LLMs) to integrate multiple input modalities, such as visual inputs. This integration augments the capacity of LLMs for tasks requiring visual comprehension and reasoning. However, the extent and limitations of their enhanced abilities are not fully understood, especially when it comes to real-world tasks. To - [Fast and Interpretable Face Identification for Out-Of-Distribution Data Using Vision Transformers](https://anhnguyen.me/2024/face-id-vit/) - Most face identification approaches employ a Siamese neural network to compare two images at the image embedding level. Yet, this technique can be subject to occlusion (e.g. faces with masks or sunglasses) and out-of-distribution data. DeepFace-EMD (Phan et al. 2022) reaches state-of-the-art accuracy on out-of-distribution data by first comparing two images at the image level, - [ImageNet-Hard: The Hardest Images Remaining from a Study of the Power of Zoom and Spatial Biases in Image Classification](https://anhnguyen.me/2023/imagenet-hard/) - Image classifiers are information-discarding machines, by design. Yet, how these models discard information remains mysterious. We hypothesize that one way for image classifiers to reach high accuracy is to first zoom to the most discriminative region in the image and then extract features from there to predict image labels, discarding the rest of the image. - [gScoreCAM: What objects is CLIP looking at?](https://anhnguyen.me/2022/gscorecam/) - Large-scale, multimodal models trained on web data such as OpenAI’s CLIP are becoming the foundation of many applications. Yet, they are also more complex to understand, test, and align with human values. In this paper, we propose gScoreCAM—a state-of-the-art method for visualizing the main objects that CLIP looks at in an image. On zero-shot object - [Visual correspondence-based explanations improve AI robustness and human-AI team accuracy](https://anhnguyen.me/2022/correspondence-explanation/) - Explaining artificial intelligence (AI) predictions is increasingly important and even imperative in many high-stakes applications where humans are the ultimate decision-makers. In this work, we propose two novel architectures of self-interpretable image classifiers that first explain, and then predict (as opposed to post-hoc explanations) by harnessing the visual correspondences between a query image and exemplars. - [PiC: A Phrase-in-Context Dataset for Phrase Understanding and Semantic Search](https://anhnguyen.me/2023/pic/) - Since BERT (Devlin et al., 2018), learning contextualized word embeddings has been a de-facto standard in NLP. However, the progress of learning contextualized phrase embeddings is hindered by the lack of a human-annotated, phrase-in-context benchmark. To fill this gap, we propose PiC - a dataset of ~28K of noun phrases accompanied by their contextual Wikipedia - [How explainable are adversarially-robust CNNs?](https://anhnguyen.me/2022/explainable-robust-cnns/) - Three important criteria of existing convolutional neural networks (CNNs) are (1) test-set accuracy; (2) out-of-distribution accuracy; and (3) explainability. While these criteria have been studied independently, their relationship is unknown. For example, do CNNs that have a stronger out-of-distribution performance have also stronger explainability? Furthermore, most prior feature-importance studies only evaluate methods on 2-3 common - [DeepFace-EMD: Re-ranking Using Patch-wise Earth Mover's Distance Improves Out-Of-Distribution Face Identification](https://anhnguyen.me/2022/deepface-emd/) - Face identification (FI) is ubiquitous and drives many high-stake decisions made by law enforcement. State-of-the-art FI approaches compare two images by taking the cosine similarity between their image embeddings. Yet, such an approach suffers from poor out-of-distribution (OOD) generalization to new types of images (e.g., when a query face is masked, cropped, or rotated) not - [Double Trouble: How to not explain a text classifier’s decisions using counterfactuals synthesized by masked language models](https://anhnguyen.me/2022/double-trouble/) - Explaining how important each input feature is to a classifier's decision is critical in high-stake applications. An underlying principle behind dozens of explanation methods is to take the prediction difference between before-and-after an input feature (here, a token) is removed as its attribution---the individual treatment effect in causal inference. A recent method called Input Marginalization - [Inverting Adversarially Robust Networks for Image Synthesis](https://anhnguyen.me/2021/inverting-robust-networks/) - Recent research in adversarially robust classifiers suggests their representations tend to be aligned with human perception, which makes them attractive for image synthesis and restoration applications. Despite favorable empirical results on a few downstream tasks, their advantages are limited to slow and sensitive optimization-based techniques. Moreover, their use on generative models remains unexplored. This work - [Interpretable LLM-based Table Question Answering](https://anhnguyen.me/2025/plan-of-sqls/) - Interpretability for Table Question Answering (Table QA) is critical, particularly in high-stakes industries like finance or healthcare. Although recent approaches using Large Language Models (LLMs) have significantly improved Table QA performance, their explanations for how the answers are generated are ambiguous. To fill this gap, we introduce Plan-of-SQLs (POS), an interpretable Table QA approach designed - [Deep Neural Network are Easily Fooled: High Confidence Predictions for Unrecognizable Images](https://anhnguyen.me/2015/fooling/) - Deep neural networks (DNNs) have recently been achieving state-of-the-art performance on a variety of pattern-recognition tasks, most notably visual classification problems. Given that DNNs are now able to classify objects in images with near-human-level performance, questions naturally arise as to what differences remain between computer and human vision. A recent study (Szegedy et al, 2014) - [Low-cost Augmented Reality prototype for controlling network devices](https://anhnguyen.me/2013/low-cost-ar/) - With the evolution of mobile devices, and smart-phones in particular, comes the ability to create new experiences that enhance the way we see, interact, and manipulate objects, within the world that surrounds us. It is now possible to blend data from our senses and our devices in numerous ways that simply were not possible before - [A modular wearable 3D input device](https://anhnguyen.me/2014/3dtouch-a-modular-wearable-3d-input-device/) - I am proudly releasing my video demonstrating a 3D input device that I built for my Master's thesis: 3DTouch. This is a novel 3D wearable input device, worn on the fingertip for 3D manipulation tasks. 3DTouch is self-contained, and designed to universally work on various 3D platforms. The device employs touch input for the benefits of passive - [ExtJS Vertical TabPanel example](https://anhnguyen.me/2010/extjs-vertical-tabpanel-example/) - Currently, ExtJS 3.1.1 doesn't support Vertical TabPanel. Here is my simple custom Vertical TabPanel ux class. Currently, it supports the same set of features as Ext.Tabpanel except advanced auto tab-scrolling feature. Default position is "left". Tested working on FF2+, IE6+, Chrome 4, Safari 4, and Opera 10. You can put the source files in ExtJS - [Low-cost Augmented Reality prototype for controlling network devices](https://anhnguyen.me/2013/low-cost-augmented-reality-prototype-for-controlling-network-devices/) - The Workshop on Off-The-Shelf Virtual Reality is intended to bring together researchers, professionals, and hobbyists to share ideas that leverage off-the-shelf technology for the creation of virtual reality experiences. Building on a successful workshop from IEEE VR 2012, OTSVR 2013 will provide a venue for sharing novel hardware prototypes, software toolkits, interaction techniques, and novel - [How to configure a Waf C++ project in Eclipse](https://anhnguyen.me/2014/how-to-configure-a-waf-cxx-project-in-eclipse/) - I've mostly used Eclipse for my Java work. Today I've configured Eclipse to build, run and debug my C++ project built on Waf. Waf build tool is not natively supported in current latest Eclipse (Luna Eclipse), so hopefully this entry helps someone trying to achieve the same configuration. I am running Luna Eclipse on Ubuntu 12.04. The - [How to make CyberGloves work on Linux via VRPN](https://anhnguyen.me/2013/how-to-make-cybergloves-work-on-linux-via-vrpn/) - How to make CyberGloves work on Linux via VRPN - [How to mix MPI and CUDA in a single program](https://anhnguyen.me/2013/how-to-mix-mpi-and-cuda-in-a-single-program/) - MPI is a well-known programming model for Distributed Memory Computing. If you have access to GPU resources, MPI can be used to distribute tasks to computers, each of which can use their CPU and also GPU to process the distributed task. My toy problem in hand is to use a mix of MPI and CUDA - [How to use Bullet Physics engine in Vrui applications](https://anhnguyen.me/2013/how-to-use-bullet-physics-engine-in-vrui-applications/) - Bullet is an open source physics engine featuring 3D collision detection and dynamics. It has been adopted in game engines like Ogre3D so it would be great to embed Bullet in an Vrui application for immersive environments as well. This post shows you one simple way to make a Bullet Demo program work in Vrui. - [Turning your Arduino Uno R3 into an USB mouse](https://anhnguyen.me/2014/turn-arduino-uno-r3-into-a-mouse/) - Tonight I've just turned my Arduino Uno R3, which runs the Atmega16U2 chip, into an USB mouse on my Ubuntu 12.04. I thought this guide might be helpful to those who are looking for a solution with similar setup as mine. Basically, this method uses the special USB protocol called Device Firmware Update (DFU) to - [J!Mint - Joomla Magento Integration](https://anhnguyen.me/2009/jmint-joomla-magento-integration/) - Hi guys, I’m Anh Nguyen (Totti), a student participant in GSoC 2009 under Joomla category, and my project is Joomla Magento Integration, J!Mint. This project is FREE and licensed under GNU GPL 2.0. The main features are : 1. User Synchronization 2. User Management 3. SSO 4. Backend Integration : allows you to control Magento - [What makes your ExtJS application run so slow ?](https://anhnguyen.me/2011/what-makes-your-extjs-application-run-so-slow/) - the key bottlenecks that might cause an ExtJS app to run slow, and also point out the mistakes that rookie ExtJS devs most likely make. - [Integration between CyberGloves and OptiTrack](https://anhnguyen.me/2013/integration-between-cybergloves-and-optitrack/) - Integration between CyberGloves and OptiTrack - [Another Pit Demo in Immersive Environments](https://anhnguyen.me/2013/another-pit-demo-in-immersive-environments/) - Immersive Environments - [It's time to blog now..](https://anhnguyen.me/2009/hello-world/) - I used to have a personal website developed in Flash here as I played around with Flash/ActionScript, but it's quite outdated since 2007. Just realized It's time to start blogging about Javascript, and web frontend stuff to hear and share with people around. So here comes my blog :) - [A JavaScript Module Pattern](https://anhnguyen.me/2009/a-javascript-module-pattern/) - This is the first episode in the collection of Great Javascript articles by world's top-notched Javascript gurus. Our entry this week was written by Eric Miraglia originally posted on Y!UI Blog. Global variables are evil. Within YUI, we use only two globals: YAHOO and YAHOO_config. Everthing in YUI makes use of members within the YAHOO - [js1k contest - writing a pool game with only 1024 bytes](https://anhnguyen.me/2011/js1k-contest-writing-a-pool-game-with-less-than-1024-bytes/) - js1k contest - writing a pool game with less than 1024 bytes - [ExtJS - How to scroll Ext.Panel by Drag and Drop ?](https://anhnguyen.me/2010/extjs-how-to-scroll-ext-panel-by-drag-and-drop-using-ext-dd-dragzone/) - In an ExtJS panel (Ext.Panel) where the content area is huge but the Panel size is limited, users usually use the MouseWheel to scroll vertically Up and Down. However, the Drag n Drop feature could actually allow users to scroll both vertically and horizontally by dragging and dropping the content (or body) of Ext.Panel. In - [ExtJS Accordion-Vbox custom hybrid layout](https://anhnguyen.me/2010/extjs-accordion-vbox-custom-hybrid-layout/) - ExtJs has two well-known layouts called Accordion and Vbox. Basically, in a vertical list of panels, AccordionLayout manages multiple Panels in an expandable accordion style such that only one Panel can be expanded at any given time. Each Panel has built-in support for expanding and collapsing. VboxLayout, on the other hand, arranges items vertically down - [IE z-index bug ](https://anhnguyen.me/2010/ie-z-index-bug/) - Z-index bug on IE is a well-known flaw that most of front-end web developers have heard about. It is documented pretty clear on PPK Quirksmode: http://www.quirksmode.org/.../Explorer_z_index_bug.html and here http://therealcrisp.xs4all.nl/../IE-zindexbug.html Basically here is the break-down of the workaround... We have two div elements box1, nested in box3 and box2. And we want box1 to be on - [The interesting javascript window object](https://anhnguyen.me/2010/the-interesting-javascript-window-object/) - As we all know that in Client-side Javascript, the Window object is the global variable, a host object, that contains attributes of the current opened window. An interesting part is this object also has a property called 'window' which refers to itself. I'm not sure why this special object is implemented that way. A fun - [IE and CSS class-chaining](https://anhnguyen.me/2010/ie-and-css-class-chaining/) - Internet Explorer 6, 7 both do NOT support CSS class-chaining as a couple of articles floating around on the internet say. Basically, CSS class-chaining is used to select HTML elements which have multiple CSS classes: For example: To select the later element we can use CSS class-chaining like: However, IE6, 7, will see this as - [Javascript: Function length vs arguments](https://anhnguyen.me/2010/javascript-function-length-vs-arguments/) - One of the reasons quite a number of programmers don't like Javascript because it's weird, behaving differently on different browsers.. and hard to debug.. However, it's quite fun or even addictive to learn JS also for that reason. Below is a brief on two mysterious properties of Javascript functions : length, and arguments. arguments : - [ExtJS : How to disable browser context menu](https://anhnguyen.me/2010/extjs-how-to-disable-browser-context-menuxt/) - This is a quick solution to disabling browser default context menu when right-clicking in ExtJS. Basically, you can implement a TreePanel or other ExtJS components like: Tested working on FF 3.6, Chrome 3, Safari 4 and IE7. Opera 10 unfortunately fails. - [JSMag for FREE](https://anhnguyen.me/2010/jsmag-for-free/) - JSMag is currently kinda the only Javascript magazine for enthusiastic front-end developers. I'm a subscriber of this magazine, finding it really fun, and interesting to read, especially if you love Javascript. This is a must-read for you :D and only costs $4.99. You can purchase at JsMag or ..I will periodically, and per request, upload - [Learning Javascript, JQuery w John Resig](https://anhnguyen.me/2010/learning-javascript-jquery-w-john-resig/) - John Resig, one of my favorite Javascript experts, recently has just released a site teaching advanced Javascript for intermediate programmers. I myself find this resource very informative. Hope you guys love it too. http://ejohn.org/apps/learn/ and also the page teaching jQuery at http://ejohn.org/apps/learn-jquery/ You could also find more of his lectures in the upcoming book called - [ExtJS : 2 secs with custom vType](https://anhnguyen.me/2009/extjs-2-secs-with-vtype/) - Following another question on ExtJS forum, I've created a sample of how to use vType for ExtJS newbies. Basically, in form submission you need to validate user input and / or prevent user from entering invalid keys. Pure Javascript implementation could be quite a headache to some folks. ExtJS now provides a regex-based validation class - [How to remove white spaces from a string](https://anhnguyen.me/2009/how-to-remove-white-spaces-from-a-string/) - Today at work, I happened to write a function that removes white spaces from a string. After trying different ways using: loops, array indexer, or regex, I came up with the shortest way using regular expression to share with you: - [Ext JS Examples: Drag n' Drop buttons on a panel](https://anhnguyen.me/2009/ext-js-drag-n-drop-buttons-on-a-panel/) - This blog entry was written following a question of an user in ExtJS forum: How to drag n' drop a button on a panel ? ExtJs people tend to just focus on the grid-to-grid, grid-to-listview.. sort of drag and drop, and forgot to include in their documentation a typical example of 'drag and drop' of ## Pages - [Work with me](https://anhnguyen.me/work-with-me/) - I am currently on leave from academia to work at Recursive. Therefore, I am not recruiting new Ph.D. students. I may have some capacity to mentor remote, talented junior full-time researchers with the goal of publishing a top-tier conference publication. Feel free to reach out to Anh at anh.ng8@gmail.com for any inquiries. Application Instructions 0. Remote collaboration I'm - [Press & Exhibition](https://anhnguyen.me/press/) - News outlets sometimes covered our research. Artists sometimes use our published techniques to generate art works which are exhibited in the US and Europe. Selected articles 2026 This 'chicken' test shows why AI could be so deadly in war 2024 Can you do better than top-level AI models on these basic vision tests? 2024 ‘Visual’ AI models might - [Lab](https://anhnguyen.me/lab/) - Our group is focused on Trustworthy and Explainable Artificial Intelligence (AI). Understanding the weaknesses of AIs and making them more robust & accurate in rare, unseen scenarios. We currently believe one approach to better accuracy in rare cases is to encourage AIs to explain themselves (where the exact formats of explanation depend on the application) - [About me](https://anhnguyen.me/about/) - 🏞️ Bio: Anh completed his Ph.D. working with Jeff Clune and Jason Yosinski in 2017 and since then has been an Assistant Professor at Auburn University. He also worked at Apple and Geometric Intelligence (acquired by Uber). In a previous life, he enjoyed building web interfaces at Bosch and invented a 3D input device for - [Courses](https://anhnguyen.me/courses/) - I have taught the following courses: COMP 5630/6630 Machine Learning (Spring 2023) COMP 5970/6970 Explainable Artificial Intelligence (Spring 2023, Spring 2024) COMP 5650/6650 Deep Learning COMP 4200 Formal Languages (Theory of Computation) - [K-6 AI club](https://anhnguyen.me/k6-ai-club/) - Prof. Anh Nguyen (CSSE department, Auburn University) is creating an AI Club for children around elementary-school age (K-6) to learn math, coding, robotics, and artificial intelligence. This is a completely FREE, voluntary, educational event, supported by Auburn University and an NSF CAREER award. Anh decided to create this club after finding no such clubs exist ## Categories - [Uncategorized](https://anhnguyen.me/category/uncategorized/) - [CSS](https://anhnguyen.me/category/css/) - [Ebooks](https://anhnguyen.me/category/ebooks/) - [Ext JS](https://anhnguyen.me/category/ext-js-javascript/) - [Great Articles](https://anhnguyen.me/category/great-articles/) - [Javascript](https://anhnguyen.me/category/javascript/) - [Joomla](https://anhnguyen.me/category/joomla-open-source/) - [News](https://anhnguyen.me/category/news/) - [Open Source](https://anhnguyen.me/category/open-source/) - [Performance](https://anhnguyen.me/category/performance/) - [User Interface](https://anhnguyen.me/category/user-interface/) - User Interface - [Hacks](https://anhnguyen.me/category/hacks/) - [Virtual Reality](https://anhnguyen.me/category/virtual-reality/) - [C++](https://anhnguyen.me/category/c-3/) - [Hardware](https://anhnguyen.me/category/hardware/) - [Arduino](https://anhnguyen.me/category/arduino/) - [Demo](https://anhnguyen.me/category/demo/) - [Computer Vision](https://anhnguyen.me/category/computer-vision/) - [NLP](https://anhnguyen.me/category/nlp/) - [Human-Computer Interaction](https://anhnguyen.me/category/hci/) - [Explainable AI](https://anhnguyen.me/category/xai/) ## Tags - [accordion](https://anhnguyen.me/tag/accordion/) - [Anh Nguyen](https://anhnguyen.me/tag/anh-nguyen/) - [arguments](https://anhnguyen.me/tag/arguments/) - [bug](https://anhnguyen.me/tag/bug/) - [C#](https://anhnguyen.me/tag/c/) - [class chaining](https://anhnguyen.me/tag/class-chaining/) - [context menu](https://anhnguyen.me/tag/context-menu/) - [custom](https://anhnguyen.me/tag/custom/) - [custom extension](https://anhnguyen.me/tag/custom-extension/) - [drag and drop](https://anhnguyen.me/tag/drag-and-drop/) - [Drag n' Drop](https://anhnguyen.me/tag/drag-n-drop/) - [examples](https://anhnguyen.me/tag/examples/) - [Ext JS](https://anhnguyen.me/tag/ext-js/) - [ExtJS](https://anhnguyen.me/tag/extjs/) - [IE](https://anhnguyen.me/tag/ie/) - [John Resig](https://anhnguyen.me/tag/john-resig/) - [jQuery](https://anhnguyen.me/tag/jquery/) - [jsmag](https://anhnguyen.me/tag/jsmag/) - [layout](https://anhnguyen.me/tag/layout/) - [Learning](https://anhnguyen.me/tag/learning/) - [length](https://anhnguyen.me/tag/length/) - [magazine](https://anhnguyen.me/tag/magazine/) - [Magento](https://anhnguyen.me/tag/magento/) - [maps](https://anhnguyen.me/tag/maps/) - [module](https://anhnguyen.me/tag/module/) - [optimization](https://anhnguyen.me/tag/optimization/) - [panel](https://anhnguyen.me/tag/panel/) - [pattern](https://anhnguyen.me/tag/pattern/) - [performance](https://anhnguyen.me/tag/performance-2/) - [PHP](https://anhnguyen.me/tag/php/) - [Regex](https://anhnguyen.me/tag/regex/) - [right click](https://anhnguyen.me/tag/right-click/) - [scrolling](https://anhnguyen.me/tag/scrolling/) - [Teaching](https://anhnguyen.me/tag/teaching/) - [tot2ivn](https://anhnguyen.me/tag/tot2ivn/) - [vbox](https://anhnguyen.me/tag/vbox/) - [vType](https://anhnguyen.me/tag/vtype/) - [z-index](https://anhnguyen.me/tag/z-index/) - [contest](https://anhnguyen.me/tag/contest/) - [1k](https://anhnguyen.me/tag/1k/) - [pool](https://anhnguyen.me/tag/pool/) - [hack](https://anhnguyen.me/tag/hack/) - [Pit](https://anhnguyen.me/tag/pit/) - [Demo](https://anhnguyen.me/tag/demo/) - [Immersive](https://anhnguyen.me/tag/immersive/) - [Environments](https://anhnguyen.me/tag/environments/) - [vrui](https://anhnguyen.me/tag/vrui/) - [blender](https://anhnguyen.me/tag/blender/) - [server](https://anhnguyen.me/tag/server/) - [client](https://anhnguyen.me/tag/client/) - [CyberGloves](https://anhnguyen.me/tag/cybergloves/) - [gloves](https://anhnguyen.me/tag/gloves/) - [tracking](https://anhnguyen.me/tag/tracking/) - [integration](https://anhnguyen.me/tag/integration/) - [bullet](https://anhnguyen.me/tag/bullet/) - [robots](https://anhnguyen.me/tag/robots/) - [glut](https://anhnguyen.me/tag/glut/) - [arduino](https://anhnguyen.me/tag/arduino-2/) - [imu](https://anhnguyen.me/tag/imu/) - [hacks](https://anhnguyen.me/tag/hacks-2/) - [thesis](https://anhnguyen.me/tag/thesis/) - [wearable](https://anhnguyen.me/tag/wearable/) - [ubiquitous computing](https://anhnguyen.me/tag/ubiquitous-computing/) - [virtual reality](https://anhnguyen.me/tag/virtual-reality-2/) - [3D](https://anhnguyen.me/tag/3d/) - [waf](https://anhnguyen.me/tag/waf/) - [configure](https://anhnguyen.me/tag/configure/) - [build](https://anhnguyen.me/tag/build/) - [setup](https://anhnguyen.me/tag/setup/) - [sferes](https://anhnguyen.me/tag/sferes/) - [workshop](https://anhnguyen.me/tag/workshop/) - [paper](https://anhnguyen.me/tag/paper/) - [ieeevr](https://anhnguyen.me/tag/ieeevr/) - [android](https://anhnguyen.me/tag/android/) - [app](https://anhnguyen.me/tag/app/) - [CSS](https://anhnguyen.me/tag/css/) - [Ebooks](https://anhnguyen.me/tag/ebooks/) - [Javascript](https://anhnguyen.me/tag/javascript/) - [Joomla](https://anhnguyen.me/tag/joomla-open-source/) - [Open Source](https://anhnguyen.me/tag/open-source/) - [Totti](https://anhnguyen.me/tag/totti/) - [VRPN](https://anhnguyen.me/tag/vrpn/)