Recent Posts

An Offline Code Editor

April 05, 2025

Hey everyone,

Sharing another little tool I whipped up: an Offline Code Editor. Think of it as a super-stripped-down VS Code that runs entirely in your browser and works offline.

Sometimes you just need a decent place to quickly view or edit a code snippet or a text file without firing up a full IDE. And crucially, you don’t want to rely on some online tool that might be sending your code off somewhere.

What It Is (and what it can do)

It’s more than just a basic text area:

  • Powered by Monaco: It uses the same editor engine that powers VS Code, so you get a familiar feel.
  • Syntax Highlighting: Supports a bunch of languages out of the box (JavaScript, Python, HTML, CSS, Java, C#, C++, SQL, YAML, JSON, Markdown, and more!).
  • Language Auto-Detection: Tries to figure out the language from the file extension or even the content itself.
  • Works Offline: Once the page loads, it’s good to go, no internet needed.
  • Themes: Comes with Dark (default), Light, and High Contrast themes.
  • Basic Formatting: Can auto-format code (Alt+Shift+F or on paste) for several languages.
  • Editor Goodies: Includes line numbers, code folding, bracket matching, find/replace, auto-indent, and more.

Why It’s Useful

  • Privacy First: Your files stay on your machine. It even actively blocks network requests to be extra sure.
  • Simplicity: While powerful under the hood, the interface is clean and focused.
  • Offline Access: Perfect for quick edits on the go, even without Wi-Fi.
  • Speed: Loads fast, ready when you need it.
  • Familiar Feel: If you use VS Code, you’ll feel somewhat at home.

How It Works

Built with just HTML, CSS, and JavaScript, using the Monaco Editor library. No server-side stuff involved.

  1. Go to https://static.sanjaysingh.net/editor/
  2. Open a text or code file onto the page, or Just paste, or start writing.
  3. When code is pasted, editor will try to detect the language.
  4. Make your edits using the familiar editor features.
  5. Hit Ctrl+S (or Cmd+S on Mac) to download the edited content as a new file.

Check It Out

Give it a try here: https://static.sanjaysingh.net/editor/

The source code, if you’re curious, is on GitHub.

Hash Generator: A Simple Browser Tool That Actually Respects Your Privacy

April 04, 2025

Hey folks! I just wrapped up another little weekend project - a browser-based Hash Generator. It’s super lightweight and lets you generate all sorts of cryptographic hashes right in your browser. No servers, no fuss.

Why I Built This

Look, there are probably a million hash generators out there, but most of them make me a bit uneasy.

  • Keeps everything in your browser (your data never leaves your device)
  • Has a clean interface without all the clutter
  • Supports the hash algorithms you’d actually use
  • Shows results as you type

What It Does

Nothing fancy, just the essentials:

  1. Multiple hash types - MD5, SHA-1, SHA-256, and more
  2. Real-time hashing - See results instantly as you type
  3. One-click copy - Grab that hash with a single click
  4. Works on phones - Because who’s not on their phone these days?
  5. Completely private - Your data stays with you

How to Use It

Super simple:

  1. Head over to https://static.sanjaysingh.net/hash/
  2. Pick your hash algorithm
  3. Type or paste your text
  4. Boom - there’s your hash
  5. Hit copy if you need it on your clipboard

Privacy (Yes, Actually)

  • Nothing gets stored - Everything happens in your browser’s memory
  • No sneaky network calls - The page loads and that’s it
  • Code is open - Check GitHub if you don’t believe me

Give It a Try

Feel free to check it out: https://static.sanjaysingh.net/hash/

Code’s on GitHub if you want to peek under the hood.

Other Stuff I’ve Made

If you like this, I’ve built a few other browser tools:

Browser-Based Bitcoin Test Wallet

April 01, 2025

Hey everyone! I wanted to share a fun little project I’ve been tinkering with lately – a completely browser-based Bitcoin wallet that doesn’t need any servers to run. It’s perfect for testing and learning about Bitcoin.

Why I Built This

  1. Runs right in your browser – no downloads needed
  2. Keeps your test keys private and never sends them anywhere
  3. Lets you connect to any Bitcoin API you trust
  4. Looks decent enough that it’s not painful to use
  5. Is totally open for anyone to inspect or improve

So that’s exactly what I did! This is definitely NOT meant for your life savings (seriously, please don’t use it for that), but it’s perfect for playing around with small amounts or just learning how Bitcoin transactions work.

What Can This Little Wallet Do?

Your Keys Stay With You

The coolest part about this wallet:

  • Nothing gets saved to a server – your keys never leave your browser
  • You choose your Bitcoin API – don’t trust mine? Use your own!
  • No tracking or analytics – I don’t want to know what you’re testing

All the Basic Stuff You Need

For a test wallet, it does all the essential things:

  1. Create or Import Test Wallets
    • Hit a button, get a fresh wallet
    • Already have a WIF key you want to test? Just paste it in
    • Peek at your private key when needed, or keep it hidden
  2. Send Some Test Bitcoin
    • Send to any address (great for testing your other wallets)
    • Play with different fee settings to see how they work
    • See your test transaction status and follow it on a block explorer
  3. Receive Bitcoin
    • Show someone your wallet address to receive funds
    • Scan the QR code with another wallet to test sending
    • Easy copy button for sharing your address
  4. Check Your Balance
    • See your balance update in real-time
    • Hit refresh when you’re impatient (we’ve all been there!)

Switch Networks Easily

One thing I really wanted was flexibility:

  • Flip between testnet (for free test coins) and mainnet
  • Use Blockstream’s API by default, or plug in your own
  • Try different APIs to see how they perform

Keeping It Safe-ish

Even though it’s for testing, I added some basic safety features:

  • Private keys are hidden by default (no accidental shoulder-surfing)
  • Everything stays in your current browser session
  • No server to get hacked (because there isn’t one!)

Take It For a Spin!

Want to try it out? Head over to: https://static.sanjaysingh.net/btcwallet/

If you’re curious about how I built it or want to improve it, the code is on GitHub: https://github.com/sanjaysingh/staticsites/tree/master/btcwallet

Final Thoughts

It’s meant for learning and experimenting, not safeguarding your crypto fortune.

If you try it out, let me know what you think! Found a bug? Have a feature request? The GitHub repo is open for issues and pull requests - or just drop me a comment below.

Happy testing! 🚀

Simple QR Code Generator: A Lightweight, Browser-Based Tool

March 07, 2025

Today, I’m sharing a simple yet effective tool I’ve developed: a browser-based QR Code Generator. In an era where QR codes have become ubiquitous, having a quick, reliable, and privacy-focused way to generate them is essential.

Why Another QR Code Generator?

While there are numerous QR code generators available online, I wanted to create one that is:

  • Completely client-side with no server dependencies
  • Privacy-focused (no data collection or tracking)
  • Lightning fast and responsive
  • Simple and straightforward to use
  • Free from ads and distractions

Features

The tool offers essential QR code generation capabilities:

  1. Text/URL Input: Generate QR codes for any text or URL
  2. Customizable Size: Adjust the QR code size to your needs
  3. Instant Generation: See QR codes generated in real-time
  4. Download Option: Save generated QR codes as PNG images
  5. Mobile Friendly: Works perfectly on both desktop and mobile devices

How to Use

The interface is intentionally minimalist:

  1. Visit https://static.sanjaysingh.net/qrcode/
  2. Enter your text or URL in the input field
  3. Adjust the size if needed (default size works for most cases)
  4. Click “Generate QR Code”
  5. Use “Download QR Code” to save the image

Technical Implementation

The tool is built with simplicity and performance in mind:

// Core technologies used:
- Pure HTML5 and JavaScript
- QRCode.js library for QR generation
- CSS for minimal, clean styling

Key technical features:

  • No external dependencies beyond the QR code library
  • Completely static deployment
  • No backend required
  • Cross-browser compatible
  • Mobile-responsive design

Privacy and Security

Privacy was a key consideration in the design:

  • No Data Storage: All QR code generation happens in your browser
  • No Analytics: No tracking or usage monitoring
  • No External Calls: Besides loading the page, no network requests are made
  • Open Source: Code is available on GitHub for review

Use Cases

This tool is perfect for:

  1. Business Users:
    • Creating QR codes for business cards
    • Adding QR codes to marketing materials
    • Generating quick links for presentations
  2. Personal Use:
    • Sharing Wi-Fi credentials
    • Creating quick links to social profiles
    • Generating contact information QR codes
  3. Developers:
    • Quick testing of QR code implementations
    • Generating QR codes for documentation
    • Creating QR codes for app testing

Benefits

  1. Speed and Efficiency:
    • Instant QR code generation
    • No page reloads needed
    • Quick download option
  2. Accessibility:
    • Works on any device with a browser
    • No installation required
    • Simple, intuitive interface
  3. Privacy:
    • No data collection
    • No account needed
    • No cookies or tracking

Future Enhancements

While keeping the tool simple, I’m considering adding:

  • Color customization options
  • Error correction level selection
  • SVG export format
  • QR code scanning capability
  • Batch generation feature

Try It Out

You can access the QR Code Generator at: https://static.sanjaysingh.net/qrcode/

The source code is available on GitHub

Contributing

As with all my tools, this QR code generator is open source. Feel free to:

  • Report issues
  • Suggest improvements
  • Submit pull requests
  • Share your use cases

Browser-Based Ethereum Wallet for Testing

March 05, 2025

I’ve developed: a browser-based Ethereum wallet specifically designed for testing purposes. While there are many Ethereum wallets available, I created this one with a specific focus on ease of access by making it accessible directly from the browser.

Why Another Ethereum Wallet?

During blockchain development and testing, I often found myself needing a lightweight wallet that:

  • Works directly in the browser without installation
  • Supports multiple networks (including testnets)
  • Doesn’t store any sensitive data
  • No server side and connects directly with RPC that you specify
  • Is completely transparent in its operations

Security-First Design

The wallet is built with several security principles in mind:

  1. No Server-Side Storage: All wallet operations happen entirely in your browser
  2. No External Dependencies: The wallet runs as a static site with minimal dependencies
  3. Transparent Code: The entire source code is available on GitHub
  4. Ephemeral Storage: Keys are never saved between sessions

Key Features

The wallet includes essential features needed for testing:

  • Custom RPC Endpoint Support: Connect to any Ethereum-compatible network
  • Seed Phrase/Private Key Import: Easily import test accounts
  • New Wallet Generation: Generate fresh wallets for testing
  • Native Token Support: Send and receive network native tokens
  • ERC20 Token Support: Interact with token contracts
  • Gas Estimation: Built-in gas cost estimation with safety buffer
  • Balance Checking: Real-time balance updates

How to Use

  1. Visit https://static.sanjaysingh.net/ethwallet/
  2. Enter your RPC endpoint
  3. Either:
    • Generate a new wallet for testing
    • Import an existing wallet using seed phrase or private key
  4. Start interacting with the blockchain

Important Security Notes

While the wallet is designed with security in mind, please note:

⚠️ This is a TESTING tool only. Do not use it with real funds.

  • Always use test accounts and test networks
  • Never enter production private keys or seed phrases
  • The wallet is intended for development and testing purposes only

Use Cases

This wallet is particularly useful for:

  1. Developers:
    • Testing smart contracts
    • Debugging transactions
    • Quick network interactions
  2. QA Teams:
    • Validating blockchain applications
    • Testing different network configurations
    • Verifying transaction flows
  3. Learning:
    • Understanding wallet operations
    • Exploring blockchain interactions
    • Studying Web3 development

Try It Out

You can access the wallet at https://static.sanjaysingh.net/ethwallet/

The source code is available on GitHub

Feedback Welcome

As this is a tool for the developer community, I welcome:

  • Bug reports
  • Feature suggestions
  • Security improvement ideas
  • General feedback

Feel free to open issues or submit pull requests on GitHub.

Remember: This is a testing tool. Always use appropriate security measures when dealing with real cryptocurrency transactions.

AAD JWT Token Generator: A Web-Based Azure AD Token Generation Tool

March 05, 2025

I’m excited to share a new tool I’ve developed called AAD JWT Token Generator, a web-based application designed to simplify the process of generating JWT tokens from Azure AD. Whether you’re a developer testing Azure AD-protected APIs or an administrator verifying token claims, this tool makes the token generation process straightforward and efficient.

Why I Built This Tool

Working with Azure AD-protected services often requires generating and testing JWT tokens. While there are various ways to obtain these tokens, I found myself wanting a more streamlined solution that could:

  1. Provide a clean, modern web interface
  2. Support both GUI and command-line usage
  3. Be easily deployable anywhere
  4. Work without storing sensitive credentials

Key Features

The AAD JWT Token Generator comes with several powerful features:

  • Modern Web Interface: Built with Vue.js and styled with Tailwind CSS for a clean, professional look
  • Flexible Token Generation: Customize your tokens with various parameters
  • Headless Mode: Generate tokens via command line without launching the web interface
  • Docker Support: Easy deployment using containers
  • Single Binary: All frontend assets are embedded for simple distribution

How to Use It

Web Interface

The web interface is the easiest way to get started. Simply:

  1. Run the application (either directly or via Docker)
  2. Navigate to http://localhost:5555
  3. Enter your Azure AD credentials:
    • Client ID
    • Tenant ID
    • Client Secret
    • Scope (optional)
  4. Click “Generate Token”

Command Line

For automation scenarios, use the headless mode:

aad-jwt-gen -headless \
  -clientId="your_client_id" \
  -tenantId="your_tenant_id" \
  -clientSecret="your_client_secret" \
  -scope="your_scope"

Docker Deployment

If you prefer using Docker:

docker pull sanjaysingh/aad-jwt-gen
docker run -p 5555:5555 sanjaysingh/aad-jwt-gen

Technical Details

The tool is built with:

  • Backend: Go 1.21.0+
  • Frontend: Vue.js with Tailwind CSS
  • Containerization: Docker
  • Architecture: Client-server with embedded static files

Getting Started

Installation

Choose your preferred installation method:

Using Go:

go install github.com/sanjaysingh/aad-jwt-gen@latest

Using Docker:

docker pull sanjaysingh/aad-jwt-gen

Security Considerations

The tool is designed with security in mind:

  • No credential storage
  • All processing happens locally
  • Direct communication with Azure AD
  • No logging of sensitive information

Contributing

The project is open source and contributions are welcome! Feel free to:

  • Report issues
  • Suggest features
  • Submit pull requests
  • Share your use cases

You can find the project on GitHub.

Conclusion

The AAD JWT Token Generator aims to simplify Azure AD token generation for developers and administrators. Whether you’re testing APIs, debugging token issues, or automating authentication workflows, I hope this tool makes your work easier.

Try it out and let me know what you think! Your feedback will help shape future improvements.

Migrating from Blogger to Jekyll/Github Pages

March 03, 2025

I recently migrated my blog from Blogger to Github Pages. I’ve created a Docker-based migration tool that makes this process seamless and efficient. Let me introduce you to the Blogger to Jekyll Migration Tool. Note that Jekyll is used by Github Pages so once you have migrated to Jekyll, you can commit that to a repo and Github Pages will serve that just like a Jekyll server.

Why Migrate from Blogger to Jekyll?

Blogger has been a reliable platform for many years, but static site generators like Jekyll offer several advantages. Github pages also allows to own the contents and you have full control over the blogs you publish.

  • Better performance and faster load times
  • More control over your site’s design and functionality
  • No dependency on Google’s services
  • Free hosting options like GitHub Pages
  • Better SEO capabilities
  • Modern development workflow

Features of the Migration Tool

The tool I’ve developed handles the entire migration process automatically:

  • Converts Blogger posts to Jekyll format
  • Downloads and localizes all images from your posts
  • Organizes content by year and month
  • Preserves post metadata and categories
  • Converts HTML content to clean Markdown
  • Sets up a modern, responsive theme (Minimal Mistakes)

How It Works

The migration process is containerized using Docker, ensuring a consistent environment across different operating systems. Here’s what happens under the hood:

  1. The tool processes your Blogger XML export
  2. Downloads and optimizes all images
  3. Converts HTML content to Markdown
  4. Organizes posts chronologically
  5. Sets up a complete Jekyll site structure

Getting Started

The migration process is straightforward:

# 1. Place your Blogger XML export in the project directory
# 2. Run the migration
docker-compose up

# 3. Your new Jekyll site will be ready in the migrated-blog-server directory and you can run it from there.

cd migrated-blog-server
bundle exec jekyll serve

Customization Options

After migration, you can easily customize your new Jekyll site:

  • Modify the _config.yml file for site-wide settings
  • Customize the Minimal Mistakes theme
  • Add your own CSS and JavaScript
  • Configure SEO settings
  • Set up analytics

Try It Out

The project is open source and available on GitHub. You can use the included sample blog XML to test the migration process before using it with your own blog.

AspNet Core: Appsettings from environment variables gotcha

July 04, 2017

Changes to environment variables are not refreshed until you restart the Visual Studio. This can be frustrating if you make some change and expect it to reflect in the application.

This is not new to AspNet core but rather a generic Visual Studio (or any Windows Process for that matter) behavior but it is more visible in the AspNet core because Environment Variables configuration is initialized by default and it is easy to forget the gotcha of restarting. Re-running the application does not help.