Archives
All the articles I've archived.
-
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.
-
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.
-
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.
-
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 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 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.
-
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.
-
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.
-
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.
-
A Java HTTP proxy server using socket-based request-response forwarding with configurable port binding, timeout handling, and continuous listening loop architecture.
-
Recovering encrypted database passwords from WebLogic server configuration files.
-
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.