<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>DevMindscape</title><link>https://devmindscape.com/</link><description>Your tools almost fit how your team works. I build the one that does: internal tools, customer portals and apps. Fixed price, delivered in days or weeks.</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Sun, 27 Sep 2026 15:08:00 +0000</lastBuildDate><atom:link href="https://devmindscape.com/blog/index.xml" rel="self" type="application/rss+xml"/><item><title>A GNOME-Style Terminal That Opens in 35 ms, Without GTK</title><link>https://devmindscape.com/post/foot-adwaita/</link><pubDate>Fri, 25 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://devmindscape.com/post/foot-adwaita/</guid><description>&lt;p>This was my prompt, typos and all:&lt;/p>
&lt;blockquote>
&lt;p>analyze why kgx startup is so slow? I want instant just like old school xterm was. I want to hit super-enter and have my terminal appear instantly, so i can type without breaks. Like Super-Enter L S Enter - and I immediately see ls on the screen&lt;/p></description></item><item><title>DeepSeek V4.1 Flash Is Cheap, If You Do the Thinking</title><link>https://devmindscape.com/post/deepseek-v41-flash-spec/</link><pubDate>Tue, 15 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://devmindscape.com/post/deepseek-v41-flash-spec/</guid><description>&lt;p>DeepSeek V4.1 Flash built the same app as V4 Pro for $0.17 instead of $0.65. But only on the second try. The first time, with the exact prompt V4 Pro got, it cost the same, took almost twice as long, and wrote five times more code.&lt;/p></description></item><item><title>I Built a YouTube Shorts Clipper for $0.65</title><link>https://devmindscape.com/post/shorts-clipper/</link><pubDate>Wed, 02 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://devmindscape.com/post/shorts-clipper/</guid><description>&lt;p>Turning long videos into YouTube Shorts is a real business. You post a long video, and the repurposing starts: a freelancer clips the best moments by hand, or you feed it to a web tool that auto-detects highlights and exports vertical clips with captions. Either way, you pay, and you keep paying.&lt;/p></description></item><item><title>I Gave DeepSeek V4 Pro Vision</title><link>https://devmindscape.com/post/deepseek-vision/</link><pubDate>Mon, 24 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://devmindscape.com/post/deepseek-vision/</guid><description>&lt;p>You may think DeepSeek V4 Pro is not a multimodal model. It only accepts text, no images. I didn&amp;rsquo;t realize that until I watched &lt;a href="https://www.youtube.com/@t3dotgg">Theo&amp;rsquo;s&lt;/a> video ranking DeepSeek V4 Pro near the bottom, purely because it doesn&amp;rsquo;t have vision.&lt;/p></description></item><item><title>I Built a Lightroom Alternative for $0.40 with AI</title><link>https://devmindscape.com/post/lightroom-alternative-ai/</link><pubDate>Fri, 21 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://devmindscape.com/post/lightroom-alternative-ai/</guid><description>&lt;p>I have too many hobbies, and one of them is photography. As an amateur photographer, my needs are boring and specific: import raw images from my camera, pick the ones that don&amp;rsquo;t suck, nudge exposure, contrast, and shadows a bit, then export JPEGs I can share. That&amp;rsquo;s it. Nothing fancy.&lt;/p></description></item><item><title>Why I Created Gritcode — An AI Coding IDE That Costs Pennies, Not Hundreds</title><link>https://devmindscape.com/post/gritcode-intro/</link><pubDate>Tue, 07 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://devmindscape.com/post/gritcode-intro/</guid><description>&lt;p>&lt;img src="images/cover.jpg" alt="Scrabble tiles spelling DeepSeek — AI concept" title="Photo by Markus Winkler on Pexels">&lt;/p>
&lt;p>I was first exposed to AI coding when ChatGPT launched a few years ago. I made a &lt;a href="https://www.youtube.com/shorts/rsFl62We_EY">short&lt;/a> on my channel — ChatGPT building a simple wxWidgets app — and even then it was mind-blowing. A machine writing real C++ GUI code from a plain English description. It felt like a party trick that might someday be useful.&lt;/p></description></item><item><title>Hardware H.264 Decoding on Fedora 43 and 44 — The Fresh-Install Recipe</title><link>https://devmindscape.com/post/fedora-h264-hardware-decoding/</link><pubDate>Tue, 28 Apr 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://devmindscape.com/post/fedora-h264-hardware-decoding/</guid><description>&lt;p>Fedora doesn&amp;rsquo;t ship proprietary codecs — that includes the H.264 / H.265 paths most browsers and video apps reach for first. On a fresh Fedora 43 or 44 install you&amp;rsquo;ll see Firefox falling back to software decode, &lt;code>ffmpeg&lt;/code> refusing to handle MP4s, and &lt;code>vainfo&lt;/code> listing only VP8/VP9/AV1.&lt;/p>
&lt;p>The fix is three commands.&lt;/p></description></item><item><title>Displaying 100K Rows Without Lag: wxListCtrl Virtual Mode</title><link>https://devmindscape.com/post/wxwidgets-virtual-list/</link><pubDate>Sat, 14 Mar 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://devmindscape.com/post/wxwidgets-virtual-list/</guid><description>&lt;p>
Let&amp;#39;s talk about displaying large datasets in wxWidgets. If you&amp;#39;ve ever
tried adding tens of thousands of items to a &lt;code class="verbatim">wxListCtrl&lt;/code>, you know it
can get painfully slow. The control creates an internal object for every
single row, regardless of whether it&amp;#39;s visible on screen.&lt;/p></description></item><item><title>wxWidgets: The Friendly Gateway to Linux Desktop Development</title><link>https://devmindscape.com/post/wxwidgets-gtk-gateway/</link><pubDate>Sun, 08 Feb 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://devmindscape.com/post/wxwidgets-gtk-gateway/</guid><description>&lt;p>
Someone left a &lt;a href="https://www.youtube.com/watch?v=kPB5Y6ef9dw&amp;amp;lc=UgzbHqW5RN7DRvFdv954AaABAg.ASrWIEorvHXASu9k2eS1sg">comment&lt;/a> on one of my wxWidgets videos saying
they&amp;#39;d spent a week trying to figure out GTK and gtkmm, and after
watching the video they got further in a few hours than in that
entire week. This is not uncommon, and it has a lot to do with how
GTK is designed.&lt;/p></description></item><item><title>Writing a Markdown Editor in C++ with wxWidgets and cmark</title><link>https://devmindscape.com/post/wxwidgets-cmark-markdown-editor/</link><pubDate>Fri, 30 May 2025 12:55:24 +0200</pubDate><guid isPermaLink="true">https://devmindscape.com/post/wxwidgets-cmark-markdown-editor/</guid><description>&lt;div class="youtube-embed">
&lt;a class="yt" href="https://www.youtube.com/watch?v=U5U0H0PvvtU" data-yt="U5U0H0PvvtU" data-title="Parse and Render Markdown with C&amp;#43;&amp;#43; (fast)" target="_blank" rel="noopener">
&lt;img src="https://i.ytimg.com/vi/U5U0H0PvvtU/maxresdefault.jpg" alt="Parse and Render Markdown with C&amp;#43;&amp;#43; (fast)" loading="lazy" width="1280" height="720">
&lt;span class="yt-play" aria-hidden="true">&lt;/span>
&lt;span class="sr-only">Play video: Parse and Render Markdown with C&amp;#43;&amp;#43; (fast)&lt;/span>
&lt;/a>
&lt;script type="application/ld+json">{"@context":"https://schema.org","@type":"VideoObject","description":"Build a live Markdown editor in C++ with wxWidgets and cmark. Real-time preview, link handling, and cross-platform support in under 100 lines.","duration":"PT13M13S","embedUrl":"https://www.youtube-nocookie.com/embed/U5U0H0PvvtU","name":"Parse and Render Markdown with C++ (fast)","thumbnailUrl":["https://i.ytimg.com/vi/U5U0H0PvvtU/maxresdefault.jpg","https://i.ytimg.com/vi/U5U0H0PvvtU/hqdefault.jpg"],"uploadDate":"2025-05-26","url":"https://www.youtube.com/watch?v=U5U0H0PvvtU"}&lt;/script>
&lt;/div>
&lt;p>It’s incredible what you can achieve with modern open-source libraries. Take a code editor, for example: imagine writing code in the left pane while instantly seeing the rendered output on the right, with every change reflected in real time. No manual refreshes, no delays—just seamless, live feedback as you work.&lt;/p></description></item><item><title>Introduction to Textures in Modern OpenGL</title><link>https://devmindscape.com/post/opengl-textures-basics/</link><pubDate>Sat, 24 May 2025 00:00:00 +0000</pubDate><guid isPermaLink="true">https://devmindscape.com/post/opengl-textures-basics/</guid><description>&lt;div class="youtube-embed">
&lt;a class="yt" href="https://www.youtube.com/watch?v=bvWQZq0NUv0" data-yt="bvWQZq0NUv0" data-title="Basic OpenGL Textures Explained (easy)" target="_blank" rel="noopener">
&lt;img src="https://i.ytimg.com/vi/bvWQZq0NUv0/maxresdefault.jpg" alt="Basic OpenGL Textures Explained (easy)" loading="lazy" width="1280" height="720">
&lt;span class="yt-play" aria-hidden="true">&lt;/span>
&lt;span class="sr-only">Play video: Basic OpenGL Textures Explained (easy)&lt;/span>
&lt;/a>
&lt;script type="application/ld+json">{"@context":"https://schema.org","@type":"VideoObject","description":"Load and map textures in modern OpenGL with C++. Covers texture coordinates, vertex attributes, shaders, and stb_image setup step by step.","duration":"PT10M1S","embedUrl":"https://www.youtube-nocookie.com/embed/bvWQZq0NUv0","name":"Basic OpenGL Textures Explained (easy)","thumbnailUrl":["https://i.ytimg.com/vi/bvWQZq0NUv0/maxresdefault.jpg","https://i.ytimg.com/vi/bvWQZq0NUv0/hqdefault.jpg"],"uploadDate":"2025-05-06","url":"https://www.youtube.com/watch?v=bvWQZq0NUv0"}&lt;/script>
&lt;/div>
&lt;p>Textures are a fundamental concept in 3D graphics programming, allowing you to apply images to 3D models, making them look more realistic and detailed. In this guide, we will explore the basics of textures in OpenGL, including how to create, bind, and use them in your applications.&lt;/p></description></item><item><title>wxWidgets with CMake FetchContent</title><link>https://devmindscape.com/post/wx-fetchcontent/</link><pubDate>Fri, 02 Feb 2024 00:00:00 +0000</pubDate><guid isPermaLink="true">https://devmindscape.com/post/wx-fetchcontent/</guid><description>&lt;p>FetchContent, introduced in CMake 3.11, simplifies the process of downloading and building dependencies. It is particularly useful for integrating libraries like wxWidgets into your project. This is the modern alternative to the &lt;a href="https://devmindscape.com/posts/wxwidgets-cmake/">ExternalProject superbuild approach&lt;/a> covered in an earlier tutorial.&lt;/p></description></item><item><title>Exploring Apple's Metal Framework: A Beginner's Guide</title><link>https://devmindscape.com/post/metal-intro/</link><pubDate>Sun, 28 Jan 2024 00:00:00 +0000</pubDate><guid isPermaLink="true">https://devmindscape.com/post/metal-intro/</guid><description>&lt;p>Apple&amp;rsquo;s Metal framework has been a game-changer in the world of 3D graphics on iOS and MacOS platforms. Since its introduction in 2014 and the subsequent deprecation of OpenGL, Metal has become the go-to framework for optimized graphics on Apple devices, especially with the advent of Apple Silicon and VisionOS. In this tutorial, we&amp;rsquo;ll dive into the basics of Metal using Swift in Xcode.&lt;/p></description></item><item><title>Grid Sizers in wxWidgets: Basics to Advanced</title><link>https://devmindscape.com/post/wxwidgets-grid-sizers/</link><pubDate>Thu, 18 Jan 2024 00:00:00 +0000</pubDate><guid isPermaLink="true">https://devmindscape.com/post/wxwidgets-grid-sizers/</guid><description>&lt;p>Welcome to our practical exploration of wxWidgets&amp;rsquo; Grid Sizers. Building on our &lt;a href="https://devmindscape.com/posts/wxwidgets-layout-basics">previous tutorial on layout basics&lt;/a>, today we&amp;rsquo;re venturing into the more advanced realms of the simple Grid Sizer and the Flex Grid Sizer. Through concrete examples – a checkerboard pattern and a functional signup form – we&amp;rsquo;ll demonstrate the power and nuances of these layout tools.&lt;/p></description></item><item><title>How to use Built-in Dialogs in wxWidgets</title><link>https://devmindscape.com/post/wxwidgets-built-in-dialogs/</link><pubDate>Fri, 05 May 2023 11:08:00 +0000</pubDate><guid isPermaLink="true">https://devmindscape.com/post/wxwidgets-built-in-dialogs/</guid><description>&lt;p>Where wxWidgets shines as a multi-platform UI library is its consistent native look and feel across different operating systems.&lt;/p>
&lt;p>Dialogs are no exception. The library offers methods and classes to display system-specific dialogs for everyday tasks, like opening a file, choosing a font, etc.&lt;/p></description></item><item><title>GDK Pixbuf error when running a wxWidgets app on Linux</title><link>https://devmindscape.com/post/wxwidgets-gdk-error/</link><pubDate>Wed, 28 Dec 2022 11:08:00 +0000</pubDate><guid isPermaLink="true">https://devmindscape.com/post/wxwidgets-gdk-error/</guid><description>&lt;p>If you encounter an error message saying &amp;ldquo;&lt;em>Could not load a pixbuf from icon theme&lt;/em>&amp;rdquo; on Linux, note that it might be just a VSCode error.&lt;/p>
&lt;p>As explained in my Menus video (the &amp;ldquo;Problems with Icons on Linux&amp;rdquo; chapter), this error may occur when using the default system icons, for example when using submenus and option items in the main menu.&lt;/p></description></item><item><title>Handling Clipboard Operations in wxWidgets Text Controls</title><link>https://devmindscape.com/post/wxwidgets-textctrl-clipboard/</link><pubDate>Thu, 15 Dec 2022 11:08:00 +0000</pubDate><guid isPermaLink="true">https://devmindscape.com/post/wxwidgets-textctrl-clipboard/</guid><description>&lt;p>Handling common clipboard tasks for your text fields is a must-have for any serious application that needs to accept keyboard input from the users. Surprisingly, it&amp;rsquo;s not that easy in wxWidgets, especially considering the differences between platforms (Linux, Mac, and Windows).&lt;/p>
&lt;p>I explain the problem in detail in my Text Fields video (the &amp;ldquo;Clipboard Operations&amp;rdquo; chapter). In the Menus tutorial, I talk about menus in general and constructing the Edit menu with the clipboard commands in particular.&lt;/p></description></item><item><title>Box Sizers in wxWidgets: Layout Fundamentals</title><link>https://devmindscape.com/post/wxwidgets-layout-basics/</link><pubDate>Mon, 05 Dec 2022 10:58:08 +0000</pubDate><guid isPermaLink="true">https://devmindscape.com/post/wxwidgets-layout-basics/</guid><description>&lt;p>Let&amp;rsquo;s talk about layout. It is a fundamental concept in any kind of UI programming, and designing desktop applications with wxWidgets is no different.&lt;/p>
&lt;p>This is a companion post to the video tutorial I created some time ago. Check it out for a more detailed explanation and live demo of various sizers configurations:&lt;/p></description></item><item><title>wxWidgets + CMake: Multiplatform Superbuild</title><link>https://devmindscape.com/post/wxwidgets-cmake/</link><pubDate>Mon, 26 Oct 2020 10:58:08 +0000</pubDate><guid isPermaLink="true">https://devmindscape.com/post/wxwidgets-cmake/</guid><description>&lt;p>In this article I’ll show you how to create a native-looking UI application in C++ and build it on each of the major platforms (Windows, Linux, Mac OS) using a single build script code.&lt;/p>
&lt;p>You can download the full source code of the sample program from github: &lt;a href="https://github.com/lszl84/wx_cmake_template">https://github.com/lszl84/wx_cmake_template&lt;/a> . Also, check the YouTube video below, which describes the process in detail, showing how this works on each of the aforementioned platforms:&lt;/p></description></item></channel></rss>