Thursday, 29 January 2026

Frappe Insights app - Installation Issues

 

Issue 1: mysqlclient Compilation Error During bench get-app

Insights depends on ibis-framework[mysql], which requires the mysqlclient Python package—a C extension that needs MariaDB development headers.

The Error

During the Docker build:

text
Trying pkg-config --exists libmariadb
Command 'pkg-config --exists libmariadb' returned non-zero exit status 127.
/bin/sh: 1: pkg-config: not found
Exception: Can not find valid pkg-config name.
Specify MYSQLCLIENT_CFLAGS and MYSQLCLIENT_LDFLAGS env vars manually

This happened because the base frappe/erpnext image lacks pkg-config and MariaDB dev packages.

The Fix

I updated my Containerfile to install the necessities as root:

text
USER root
RUN apt-get update && \
    apt-get install -y --no-install-recommends \
    libmariadb-dev \
    build-essential \
    && rm -rf /var/lib/apt/lists/*

USER frappe

# Set env vars to skip pkg-config
ENV MYSQLCLIENT_CFLAGS="-I/usr/include/mariadb"
ENV MYSQLCLIENT_LDFLAGS="-L/usr/lib -lmariadb"

This forces mysqlclient to build from source using explicit paths, keeping the image lean (no pkg-config needed). Rebuild the image, and the bench get-app step succeeds.

Issue 2: NumPy Baseline Optimization Error During bench install-app

After getting the app, running bench --site site.name install-app insights failed with:

RuntimeError: NumPy was built with baseline optimizations: (X86_V2) but your machine doesn't support: (X86_V2).

NumPy 2.0+ (here v2.4.1) requires x86-64-v2 features (SSE4.2, SSSE3, POPCNT), but my VM didn't expose them.

The Cause

Proxmox VM default CPU type (kvm64 or similar) emulates a minimal CPU without passing through host features. My Xeon Silver 4510 supports these, but the guest OS didn't see them (grep sse4_2 /proc/cpuinfo returned nothing).

The Fix

In Proxmox UI:

  • Shut down VM.
  • Hardware > Processor > Edit > Type: Set to host. 
  • Or, change the machine type to q35 (which I did not try)

This passes through the real CPU capabilities. No more NumPy error!

Monday, 19 January 2026

Troubleshooting Claude Code - PyCharm Integration

 If you’re a Python developer using PyCharm and excited about Anthropic’s Claude Code (the powerful AI coding assistant that lives in your terminal and integrates with IDEs), you might run into the same frustrating issue I did recently.

I have a Claude Pro subscription, and I was eager to get the full IDE integration working in PyCharm 2025.3.1. Here’s what happened and how I finally fixed it.

My Setup

•  PyCharm version: 2025.3.1.1 (Build #PY-253.29346.308)

•  Claude Code CLI: v2.1.5 (updated to latest)

•  Claude Code PyCharm Plugin: 0.1.14-Beta (installed from JetBrains Marketplace)

•  OS: Windows 11 Pro

The Claude CLI worked perfectly when I typed claude in my regular terminal — it launched, chatted with my codebase, everything fine.

But inside PyCharm:

•  Clicking the Claude icon launched the tool.

•  Running /ide showed “No IDE detected”.

•  Diff viewing, selection context sharing, file references, and other integrations refused to work.

•  PyCharm popped up a notification: “Cannot Launch Claude Code. Please ensure Claude Code is installed and the ‘claude’ command is in your system path.”

I knew the claude command was in my PATH — it worked everywhere else!

What I Tried First (The Usual Suspects)

I followed Anthropic support’s excellent suggestions:

1.  Ran claude update and restarted terminals/IDEs.

2.  Checked PyCharm’s Python Console PATH in Settings → Build, Execution, Deployment → Console → Python Console — it included the Claude bin directory.

3.  Ran /doctor in Claude Code — installation looked healthy.

4.  Updated both PyCharm and the plugin to the absolute latest versions.

Nothing helped. The integration still failed.

I was about to file a detailed bug report using /bug in Claude Code when I decided to try one more thing…

The Unexpected Fix: Firewall Interference

Out of curiosity, I temporarily disabled my firewall completely and relaunched everything in PyCharm.

It worked instantly!

/ide detected PyCharm, diffs opened in the IDE viewer, context from selections flowed seamlessly, and the notification disappeared.

Turns out, the Claude Code plugin and CLI communicate over a local socket/port (likely localhost TCP connection) to enable those fancy IDE features. My firewall was blocking this internal loopback traffic between the plugin and the running Claude process.

Permanent Solution

Instead of leaving the firewall off (not recommended!), I added a targeted exception:

1.  Opened Windows Defender Firewall.

2.  Created a new inbound and outbound rule.

3.  Allowed the claude executable.

•  Program path: Full path to the claude binary.

•  Action: Allow the connection.

•  Profile: All (Domain/Private/Public) or just Private if you’re careful.

4.  Restarted PyCharm and Claude Code.

Boom — full integration unlocked!

Quick Tips for Others Facing This

•  If /ide says no IDE detected → Check firewall first, especially on Windows or strict corporate setups.

•  PATH issues are common, but in my case it was not.

•  The plugin is still in beta, so small quirks happen.

  Always run claude from your project root in the IDE terminal for best context.

•  If you’re on WSL2 + Windows, also check WSL networking/firewall rules — similar localhost blocking can occur.


Monday, 23 June 2025

Western Digital MyCloud EX4100 - Zabbix SNMP Templates

 Here is the template that I created:

zabbix_export:
version: '7.0'
template_groups:
- uuid: 7df96b18c230490a9a0a9e2307226338
name: Templates
templates:
- uuid: b7d37b2b7192436ba04ad17c9559e7a3
template: 'WD EX4100'
name: 'WD EX4100'
groups:
- name: Templates
items:
- uuid: 2d5c9f65eae849179b1b9efea76e1f9b
name: 'System Temperature'
type: SNMP_AGENT
snmp_oid: .1.3.6.1.4.1.5127.1.1.1.6.1.7.0
key: system.temperature
value_type: "UNSIGNED"
delay: 60s
history: 7d
units: °C
preprocessing:
- type: REGEX
parameters:
- 'Centigrade:([0-9]+)'
- '\1'
- type: DISCARD_UNCHANGED
parameters:
- '0'
- type: STR_REPLACE
parameters:
- '\t'
- ''
triggers:
- uuid: 19c0bacd35674e52862428886d9bb8f5
expression: 'last(/WD EX4100/system.temperature) > 35'
name: 'High system temperature (>45°C) on { HOSTNAME}'
priority: WARNING

- uuid: 9caa115d20cb41d3a6d310cf0b3adf91
name: 'Fan Status'
type: SNMP_AGENT
snmp_oid: .1.3.6.1.4.1.5127.1.1.1.6.1.8.0
key: system.fan.status
value_type: "TEXT"
delay: 60s
history: 7d
preprocessing:
- type: REGEX
parameters:
- 'fan0:\s*(\w+)'
- '\1'
- uuid: 846a55194fc84d32b205b364dc1ce503
name: 'Drive 1 Temperature'
type: SNMP_AGENT
snmp_oid: .1.3.6.1.4.1.5127.1.1.1.6.1.10.1.5.1
key: drive.1.temperature
value_type: "UNSIGNED"
delay: 60s
history: 7d
units: °C
preprocessing:
- type: REGEX
parameters:
- 'Centigrade:([0-9]+)'
- '\1'
triggers:
- uuid: d2205e2739f04351979683de3a6b78f2
expression: 'last(/WD EX4100/drive.1.temperature) > 50'
name: 'High Drive 1 temperature (>50°C) on { HOSTNAME}'
priority: WARNING

- uuid: fffcb441f2c84aabb5c546e21b4934ee
name: 'Drive 2 Temperature'
type: SNMP_AGENT
snmp_oid: .1.3.6.1.4.1.5127.1.1.1.6.1.10.1.5.2
key: drive.2.temperature
value_type: "UNSIGNED"
delay: 60s
history: 7d
units: °C
preprocessing:
- type: REGEX
parameters:
- 'Centigrade:([0-9]+)'
- '\1'
triggers:
- uuid: 00353f4339ae4463829e54343fd2b6dc
expression: 'last(/WD EX4100/drive.2.temperature) > 50'
name: 'High Drive 2 temperature (>50°C) on { HOSTNAME}'
priority: WARNING

- uuid: c8bd3b2d4e3c4dd9a8d37291d2e2f34d
name: 'Drive 3 Temperature'
type: SNMP_AGENT
snmp_oid: .1.3.6.1.4.1.5127.1.1.1.6.1.10.1.5.3
key: drive.3.temperature
value_type: "UNSIGNED"
delay: 60s
history: 7d
units: °C
preprocessing:
- type: REGEX
parameters:
- 'Centigrade:([0-9]+)'
- '\1'
triggers:
- uuid: 62412199cdfe47eb9231d67f3d8234f2
expression: 'last(/WD EX4100/drive.3.temperature) > 50'
name: 'High Drive 3 temperature (>50°C) on { HOSTNAME}'
priority: WARNING

- uuid: d4b5a973129e4d68a00dbf1f689be14b
name: 'Drive 4 Temperature'
type: SNMP_AGENT
snmp_oid: .1.3.6.1.4.1.5127.1.1.1.6.1.10.1.5.4
key: drive.4.temperature
value_type: "UNSIGNED"
delay: 60s
history: 7d
units: °C
preprocessing:
- type: REGEX
parameters:
- 'Centigrade:([0-9]+)'
- '\1'
triggers:
- uuid: f52a4ca4e9134c91b5245ab575633668
expression: 'last(/WD EX4100/drive.4.temperature) > 50'
name: 'High Drive 4 temperature (>50°C) on { HOSTNAME}'
priority: WARNING

macros:
- macro: '{$SNMP_COMMUNITY}'
value: public

Sunday, 20 April 2025

SreeMuruganTileWorks.in - Drupal 11 Website

 Creating the official website for Sree Murugan Tile Works was more than just a technical project—it was a very important experience that merged my passion for personal computing with my business needs.

I chose Drupal 11 as the CMS, as I have decades of experience with it. Hosted on AWS EC2 Linux, with MariaDB running in a Docker container. Running Drupal on a container must make sense, but I chose to install it on the system directly to keep it simple. The theme is based on Bootstrap 5, customized using Sass to achieve a clean, mobile-first layout. I structured the site around our core products—roofing tiles, flooring tiles, and wall tiles—adding content types, taxonomies, and views to manage everything flexibly.

One challenge was optimizing performance of images. Seems PNG, though offering transparency, does not help when it comes to image size! Drupal comes with many SEO ready reatures - Clean URLs, sitemaps, meta data etc to made sure our site was crawlable and fast-loading.

It brought together my interests in computing, creativity, and communication. If you're a DIYer or enthusiast, building your own business site is a project worth taking up.

Sree Murugan Tile Works is the manufacturer of terracotta (clay) tiles for flooring, roofing, facade walls and decorative tiles. Gopuram Brand is very popular since 1958! Visit Sree Murugan Tile Works website!

Sunday, 24 November 2024

Screwed by Auto import

 import _tkinter # If this fails your Python may not be configured for Tk 

Got this mysterious error while deploying my frappe app in production. Was wondering why the hell is tkinter coming up, as it has no place on the app code. Then found this even mysterious line in MY code:

from idlelib.browser import file_open

Wondering where it came from, as I never typed it in. The culprit was Auto import feature of the editor in Pycharm. Typing file_o shows an autocomplete menu, and pressing tab / enter to complete using it results in the above import line being added to the top of the file, least where one is able to easily notice. 

I have turned off Auto Import in the IDE now. Did you also face such issue? Drop a comment...

Thursday, 3 October 2024

requirements.txt garbled or looks corrupt? Here is the fix

 When running pip freeze > requirements.txt from PowerShell (which is the default terminal on IDEs like PyCharm),  you might see the output properly in Windows but may not work properly on Linux. This is because the file is encoded as UTF-16LE and not as UTF-8. To do it properly, the following command works:

 pip freeze | Out-File -Encoding utf8 requirements.txt

Tuesday, 13 February 2024

Autodesk Vault Server - Backup to S3

I recently installed Autodesk Vault Basic 2024 Server and Clients. It seems to be an 'OK' piece of software. Not something like git, just basic check out, check-in and versions. Needed a reliable way to backup the data in it. There is a menu option in the GUI to do just that.



But I wanted precise control over things and wanted to upload to AWS S3. So I decided to write a python code that does just that! Vault server has a command line option to do backups too, that could be used: 

Example

Connectivity.ADMSConsole.exe -Obackup -BC:\Backup -VUadministrator -VPadmin -VAL -LC:\Backup\BackupLog.txt

Pls check out my code at https://github.com/smtwkla/pyAutoDeskVaultBackup