• Notes on the Current State of LLM Frameworks

    This post tries to shed some light on the rapidly changing LLM frameworks in particular, LangChain (LC) and Llama-index (LI). Library vs. Framework It’s tricky to draw a clear boundary between a package/library and a framework, but for the sake of discussion, let’s look at some well-known examples I’ve been using LC and LI for… Continue reading

  • First Principle Thinking: Building Structured Systems in Life

    First Principle Thinking is a powerful tool that enables us to examine and challenge all assumptions related to a topic, leading to a deeper and more comprehensive understanding of it. By questioning and challenging common understanding, we can uncover hidden assumptions and biases that may have been previously overlooked. FPT is one of my mental… Continue reading

  • Announcement 📢 Releasing dlpackrs

    DLPack is the standard in-memory data format that facilitates zero-cost tensor transfer across major Deep Learning frameworks (PyTorch, TensorFlow and TVM) and the supported Python Array processing frameworks such as Numpy, CuPy. The dlpackrs provides a safe idiomatic Rust binding where Rust ndarray and tensor frameworks can use it to gain the same kind of… Continue reading

  • Announcement 📢 Releasing smartalloc

    If you happen to write unsafe code in Rust where normal static checks are not available and want better UX for detecting memory issues along side using various sanitizers, checkout my new crate smartalloc which provides idiomatic Rust binding for the original C version here. Beside the reason in README, note that MIRI can’t be… Continue reading

  • Announcement 📢 Create your own programming language with Rust

    After almost a year from my last blog post, in this short post I’m very happy to announce that I’m writing a free online book where early chapters are available now. I’ve explained my motivations and goals in the introduction. The accompanying codes are also available on my GitHub. Feedbacks are welcome and happy learning.… Continue reading

  • Rust std study series: Pin

    This time we dive into std::pin which has a dense documentation. Types that pin data to its location in memory. It is sometimes useful to have objects that are guaranteed to not move, in the sense that their placement in memory does not change, and can thus be relied upon. A prime example of such… Continue reading

  • Rust std study series: alloc

    Let’s get deep into std::alloc! Memory allocator 101 The very basic need for any program to compile and execute is having access to either physical memory or virtual memory. An allocator is responsible for providing such an access. You can think of an allocator as a service, taking some sort of requests and either giving… Continue reading

  • Rust std study series: Interior mutability

    Continuing the standard library study, it’s time for Cell<T>! Rust compiler enforces multiple reads access and a single write access mutually exclusive, i.e. either multiple shared references & or one and only one mutable reference & mut. So essentially, Rust prevents the evil of aliasing and mutation between multiple threads. Cell<T> is a sharable mutable… Continue reading

  • The State of Machine Learning in Rust

    Every once in a while this topic comes up on a social media or Rust user channel. I’d like to describe briefly the way I see where things are going by a little bit of history as well as some information about existing flux of Machine Learning/Deep Learning frameworks and major recent trends. Brief history… Continue reading

  • Rust std study series: VecDeque

    Continuing from Rust standard library study series, it’s time for VecDeque<T>. Because of its similarity to Vec, there isn’t much to say. A double-ended queue implemented with a growable ring buffer. The “default” usage of this type as a queue is to use push_back to add to the queue, and pop_front to remove from the… Continue reading

  • Rust std study series: LinkedList

    Continuing from Rust standard library study series, it’s time for LinkedList<T>. Note that implementation are taken from Rust stable v1.33.0. A doubly-linked list with owned nodes. The LinkedList allows pushing and popping elements at either end in constant time. Almost always it is better to use Vec or VecDeque instead of LinkedList. In general, array-based… Continue reading

  • Variance in Rust: An intuitive explanation

    Recently I’ve made a presentation about subtyping and variance in Rust for our local Vancouver Rust meetup, but I still think intuition was rather lost in the formalism, so here’s my shot at explaining it as intuitively as I can. For more succinct definitions, please checkout the presentation or the resources at the end. First,… Continue reading

  • Rust std study series: Vec

    The upcoming series of blog posts will contain my study of Rust standard library. I’ve partially written some parts of the series in scattered places and want to gather them in one place for better and easier access. I intend to update whenever I discover something interesting/important to remember. I’m referring to implementations in Rust… Continue reading

  • What’s up with word embedding?

    Word embedding is one of the interesting areas of research in Natural Language Processing. There are huge amount of materials with a lot of interesting ideas. I have been studying some of them lately and in this post, I’d like to create a brief account of the ideas I have found most interesting so far.… Continue reading

  • General Monty Hall Simulation

    The idea of this post came up to my mind last night. I’m assuming you have already heard about the famous Monty Hall Problem (if you haven’t, watch the quicker intro in Numberphile clip). Here I’d like to demonstrate a simulation taking the general case into account, i.e. assume we have bins (boxes or doors, whatever) and… Continue reading

  • Restaurant Revenue Prediction with BART Machine

    In this post, I’d like to show you how to use the newly written package on Bayesian Additive Regression Trees i.e. BART Machine for Restaurant Revenue Prediction with R. The datasets are part of the passed Kaggle competition that can be found here. What is BART? BART is the Bayesian sibling of Random Forest. For… Continue reading

  • Vector Bundles, Locally Free Sheaves and Divisors on a Curve

    In this post, I’ll be summarizing the basics of the correspondence between vector bundles, locally free sheaves and divisors on a smooth curve (defined over an algebraically closed field of characteristic zero) together with some of their individual properties. Locally free sheaves and Vector bundles: Proposition 1: a) A coherent sheaf on a curve is locally free… Continue reading

  • Classification of Vector Bundles on Elliptic curves

    I’m supposed to give a talk on this subject for one of my courses, so I consider this post as a “pre-exposition.” I learned from and heavily used the great exposition “Vector bundles on curves” by Montserrat Teixidor I Bigas in this post. I wrote up the pre-requisites here. In 1957, Atiyah in this famous paper “Vector bundles over… Continue reading

  • Some Homological Algebra Computations

    In this post, I’m going to write down the detailed proofs of some of the exercises in Rotman’s Homological Algebra. They were asked in ML and then answered by me. 1. Let be a torsion abelian group. Then , where is the unit circle. One point is that the structure of the circle group is… Continue reading

About Me

I’m a Machine Learning Engineer. If you want to know more about me and my work, please check out my GitHub and Linkedin.