Skip to content

Instantly share code, notes, and snippets.

View mourjo's full-sized avatar
👋

Mourjo Sen mourjo

👋
View GitHub Profile
@ashu17706
ashu17706 / logitech-complete-uninstall.md
Last active November 3, 2026 23:41
Complete guide to uninstalling Logitech Options+ from macOS — what it secretly installs, how to find it, and how to nuke every trace

The maintained version of this guide now lives at zero8.dev/blog/completely-uninstall-logitech-options-plus-macos — same cleanup, with fixes (this gist originally had a ~-inside-quotes bug on the SentryCrash line, corrected below) and kept up to date as Logitech moves paths around.

Logitech Options+ on macOS: What It Installs, Why It's Excessive, and How to Completely Remove It

The Problem

Logitech Options+ (and its predecessor Logitech Options) installs far more than a mouse/keyboard driver. For what should be a simple button remapping tool, it drops files across 6+ system directories, installs background daemons, phones home via crash reporting (Sentry), and even bundles an AI Prompt Builder — none of which you asked for.

Here's what's actually running on your Mac after a "simple" Logitech Options+ install:

% clj -Sdeps "{:deps {juxt/crux-core {:mvn/version \"21.06-1.17.1-beta\"}}}"
Clojure 1.10.1
;; Require API and create noe
user=> (require '[crux.api :as crux])
nil
user=> (def crux (crux/start-node {})) ; start in-memory node
#'user/crux
;; Insert and query some data
@hagmonk
hagmonk / lein-m1-vs-intel.md
Last active March 19, 2022 08:35
Benchmarking Leiningen on Apple Silicon

Benchmarking Leiningen on Apple Silicon

Gene was tweeting about Clojure's startup performance on Apple Silicon, so I decided to benchmark my new MacBook Air with the M1 chip against my Intel based MacBook Pro.

TL;DR

img

The M1 chip in the MacBook Air - which lacks a fan - was able to quite tidily beat an almost top-of-the-line Intel chip.

@samebchase
samebchase / raku-grammars.md
Last active November 29, 2020 13:35
[WIP]: Raku Grammars

Parsing Clojure namespace forms using Raku grammars

One day, I started wondering if it would be possible to parse Clojure namespace forms and generate a dependency graph of the various namespaces used in a real-world Clojure project. While that was the original motivation, I ended up down the Raku grammar rabbit hole, and had an enjoyable time learning how to use them. I'm glad you're joining me in reliving that journey.

Background

@ursuad
ursuad / kafka-cheat-sheet.md
Last active October 5, 2026 09:06
Quick command reference for Apache Kafka

Kafka Topics

List existing topics

bin/kafka-topics.sh --zookeeper localhost:2181 --list

Describe a topic

bin/kafka-topics.sh --zookeeper localhost:2181 --describe --topic mytopic

Purge a topic

bin/kafka-topics.sh --zookeeper localhost:2181 --alter --topic mytopic --config retention.ms=1000

... wait a minute ...

@ghoseb
ghoseb / clj_spec_playground.clj
Last active March 30, 2019 22:35
Examples of Clojure's new clojure.spec library
(ns clj-spec-playground
(:require [clojure.string :as str]
[clojure.spec :as s]
[clojure.test.check.generators :as gen]))
;;; examples of clojure.spec being used like a gradual/dependently typed system.
(defn make-user
"Create a map of inputs after splitting name."
([name email]
@boringrgb
boringrgb / browser_history.md
Last active March 5, 2026 11:39
Playing around with Chrome's history

Browser histories

Unless you are using Safari on OSX, most browsers will have some kind of free plugin that you can use to export the browser's history. So that's probably the easiest way. The harder way, which seems to be what Safari wants is a bit more hacky but it will also work for other browsers. Turns out that most of them, including Safari, have their history saved in some kind of sqlite database file somewhere in your home directory.

The OSX Finder cheats a little bit and doesn't show us all the files that actually exist on our drive. It tries to protect us from ourselves by hiding some system and application-specific files. You can work around this by either using the terminal (my preferred method) or by using the Cmd+Shft+G in Finder.

Finder

Once you locate the file containing the browser's history, copy it to make a backup just in case we screw up.

@kapilreddy
kapilreddy / find-offsets.clj
Last active April 12, 2017 11:32
Kafka message offset finder
;; project.clj
;; [clj-time "0.6.0"]
;; [org.clojure/data.json "0.2.4"]
;; [clj-kafka "0.2.8-0.8.1.1"]
;; Utility to find offsets in a given Kafka topic for a given
;; cursor/point in time. The code assumes that each message has a
;; monotonically increasing number (ex. unix timestamp) associated with
;; it.
What exactly is "iowait"?
To summarize it in one sentence, 'iowait' is the percentage
of time the CPU is idle AND there is at least one I/O
in progress.
Each CPU can be in one of four states: user, sys, idle, iowait.
Performance tools such as vmstat, iostat, sar, etc. print
out these four states as a percentage. The sar tool can
print out the states on a per CPU basis (-P flag) but most
@gfredericks
gfredericks / with-local-redefs.clj
Last active September 16, 2025 22:30
thread-local version of with-redefs
(defn with-local-redefs-fn
[a-var its-new-value func]
(cast clojure.lang.IFn @a-var)
(alter-meta! a-var
(fn [m]
(if (::scope-count m)
(update-in m [::scope-count] inc)
(assoc m
::scope-count 1
::thread-local-var (doto (clojure.lang.Var/create @a-var)