RSSAmplifier

Blog

Venish Joe Clarence

Portfolio & technical essays of Venish Joe Clarence, featuring deep dives into high-performance computing, backend systems, and software design.

venishjoe.netRSS feed ↗16 posts

Latest posts

Simulating Asymmetric Partitions with Raft Pre-Vote

A deep-dive into simulating asymmetric network partitions inside a custom Linux namespace sandbox, analyzing etcd Raft state transitions, pre-vote mechanisms, and the disruptive follower failure mode.

Forensic Reconstruction of Black-Box Protocols

A legacy server is dropping connections with no error codes. I walk through the process of using tcpdump, strace, and gdb to reconstruct a custom binary protocol from scratch.

Deterministic SNI Extraction in Constrained Networks

A deep-dive into the failed attempts to force egress via physical NICs using IP aliasing and policy routing, and the subsequent pivot to loopback capture and raw string extraction.

Intercepting Running Linux Processes with ptrace

A guide to intercepting running Linux processes via ptrace, injecting assembly payloads, and restoring execution state without a restart.

Places Visited Heatmap

A Go-based utility that geocodes a plain text list of cities and landmarks into latitude/longitude coordinates using the Google Geo API, assigns visit frequency weightage, and generates JavaScript data for rendering a Google Maps heatmap visualization.

Java Bytecode Manipulation

Statically analyze and programmatically modify compiled .class files without decompilation. Covers a practical example of changing a bytecode equality operator to alter program behavior, along with additional capabilities like method injection and code insertion.

Dynamic Columns in JSP Model with Struts Framework

A design pattern for implementing dynamic, user-configurable column layouts in JSP applications using Apache Struts, leveraging a singleton class to store per-user column preferences in the servlet container's Application Context.

Java String Concatenation and Performance

Performance comparison of Java string concatenation methods — the + operator, String.concat(), StringBuffer.append(), and StringBuilder.append() through benchmarking with Perf4J and bytecode analysis.

Recursive File Tree Traversing in Java

Recursive file tree traversal in Java using NIO.2's FileVisitor and SimpleFileVisitor interfaces, including pattern-based file searching with PathMatcher, symbolic link handling via FileVisitOption, and traversal control through FileVisitResult.

Dynamically Load Compiled Java Class

Dynamically load and execute compiled Java classes from byte array using a custom ClassLoader, without writing physical class files to disk. Highlights use cases like license validation, encrypted class delivery, and secure remote code execution.

Monitor a Directory for Changes using Java

Monitoring a directory for file system changes using Java NIO.2 WatchService API introduced in JDK 7, offering a more efficient alternative to manual polling threads.

Signing Java Objects for Secure Transfer

Use Java's SignedObject with DSA public-key cryptography to digitally sign serialized Java objects before network transfer. The signed objects are verified at the receiving end ensuring data integrity and authenticity without relying on shared secrets.

Recover from Out of Memory Errors in Java

Proactively prevent OutOfMemoryError crashes in Java by using Apache Derby's LowMemory utility class to set memory watermarks, allowing applications to gracefully degrade rather than terminate when heap space is exhausted.

Simple Proxy Server in Java

A Java HTTP proxy server using socket-based request-response forwarding with configurable port binding, timeout handling, and continuous listening loop architecture.

Recover Weblogic Database Password

Recovering encrypted database passwords from WebLogic server configuration files.

Serial Key Generation and Validation in Java

Deterministic serial key generation approach for Java applications. It covers generating 18-character serial keys from user input strings and validating them by regenerating and comparing the expected output.