2025-11-12 04:46:11
🧩 Following the success of flutter_v2ray_client (mobile), I'm excited to introduce the Desktop Edition — a premium Flutter plugin that brings V2Ray, Xray, and Sing-Box VPN/TUN capabilities to Windows, macOS, and Linux.
Ideal for developers and companies building cross-platform VPN or proxy tools.
🔒 2-Year Guarantee — Free updates & maintenance
💬 Priority Support — Fast Telegram support for all premium users
🚀 Advanced Features — Real-time stats, VPN/TUN mode, delay tests⚠️ Need help? Contact @AmirZrDevv or open a GitHub issue. Support replies within 24 hours.
flutter_v2ray_client_desktop lets you run V2Ray/Xray and Sing-Box (VPN/TUN) with a unified Flutter API.
It includes system proxy management, URL parsing, and real-time network stats — all in pure Dart.
| Component | Version |
|---|---|
| Xray Core | 25.10.15 |
| Sing-Box | 1.12.10 |
With each Xray and Sing-Box update, you will receive new updates.
vmess/vless/trojan/ss/socks links to valid Xray configs.proxy, systemProxy, vpn
| Platform | Binary Location | Notes |
|---|---|---|
| Windows | windows/resources/ |
Run app as Administrator for VPN mode |
| macOS | macos/Resources/ |
Requires sudoPassword at runtime for VPN |
| Linux | linux/resources/ |
Requires sudoPassword at runtime for VPN |
⚠️ VPN mode requires admin/root privileges.
dependencies:
flutter:
sdk: flutter
flutter_v2ray_client_desktop:
git:
url: # Replace with the actual path to your local flutter_v2ray_client_desktop directory
# Example (uncomment and modify as needed):
# path: /path/to/your/local/flutter_v2ray_client_desktop
Run flutter pub get.
import 'package:flutter_v2ray_client_desktop/flutter_v2ray_client_desktop.dart';
final client = FlutterV2rayClientDesktop(
logListener: print,
statusListener: print,
);
await client.startV2Ray(
config: jsonConfig,
connectionType: ConnectionType.systemProxy,
);
Stop it:
await client.stopV2Ray();
logListener(String log)
→ Receives raw logs: "[Xray]...", "[sing-box]...".
statusListener(V2rayStatus status)
→ Fires every second:
V2rayStatus(
state: ConnectionState.connected,
duration: 0:02:15,
download: 12456,
upload: 2345,
totalDownload: 3456789,
totalUpload: 456789,
)
V2rayParser)
Convert links into full configs:
final parser = V2rayParser();
await parser.parse('vmess://...');
final fullJson = parser.json();
await client.startV2Ray(
config: fullJson,
connectionType: ConnectionType.systemProxy,
);
Supported protocols:
vmess://,vless://,trojan://,ss://,socks://
| Type | Description |
|---|---|
ConnectionType |
proxy, systemProxy, vpn
|
DelayType |
http, icmp, tcp
|
V2rayStatus |
Tracks speed, totals, duration |
FlutterV2rayClientDesktop |
Main controller |
stopV2Ray() automatically disables the system proxy or stops VPN depending on ConnectionType (see FlutterV2rayClientDesktop.stopV2Ray() in lib/flutter_v2ray_client_desktop.dart).getXrayVersion() and getSingBoxVersion() return core versions.outbound>>>proxy uplink/downlink via Xray API (see _startStatusTimer() implementation).await client.setSystemProxy('socks://127.0.0.1:10808');
await client.setSystemProxy(''); // disable proxy
final delay = await client.getServerDelay(
url: 'vmess://...',
type: DelayType.tcp,
);
print('Delay: ${delay}ms');
I’m Amir Ziari, a full-stack developer passionate about privacy, VPN technologies, and Flutter performance.
I help developers build secure and reliable network apps.
With flutter_v2ray_client_desktop, you can bring V2Ray/Xray & Sing-Box to desktop Flutter apps — with one unified API and cross-platform control.
Build your next-gen VPN or proxy tool with confidence ⚡
2025-11-12 04:34:05
From the first whispered secret you tried to pass in school to the last password you sent over a chat app, you’ve already lived inside the world of cryptography. Sometimes you wanted to hide what you were saying. Sometimes you wanted to avoid attracting attention altogether. Sometimes you needed to prove you were you without giving away anything else. And sometimes you just needed reassurance that what arrived was exactly what was sent. Those familiar, everyday needs are the spine of a field that’s far broader—and more strategic—than most introductions admit.
This guide is a deliberately practical map. It sets a senior-level structure you can carry in your head, shows where the seams between subfields actually live, and gives you a step-by-step way to think about both building and breaking systems. It won’t drown you in folklore or buzzwords. It will give you a small number of frameworks you can reuse, and a minimalist mathematical core you can reason about in your own work.
At its simplest, cryptography is the science of protecting information. Historically, it’s thousands of years old because humans recognized early that some information is valuable precisely because it’s scarce and hidden. Today, it’s a discipline with several intertwined roles:
That wider scope matters. Not every confidentiality mechanism is an encrypting algorithm. Authentication can be achieved with digital signatures; integrity is often enforced with hash functions. And even “hiding” itself comes in two flavors: hiding content (cryptography) and hiding the fact that any communication occurred (steganography). Keeping these roles distinct will save you from category mistakes later.
The four jobs of cryptography: Hide, Limit, Prove, Preserve
A memory-friendly framework:
All four jobs recur across systems. If you can’t point to the specific mechanism doing each job, you either have a gap—or you haven’t understood the design.
How do symmetric and asymmetric systems actually differ?
The intuitive distinction is simple:
Two practical observations follow from this:
You don’t need to memorize a zoo of algorithms to be effective. You do need to recognize which side of the symmetric/asymmetric line a given mechanism lives on—and why it was chosen.
Stream vs block, substitution vs permutation: a compact 2×2
A second mental model that scales well:
Stream vs block:
Substitution vs permutation:
Many robust block designs mix substitution and permutation across rounds. That mixing—replacing and reordering—amplifies confusion and diffusion until local patterns wash out. You can reason about a block construction by explicitly asking: which components substitute, which permute, and how are they combined?
When should you hide the content vs hide the very presence of content?
Cryptography hides what you say. Steganography hides that you’re saying anything at all.
Both can be combined: first encrypt to protect content, then embed the ciphertext so the communication blends into the background.
Steganography in two moves: medium vs data
Steganographic methods cluster into two memorable categories:
Hybrid methods exist and are useful: you can hide a cryptographic message within an innocuous medium. The key is to stay honest about your objective—are you hiding content, presence, or both—and choose techniques accordingly.
Alice and Bob are conventional stand-ins for the communicating parties. They were popularized simply because their initials align with the start of the alphabet: A and B. Over time, they became memes with familiar roles in diagrams.
Eve is the eavesdropper—the adversary trying to listen in. The name “Eve” comes from the English “eavesdropper” and is reserved by convention for the attacker who listens. If you need more parties, you march onward through the alphabet, but you skip E: Eve is taken.
The minimal math you actually need to reason about encryption
A system-level view benefits from the cleanest possible mathematical model. You only need a few pieces.
Everything else—hashes, signatures, key exchange—can be layered around this core. Keep it handy; it clarifies design discussions quickly.
How does a cryptanalyst really start?
Popular stories jump to clever finales. In practice, cryptanalysis starts with disciplined process and a willingness to iterate. Even for “toy” ciphers, the workflow matters.
Two realistic loopbacks:
And one hard constraint: some systems aren’t breakable by design. The one-time pad is the canonical example—its security can be proved mathematically. Recognizing such cases saves time and prevents overpromising.
A step-by-step checklist for attacking a ciphertext (ethically)
Use this as a disciplined template when you face an unknown cryptogram.
Preserve metadata where available (timing, lengths, channel characteristics). Even when content is encrypted, side information helps you hypothesize the system.
Generate and rank hypotheses about the system
Ask: stream or block? Fixed block sizes often leave periodic artifacts; streams often do not.
Ask: substitution, permutation, or a mix? Substitution leaks frequency patterns; pure permutations preserve symbol counts exactly.
Ask: symmetric or asymmetric? If there’s evidence of public distribution or key exchange, asymmetric methods may be at play.
3.Select attack families that match the hypothesis
Finally, maintain a stop condition: if evidence suggests an unbreakable construction (e.g., the one-time pad under proper use), accept it and reframe your objective.
Key management is where systems live or die
Choosing an algorithm is rarely the hard part. Distributing and managing keys safely is. Two big ideas set the stage:
Learn to separate “how we protect content” from “how we agree on and rotate the keys that enable protection.” Many system failures come from muddling these concerns.
Why hash functions matter everywhere
Hash functions are the quiet workhorses across the map:
If your design or analysis ignores hash functions, it’s probably incomplete. Treat them as first-class elements in your system diagrams.
Where blockchain and quantum fit on this map
You don’t need to speculate about far futures to be effective today. Organize your understanding around the primitives already in use and the clear interfaces to adjacent fields.
When protecting personal data means “learning without revealing”
There’s a class of protocols that allow you to obtain information without revealing exactly what you obtained. This “obtaining hidden information” pattern is especially relevant to personal data protection: one party can respond to a query without learning which specific item the other party learned. Treat it as a specialized tool for privacy-preserving access when the mere shape of your request is sensitive.
A minimal taxonomy you can retell tomorrow
If someone asked you for a two-minute summary at a whiteboard, here’s a structure that sticks:
Two outer goals:
Two internal splits:
Two elemental operations:
Four jobs of the system:
Two adjacent bridges:
If you can place a technique in this grid and point to which job it does, you understand it well enough to reason about design and risk.
Practical vignettes: connecting the dots without buzzwords
Notes on culture and clarity
A few conventions reduce friction:
If you’re getting your team up to speed or you’re refreshing your own map:
The field looks sprawling from the outside, but the core is compact. Hide content when that’s enough, hide communication when detection is the risk, prove identities when you need accountability, and preserve integrity everywhere. Underneath, you have a few crisp axes—symmetric vs asymmetric, stream vs block, substitution vs permutation—and a tiny math model that tells you whether your design even makes sense: Dec(Enc(m,k),k)=m.
The craft improves when you keep the map visible. Before you add a new component, ask which job it does in the system. Before you attempt a break, say which family you think you’re facing and why. And before you promise a result, remember that some constructions, like the one-time pad, are provably beyond reach.
If there’s a place to start today, pick one small system and place it in the frameworks above. Name what it hides, how it proves, how it preserves. Then decide whether you need to hide the message—or the fact that you sent one at all.
2025-11-12 04:32:38
Hey folks,
I’ve been building Djowda for the past few years — a large-scale, open, and decentralized ecosystem designed to connect local food chains across the world.
It started with a question:
“If we can decentralize finance, why can’t we decentralize food?”
From that question came a family of Android apps, a global spatial database, and a concept called the Intelligent Cell System — an architecture inspired by neurons, where every cell learns, remembers, and shares.
Over time, Djowda grew into more than code. It became a living idea:
a vision for fair, local, and intelligent food networks that operate without dependency on Big Tech or centralized control.
🚀 What’s Included
I’ve decided to pass the entire project and its identity to someone (or an organization) who truly believes in this mission.
Everything is available for free — not for profit, but for continuity.
Included assets:
🌍 djowda.com domain name
🔗 Social handles @djowda across major platforms
💻 GitHub repositories with full architecture, documentation, and source code
📱 Google Play Console admin (Android app listings)
🧭 The Vision
Djowda’s core idea is simple:
“Empower communities to manage food systems through open, local intelligence.”
Technically, it blends:
Firebase + Room for distributed data handling
MQTT + IPFS for peer-to-peer exchange
Spatial grid mapping for location-based store discovery (no Maps API dependency)
A modular Android ecosystem (Store, Farmer, Factory, Wholesaler, User, etc.)
The entire platform was built to scale from one cell to a global mesh of interconnected food nodes.
👐 The Call
If you’re part of:
an open-source collective,
a university or research lab,
a non-profit working on food systems, or
just an individual developer who wants to make something that matters —
I’d love to transfer Djowda to you.
No money. No strings. Just the hope that it continues to evolve.
The only request is to keep it open, transparent, and aligned with the public good.
This isn’t a sunset post. It’s a hand-off.
The architecture is built, the idea is strong — it just needs a new mind (or many) to carry it forward.
If this resonates with you, reach out.
Let’s make decentralized food systems a reality — together.
2025-11-12 04:26:21
Hi Everyone,
My name is Mark, and I'm new to the group. I work at ConformIQ, where we focus on solving a major source of friction in the CI/CD pipeline: unreliable and high-maintenance automated testing.
I'm joining this community to learn, but I wanted to introduce myself by sharing some value first.
Our CEO, Mark Creamer, recently sat down with Archie Chaudhury (Co-Founder of LayerLens) for a deep-dive podcast series. They cut through the "GenAI hype" and addressed the "95% AI failure rate" that's causing so many flaky tests to break builds.
Here are the episodes:
Ep. 1: The Problem: Common QA challenges that become pipeline bottlenecks, from test maintenance to coverage gaps.
Link: https://lnkd.in/dq5E8xW5
Ep. 2: The Hype: Why reliability is non-negotiable and the risks of "black box" GenAI tools in a build process.
Link: https://lnkd.in/dVTuWsfW
Ep. 3: The Solution: How a verifiable, hybrid strategy (what we call #HyperAI) can turn AI failures into success.
Link: https://lnkd.in/df5cq-Hq
This series explains our philosophy of blending GenAI's speed with the deterministic, logical power of Symbolic AI.
I hope you find it valuable! I'm curious, how is this group thinking about the new wave of GenAI tools and their impact on pipeline reliability?
Looking forward to being part of the community.
2025-11-12 04:25:07
Imagine you’re at your desk, maybe with a little mug of tea, and you open your browser. You type www.google.com, hit Enter, and in what feels like a heartbeat, you’re staring at the Google homepage.
Simple, right?
Here’s the thing: behind that one keystroke lies a chain reaction, a series of machines, protocols, translations, negotiations, all secretly working together so you can see a web page. It’s less magic, more engineering, but still pretty magical when you think about it.
When you typed https://www.google.com, you essentially said:
“Browser, take me to the house called google.com using the secure road (HTTPS).”
Breaking it down:
https:// – tells the browser how to speak to the server (securely).www.google.com – tells it where to go.Once you hit Enter, your browser thinks: “Okay, got the address. Now how do I get there?”
Your browser doesn’t know “google.com” as a house, it knows numbers (IP addresses). So it uses the Domain Name System (DNS) to translate the friendly name into an IP.
Here’s a link diving into how DNS works: What is DNS – Cloudflare
And another good read: How DNS works – freeCodeCamp
Roughly this happens:
With the IP in hand, your browser knocks on the server’s door using TCP (Transmission Control Protocol). It’s a three-way handshake: browser says “hi,” server replies “hi,” browser says “let’s talk.” This establishes reliable communication.
We often gloss over this, but the handshake ensures both sides are ready and synchronised.
Since we used https://, there’s another handshake: the Transport Layer Security (TLS) handshake. This explains:
Once that’s done, your browser and the server can talk securely.
Now we’re ready. Your browser says something like:
“Server at the IP I found, please send me your homepage.”
That’s an HTTP request (Hypertext Transfer Protocol). If you’re curious, check this link: HTTP Requests and Responses: A Beginner’s Guide
And a more canonical source: MDN – HTTP Messages
The request includes:
The server processes your request and sends back an HTTP response. It includes:
Your browser now has a blueprint (the HTML, CSS, JS, images…) and it starts building:
This is where the magic of “appears instantly” happens.
Even after you see the page, work continues:
When you click a link or type another URL, the process essentially repeats — but thanks to caching and persistent connections, parts of it are faster now.
Typing a URL is deceptively simple. Under the hood it triggers a global ballet of protocols, machines, translation services and security layers, so you can get your webpage, often within milliseconds. Next time a page loads with no hiccup, take a moment to appreciate how many invisible actors just did their job.
2025-11-12 04:17:52
I'm building Grimoire, a tool that helps story writers create AI-powered content for games. Writers define quests, locations, and narrative guardrails—then the system generates infinite personalized content for players.
Story data is inherently relational. The connections between characters, locations, and plot points matter more than the nodes themselves. A traditional relational database doesn't capture this well.
Neo4j made sense. I needed to store story graphs and traverse them efficiently. For production, that meant Neo4j Aura with SSL connections.
I'm building Grimoire in Elixir. When I tried the existing Neo4j drivers:
The official driver: Unmaintained, doesn't support modern Neo4j versions
bolt_sips: Couldn't handle Aura's SSL connection requirements (bolt+s:// protocol)
I was stuck.
My first instinct: build a gRPC service as a proxy. Elixir talks to the service, service talks to Neo4j.
I started implementing it, but something felt wrong. I was building a relationship database repository pattern when what I actually needed was graph traversal. I wanted to write Cypher queries and get graph results back—not abstract it away behind an API.
After some research, I discovered Rustler makes it straightforward to build Native Implemented Functions (NIFs) for Elixir. And because it's Rust, I get type safety and memory safety.
I found neo4rs, a well-maintained Rust driver for Neo4j that supports everything I need—including Aura's SSL connections.
The NIF setup was easier than expected. Now I'm working through the neo4rs Row API implementation to properly return query results to Elixir.
Current Status
Working:
✅ Connections to Neo4j (including Aura)
✅ Query execution framework
✅ Comprehensive type conversion for Neo4j types
🚧 Row API implementation for returning actual results
Repo: https://github.com/chwarner-solo/neo4j_nif
I'm building this in public. If you've worked with neo4rs or have experience building Elixir NIFs for database drivers, I'd love your input.
This library will be published to Hex once the Row API is complete—the Elixir ecosystem needs a maintained Neo4j driver.
Tags: #elixir #rust #neo4j #buildinginpublic #nif