Welcome to JamesCherti.com

About the author

Hi, I am James Cherti, a Senior Software and Infrastructure Specialist based in Toronto, Canada. With over two decades in the tech industry, I have had the privilege of working on everything from software development to managing complex UNIX/Linux systems and building scalable architectures. I am a terminal enthusiast who lives in the Bash shell, tmux, and Emacs, always looking for the next automation to write. When I step away from the terminal, you can usually find me in Toronto with a good cup of... (Read more)

Popular Articles

Recent articles

  • Measuring Emacs Startup Time More Accurately than the Built-in emacs-init-time
    As an Emacs configuration grows, startup time can gradually increase. Measuring that increase accurately makes it easier to identify regressions. The majority of Emacs users use emacs-init-time. However, this built-in function does not measure all the work performed during startup. Emacs startup proceeds through several stages: it loads the early init and regular init files, processes command-line … Continue reading
  • Configuring Eglot for Python Development in Emacs: Integrating python-lsp-server (pylsp) with Linters and Formatters
    Eglot provides built-in LSP support in modern Emacs, giving developers a native interface for autocompletion, linting, and formatting. When paired with python-lsp-server (pylsp), creating a Python development environment comes down to managing the LSP server configuration properly. Historically, setting up this toolchain required wiring together a stack of individual utilities such as flake8 and isort. Now, ruff … Continue reading
  • Configuring Emacs Scrolling for Better Usability
    By default, scrolling in Emacs recenters the window when point moves off-screen, and rapid scrolling through large, heavily fontified files can introduce noticeable input lag. This article outlines configurations that make scrolling more predictable and responsive. Customizing scroll recentering Adjusting the automatic scrolling behavior can prevent Emacs from making large jumps when point moves beyond the visible … Continue reading
  • Configuring Emacs Eglot for Better Performance and Latency
    Eglot ships with Emacs as a built-in, lightweight LSP client, and its default configuration is sufficient for most projects. However, working with large codebases can cause latency. When Eglot becomes sluggish, the problem may involve work performed by Eglot and Emacs as well as the language server itself. Event logging, filesystem watching, diagnostics, completion, and other editor … Continue reading
  • Copy-paste without Emacs org-mode or markdown-mode Formatting Bleeding Into Other Buffers
    When text is copied from an org-mode or markdown-mode buffer and pasted into another Emacs buffer, its visual formatting can sometimes follow it. For instance, text displayed with a particular color, background, or font weight in an Org or Markdown buffer can retain that appearance after being inserted into a Python buffer. This can be undesirable because … Continue reading
  • Configuring Emacs Spell Checking with Flyspell, Ispell, and Aspell to Minimize False Positives in Source Code and Prose
    The ispell package serves as the underlying interface in Emacs for communicating with external spell checking programs. Building upon this, the flyspell package is a built-in minor mode that provides on-the-fly spell checking. It highlights misspelled words as you type and offers interactive corrections. This article presents a practical configuration for Emacs that sets up ispell to … Continue reading
  • Emacs startup - Why setq beats setopt, customize-set-variable, and use-package :custom?
    Every millisecond counts during Emacs initialization. A potential performance cost in modern Emacs configurations is defaulting to setopt, customize-set-variable, or the use-package :custom keyword when a direct assignment with setq is sufficient. Disclaimer: This article assumes you have a solid understanding of Emacs Lisp and know what you are doing when switching to setq. For users who … Continue reading
  • Improving the Performance of Samsung Galaxy Phones and Tablets
    Out of the box, Samsung Galaxy Phones and Tablets are highly responsive, but long-term performance often degrades into noticeable lag. As background services, cached data, and memory paging overhead consume available CPU cycles and RAM, the entire system slows down. This article covers reducing storage I/O bottlenecks by disabling virtual memory paging, controlling process lifecycles through targeted … Continue reading
  • single-window.el - Always Open Emacs Buffers in the Current Active Window
    The single-window package forces Emacs to open buffers in the current active window. It keeps your carefully arranged layouts intact, reduces visual clutter, and provides a much more predictable workflow. To ensure it does not break standard Emacs functionality, the package is built to handle the following edge cases and integrations out of the box: Transient and … Continue reading
  • jc-gentoo-portage - An opinionated, performance-oriented Gentoo Portage /etc/portage configuration
    The jc-gentoo-portage repository houses an opinionated, performance-oriented Gentoo Portage (/etc/portage) configuration. This repository can be used as an inspiration to build a lean and fast Gentoo operating system. Features: Maximizes execution performance across the system by globally enabling xs, asm, orc, jit, and threads, forcing packages to use hand-written assembly routines and JIT compilation loops. Disables telemetry … Continue reading

(All articles...)

⭐ Highlighted Articles