{ "version": "https://jsonfeed.org/version/1.1", "title": "Vince Varga", "home_page_url": "https://vincevarga.dev/?utm_source=json_feed", "feed_url": "https://vincevarga.dev/index.json", "description": "Hi, I'm Vince Varga, software engineer. Currently building Flutter mobile apps and tinkering with Rust.", "icon": "https://vincevarga.dev/img/open-graph-logo_hu_1978870e36bf97f6.png", "favicon": "https://vincevarga.dev/img/open-graph-logo_hu_1978870e36bf97f6.png", "authors": [ { "name": "Vince Varga", "url": "https://twitter.com/vincevargadev" } ], "language" : "en", "items": [ { "id": "19217e21-7e98-537e-6920-022caf0dcce1", "url": "https://vincevarga.dev/posts/ftextarea/?utm_source=json_feed", "title": "Building ftextarea: A Vanilla Rust + WebAssembly Textarea App", "summary": "I wanted a simple textarea where I could paste links and jot down quick notes. No login, no cloud sync, no fancy formatting — just a textarea that saves to localStorage. Most existing tools are overkill for this use case.\nSo I built ftextarea — and used it as an excuse to learn Rust + WebAssembly without frameworks.\nTry the live app →\nView the source code →\nThe Goal# Build a static web page with:", "date_published": "2026-01-06T00:00:00Z" }, { "id": "5a8b3596-0e1d-5837-290e-aa3ca514a6aa", "url": "https://vincevarga.dev/posts/2026-new-years-resolutions/?utm_source=json_feed", "title": "My 2026 New Year's Resolutions", "summary": "Here\u0026rsquo;s what I\u0026rsquo;m aiming for in 2026: health and fitness, coding, learning, and writing.\nThis list focuses on side projects and learning goals, I\u0026rsquo;m keeping personal and work-related resolutions private.\nEach goal below includes a measurable target, the bigger picture behind it, and why it matters to me.\nI\u0026rsquo;ll update this post throughout the year with progress notes under each goal. Check back to see how it\u0026rsquo;s going.\nHealth \u0026amp; Fitness# Stay in ketosis for 30 days straight# I\u0026rsquo;ve read great things about keto for general health and weight management. I want to experience what ketosis actually feels like and figure out what it takes to get there. The 30-day target forces me to find a sustainable approach: simple recipes that work with a full-time job and a family at home.", "date_published": "2026-01-01T00:00:00Z", "date_modified" : "2026-01-02T00:00:00Z" }, { "id": "2094b4d5-5e95-5aa3-c9e4-c5096554134f", "url": "https://vincevarga.dev/posts/getting-started-with-rust-async/?utm_source=json_feed", "title": "Getting Started with Rust Async", "summary": " ⚠️ PLACEHOLDER CONTENT: This is a fake blog post with dummy content for demonstration purposes only.\nIntroduction# Rust\u0026rsquo;s async/await syntax makes writing asynchronous code feel almost synchronous. Here\u0026rsquo;s a quick look at how it works.\nBasic Example# use tokio::time::{sleep, Duration}; async fn fetch_data(id: u32) -\u0026gt; String { // Simulate network delay sleep(Duration::from_millis(100)).await; format!(\u0026#34;Data for item {}\u0026#34;, id) } #[tokio::main] async fn main() { let result = fetch_data(42).await; println!(\u0026#34;{}\u0026#34;, result); } Spawning Concurrent Tasks# You can run multiple futures concurrently with tokio::join!:", "date_published": "2025-12-28T00:00:00Z" }, { "id": "fbcc0a61-2378-5d13-59c9-dde3d710026e", "url": "https://vincevarga.dev/posts/flutter-state-management-tips/?utm_source=json_feed", "title": "Flutter State Management Tips", "summary": " ⚠️ PLACEHOLDER CONTENT: This is a fake blog post with dummy content for demonstration purposes only.\nThe Problem# Managing state in Flutter can get messy. Here are some patterns that help.\nUsing ValueNotifier# A simple approach for local state:\nclass CounterWidget extends StatefulWidget { const CounterWidget({super.key}); @override State\u0026lt;CounterWidget\u0026gt; createState() =\u0026gt; _CounterWidgetState(); } class _CounterWidgetState extends State\u0026lt;CounterWidget\u0026gt; { final _counter = ValueNotifier\u0026lt;int\u0026gt;(0); @override Widget build(BuildContext context) { return ValueListenableBuilder\u0026lt;int\u0026gt;( valueListenable: _counter, builder: (context, value, child) { return Text(\u0026#39;Count: $value\u0026#39;); }, ); } void increment() =\u0026gt; _counter.value++; } Extension Methods# Dart extension methods can clean up your code:", "date_published": "2025-12-25T00:00:00Z" }, { "id": "46b2a3d3-e3e2-567e-9989-f80be8067234", "url": "https://vincevarga.dev/posts/rust-error-handling-patterns/?utm_source=json_feed", "title": "Rust Error Handling Patterns", "summary": " ⚠️ PLACEHOLDER CONTENT: This is a fake blog post with dummy content for demonstration purposes only.\nThe ? Operator# Rust\u0026rsquo;s ? operator makes error propagation elegant:\nuse std::fs::File; use std::io::{self, Read}; fn read_config() -\u0026gt; io::Result\u0026lt;String\u0026gt; { let mut file = File::open(\u0026#34;config.toml\u0026#34;)?; let mut contents = String::new(); file.read_to_string(\u0026amp;mut contents)?; Ok(contents) } Custom Error Types# Define your own errors with thiserror:\nuse thiserror::Error; #[derive(Error, Debug)] pub enum AppError { #[error(\u0026#34;Configuration file not found\u0026#34;)] ConfigNotFound, #[error(\u0026#34;Invalid data: {0}\u0026#34;)] InvalidData(String), #[error(\u0026#34;IO error: {0}\u0026#34;)] Io(#[from] std::io::Error), } fn load_config() -\u0026gt; Result\u0026lt;Config, AppError\u0026gt; { let data = std::fs::read_to_string(\u0026#34;config.toml\u0026#34;) .map_err(|_| AppError::ConfigNotFound)?; parse_config(\u0026amp;data) .ok_or_else(|| AppError::InvalidData(\u0026#34;malformed TOML\u0026#34;.into())) } The anyhow Crate# For applications (not libraries), anyhow simplifies everything:", "date_published": "2025-12-20T00:00:00Z" } ] }