<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-717820506911776525</id><updated>2026-10-29T09:39:14.972-05:00</updated><category term="Ubuntu"/><category term="Linux"/><category term="Windows Tips and Tricks"/><category term="Debian"/><category term="VirtualBox"/><category term="Fedora"/><category term="PowerShell"/><category term="Programming"/><category term="QNX"/><category term="Windows"/><category term="CPP"/><category term="Python"/><category term="Free Software"/><category term="Windows 10"/><category term="Eclipse"/><category term="Test Partner"/><category term="VBA"/><category term="Visual Studio"/><category term="Windows Programming Tips and Tricks"/><category term="Android"/><category term="BlackBerry"/><category term="Lubuntu"/><category term="Mint"/><category term="Assembly"/><category term="Kali"/><category term="Zig"/><category term="vmware"/><category term="Computers"/><category term="SQL Server"/><category term="Test Automation"/><category term="CentOS"/><category term="FreeBSD"/><category term="Hyper-V"/><category term="Linux Mint"/><category term="Lisp"/><category term="Qt"/><category term="Winget"/><category term="monodevelop"/><category term="openSUSE"/><category term="Cygwin"/><category term="Emacs"/><category term="LXDE"/><category term="STAF"/><category term="TFS"/><category term="Windows 8.1"/><category term="C#"/><category term="Docker"/><category term="DotNet"/><category term="EeePC 900"/><category term="IronPython"/><category term="NotepadPlusPlus"/><category term="OPCUA"/><category term="VIM"/><category term="WMIC"/><category term="Console"/><category term="Dell"/><category term="Delphi"/><category term="Editor"/><category term="GNOME"/><category term="Handspring Visor"/><category term="Kubuntu"/><category term="Mono"/><category term="PCLinuxOS"/><category term="Rust"/><category term="SBCL"/><category term="VNC"/><category term="WSL2"/><category term="Web Programming"/><category term="Windows 8"/><category term="XFCE"/><category term="Free Pascal"/><category term="Free Software Reviews"/><category term="Gentoo"/><category term="Internet"/><category term="Internet Explorer"/><category term="Jython"/><category term="KDE"/><category term="Language"/><category term="Lazarus"/><category term="MTM"/><category term="Mandriva"/><category term="OPC"/><category term="OS X"/><category term="Palm OS Programming"/><category term="PyCharm"/><category term="QEMU"/><category term="RaspberryPi"/><category term="RealVNC"/><category term="SCVMM"/><category term="Samba"/><category term="SourceForge"/><category term="Squeak"/><category term="Terminal"/><category term="Xubuntu"/><category term="Active Directory"/><category term="COM"/><category term="DCOM"/><category term="ESXi"/><category term="InstallScript"/><category term="Kubernetes"/><category term="Lua"/><category term="MFC"/><category term="Microsoft Office"/><category term="Mobile Technology"/><category term="Momentics"/><category term="MongoDB"/><category term="Pascal"/><category term="Pop!OS"/><category term="Prolog"/><category term="Puppeee"/><category term="Rational Robot"/><category term="SharpDevelop"/><category term="SikuliX"/><category term="Solaris"/><category term="Symatec"/><category term="USB/IP"/><category term="VSCode"/><category term="Windows 11"/><category term="iPad"/><category term="macOS"/><category term="pfSense"/><category term="pywinauto"/><category term="svn"/><category term="tmux"/><title type='text'>8thString</title><subtitle type='html'>String of thoughts on science, technology and programming</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://8thstring.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/717820506911776525/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://8thstring.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/717820506911776525/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>AreWeGoodEnough</name><uri>http://www.blogger.com/profile/18373533894920064081</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>744</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-717820506911776525.post-4051032031978697647</id><published>2026-07-04T10:57:55.125-05:00</published><updated>2026-07-04T10:57:55.153-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="CPP"/><category scheme="http://www.blogger.com/atom/ns#" term="QNX"/><category scheme="http://www.blogger.com/atom/ns#" term="Qt"/><title type='text'>CPP Quick Guide</title><content type='html'>&lt;b&gt;Basics&lt;/b&gt;&lt;br /&gt;
&lt;a href=&quot;https://8thstring.blogspot.com/2020/01/cpp-hello-world.html&quot;&gt;Hello world&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://8thstring.blogspot.com/2020/03/cpp-basic-usage-of-stdcin-for-getting.html&quot;&gt;User input&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://8thstring.blogspot.com/2020/01/cpp-while-loop.html&quot;&gt;While loop&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://8thstring.blogspot.com/2020/01/cpp-if-statement.html&quot;&gt;If statement&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://8thstring.blogspot.com/2020/01/cpp-for-loop.html&quot;&gt;For loop&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://8thstring.blogspot.com/2020/01/cpp-switch-statement.html&quot;&gt;Switch statement&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://8thstring.blogspot.com/2020/01/cpp-read-file-using-ifstream.html&quot;&gt;Read file using ifstream&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://8thstring.blogspot.com/2020/01/cpp-write-to-file-using-ofstream.html&quot;&gt;Write to a file using ofstream&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Containers&lt;/b&gt;&lt;br /&gt;
&lt;a href=&quot;https://8thstring.blogspot.com/2020/02/cpp-using-stdlist.html&quot;&gt;Basic usage of std::list&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://8thstring.blogspot.com/2020/02/cpp-basic-usage-of-stdmap.html&quot;&gt;Basic usage of std::map&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://8thstring.blogspot.com/2020/02/cpp-basic-usage-of-stdvector.html&quot;&gt;Basic usage of std::vector&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://8thstring.blogspot.com/2020/02/cpp-simple-data-type-conversion.html&quot;&gt;Data type conversion&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Concurrency&lt;/b&gt;&lt;br /&gt;
&lt;a href=&quot;https://8thstring.blogspot.com/2026/07/cpp-hello-world-using-thread.html&quot;&gt;Hello world in thread&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Windows API with Exmaples&lt;/b&gt;&lt;br /&gt;
&lt;a href=&quot;https://8thstring.blogspot.com/2022/07/cpp-windows-deviceiocontrol.html&quot;&gt;DeviceIoControl&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://8thstring.blogspot.com/2022/08/cpp-windows-findfirstvolumew.html&quot;&gt;FindFirstVolumeW&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://8thstring.blogspot.com/2022/08/cpp-windows-getdiskfreespaceexw.html&quot;&gt;GetDiskFreeSpaceExW&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://8thstring.blogspot.com/2022/07/cpp-windows-get-logical-drives.html&quot;&gt;GetLogicalDrives&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://8thstring.blogspot.com/2022/07/cpp-windows-getlogicaldrivestrings.html&quot;&gt;GetLogicalDriveStrings&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;C++/WinRT&lt;/b&gt;&lt;br/&gt;
&lt;a href=&quot;https://8thstring.blogspot.com/2023/01/cwinrt-hello-world.html&quot;&gt;C++/WinRT Hello World&lt;/a&gt;&lt;br/&gt;
&lt;br/&gt;
&lt;b&gt;QNX&lt;/b&gt;&lt;br/&gt;
&lt;a href=&quot;https://8thstring.blogspot.com/2025/09/qnx-running-function-at-specific.html&quot;&gt;Using timer interrupt&lt;/a&gt;&lt;br/&gt;
&lt;br/&gt;
&lt;b&gt;Qt Cross-platform&lt;/b&gt;&lt;br/&gt;
&lt;a href=&quot;https://8thstring.blogspot.com/2022/12/installing-qt-creator-901-on-windows-10.html&quot;&gt;Installing Qt Creator 9.0.1 on Windows 10&lt;/a&gt; &lt;br/&gt;
&lt;a href=&quot;https://8thstring.blogspot.com/2022/12/qt-console-hello-world.html&quot;&gt;Qt console hello world&lt;/a&gt;&lt;br/&gt;
&lt;a href=&quot;https://8thstring.blogspot.com/2022/12/qt-widget-hello-world.html&quot;&gt;Qt Widget hello world&lt;/a&gt;&lt;br/&gt;
&lt;a href=&quot;https://8thstring.blogspot.com/2022/12/qt-widget-hello-world-code-only.html&quot;&gt;Qt Widget hello world code only&lt;/a&gt;&lt;br/&gt;
&lt;br /&gt;&lt;br /&gt;
Keywords: C++, Qt, Programming, Tutorial&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://8thstring.blogspot.com/feeds/4051032031978697647/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/717820506911776525/4051032031978697647' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/717820506911776525/posts/default/4051032031978697647'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/717820506911776525/posts/default/4051032031978697647'/><link rel='alternate' type='text/html' href='http://8thstring.blogspot.com/2020/01/cpp-quick-guides.html' title='CPP Quick Guide'/><author><name>Techno Scavenger</name><uri>http://www.blogger.com/profile/17927601050941548819</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-717820506911776525.post-1555146643662684124</id><published>2026-07-04T10:55:54.679-05:00</published><updated>2026-07-04T10:55:54.679-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="CPP"/><title type='text'>CPP: Hello world using thread</title><content type='html'>Copy and save code below as hellothread.cpp&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/technoscavenger/cec8a7e47b499bd66295999de0891039.js&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
To build:&lt;br /&gt;
&lt;div class=&quot;code&quot; style=&quot;background-color: #ffffee; border: 1px solid rgb(153, 102, 0); padding: 0.5em;&quot;&gt;
&lt;pre style=&quot;display: inline; font-family: monospace; font-size: 100%; margin: 0px; white-space: pre-wrap;&quot;&gt;$: clang++ hellothread.cpp
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
Run it:&lt;br /&gt;
&lt;div class=&quot;code&quot; style=&quot;background-color: #ffffee; border: 1px solid rgb(153, 102, 0); padding: 0.5em;&quot;&gt;
&lt;pre style=&quot;display: inline; font-family: monospace; font-size: 100%; margin: 0px; white-space: pre-wrap;&quot;&gt;$: ./a.out
&lt;/pre&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://8thstring.blogspot.com/feeds/1555146643662684124/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/717820506911776525/1555146643662684124' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/717820506911776525/posts/default/1555146643662684124'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/717820506911776525/posts/default/1555146643662684124'/><link rel='alternate' type='text/html' href='http://8thstring.blogspot.com/2026/07/cpp-hello-world-using-thread.html' title='CPP: Hello world using thread'/><author><name>Techno Scavenger</name><uri>http://www.blogger.com/profile/17927601050941548819</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-717820506911776525.post-8695113251301252926</id><published>2026-07-01T13:34:57.528-05:00</published><updated>2026-07-01T13:34:57.553-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="QNX"/><title type='text'>QNX 7.1 error booting up a VM - &quot;ldd:FATAL: Failed to load lazyload dependency. Unresolved symbol: _ITM_registerTMCloneTable&quot;</title><content type='html'>&lt;H1&gt;QNX 7.1 error booting up a VM - &quot;ldd:FATAL: Failed to load lazyload dependency. Unresolved symbol: _ITM_registerTMCloneTable&quot;&lt;/H1&gt;
I recently created a QNX 7.1 VM target on Windows 10 (verified on both VMware Workstation Pro 14.1.8 and VirtualBox 7.1.6) but it would not properly boot up. The console shows &lt;b&gt;ldd:FATAL: Failed to load lazyload dependency. Unresolved symbol: _ITM_registerTMCloneTable&lt;/b&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiNwbBgIXJoUq08WR3vmjY_J7SE_4oqNjhbulxHiiNhKRRqpxqaMX-nAwLFws3rZvop_ng3fLxmU1vmTYIOwSdJ5pX7ighFAMbGkV4dghWbFlgG2cXMZEFsxZzp5GEb9dmZJLrnHrxEa_T3sbPXxCdLx4wewGXro4ioK4K5Vgs-hzzdoGYph-AoAVuG_0/s1600/2025-03-26%2021_55_06-Window.png&quot; style=&quot;display: block; padding: 1em 0; text-align: left; &quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; data-original-height=&quot;288&quot; data-original-width=&quot;752&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiNwbBgIXJoUq08WR3vmjY_J7SE_4oqNjhbulxHiiNhKRRqpxqaMX-nAwLFws3rZvop_ng3fLxmU1vmTYIOwSdJ5pX7ighFAMbGkV4dghWbFlgG2cXMZEFsxZzp5GEb9dmZJLrnHrxEa_T3sbPXxCdLx4wewGXro4ioK4K5Vgs-hzzdoGYph-AoAVuG_0/s1600/2025-03-26%2021_55_06-Window.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;
To fix this issue, add the following to &quot;C:\Users\username\ide-7.1-workspace\vm10\local\snippets\system_files.custom&quot;, you have to change the path that aligns with how your system is setup.
&lt;div class=&quot;code&quot; style=&quot;background-color: #fff; border: 1px solid rgb(185,185,185); border-radius: 1px; border-top-color: rgb(160,160,160); padding: 0.5em&quot;&gt;
&lt;pre style=&quot;font-family: monospace; font-size: 100%; margin: 0px; display:inline;  white-space: pre-wrap;&quot;&gt;
# local/snippets/system_files.custom
# Placeholder for local list of files to add to system partition
lib/libpci.so.2.3=lib/libpci.so.2.3
lib/libpci.so.3.0=lib/libpci.so.3.0
&lt;/pre&gt;
&lt;/div&gt;
Then rebuild the VM, like:
&lt;div class=&quot;code&quot; style=&quot;background-color: #ffffee; border: 1px solid rgb(153, 102, 0); padding: 0.5em;&quot;&gt;
&lt;pre style=&quot;display: inline; font-family: monospace; font-size: 100%; margin: 0px; white-space: pre-wrap;&quot;&gt;
C:\Users\username\ide-7.1-workspace\vm10&gt;C:\qnx710\host\win64\x86_64\usr\bin\bash C:/qnx710/host/common/bin/mkqnximage --build --run
&lt;/pre&gt;
&lt;/div&gt;
That&#39;s one very long line.&lt;br/&gt;
Where:&lt;br/&gt;
- You have to be in the directory where the VM files are located, in my case it is in C:\Users\username\ide-7.1-workspace\vm10 &lt;br/&gt;
- Do a build and then run the vm&lt;br/&gt;
</content><link rel='replies' type='application/atom+xml' href='http://8thstring.blogspot.com/feeds/8695113251301252926/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/717820506911776525/8695113251301252926' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/717820506911776525/posts/default/8695113251301252926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/717820506911776525/posts/default/8695113251301252926'/><link rel='alternate' type='text/html' href='http://8thstring.blogspot.com/2025/03/qnx-71-error-booting-up-vm-lddfatal.html' title='QNX 7.1 error booting up a VM - &quot;ldd:FATAL: Failed to load lazyload dependency. Unresolved symbol: _ITM_registerTMCloneTable&quot;'/><author><name>Techno Scavenger</name><uri>http://www.blogger.com/profile/17927601050941548819</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiNwbBgIXJoUq08WR3vmjY_J7SE_4oqNjhbulxHiiNhKRRqpxqaMX-nAwLFws3rZvop_ng3fLxmU1vmTYIOwSdJ5pX7ighFAMbGkV4dghWbFlgG2cXMZEFsxZzp5GEb9dmZJLrnHrxEa_T3sbPXxCdLx4wewGXro4ioK4K5Vgs-hzzdoGYph-AoAVuG_0/s72-c/2025-03-26%2021_55_06-Window.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-717820506911776525.post-1527074681678899264</id><published>2026-06-17T21:28:09.920-05:00</published><updated>2026-06-17T21:28:09.920-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Lisp"/><category scheme="http://www.blogger.com/atom/ns#" term="SBCL"/><title type='text'>How To: Consume COM server in Common Lisp</title><content type='html'>&lt;H1&gt;How To: Consume COM server in Common Lisp&lt;/H1&gt;

&lt;br/&gt; 
Goal: Simple example to consume COM server/object using Common Lisp

&lt;br/&gt;
Version info:&lt;br/&gt;
- OS: Windows 11 23H2 (Microsoft Windows [Version 10.0.22631.7079])&lt;br/&gt;
- Emacs: 30.2 &lt;br/&gt;
- SBCL : 2.6.4 &lt;br/&gt;
- SLIME: 2.32 &lt;br/&gt;
&lt;br/&gt;

Pre-Requisites:&lt;br/&gt;
- Install &lt;a href=&quot;https://8thstring.blogspot.com/2026/06/installing-cffi-on-sbcl-on-windows-11.html&quot;&gt;CFFI&lt;/a&gt;&lt;br/&gt;

&lt;br/&gt;
Save below say as &lt;b&gt;shell-min.lisp&lt;/b&gt;&lt;br/&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;(defpackage #:shell-min
  (:use #:cl #:cffi)
  (:export #:demo
           #:create-shell
           #:get-current-directory))
(in-package #:shell-min)

;;; --------------------------------------------------------------------------
;;; DLLs
;;; --------------------------------------------------------------------------

(define-foreign-library ole32
  (t (:default &quot;ole32&quot;)))

(define-foreign-library oleaut32
  (t (:default &quot;oleaut32&quot;)))

(use-foreign-library ole32)
(use-foreign-library oleaut32)

;;; --------------------------------------------------------------------------
;;; Types
;;; --------------------------------------------------------------------------

(defctype hresult :long)
(defctype dword   :uint32)
(defctype word    :uint16)
(defctype uint    :uint32)
(defctype lcid    :uint32)
(defctype dispid  :long)
(defctype ulong   :uint32)

(defcstruct guid
  (data1 :uint32)
  (data2 :uint16)
  (data3 :uint16)
  (data4 (:array :uint8 8)))

(defcstruct dispparams
  (rgvarg :pointer)
  (rgdispidNamedArgs :pointer)
  (cArgs uint)
  (cNamedArgs uint))

;; Windows VARIANT = 16 bytes
(defcstruct variant
  (vt word)
  (w1 word)
  (w2 word)
  (w3 word)
  (data (:array :uint8 8)))

;;; --------------------------------------------------------------------------
;;; Constants
;;; --------------------------------------------------------------------------

(defparameter +coinit-apartmentthreaded+ #x2)
(defparameter +clsctx-server+ #x5)
(defparameter +dispatch-propertyget+ #x2)
(defparameter +vt-bstr+ 8)

(defparameter +iid-idispatch+
  &quot;{00020400-0000-0000-C000-000000000046}&quot;)

;;; --------------------------------------------------------------------------
;;; COM APIs
;;; --------------------------------------------------------------------------

(defcfun (&quot;CoInitializeEx&quot; coinit) hresult
  (reserved :pointer)
  (coinit dword))

(defcfun (&quot;CoUninitialize&quot; couninit) :void)

(defcfun (&quot;CLSIDFromProgID&quot; clsid-from-progid) hresult
  (progid :pointer)
  (clsid :pointer))

(defcfun (&quot;IIDFromString&quot; iid-from-string) hresult
  (str :pointer)
  (iid :pointer))

(defcfun (&quot;CoCreateInstance&quot; cocreate) hresult
  (clsid :pointer)
  (outer :pointer)
  (ctx dword)
  (iid :pointer)
  (ppv :pointer))

(defcfun (&quot;SysStringLen&quot; syslen) :uint32
  (bstr :pointer))

;;; --------------------------------------------------------------------------
;;; Helpers
;;; --------------------------------------------------------------------------

(defun check (hr msg)
  (when (minusp hr)
    (error &quot;~A failed: 0x~8,&#39;0X&quot; msg (ldb (byte 32 0) hr))))

(defun zero-memory (ptr size)
  (dotimes (i size)
    (setf (mem-aref ptr :uint8 i) 0))
  ptr)

(defun vt-fn (p index)
  (mem-aref (mem-ref p :pointer) :pointer index))

(defun release (p)
  (foreign-funcall-pointer (vt-fn p 2)
                           (:convention :stdcall)
                           :pointer p
                           ulong))

(defun create-shell ()
  &quot;Create WScript.Shell and return IDispatch*.&quot;
  (with-foreign-object (clsid &#39;(:struct guid))
    (with-foreign-object (iid &#39;(:struct guid))
      (with-foreign-string (progid &quot;WScript.Shell&quot; :encoding :utf-16le)
        (check (clsid-from-progid progid clsid)
               &quot;CLSIDFromProgID&quot;))
      (with-foreign-string (iid-str +iid-idispatch+ :encoding :utf-16le)
        (check (iid-from-string iid-str iid)
               &quot;IIDFromString(IID_IDispatch)&quot;))
      (with-foreign-object (ppv :pointer)
        (setf (mem-ref ppv :pointer) (null-pointer))
        (check (cocreate clsid
                         (null-pointer)
                         +clsctx-server+
                         iid
                         ppv)
               &quot;CoCreateInstance&quot;)
        (mem-ref ppv :pointer)))))

(defun get-dispid (obj name)
  &quot;Resolve a member name to DISPID via IDispatch::GetIDsOfNames.&quot;
  (let ((fn (vt-fn obj 5))) ; IDispatch::GetIDsOfNames
    (with-foreign-object (iid-null &#39;(:struct guid))
      (with-foreign-object (names :pointer 1)
        (with-foreign-object (id &#39;dispid)
          ;; riid must be IID_NULL (all zeros)
          (zero-memory iid-null (foreign-type-size &#39;(:struct guid)))
          (with-foreign-string (n name :encoding :utf-16le)
            (setf (mem-aref names :pointer 0) n)
            (check
             (foreign-funcall-pointer fn
                                      (:convention :stdcall)
                                      :pointer obj
                                      :pointer iid-null
                                      :pointer names
                                      uint 1
                                      lcid 0
                                      :pointer id
                                      hresult)
             (format nil &quot;GetIDsOfNames(~A)&quot; name))
            (mem-ref id &#39;dispid)))))))

(defun bstr-&gt;string (bstr)
  &quot;Convert BSTR to Lisp string.&quot;
  ;; SysStringLen returns UTF-16 code units, not bytes.
  (let ((chars (syslen bstr)))
    (foreign-string-to-lisp bstr
                            :count (* chars 2)
                            :encoding :utf-16le)))

(defun get-current-directory (obj)
  &quot;Call WScript.Shell.CurrentDirectory via IDispatch::Invoke.&quot;
  (let ((fn (vt-fn obj 6)) ; IDispatch::Invoke
        (id (get-dispid obj &quot;CurrentDirectory&quot;)))
    (with-foreign-object (iid-null &#39;(:struct guid))
      (with-foreign-object (dp &#39;(:struct dispparams))
        (with-foreign-object (res &#39;(:struct variant))
          ;; riid must be IID_NULL
          (zero-memory iid-null (foreign-type-size &#39;(:struct guid)))
          (zero-memory dp (foreign-type-size &#39;(:struct dispparams)))
          (zero-memory res (foreign-type-size &#39;(:struct variant)))

          ;; no arguments for property get
          (setf (foreign-slot-value dp &#39;(:struct dispparams) &#39;rgvarg)
                (null-pointer))
          (setf (foreign-slot-value dp &#39;(:struct dispparams) &#39;rgdispidNamedArgs)
                (null-pointer))
          (setf (foreign-slot-value dp &#39;(:struct dispparams) &#39;cArgs) 0)
          (setf (foreign-slot-value dp &#39;(:struct dispparams) &#39;cNamedArgs) 0)

          (check
           (foreign-funcall-pointer fn
                                    (:convention :stdcall)
                                    :pointer obj
                                    dispid id
                                    :pointer iid-null
                                    lcid 0
                                    word +dispatch-propertyget+
                                    :pointer dp
                                    :pointer res
                                    :pointer (null-pointer)
                                    :pointer (null-pointer)
                                    hresult)
           &quot;Invoke(CurrentDirectory)&quot;)

          ;; VT_BSTR expected
          (unless (= (foreign-slot-value res &#39;(:struct variant) &#39;vt) +vt-bstr+)
            (error &quot;CurrentDirectory returned unexpected VT=~A&quot;
                   (foreign-slot-value res &#39;(:struct variant) &#39;vt)))

          (let ((bstr (mem-ref (inc-pointer res 8) :pointer)))
            (bstr-&gt;string bstr)))))))

(defun demo ()
  &quot;Create WScript.Shell, read CurrentDirectory, print and return it.&quot;
  (check (coinit (null-pointer) +coinit-apartmentthreaded+)
         &quot;CoInitializeEx&quot;)
  (let ((obj (null-pointer)))
    (unwind-protect
         (progn
           (setf obj (create-shell))
           (let ((dir (get-current-directory obj)))
             (format t &quot;CurrentDirectory =&gt; ~A~%&quot; dir)
             dir))
      (unless (null-pointer-p obj)
        (ignore-errors
          (release obj)))
      (ignore-errors
        (couninit)))))
&lt;/code&gt;&lt;/pre&gt;

&lt;br/&gt;You can run it like below
&lt;div class=&quot;code&quot; style=&quot;background-color: #fff; border: 1px solid rgb(185,185,185); border-radius: 1px; border-top-color: rgb(160,160,160); padding: 0.5em&quot;&gt;
&lt;pre style=&quot;font-family: monospace; font-size: 100%; margin: 0px; display:inline;  white-space: pre-wrap;&quot;&gt;
; SLIME 2.32
CL-USER&gt; (load &quot;~/quicklisp/setup.lisp&quot;)
T
CL-USER&gt; (ql:quickload :cffi)
To load &quot;cffi&quot;:
  Load 1 ASDF system:
    cffi
; Loading &quot;cffi&quot;
..............
(:CFFI)
CL-USER&gt; (load &quot;c:/lang/sbclwork/shell-min.lisp&quot;)
T
CL-USER&gt; (shell-min:demo)
CurrentDirectory =&gt; c:\lang\emacs-30.2\bin
&quot;c:\\lang\\emacs-30.2\\bin&quot;
CL-USER&gt; 
&lt;/pre&gt;
&lt;/div&gt;


</content><link rel='replies' type='application/atom+xml' href='http://8thstring.blogspot.com/feeds/1527074681678899264/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/717820506911776525/1527074681678899264' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/717820506911776525/posts/default/1527074681678899264'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/717820506911776525/posts/default/1527074681678899264'/><link rel='alternate' type='text/html' href='http://8thstring.blogspot.com/2026/06/how-to-consume-com-server-in-common-lisp.html' title='How To: Consume COM server in Common Lisp'/><author><name>Techno Scavenger</name><uri>http://www.blogger.com/profile/17927601050941548819</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-717820506911776525.post-1469710414343385572</id><published>2026-06-14T10:49:12.987-05:00</published><updated>2026-06-14T10:49:12.987-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Lisp"/><category scheme="http://www.blogger.com/atom/ns#" term="SBCL"/><title type='text'>Installing CFFI on SBCL on Windows 11</title><content type='html'>&lt;H1&gt;Installing CFFI on SBCL on Windows 11&lt;/H1&gt;
Version info:&lt;br/&gt;
- OS: Windows 11 23H2 (Microsoft Windows [Version 10.0.22631.7079])&lt;br/&gt;
- Emacs: 30.2 &lt;br/&gt;
- SBCL : 2.6.4 &lt;br/&gt;
- SLIME: 2.32 &lt;br/&gt;
&lt;br/&gt;
Install &lt;a href=&quot;https://www.quicklisp.org/beta/&quot;&gt;Quicklisp&lt;/a&gt; library manager
&lt;div class=&quot;code&quot; style=&quot;background-color: #ffffee; border: 1px solid rgb(153, 102, 0); padding: 0.5em;&quot;&gt;
&lt;pre style=&quot;display: inline; font-family: monospace; font-size: 100%; margin: 0px; white-space: pre-wrap;&quot;&gt;
cd C:\lang\sbclwork
curl -O https://beta.quicklisp.org/quicklisp.lisp
&lt;/pre&gt;
&lt;/div&gt;
This will download &lt;b&gt;quicklisp.lisp&lt;/b&gt; into &lt;b&gt;C:\lang\sbclwork&lt;/b&gt;

&lt;br/&gt;
Load &lt;b&gt;Quicklisp&lt;/b&gt; into &lt;b&gt;SBCL&lt;/b&gt;
&lt;div class=&quot;code&quot; style=&quot;background-color: #ffffee; border: 1px solid rgb(153, 102, 0); padding: 0.5em;&quot;&gt;
&lt;pre style=&quot;display: inline; font-family: monospace; font-size: 100%; margin: 0px; white-space: pre-wrap;&quot;&gt;
sbcl --load quicklisp.lisp
&lt;/pre&gt;
&lt;/div&gt;

&lt;br/&gt;
Install it (only once) into SBCL system
&lt;div class=&quot;code&quot; style=&quot;background-color: #ffffee; border: 1px solid rgb(153, 102, 0); padding: 0.5em;&quot;&gt;
&lt;pre style=&quot;display: inline; font-family: monospace; font-size: 100%; margin: 0px; white-space: pre-wrap;&quot;&gt;
* (quicklisp-quickstart:install)
&lt;/pre&gt;
&lt;/div&gt;

&lt;br/&gt;
Install &lt;b&gt;CFFI&lt;/b&gt;
&lt;div class=&quot;code&quot; style=&quot;background-color: #ffffee; border: 1px solid rgb(153, 102, 0); padding: 0.5em;&quot;&gt;
&lt;pre style=&quot;display: inline; font-family: monospace; font-size: 100%; margin: 0px; white-space: pre-wrap;&quot;&gt;
* (ql:quickload :cffi)
&lt;/pre&gt;
&lt;/div&gt;

&lt;br/&gt;
Verify CFFI is loaded and working
&lt;div class=&quot;code&quot; style=&quot;background-color: #ffffee; border: 1px solid rgb(153, 102, 0); padding: 0.5em;&quot;&gt;
&lt;pre style=&quot;display: inline; font-family: monospace; font-size: 100%; margin: 0px; white-space: pre-wrap;&quot;&gt;
(ql:quickload :cffi)
(cffi:defcfun (&quot;GetTickCount&quot; get-tick-count) :uint32)
(get-tick-count)
&lt;/pre&gt;
&lt;/div&gt;

&lt;br/&gt;This was all done from the terminal. Below shows how it looks like in SLIME
&lt;div class=&quot;code&quot; style=&quot;background-color: #ffffee; border: 1px solid rgb(153, 102, 0); padding: 0.5em;&quot;&gt;
&lt;pre style=&quot;display: inline; font-family: monospace; font-size: 100%; margin: 0px; white-space: pre-wrap;&quot;&gt;
; SLIME 2.32
CL-USER&gt; (load &quot;~/quicklisp/setup.lisp&quot;)
T
CL-USER&gt; (ql:quickload :cffi)
To load &quot;cffi&quot;:
  Load 1 ASDF system:
    cffi
; Loading &quot;cffi&quot;
..............
(:CFFI)
CL-USER&gt; (ql:quickload :cffi)
To load &quot;cffi&quot;:
  Load 1 ASDF system:
    cffi
; Loading &quot;cffi&quot;

(:CFFI)
CL-USER&gt; (cffi:defcfun (&quot;GetTickCount&quot; get-tick-count) :uint32)
GET-TICK-COUNT
CL-USER&gt; (get-tick-count)
1556937609
CL-USER&gt; 
&lt;/pre&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://8thstring.blogspot.com/feeds/1469710414343385572/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/717820506911776525/1469710414343385572' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/717820506911776525/posts/default/1469710414343385572'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/717820506911776525/posts/default/1469710414343385572'/><link rel='alternate' type='text/html' href='http://8thstring.blogspot.com/2026/06/installing-cffi-on-sbcl-on-windows-11.html' title='Installing CFFI on SBCL on Windows 11'/><author><name>Techno Scavenger</name><uri>http://www.blogger.com/profile/17927601050941548819</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-717820506911776525.post-4726184630752971938</id><published>2026-06-03T23:51:30.037-05:00</published><updated>2026-06-03T23:51:30.037-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Lisp"/><category scheme="http://www.blogger.com/atom/ns#" term="SBCL"/><title type='text'>SBCL Hello world</title><content type='html'>&lt;H1&gt;SBCL Hello, world!&lt;/H1&gt;
Version info:&lt;br/&gt;
- OS: Windows 11 23H2 (Microsoft Windows [Version 10.0.22631.7079])&lt;br/&gt;
- Emacs: 30.2 &lt;br/&gt;
- SBCL : 2.6.4 &lt;br/&gt;
- SLIME: 2.32 &lt;br/&gt;

&lt;br/&gt;Create a file called &lt;b&gt;hello.lisp&lt;/b&gt; and update to look like below -
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;(write-line &quot;Hello world!&quot;)
&lt;/code&gt;&lt;/pre&gt;

Below shows where &lt;b&gt;SBCL&lt;/b&gt; is located. 
&lt;div class=&quot;code&quot; style=&quot;background-color: #ffffee; border: 1px solid rgb(153, 102, 0); padding: 0.5em;&quot;&gt;
&lt;pre style=&quot;display: inline; font-family: monospace; font-size: 100%; margin: 0px; white-space: pre-wrap;&quot;&gt;
c:\lang\emacs-30.2\bin&gt;where sbcl
&lt;/pre&gt;
&lt;/div&gt;

&lt;br/&gt;
&lt;div class=&quot;code&quot; style=&quot;background-color: #fff; border: 1px solid rgb(185,185,185); border-radius: 1px; border-top-color: rgb(160,160,160); padding: 0.5em&quot;&gt;
&lt;pre style=&quot;font-family: monospace; font-size: 100%; margin: 0px; display:inline;  white-space: pre-wrap;&quot;&gt;
C:\Program Files\Steel Bank Common Lisp\sbcl.exe&lt;/pre&gt;
&lt;/div&gt;

&lt;br/&gt;Run the script like, so:
&lt;div class=&quot;code&quot; style=&quot;background-color: #ffffee; border: 1px solid rgb(153, 102, 0); padding: 0.5em;&quot;&gt;
&lt;pre style=&quot;display: inline; font-family: monospace; font-size: 100%; margin: 0px; white-space: pre-wrap;&quot;&gt;
c:\lang\emacs-30.2\bin&gt;sbcl --script c:\lang\sbclwork\hello.lisp
Hello, world!
&lt;/pre&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://8thstring.blogspot.com/feeds/4726184630752971938/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/717820506911776525/4726184630752971938' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/717820506911776525/posts/default/4726184630752971938'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/717820506911776525/posts/default/4726184630752971938'/><link rel='alternate' type='text/html' href='http://8thstring.blogspot.com/2026/06/sbcl-hello-world.html' title='SBCL Hello world'/><author><name>Techno Scavenger</name><uri>http://www.blogger.com/profile/17927601050941548819</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-717820506911776525.post-9188711230114788721</id><published>2026-06-03T00:22:35.315-05:00</published><updated>2026-06-03T00:22:35.315-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Emacs"/><category scheme="http://www.blogger.com/atom/ns#" term="Lisp"/><title type='text'>Emacs with SLIME for interactive development with SBCL on Windows 11</title><content type='html'>&lt;H1&gt;Emacs with SLIME for interactive development with SBCL&lt;/H1&gt;
Version info:&lt;br/&gt;
- OS: Windows 11 23H2 (Microsoft Windows [Version 10.0.22631.7079])&lt;br/&gt;
- Emacs: 30.2 &lt;br/&gt;
- SBCL : 2.6.4 &lt;br/&gt;
- SLIME: 2.32 &lt;br/&gt;

&lt;br/&gt;Prep my work directories
&lt;div class=&quot;code&quot; style=&quot;background-color: #ffffee; border: 1px solid rgb(153, 102, 0); padding: 0.5em;&quot;&gt;
&lt;pre style=&quot;display: inline; font-family: monospace; font-size: 100%; margin: 0px; white-space: pre-wrap;&quot;&gt;
C:\&gt;md c:\emacs-profiles
C:\&gt;md c:\emacs-profiles\work
C:\&gt;copy con c:\emacs-profiles\work\init.el
^Z
        1 file(s) copied.
&lt;/pre&gt;
&lt;/div&gt;

&lt;br/&gt;Run Emacs on my work directory, I have my bin files in &lt;b&gt;c:\lang\emacs-30.2\bin&lt;/b&gt;
&lt;div class=&quot;code&quot; style=&quot;background-color: #ffffee; border: 1px solid rgb(153, 102, 0); padding: 0.5em;&quot;&gt;
&lt;pre style=&quot;display: inline; font-family: monospace; font-size: 100%; margin: 0px; white-space: pre-wrap;&quot;&gt;
c:\&gt;cd c:\lang\emacs-30.2\bin
c:\lang\emacs-30.2\bin&gt;runemacs.exe --init-directory c:\emacs-profiles\work
&lt;/pre&gt;
&lt;/div&gt;

&lt;br/&gt;Install &lt;B&gt;SLIME&lt;/B&gt;
&lt;div class=&quot;code&quot; style=&quot;background-color: #ffffee; border: 1px solid rgb(153, 102, 0); padding: 0.5em&quot;&gt;
&lt;pre style=&quot;font-family: monospace; font-size: 100%; margin: 0px; display:inline; white-space: pre-wrap;&quot;&gt;
M-x package-refresh-contents
M-x package-install RET slime RET
&lt;/pre&gt;
&lt;/div&gt;

&lt;br/&gt;Update &lt;b&gt;init.el&lt;/b&gt; to use &lt;b&gt;SBCL&lt;/b&gt;
&lt;script src=&quot;https://gist.github.com/technoscavenger/2d5a7b16c39de8a1764557ffb724be03.js&quot;&gt;&lt;/script&gt;

&lt;br/&gt;Restart &lt;b&gt;Emacs&lt;/b&gt; and load &lt;b&gt;SLIME&lt;/b&gt;
&lt;div class=&quot;code&quot; style=&quot;background-color: #ffffee; border: 1px solid rgb(153, 102, 0); padding: 0.5em&quot;&gt;
&lt;pre style=&quot;font-family: monospace; font-size: 100%; margin: 0px; display:inline; white-space: pre-wrap;&quot;&gt;
M-x slime RET
&lt;/pre&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://8thstring.blogspot.com/feeds/9188711230114788721/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/717820506911776525/9188711230114788721' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/717820506911776525/posts/default/9188711230114788721'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/717820506911776525/posts/default/9188711230114788721'/><link rel='alternate' type='text/html' href='http://8thstring.blogspot.com/2026/06/emacs-with-slime-for-interactive.html' title='Emacs with SLIME for interactive development with SBCL on Windows 11'/><author><name>Techno Scavenger</name><uri>http://www.blogger.com/profile/17927601050941548819</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-717820506911776525.post-5454699758707880244</id><published>2026-05-28T10:30:58.699-05:00</published><updated>2026-05-28T10:30:58.699-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Emacs"/><category scheme="http://www.blogger.com/atom/ns#" term="Lisp"/><title type='text'>Using Emacs as editor for SBCL on Ubuntu 26.04</title><content type='html'>&lt;H1&gt;Using Emacs as editor for SBCL on Ubuntu 26.04&lt;/H1&gt;
Version info:&lt;br/&gt;
&lt;ul&gt;
  &lt;li&gt; OS: Ubuntu 26.04&lt;/li&gt;
  &lt;li&gt; Emacs: 30.2&lt;/li&gt;
  &lt;li&gt; SBCL: 2.6.0&lt;/li&gt;
&lt;/ul&gt;
Install Emacs and SBCL as needed:
&lt;div class=&quot;code&quot; style=&quot;background-color: #ffffee; border: 1px solid rgb(153, 102, 0); padding: 0.5em&quot;&gt;
&lt;pre style=&quot;font-family: monospace; font-size: 100%; margin: 0px; display:inline;  white-space: pre-wrap;&quot;&gt;$: sudo apt install emacs
$: sudo apt install sbcl
&lt;/pre&gt;
&lt;/div&gt;

&lt;br/&gt;&lt;br/&gt;Configure Emacs with SLY (Sylvester the Cat&#39;s Common Lisp IDE for Emacs), fire up Emacs and do:
&lt;ol&gt;
  &lt;li&gt;Install &lt;b&gt;Sly&lt;/b&gt; package in Emacs&lt;/li&gt;
&lt;div class=&quot;code&quot; style=&quot;background-color: #ffffee; border: 1px solid rgb(153, 102, 0); padding: 0.5em&quot;&gt;
&lt;pre style=&quot;font-family: monospace; font-size: 100%; margin: 0px; display:inline; white-space: pre-wrap;&quot;&gt;
M-x package-refresh-contents
M-x package-install RET sly RET
&lt;/pre&gt;
&lt;/div&gt;
  &lt;li&gt;Create or edit Emacs configuration file&lt;/li&gt;
&lt;div class=&quot;code&quot; style=&quot;background-color: #ffffee; border: 1px solid rgb(153, 102, 0); padding: 0.5em&quot;&gt;
&lt;pre style=&quot;font-family: monospace; font-size: 100%; margin: 0px; display:inline; white-space: pre-wrap;&quot;&gt;
M-: (find-file user-init-file)
&lt;/pre&gt;
&lt;/div&gt;
  My &lt;b&gt;.emacs&lt;/b&gt; looks like below
  &lt;script src=&quot;https://gist.github.com/technoscavenger/1cf306b6be4262b50df86066374608ab.js&quot;&gt;&lt;/script&gt;
  &lt;li&gt;Restart Emacs&lt;/li&gt;
  &lt;li&gt;Load SLY&lt;/li&gt;
&lt;div class=&quot;code&quot; style=&quot;background-color: #ffffee; border: 1px solid rgb(153, 102, 0); padding: 0.5em&quot;&gt;
&lt;pre style=&quot;font-family: monospace; font-size: 100%; margin: 0px; display:inline; white-space: pre-wrap;&quot;&gt;
M-x sly RET
&lt;/pre&gt;
&lt;/div&gt;
&lt;/ol&gt;
&lt;br/&gt;&lt;br/&gt;Below shows &lt;b&gt;SLY with SBCL&lt;/b&gt; loaded. 
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSZiDMW4OK87QxPQ_lXzrnUFQQyYjDy5PuJNCSerUeq_rWPpS8YV_ZVn5Hj_0Ig1RcdumXqRPXTEu_BGe9V81jG5euzE2QzxuPiFoAjHvkoHh4ZDtz-61TkIPjG2F-CUK7UCv5w-lDA5IKxILrSJnoGsC8rI1Q49m41Ty1TrOt7RLCXMbFiForrt_57GM/s1600/Screenshot%20From%202026-05-28%2011-25-24.png&quot; style=&quot;display: block; padding: 1em 0; text-align: left; &quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; data-original-height=&quot;838&quot; data-original-width=&quot;722&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSZiDMW4OK87QxPQ_lXzrnUFQQyYjDy5PuJNCSerUeq_rWPpS8YV_ZVn5Hj_0Ig1RcdumXqRPXTEu_BGe9V81jG5euzE2QzxuPiFoAjHvkoHh4ZDtz-61TkIPjG2F-CUK7UCv5w-lDA5IKxILrSJnoGsC8rI1Q49m41Ty1TrOt7RLCXMbFiForrt_57GM/s1600/Screenshot%20From%202026-05-28%2011-25-24.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://8thstring.blogspot.com/feeds/5454699758707880244/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/717820506911776525/5454699758707880244' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/717820506911776525/posts/default/5454699758707880244'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/717820506911776525/posts/default/5454699758707880244'/><link rel='alternate' type='text/html' href='http://8thstring.blogspot.com/2026/05/using-emacs-as-editor-for-sbcl-on.html' title='Using Emacs as editor for SBCL on Ubuntu 26.04'/><author><name>Techno Scavenger</name><uri>http://www.blogger.com/profile/17927601050941548819</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSZiDMW4OK87QxPQ_lXzrnUFQQyYjDy5PuJNCSerUeq_rWPpS8YV_ZVn5Hj_0Ig1RcdumXqRPXTEu_BGe9V81jG5euzE2QzxuPiFoAjHvkoHh4ZDtz-61TkIPjG2F-CUK7UCv5w-lDA5IKxILrSJnoGsC8rI1Q49m41Ty1TrOt7RLCXMbFiForrt_57GM/s72-c/Screenshot%20From%202026-05-28%2011-25-24.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-717820506911776525.post-3048380865903387892</id><published>2026-05-28T10:30:02.597-05:00</published><updated>2026-05-28T10:30:02.621-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Emacs"/><category scheme="http://www.blogger.com/atom/ns#" term="Lisp"/><title type='text'>Using Emacs as editor for SBCL on Windows 10</title><content type='html'>&lt;H1&gt;Using Emacs as editor for SBCL on Windows 10&lt;/H1&gt;
Emacs is installed in &lt;span style=&quot;border: 1px solid #DDD;line-height: 1.5em;color: #555;padding: 0.1em;margin: -1px 0;border-radius: 0.4em;font-family:monospace;&quot;&gt;C:\emacs&lt;/span&gt;, using version 30.2. I run it using &lt;span style=&quot;border: 1px solid #DDD;line-height: 1.5em;color: #555;padding: 0.1em;margin: -1px 0;border-radius: 0.4em;font-family:monospace;&quot;&gt;C:\emacs\bin\runemacs.exe&lt;/span&gt;. 

&lt;br/&gt;&lt;br/&gt;&lt;b&gt;SBCL&lt;/b&gt; version 2.6.4 (sbcl-2.6.4-x86-64-windows-binary.msi) is installed in &lt;span style=&quot;border: 1px solid #DDD;line-height: 1.5em;color: #555;padding: 0.1em;margin: -1px 0;border-radius: 0.4em;font-family:monospace;&quot;&gt;C:\Program Files\Steel Bank Common Lisp&lt;/span&gt;

&lt;ol&gt;
  &lt;li&gt;Install &lt;b&gt;Sly&lt;/b&gt; package in Emacs&lt;/li&gt;
&lt;div class=&quot;code&quot; style=&quot;background-color: #ffffee; border: 1px solid rgb(153, 102, 0); padding: 0.5em&quot;&gt;
&lt;pre style=&quot;font-family: monospace; font-size: 100%; margin: 0px; display:inline; white-space: pre-wrap;&quot;&gt;
M-x package-refresh-contents
M-x package-install RET sly RET
&lt;/pre&gt;
&lt;/div&gt;

  &lt;li&gt;Create or edit &lt;span style=&quot;border: 1px solid #DDD;line-height: 1.5em;color: #555;padding: 0.1em;margin: -1px 0;border-radius: 0.4em;font-family:monospace;&quot;&gt;~/.emacs.d/init.el&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;Edit or replace contents like below&lt;/li&gt;
  &lt;script src=&quot;https://gist.github.com/technoscavenger/09040a901ad718a65f679a13173f2c98.js&quot;&gt;&lt;/script&gt;
  &lt;li&gt;Restart Emacs&lt;/li&gt;
  &lt;li&gt;Load &lt;b&gt;Sly&lt;/b&gt;&lt;/li&gt;
&lt;div class=&quot;code&quot; style=&quot;background-color: #ffffee; border: 1px solid rgb(153, 102, 0); padding: 0.5em&quot;&gt;
&lt;pre style=&quot;font-family: monospace; font-size: 100%; margin: 0px; display:inline; white-space: pre-wrap;&quot;&gt;
M-x sly RET
&lt;/pre&gt;
&lt;/div&gt;
  
&lt;/ol&gt;
Note: Verify that you are not using &lt;span style=&quot;border: 1px solid #DDD;line-height: 1.5em;color: #555;padding: 0.1em;margin: -1px 0;border-radius: 0.4em;font-family:monospace;&quot;&gt;~/.emacs&lt;/span&gt;, otherwise it will not load configration from &lt;span style=&quot;border: 1px solid #DDD;line-height: 1.5em;color: #555;padding: 0.1em;margin: -1px 0;border-radius: 0.4em;font-family:monospace;&quot;&gt;~/.emacs.d/init.el&lt;/span&gt;
&lt;br/&gt;&lt;br/&gt;Below shows &lt;b&gt;SLY with SBCL&lt;/b&gt; loaded. 
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1stXXnPvH982quUsYZooOsq3VoagIPy0IypneIhQHuo0jJEdk6JlSsLLbq91CHr8j2ilym0mDXjUM4c9DJU11IKrc_o09fDZOwJ_jTlwZOom0j2lgDZzjtHaJzF-jpmDbQo98NbyFJnjO-FoxP4VNiBXLd_5qU0YwVHqCp_WZ96jZEVE15FjP4QPyzes/s1600/sbcl-loaded.PNG&quot; style=&quot;display: block; padding: 1em 0; text-align: left; &quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; data-original-height=&quot;948&quot; data-original-width=&quot;839&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1stXXnPvH982quUsYZooOsq3VoagIPy0IypneIhQHuo0jJEdk6JlSsLLbq91CHr8j2ilym0mDXjUM4c9DJU11IKrc_o09fDZOwJ_jTlwZOom0j2lgDZzjtHaJzF-jpmDbQo98NbyFJnjO-FoxP4VNiBXLd_5qU0YwVHqCp_WZ96jZEVE15FjP4QPyzes/s1600/sbcl-loaded.PNG&quot;/&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br/&gt;I am having issues running code below on Windows 10, it seems the input is buffered. Pressing RET does not properly go to the next prompt.
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;(defun prompt-for-cd ()
  (make-cd
   (prompt-read &quot;Title&quot;)
   (prompt-read &quot;Artist&quot;)
   (or (parse-integer (prompt-read &quot;Rating&quot;) :junk-allowed t) 0)
   (y-or-n-p &quot;Ripped [y/n]: &quot;)))
&lt;/code&gt;&lt;/pre&gt;
There is a workaround for the above bug, see below:&lt;br/&gt;
&lt;a href=&quot;https://github.com/joaotavora/sly/commit/5a05c033197693462e67004549c24e0676eed53b&quot;&gt;https://github.com/joaotavora/sly/commit/5a05c033197693462e67004549c24e0676eed53b&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://8thstring.blogspot.com/feeds/3048380865903387892/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/717820506911776525/3048380865903387892' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/717820506911776525/posts/default/3048380865903387892'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/717820506911776525/posts/default/3048380865903387892'/><link rel='alternate' type='text/html' href='http://8thstring.blogspot.com/2026/05/using-emacs-as-editor-for-sbcl.html' title='Using Emacs as editor for SBCL on Windows 10'/><author><name>Techno Scavenger</name><uri>http://www.blogger.com/profile/17927601050941548819</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1stXXnPvH982quUsYZooOsq3VoagIPy0IypneIhQHuo0jJEdk6JlSsLLbq91CHr8j2ilym0mDXjUM4c9DJU11IKrc_o09fDZOwJ_jTlwZOom0j2lgDZzjtHaJzF-jpmDbQo98NbyFJnjO-FoxP4VNiBXLd_5qU0YwVHqCp_WZ96jZEVE15FjP4QPyzes/s72-c/sbcl-loaded.PNG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-717820506911776525.post-8586522618402348330</id><published>2026-05-27T21:04:29.497-05:00</published><updated>2026-07-28T21:31:21.914-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Emacs"/><title type='text'>Emacs common commands</title><content type='html'>&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;Character Operations:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;DELETE : Delete character to the left of point (Also marked ROBOUT)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;C-d &amp;nbsp; &amp;nbsp;: Delete character to the right of (or under) point&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;Word Operations:&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;M-d &amp;nbsp; &amp;nbsp;:&amp;nbsp;Delete one word to the right (C-y yanks it back at point)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;Cursor movement:&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;C-p&amp;nbsp;&amp;nbsp;&amp;nbsp; : Move to the previous line&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;C-n&amp;nbsp;&amp;nbsp;&amp;nbsp; : Move to the next line&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;C-f&amp;nbsp;&amp;nbsp;&amp;nbsp; : Move forward one char&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;C-b&amp;nbsp;&amp;nbsp;&amp;nbsp; : Move backward one char&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;M-f&amp;nbsp;&amp;nbsp;&amp;nbsp; : Move forward one word&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;M-b&amp;nbsp;&amp;nbsp;&amp;nbsp; : Move backward one word&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;C-a&amp;nbsp;&amp;nbsp;&amp;nbsp; : Move cursor beggining of the line&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;C-e&amp;nbsp;&amp;nbsp;&amp;nbsp; : Move cursor end of the line&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;M-&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; : End of file&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;M-&amp;lt;&amp;nbsp;&amp;nbsp;&amp;nbsp; : Beginning of file&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;

&lt;span style=&quot;font-size: small;&quot;&gt;Line operations:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;M-m &amp;nbsp; &amp;nbsp; &amp;nbsp; : Move point to the first non-space in the line&lt;/span&gt;&lt;br /&gt;

&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;  
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;Copying Text:&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;
  
  &lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;M-w&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : Runs command kill-ring-save. This is like copy in Windows editors&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;

&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Deleting Text:&lt;/b&gt;
&lt;table style=&quot;border-collapse: collapse; border: 1px;&quot;&gt;
  &lt;tbody&gt;
    &lt;tr style=&quot;border: 1px solid #e5e5e5;&quot;&gt;
      &lt;td style=&quot;border: 1px solid #e5e5e5; padding-right: 10px;&quot;&gt;C-SPC select text C-w&lt;/td&gt;
      &lt;td&gt;Delete selected text&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr style=&quot;border: 1px solid #e5e5e5;&quot;&gt;
      &lt;td style=&quot;border: 1px solid #e5e5e5; padding-right: 10px;&quot;&gt;M-d&lt;/td&gt;
      &lt;td&gt;Kill the next word after the cursor&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;br/&gt;&lt;br/&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;Searching for text:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;C-s &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : Incremental search forward&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;C-r &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : Incremental search backward&lt;/span&gt;&lt;br /&gt;

&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Misc commands&lt;/b&gt;
&lt;table style=&quot;border-collapse: collapse; border: 1px;&quot;&gt;
  &lt;tbody&gt;
    &lt;tr style=&quot;border: 1px solid #e5e5e5;&quot;&gt;
      &lt;td style=&quot;border: 1px solid #e5e5e5; padding-right: 10px;&quot;&gt;M-: user-init-file&lt;/td&gt;
      &lt;td&gt;Show the configuration file used by Emacs in the echo area&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr style=&quot;border: 1px solid #e5e5e5;&quot;&gt;
      &lt;td style=&quot;border: 1px solid #e5e5e5; padding-right: 10px;&quot;&gt;M-: (find-file user-init-file)&lt;/td&gt;
      &lt;td&gt;Edit user configuratin file&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;


&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;Convenience functions:&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;C-[number][char]&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : Repeat [char] [number] of times. Example C-8-0 1, repeat 1 80 times.&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;Dictionary:&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;M-$&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : Check and correct spelling for the word at point&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;Others:&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;count-lines-region&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : Count number line and chars for the selected text&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;untabify&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : Change tabs to space for the currently selected region&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;br /&gt;
&lt;/span&gt; &lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;Python mode specific shortcuts:&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;M-/ &amp;nbsp; &amp;nbsp; : Command abbreviation expand&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;C-M-i &amp;nbsp; : Complete partial symbol or Intellisense in VS speak&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://8thstring.blogspot.com/feeds/8586522618402348330/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/717820506911776525/8586522618402348330' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/717820506911776525/posts/default/8586522618402348330'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/717820506911776525/posts/default/8586522618402348330'/><link rel='alternate' type='text/html' href='http://8thstring.blogspot.com/2009/11/emacs-common-commands.html' title='Emacs common commands'/><author><name>Techno Scavenger</name><uri>http://www.blogger.com/profile/17927601050941548819</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-717820506911776525.post-9065508909124567480</id><published>2026-05-17T21:19:42.040-05:00</published><updated>2026-05-17T21:19:42.064-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Fedora"/><title type='text'>Fedora install screen chronicle</title><content type='html'>&lt;H1&gt;Fedora install screen chronicle&lt;/H1&gt;
Below are links to Fedora installation screens. It is interesting to see how it has evolved over time.
&lt;br /&gt;
&lt;a href=&quot;https://8thstring.blogspot.com/2026/05/fedora-43-workstation-installation.html&quot;&gt;Fedora 43 Workstation&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://8thstring.blogspot.com/2026/01/fedora-42-workstation-installation.html&quot;&gt;Fedora 42 Workstation&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://8thstring.blogspot.com/2025/06/fedora-41-workstation-installation.html&quot;&gt;Fedora 41 Workstation&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://8thstring.blogspot.com/2024/11/fedora-40-workstation-installation.html&quot;&gt;Fedora 40 Workstation&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://8thstring.blogspot.com/2024/05/fedora-39-workstation-installation.html&quot;&gt;Fedora 39 Workstation&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://8thstring.blogspot.com/2024/01/fedora-38-workstation-installation.html&quot;&gt;Fedora 38 Workstation&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://8thstring.blogspot.com/2024/01/fedora-37-workstation-installation.html&quot;&gt;Fedora 37 Workstation&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://8thstring.blogspot.com/2024/01/fedora-36-workstation-installation.html&quot;&gt;Fedora 36 Workstation&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://8thstring.blogspot.com/2023/12/fedora-35-workstation-installation.html&quot;&gt;Fedora 35 Workstation&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://8thstring.blogspot.com/2023/12/fedora-34-workstation-installation.html&quot;&gt;Fedora 34 Workstation&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://8thstring.blogspot.com/2023/12/fedora-33-workstation-installation.html&quot;&gt;Fedora 33 Workstation&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://8thstring.blogspot.com/2023/11/fedora-32-workstation-installation.html&quot;&gt;Fedora 32 Workstation&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://8thstring.blogspot.com/2020/01/fedora-31-workstation-installation.html&quot;&gt;Fedora 31 Workstation&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://8thstring.blogspot.com/2020/01/fedora-30-workstation-installation.html&quot;&gt;Fedora 30 Workstation&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://8thstring.blogspot.com/2020/01/fedora-29-workstation-installation.html&quot;&gt;Fedora 29 Workstation&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://8thstring.blogspot.com/2020/01/fedora-28-workstation-installation.html&quot;&gt;Fedora 28 Workstation&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://8thstring.blogspot.com/2020/01/fedora-27-workstation-installation.html&quot;&gt;Fedora 27 Workstation&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://8thstring.blogspot.com/2020/01/fedora-26-workstation-installation.html&quot;&gt;Fedora 26 Workstation&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://8thstring.blogspot.com/2020/01/fedora-25-workstation-installation.html&quot;&gt;Fedora 25 Workstation&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://8thstring.blogspot.com/2020/01/fedora-24-workstation-installation.html&quot;&gt;Fedora 24 Workstation&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://8thstring.blogspot.com/2020/01/fedora-23-workstation-installation.html&quot;&gt;Fedora 23 Workstation&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://8thstring.blogspot.com/2020/01/fedora-22-workstation-install-screen.html&quot;&gt;Fedora 22 Workstation&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://8thstring.blogspot.com/2020/01/fedora-21-workstation-install-screen.html&quot;&gt;Fedora 21 Workstation&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://8thstring.blogspot.com/2020/01/fedora-20-install-screen-capture.html&quot;&gt;Fedora 20&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://8thstring.blogspot.com/2020/01/fedora-19-install-screen-capture.html&quot;&gt;Fedora 19&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://8thstring.blogspot.com/2020/01/fedora-18-install-screen-capture.html&quot;&gt;Fedora 18&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://8thstring.blogspot.com/2020/01/fedora-17-install-screen-capture.html&quot;&gt;Fedora 17&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://8thstring.blogspot.com/2012/02/installing-fedora-16-on-virtualbox.html&quot;&gt;Fedora 16&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://8thstring.blogspot.com/2011/11/fedora-15-screen-capture-tour.html&quot;&gt;Fedora 15&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://8thstring.blogspot.com/2011/02/fedora-14-screen-capture.html&quot;&gt;Fedora 14&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://8thstring.blogspot.com/2010/06/installing-fedora-13-in-virtualbox.html&quot;&gt;Fedora 13&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://8thstring.blogspot.com/feeds/9065508909124567480/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/717820506911776525/9065508909124567480' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/717820506911776525/posts/default/9065508909124567480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/717820506911776525/posts/default/9065508909124567480'/><link rel='alternate' type='text/html' href='http://8thstring.blogspot.com/2020/01/fedora-install-screen-chronicle.html' title='Fedora install screen chronicle'/><author><name>Techno Scavenger</name><uri>http://www.blogger.com/profile/17927601050941548819</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-717820506911776525.post-2983112216044533153</id><published>2026-05-17T21:17:36.954-05:00</published><updated>2026-05-17T21:17:36.955-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Fedora"/><title type='text'>Fedora 43 Workstation installation screen capture</title><content type='html'>&lt;span
  face=&quot;Arial, Tahoma, Helvetica, FreeSans, sans-serif&quot;
  style=&quot;background-color: white; color: #444444;&quot;
  &gt;Just an itch, wanted to see how Fedora 43 Workstation looks like.&lt;/span
&gt;
&lt;span
  face=&quot;Arial, Tahoma, Helvetica, FreeSans, sans-serif&quot;
  style=&quot;background-color: white; color: #444444;&quot;
  &gt;For other versions see&amp;nbsp;&lt;/span
&gt;&lt;a
  href=&quot;https://8thstring.blogspot.com/2020/01/fedora-install-screen-chronicle.html&quot;
  style=&quot;background-color: white; color: #4d469c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-decoration-line: none;&quot;
  &gt;here&lt;/a
&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
  &lt;a
    href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcipCk0489Uw9exFTNsn_ntEF_42G-tGRC62wERri6dN3QXk3lrfPByYDxkq7CPLhwHEhofqUVbEmTBI92bgohSP8Lc8HbPGCNehhizx7sOda35NzR183-Ms-bC3NaDTXDNWRt6uKK6qKLuihtaqWyN-9T05EtOJW79U2jFuBgQyh9dDr7QhOGJn_0NYE/s720/VirtualBox_F43_17_05_2026_01_13_41.png&quot;
    style=&quot;display: block; padding: 1em 0; text-align: center; &quot;
    &gt;&lt;img
      alt=&quot;&quot;
      border=&quot;0&quot;
      width=&quot;320&quot;
      data-original-height=&quot;400&quot;
      data-original-width=&quot;720&quot;
      src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcipCk0489Uw9exFTNsn_ntEF_42G-tGRC62wERri6dN3QXk3lrfPByYDxkq7CPLhwHEhofqUVbEmTBI92bgohSP8Lc8HbPGCNehhizx7sOda35NzR183-Ms-bC3NaDTXDNWRt6uKK6qKLuihtaqWyN-9T05EtOJW79U2jFuBgQyh9dDr7QhOGJn_0NYE/s320/VirtualBox_F43_17_05_2026_01_13_41.png&quot;
  /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
  &lt;a
    href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgevSqIO2Ym21va5Zh2voFbx36kJ-QaDzy2NoBQuY-g8ffHUxHvufVsl9YJAUt6LakY3XyjfMfFUPq2lOI5XvYMlLDd5x-wdwPFf_UibgKr_gstj4L3SkNqV9l836LhpB1XEn1ZPLnXVsZSnaUql_VXlMTz6Wis-hBiEZpTZzDGhneTsOEQJs8HM1m-cJc/s1310/VirtualBox_F43_17_05_2026_01_14_40.png&quot;
    style=&quot;display: block; padding: 1em 0; text-align: center; &quot;
    &gt;&lt;img
      alt=&quot;&quot;
      border=&quot;0&quot;
      width=&quot;320&quot;
      data-original-height=&quot;860&quot;
      data-original-width=&quot;1310&quot;
      src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgevSqIO2Ym21va5Zh2voFbx36kJ-QaDzy2NoBQuY-g8ffHUxHvufVsl9YJAUt6LakY3XyjfMfFUPq2lOI5XvYMlLDd5x-wdwPFf_UibgKr_gstj4L3SkNqV9l836LhpB1XEn1ZPLnXVsZSnaUql_VXlMTz6Wis-hBiEZpTZzDGhneTsOEQJs8HM1m-cJc/s320/VirtualBox_F43_17_05_2026_01_14_40.png&quot;
  /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
  &lt;a
    href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxpuUMy1AF9XkK26G36lOQ45C41g-XlSFgLSIzct9AwpmmuEREQ5wrIFuonNOm-EpxcShYRX36RoIUGQsJl_C3w4YbLB7AyUdCx9Kgo18b3mGh_T8o2NnDELXbWBXZ04j9WKuBivjtsMW8kix0KUKlNHQCc8SWYZ55YdIEfahgFyaZ0h-DaLxgdrdQbTg/s1310/VirtualBox_F43_17_05_2026_01_16_07.png&quot;
    style=&quot;display: block; padding: 1em 0; text-align: center; &quot;
    &gt;&lt;img
      alt=&quot;&quot;
      border=&quot;0&quot;
      width=&quot;320&quot;
      data-original-height=&quot;860&quot;
      data-original-width=&quot;1310&quot;
      src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxpuUMy1AF9XkK26G36lOQ45C41g-XlSFgLSIzct9AwpmmuEREQ5wrIFuonNOm-EpxcShYRX36RoIUGQsJl_C3w4YbLB7AyUdCx9Kgo18b3mGh_T8o2NnDELXbWBXZ04j9WKuBivjtsMW8kix0KUKlNHQCc8SWYZ55YdIEfahgFyaZ0h-DaLxgdrdQbTg/s320/VirtualBox_F43_17_05_2026_01_16_07.png&quot;
  /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
  &lt;a
    href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-iNrx5azwSvugtAJGR7SV5g5NiYGcNykY1OUiptxesOXhAtZEY1MMmyB43hcD5raY1G5TiBVaJOU0ukPBQN_QotmrS5qtOMqCqnHQymXRGiiVmT68EYVZFs83qgRq5Gr2i2ZAAu4GNkktHk8Y_wk7g2N2XATIFzW0pBsW-qLVjmXoZL0FajN2FyYjXz8/s1310/VirtualBox_F43_17_05_2026_01_16_49.png&quot;
    style=&quot;display: block; padding: 1em 0; text-align: center; &quot;
    &gt;&lt;img
      alt=&quot;&quot;
      border=&quot;0&quot;
      width=&quot;320&quot;
      data-original-height=&quot;860&quot;
      data-original-width=&quot;1310&quot;
      src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-iNrx5azwSvugtAJGR7SV5g5NiYGcNykY1OUiptxesOXhAtZEY1MMmyB43hcD5raY1G5TiBVaJOU0ukPBQN_QotmrS5qtOMqCqnHQymXRGiiVmT68EYVZFs83qgRq5Gr2i2ZAAu4GNkktHk8Y_wk7g2N2XATIFzW0pBsW-qLVjmXoZL0FajN2FyYjXz8/s320/VirtualBox_F43_17_05_2026_01_16_49.png&quot;
  /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
  &lt;a
    href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQpHLbPH_7PxDsNE9TgxHko6Ymn_SEaJtzkXSl295_o4zzliHz9XL5GPPMgHIoSLr9IVDhQ8W285V4-a7i5JJwemYKo8PUbtusgDMDsiAUKjBmB3BcLpLbcANXGyzqEUutGZ_CniJXQviF0F8ZzhYjfDQ1dAigj4hhMCy5xcfsJJAQ-EQeri7o6fio-C0/s1310/VirtualBox_F43_17_05_2026_01_17_08.png&quot;
    style=&quot;display: block; padding: 1em 0; text-align: center; &quot;
    &gt;&lt;img
      alt=&quot;&quot;
      border=&quot;0&quot;
      width=&quot;320&quot;
      data-original-height=&quot;860&quot;
      data-original-width=&quot;1310&quot;
      src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQpHLbPH_7PxDsNE9TgxHko6Ymn_SEaJtzkXSl295_o4zzliHz9XL5GPPMgHIoSLr9IVDhQ8W285V4-a7i5JJwemYKo8PUbtusgDMDsiAUKjBmB3BcLpLbcANXGyzqEUutGZ_CniJXQviF0F8ZzhYjfDQ1dAigj4hhMCy5xcfsJJAQ-EQeri7o6fio-C0/s320/VirtualBox_F43_17_05_2026_01_17_08.png&quot;
  /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
  &lt;a
    href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6MyE-schnFqXJCXyxTvMwsYwhg9whTIQSpE43fwEH_HiF4DFmrvkL6vLE5Ii7Wdq3tSLf8Nn8ID2eKGCbitPooa2SMSljCfnCLlUOb_-QeNVUyVfIDyGuPSJqTIZXqGs35qebPHk0TFINNA01J1Kj3aVcjsFbUFamgEMA-eBkuJNNE0txfa67aOtHssA/s1310/VirtualBox_F43_17_05_2026_01_17_22.png&quot;
    style=&quot;display: block; padding: 1em 0; text-align: center; &quot;
    &gt;&lt;img
      alt=&quot;&quot;
      border=&quot;0&quot;
      width=&quot;320&quot;
      data-original-height=&quot;860&quot;
      data-original-width=&quot;1310&quot;
      src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6MyE-schnFqXJCXyxTvMwsYwhg9whTIQSpE43fwEH_HiF4DFmrvkL6vLE5Ii7Wdq3tSLf8Nn8ID2eKGCbitPooa2SMSljCfnCLlUOb_-QeNVUyVfIDyGuPSJqTIZXqGs35qebPHk0TFINNA01J1Kj3aVcjsFbUFamgEMA-eBkuJNNE0txfa67aOtHssA/s320/VirtualBox_F43_17_05_2026_01_17_22.png&quot;
  /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
  &lt;a
    href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkbS31eVm-WTmCfZtt5moekj75HsWmXbR07fJthkn7LfqqC6kmFu2vWa8q7m1KYT41IYm5q550FRyRKG3FcHZyAOre9AtZyenfyHhfGmmbT13ux-PWWf1oX5f4yrAnyRhgOMNjDvbe5xCAbqI6qlfPL0kIJmq-OewczrjejuE82IAhrs2wlDGXDq6wd7Q/s1310/VirtualBox_F43_17_05_2026_01_17_35.png&quot;
    style=&quot;display: block; padding: 1em 0; text-align: center; &quot;
    &gt;&lt;img
      alt=&quot;&quot;
      border=&quot;0&quot;
      width=&quot;320&quot;
      data-original-height=&quot;860&quot;
      data-original-width=&quot;1310&quot;
      src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkbS31eVm-WTmCfZtt5moekj75HsWmXbR07fJthkn7LfqqC6kmFu2vWa8q7m1KYT41IYm5q550FRyRKG3FcHZyAOre9AtZyenfyHhfGmmbT13ux-PWWf1oX5f4yrAnyRhgOMNjDvbe5xCAbqI6qlfPL0kIJmq-OewczrjejuE82IAhrs2wlDGXDq6wd7Q/s320/VirtualBox_F43_17_05_2026_01_17_35.png&quot;
  /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
  &lt;a
    href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEjap1IYduaq01fK1QLV7KFh4km_4hfzUxONnOQskux6kFW-ZHyI681we-mFHUF2REXj3J1O3nQ7sanuRrOxTQLqIYLC77iIUOuW8G1qQVM1sd79PYjtiCD773HVt4eV1pxIjynctGVr2JFBhA9jOVEQnv8GKYxO3XHzjW7j5CV220Y_75hVuQt_B2HqE/s1310/VirtualBox_F43_17_05_2026_01_17_48.png&quot;
    style=&quot;display: block; padding: 1em 0; text-align: center; &quot;
    &gt;&lt;img
      alt=&quot;&quot;
      border=&quot;0&quot;
      width=&quot;320&quot;
      data-original-height=&quot;860&quot;
      data-original-width=&quot;1310&quot;
      src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEjap1IYduaq01fK1QLV7KFh4km_4hfzUxONnOQskux6kFW-ZHyI681we-mFHUF2REXj3J1O3nQ7sanuRrOxTQLqIYLC77iIUOuW8G1qQVM1sd79PYjtiCD773HVt4eV1pxIjynctGVr2JFBhA9jOVEQnv8GKYxO3XHzjW7j5CV220Y_75hVuQt_B2HqE/s320/VirtualBox_F43_17_05_2026_01_17_48.png&quot;
  /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
  &lt;a
    href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjt4sfT4bORZQH5S2qb1jS3jVvGGYFfOEP3O1QVQD5k21_pN-NSeZNlV80kgfsb3poNzG9XAkJXMNMuPOLWdzEd_DozWBGKsbB3-YJyhkUVaYZ32Qe1ILLWvHVI7aL7h02OjDeHA7U7YzkUiqt0gVdthFSZqFELHr0-9HnMR7nYHUgndL__6P5qYyMpW3w/s1310/VirtualBox_F43_17_05_2026_01_26_40.png&quot;
    style=&quot;display: block; padding: 1em 0; text-align: center; &quot;
    &gt;&lt;img
      alt=&quot;&quot;
      border=&quot;0&quot;
      width=&quot;320&quot;
      data-original-height=&quot;860&quot;
      data-original-width=&quot;1310&quot;
      src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjt4sfT4bORZQH5S2qb1jS3jVvGGYFfOEP3O1QVQD5k21_pN-NSeZNlV80kgfsb3poNzG9XAkJXMNMuPOLWdzEd_DozWBGKsbB3-YJyhkUVaYZ32Qe1ILLWvHVI7aL7h02OjDeHA7U7YzkUiqt0gVdthFSZqFELHr0-9HnMR7nYHUgndL__6P5qYyMpW3w/s320/VirtualBox_F43_17_05_2026_01_26_40.png&quot;
  /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
  &lt;a
    href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUXN1vVXOeJMmVOksKvPhu_jel6VDixNEV-f1FxbXZy-WAxloyBvUojB6knANLMWE10OW1_cAzhZGzZraxRgaOTNONdF105elb80q8WoDRj7x5DpeMldW4kDhT0_LJXgqX5E6Bymr00zFQxg8sMosVHo2E7NJjQaU3YWWc6pS41L2XxKG7Fmkzz-wrEsc/s1310/VirtualBox_F43_17_05_2026_01_29_01.png&quot;
    style=&quot;display: block; padding: 1em 0; text-align: center; &quot;
    &gt;&lt;img
      alt=&quot;&quot;
      border=&quot;0&quot;
      width=&quot;320&quot;
      data-original-height=&quot;860&quot;
      data-original-width=&quot;1310&quot;
      src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUXN1vVXOeJMmVOksKvPhu_jel6VDixNEV-f1FxbXZy-WAxloyBvUojB6knANLMWE10OW1_cAzhZGzZraxRgaOTNONdF105elb80q8WoDRj7x5DpeMldW4kDhT0_LJXgqX5E6Bymr00zFQxg8sMosVHo2E7NJjQaU3YWWc6pS41L2XxKG7Fmkzz-wrEsc/s320/VirtualBox_F43_17_05_2026_01_29_01.png&quot;
  /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
  &lt;a
    href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnu4WE_4jOKFK-Cd3upeT0LtWdCz8rXldJ_EHWtuBK8IBYK9NhBa2ujEd6Fh4KUnht4aI0BNh7o9De1dKUoX8m6X2PSSdnnhnDNasv7m_c5grnr0FzCewr61fWunyMlgLJXXRMX-HAT_FIyBwalDPmFQSgMrlAdLqnIe-x-UyLLJHnnpFChKpD-OvP100/s1310/VirtualBox_F43_17_05_2026_01_29_16.png&quot;
    style=&quot;display: block; padding: 1em 0; text-align: center; &quot;
    &gt;&lt;img
      alt=&quot;&quot;
      border=&quot;0&quot;
      width=&quot;320&quot;
      data-original-height=&quot;860&quot;
      data-original-width=&quot;1310&quot;
      src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnu4WE_4jOKFK-Cd3upeT0LtWdCz8rXldJ_EHWtuBK8IBYK9NhBa2ujEd6Fh4KUnht4aI0BNh7o9De1dKUoX8m6X2PSSdnnhnDNasv7m_c5grnr0FzCewr61fWunyMlgLJXXRMX-HAT_FIyBwalDPmFQSgMrlAdLqnIe-x-UyLLJHnnpFChKpD-OvP100/s320/VirtualBox_F43_17_05_2026_01_29_16.png&quot;
  /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
  &lt;a
    href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmGoiZPS3K121UIP1EMW9ZXxB1gUv8-Uhc8HgPbrYbsJVJuGSGjE_A0h5t2Llfr4HJe06lxlKXrjIGOF6PHFG0iUbrEXMhyphenhyphen3sEfNUzuRYg1dhCLB-UAuo6TUYgMRIO4jliQA3txgiS3Cjuw6P9YDwuRpdXPnjA27S6lP99AdHSRGySn2om2xMopOOrqyA/s1310/VirtualBox_F43_17_05_2026_01_29_38.png&quot;
    style=&quot;display: block; padding: 1em 0; text-align: center; &quot;
    &gt;&lt;img
      alt=&quot;&quot;
      border=&quot;0&quot;
      width=&quot;320&quot;
      data-original-height=&quot;860&quot;
      data-original-width=&quot;1310&quot;
      src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmGoiZPS3K121UIP1EMW9ZXxB1gUv8-Uhc8HgPbrYbsJVJuGSGjE_A0h5t2Llfr4HJe06lxlKXrjIGOF6PHFG0iUbrEXMhyphenhyphen3sEfNUzuRYg1dhCLB-UAuo6TUYgMRIO4jliQA3txgiS3Cjuw6P9YDwuRpdXPnjA27S6lP99AdHSRGySn2om2xMopOOrqyA/s320/VirtualBox_F43_17_05_2026_01_29_38.png&quot;
  /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
  &lt;a
    href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiHCSGFfOWIa5Bn-G8cK1Nzt7BIxTkuRGCR5mZ_GKxbtAc_Y-MeMcmonWJlBV2Z7LWwQ7F5YKbBO6Jgz9FOenen1vjCHbNSY_PjkduJdOgulFram6lsL8jFRqc894eer5IB98jJvItMQLtdU2YxKGQkfWmkaOkkEyK6pcikLNB7KdQ0ZrHs5fbl7u8VJQ8/s1310/VirtualBox_F43_17_05_2026_01_30_01.png&quot;
    style=&quot;display: block; padding: 1em 0; text-align: center; &quot;
    &gt;&lt;img
      alt=&quot;&quot;
      border=&quot;0&quot;
      width=&quot;320&quot;
      data-original-height=&quot;860&quot;
      data-original-width=&quot;1310&quot;
      src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiHCSGFfOWIa5Bn-G8cK1Nzt7BIxTkuRGCR5mZ_GKxbtAc_Y-MeMcmonWJlBV2Z7LWwQ7F5YKbBO6Jgz9FOenen1vjCHbNSY_PjkduJdOgulFram6lsL8jFRqc894eer5IB98jJvItMQLtdU2YxKGQkfWmkaOkkEyK6pcikLNB7KdQ0ZrHs5fbl7u8VJQ8/s320/VirtualBox_F43_17_05_2026_01_30_01.png&quot;
  /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
  &lt;a
    href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6mLG_rOOCTcDjMAHx1RcQbEbeOgFzO6RncL53GIBg67In6mjSe1S-lhAxwx3-OUz2y3b1HwGKM3Iz7xqK2Jufr91j4HpY8ocWfCIG9AuIF3f4gtv7lgngt8ZgTdcdyYCDKw2bNuZR5ey_fvqFeP5FiXz3fy3eaT4gzcaNRm6gTzEP4m2pIH-UyEWD2xg/s1310/VirtualBox_F43_17_05_2026_01_30_14.png&quot;
    style=&quot;display: block; padding: 1em 0; text-align: center; &quot;
    &gt;&lt;img
      alt=&quot;&quot;
      border=&quot;0&quot;
      width=&quot;320&quot;
      data-original-height=&quot;860&quot;
      data-original-width=&quot;1310&quot;
      src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6mLG_rOOCTcDjMAHx1RcQbEbeOgFzO6RncL53GIBg67In6mjSe1S-lhAxwx3-OUz2y3b1HwGKM3Iz7xqK2Jufr91j4HpY8ocWfCIG9AuIF3f4gtv7lgngt8ZgTdcdyYCDKw2bNuZR5ey_fvqFeP5FiXz3fy3eaT4gzcaNRm6gTzEP4m2pIH-UyEWD2xg/s320/VirtualBox_F43_17_05_2026_01_30_14.png&quot;
  /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
  &lt;a
    href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhp0pX-saoYwLde01jnb9ebfKLWwJ7qSLX09z0sp6vmrKH1OE-c8H00jYbcSSh0Q2sCa9muUNmkUfH1wmWJ1J7POt2VN7ufB9ItJguCrNScrxIu82V4GwTDmId8otWbTXpSrqikFz0MndFWzHMwNUuUzAHB6IzXyhrwMY0ymFHqEcHaJUTtBaQ8WaStAd4/s1310/VirtualBox_F43_17_05_2026_01_30_29.png&quot;
    style=&quot;display: block; padding: 1em 0; text-align: center; &quot;
    &gt;&lt;img
      alt=&quot;&quot;
      border=&quot;0&quot;
      width=&quot;320&quot;
      data-original-height=&quot;860&quot;
      data-original-width=&quot;1310&quot;
      src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhp0pX-saoYwLde01jnb9ebfKLWwJ7qSLX09z0sp6vmrKH1OE-c8H00jYbcSSh0Q2sCa9muUNmkUfH1wmWJ1J7POt2VN7ufB9ItJguCrNScrxIu82V4GwTDmId8otWbTXpSrqikFz0MndFWzHMwNUuUzAHB6IzXyhrwMY0ymFHqEcHaJUTtBaQ8WaStAd4/s320/VirtualBox_F43_17_05_2026_01_30_29.png&quot;
  /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
  &lt;a
    href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEia3IvRV_kRzvPR6T7nPGk885ZKxF14iS-9iPUqCiAQAm4VhbY8RaFj6n_LGxQ7FlpkyJfvrWHUHU_eN-LVlDLiKkBLN7GyZkjLzcyN56yCQiZiWmhI9kbpvSAGQRrMZZSv_MbtOcz30vE_UtCs6oIqiIkOPzG8b688WJue02c8oUrOPDptcv7viHvQLwY/s1310/VirtualBox_F43_17_05_2026_01_30_53.png&quot;
    style=&quot;display: block; padding: 1em 0; text-align: center; &quot;
    &gt;&lt;img
      alt=&quot;&quot;
      border=&quot;0&quot;
      width=&quot;320&quot;
      data-original-height=&quot;860&quot;
      data-original-width=&quot;1310&quot;
      src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEia3IvRV_kRzvPR6T7nPGk885ZKxF14iS-9iPUqCiAQAm4VhbY8RaFj6n_LGxQ7FlpkyJfvrWHUHU_eN-LVlDLiKkBLN7GyZkjLzcyN56yCQiZiWmhI9kbpvSAGQRrMZZSv_MbtOcz30vE_UtCs6oIqiIkOPzG8b688WJue02c8oUrOPDptcv7viHvQLwY/s320/VirtualBox_F43_17_05_2026_01_30_53.png&quot;
  /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
  &lt;a
    href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOFLOX2Fji9qg9iVJ40xgMwGh3_J10GmaZGVTYaOfo8_-XLXQHC7OgGv4MdkFW-MWPvsSs9iaDaZBROWzHXg_1fLj8Oo2NHLT9mYMbYf64IVObH11eygwK8G_bZRPghigJNXAKpgCjAuwEjAWcl46SugYAJqM793at-llB-dvtqlkny4fOvatg935ZfMM/s1310/VirtualBox_F43_17_05_2026_01_31_06.png&quot;
    style=&quot;display: block; padding: 1em 0; text-align: center; &quot;
    &gt;&lt;img
      alt=&quot;&quot;
      border=&quot;0&quot;
      width=&quot;320&quot;
      data-original-height=&quot;860&quot;
      data-original-width=&quot;1310&quot;
      src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOFLOX2Fji9qg9iVJ40xgMwGh3_J10GmaZGVTYaOfo8_-XLXQHC7OgGv4MdkFW-MWPvsSs9iaDaZBROWzHXg_1fLj8Oo2NHLT9mYMbYf64IVObH11eygwK8G_bZRPghigJNXAKpgCjAuwEjAWcl46SugYAJqM793at-llB-dvtqlkny4fOvatg935ZfMM/s320/VirtualBox_F43_17_05_2026_01_31_06.png&quot;
  /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
  &lt;a
    href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKmjiGxCaD_oNJBVyCFiGrIL49sw44iS67V4f_3Oha7zl9__PxKzFDx4_EVEelUqxcEZh_PfPsTT4OaZyMyTPx6CRtRAd_sT9QRLJoscFkHtK9Iwa98GVtWmbMPbGI6RQPGZXpeLdXSOOe1iwLue4h9nuo474tUM73C2H9OBqsOGCkZVS-ph0LuYCR4B8/s1310/VirtualBox_F43_17_05_2026_01_31_24.png&quot;
    style=&quot;display: block; padding: 1em 0; text-align: center; &quot;
    &gt;&lt;img
      alt=&quot;&quot;
      border=&quot;0&quot;
      width=&quot;320&quot;
      data-original-height=&quot;860&quot;
      data-original-width=&quot;1310&quot;
      src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKmjiGxCaD_oNJBVyCFiGrIL49sw44iS67V4f_3Oha7zl9__PxKzFDx4_EVEelUqxcEZh_PfPsTT4OaZyMyTPx6CRtRAd_sT9QRLJoscFkHtK9Iwa98GVtWmbMPbGI6RQPGZXpeLdXSOOe1iwLue4h9nuo474tUM73C2H9OBqsOGCkZVS-ph0LuYCR4B8/s320/VirtualBox_F43_17_05_2026_01_31_24.png&quot;
  /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
  &lt;a
    href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsoSyIxyE7Gt0ZvdrFSgONqNGS6etv1P7Y2Hs0PfBxGA7L8I4PUWrbBtRHR0WV7sbE7HpTTPVU8HrJIOfEoMqlF3MY9zx7baaCT4vdvXdkIrpRH5OwLI3OhwpnCIizoRcm-vPKkxrQJyu1IPzuMN6GgFvNGT3UBhgxo3q_8cnH5txcb5qrIhat2lmF5sk/s1310/VirtualBox_F43_17_05_2026_01_32_27.png&quot;
    style=&quot;display: block; padding: 1em 0; text-align: center; &quot;
    &gt;&lt;img
      alt=&quot;&quot;
      border=&quot;0&quot;
      width=&quot;320&quot;
      data-original-height=&quot;860&quot;
      data-original-width=&quot;1310&quot;
      src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsoSyIxyE7Gt0ZvdrFSgONqNGS6etv1P7Y2Hs0PfBxGA7L8I4PUWrbBtRHR0WV7sbE7HpTTPVU8HrJIOfEoMqlF3MY9zx7baaCT4vdvXdkIrpRH5OwLI3OhwpnCIizoRcm-vPKkxrQJyu1IPzuMN6GgFvNGT3UBhgxo3q_8cnH5txcb5qrIhat2lmF5sk/s320/VirtualBox_F43_17_05_2026_01_32_27.png&quot;
  /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
  &lt;a
    href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibjGohkJC0-pLpseTHNtgb8zBWgXmDOJQhDraYAVmY6dd86dRZiCc02u5lsgEef9KFLC-tKHbxhsEpfgHxJ6p5ItvVu8pFBcLcWOMEnE3-v1o5UedVV-Kyc3bYk-MFTW51Ra3VEcx3De3-jLfnVjnD5gvimu13pn5_ofh6NB2hTM7YwcYOtA7YxszI8bM/s1310/VirtualBox_F43_17_05_2026_01_33_18.png&quot;
    style=&quot;display: block; padding: 1em 0; text-align: center; &quot;
    &gt;&lt;img
      alt=&quot;&quot;
      border=&quot;0&quot;
      width=&quot;320&quot;
      data-original-height=&quot;860&quot;
      data-original-width=&quot;1310&quot;
      src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibjGohkJC0-pLpseTHNtgb8zBWgXmDOJQhDraYAVmY6dd86dRZiCc02u5lsgEef9KFLC-tKHbxhsEpfgHxJ6p5ItvVu8pFBcLcWOMEnE3-v1o5UedVV-Kyc3bYk-MFTW51Ra3VEcx3De3-jLfnVjnD5gvimu13pn5_ofh6NB2hTM7YwcYOtA7YxszI8bM/s320/VirtualBox_F43_17_05_2026_01_33_18.png&quot;
  /&gt;&lt;/a&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://8thstring.blogspot.com/feeds/2983112216044533153/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/717820506911776525/2983112216044533153' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/717820506911776525/posts/default/2983112216044533153'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/717820506911776525/posts/default/2983112216044533153'/><link rel='alternate' type='text/html' href='http://8thstring.blogspot.com/2026/05/fedora-43-workstation-installation.html' title='Fedora 43 Workstation installation screen capture'/><author><name>Techno Scavenger</name><uri>http://www.blogger.com/profile/17927601050941548819</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcipCk0489Uw9exFTNsn_ntEF_42G-tGRC62wERri6dN3QXk3lrfPByYDxkq7CPLhwHEhofqUVbEmTBI92bgohSP8Lc8HbPGCNehhizx7sOda35NzR183-Ms-bC3NaDTXDNWRt6uKK6qKLuihtaqWyN-9T05EtOJW79U2jFuBgQyh9dDr7QhOGJn_0NYE/s72-c/VirtualBox_F43_17_05_2026_01_13_41.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-717820506911776525.post-1215231367038537512</id><published>2026-01-27T18:06:00.001-06:00</published><updated>2026-01-27T18:10:16.737-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Zig"/><title type='text'>Zig basic Windows application using win32 API</title><content type='html'>&lt;H1&gt;Zig basic Windows application using win32 API&lt;/H1&gt;
&lt;b&gt;Info&lt;/b&gt;:&lt;br/&gt;
OS: Windows 10 IoT LTSC 2021&lt;br/&gt;
Zig: 0.15.2&lt;br/&gt;&lt;br/&gt;

Sample application using zigwin32, Windows API to create basic window that does nothing. It calls the following win32 API functions:&lt;br/&gt;
- LoadCursorW&lt;br/&gt;
- RegisterClassW&lt;br/&gt;
- GetLastError&lt;br/&gt;
- CreateWindowExW&lt;br/&gt;
- ShowWindow&lt;br/&gt;
- GetMessageW&lt;br/&gt;
- TranslateMessage&lt;br/&gt;
- DispatchMessageW&lt;br/&gt;
- DefWindowProcw&lt;br/&gt;

And windows &lt;b&gt;WindoProc&lt;/b&gt; function for pumping messages. &lt;br/&gt;&lt;br/&gt;

Create a Zig application, like:
&lt;div class=&quot;code&quot; style=&quot;background-color: #ffffee; border: 1px solid rgb(153, 102, 0); padding: 0.5em;&quot;&gt;
&lt;pre style=&quot;display: inline; font-family: monospace; font-size: 100%; margin: 0px; white-space: pre-wrap;&quot;&gt;
PS C:\prj\&gt; mkdir hellowindow
PS C:\prj\&gt; cd hellowindow
PS C:\prj\hellowindow&gt; zig init
&lt;/pre&gt;
&lt;/div&gt;
Modify &lt;b&gt;build.zig&lt;/b&gt; to add &lt;a href=&quot;https://github.com/marlersoft/zigwin32&quot;&gt;zigwin32&lt;/a&gt;. See lines 86-91 in gist below.
&lt;script src=&quot;https://gist.github.com/technoscavenger/3e42adf175760018e18b0291fff8c0c1.js&quot;&gt;&lt;/script&gt;
Update src/main.zig to look like below.
&lt;script src=&quot;https://gist.github.com/technoscavenger/56921adcfea8bb1a30ea44c2c4725851.js&quot;&gt;&lt;/script&gt;
Checkout zigwin32 into the root of the project
&lt;div class=&quot;code&quot; style=&quot;background-color: #ffffee; border: 1px solid rgb(153, 102, 0); padding: 0.5em;&quot;&gt;
&lt;pre style=&quot;display: inline; font-family: monospace; font-size: 100%; margin: 0px; white-space: pre-wrap;&quot;&gt;
PS C:\prj\hellowindow&gt; git clone https://github.com/marlersoft/zigwin32 libs/zigwin32
&lt;/pre&gt;
&lt;/div&gt;
Now do a build:
&lt;div class=&quot;code&quot; style=&quot;background-color: #ffffee; border: 1px solid rgb(153, 102, 0); padding: 0.5em;&quot;&gt;
&lt;pre style=&quot;display: inline; font-family: monospace; font-size: 100%; margin: 0px; white-space: pre-wrap;&quot;&gt;
PS C:\prj\hellowindow&gt; zig build
&lt;/pre&gt;
&lt;/div&gt;

Or do a release build that produces the smallest binary:
&lt;div class=&quot;code&quot; style=&quot;background-color: #ffffee; border: 1px solid rgb(153, 102, 0); padding: 0.5em;&quot;&gt;
&lt;pre style=&quot;display: inline; font-family: monospace; font-size: 100%; margin: 0px; white-space: pre-wrap;&quot;&gt;
PS C:\prj\hellowindow&gt; zig build -Doptimize=ReleaseSmall
&lt;/pre&gt;
&lt;/div&gt;

</content><link rel='replies' type='application/atom+xml' href='http://8thstring.blogspot.com/feeds/1215231367038537512/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/717820506911776525/1215231367038537512' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/717820506911776525/posts/default/1215231367038537512'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/717820506911776525/posts/default/1215231367038537512'/><link rel='alternate' type='text/html' href='http://8thstring.blogspot.com/2026/01/zig-basic-windows-application-using.html' title='Zig basic Windows application using win32 API'/><author><name>Techno Scavenger</name><uri>http://www.blogger.com/profile/17927601050941548819</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-717820506911776525.post-4548803256752860728</id><published>2026-01-27T13:41:00.000-06:00</published><updated>2026-01-27T13:41:01.816-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Zig"/><title type='text'>Demo how to use zigwin32 in your zig application</title><content type='html'>&lt;H1&gt;Demo how to use zigwin32 in your zig application&lt;/H1&gt;
Create a Zig application, like:
&lt;div class=&quot;code&quot; style=&quot;background-color: #ffffee; border: 1px solid rgb(153, 102, 0); padding: 0.5em;&quot;&gt;
&lt;pre style=&quot;display: inline; font-family: monospace; font-size: 100%; margin: 0px; white-space: pre-wrap;&quot;&gt;
PS C:\prj\zigwin32test&gt; zig init
&lt;/pre&gt;
&lt;/div&gt;
Modify &lt;b&gt;build.zig&lt;/b&gt; to add zigwin32. See lines 68-72 in gist below.
&lt;script src=&quot;https://gist.github.com/technoscavenger/8b7c898722966e89b07d765cc7892422.js&quot;&gt;&lt;/script&gt;
Update src/main.zig to look like below.
&lt;script src=&quot;https://gist.github.com/technoscavenger/07b603ec0673a449c27d4f110c1e630f.js&quot;&gt;&lt;/script&gt;
Checkout zigwin32 into the root of the project
&lt;div class=&quot;code&quot; style=&quot;background-color: #ffffee; border: 1px solid rgb(153, 102, 0); padding: 0.5em;&quot;&gt;
&lt;pre style=&quot;display: inline; font-family: monospace; font-size: 100%; margin: 0px; white-space: pre-wrap;&quot;&gt;
PS C:\prj\zigwin32test&gt; git clone https://github.com/marlersoft/zigwin32 libs/zigwin32
&lt;/pre&gt;
&lt;/div&gt;
Now do a build:
&lt;div class=&quot;code&quot; style=&quot;background-color: #ffffee; border: 1px solid rgb(153, 102, 0); padding: 0.5em;&quot;&gt;
&lt;pre style=&quot;display: inline; font-family: monospace; font-size: 100%; margin: 0px; white-space: pre-wrap;&quot;&gt;
PS C:\prj\zigwin32test&gt; zig build run
&lt;/pre&gt;
&lt;/div&gt;
Reference:&lt;br/&gt;
&lt;a href=&quot;https://github.com/myZig/zigwin32test&quot;&gt;https://github.com/myZig/zigwin32test&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://8thstring.blogspot.com/feeds/4548803256752860728/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/717820506911776525/4548803256752860728' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/717820506911776525/posts/default/4548803256752860728'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/717820506911776525/posts/default/4548803256752860728'/><link rel='alternate' type='text/html' href='http://8thstring.blogspot.com/2025/03/demo-how-to-use-zigwin32-in-your-zig.html' title='Demo how to use zigwin32 in your zig application'/><author><name>Techno Scavenger</name><uri>http://www.blogger.com/profile/17927601050941548819</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-717820506911776525.post-6025992860029870076</id><published>2026-01-01T22:50:00.001-06:00</published><updated>2026-01-01T22:50:04.873-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Fedora"/><title type='text'>Fedora 42 Workstation installation screen capture</title><content type='html'>&lt;span
  face=&quot;Arial, Tahoma, Helvetica, FreeSans, sans-serif&quot;
  style=&quot;background-color: white; color: #444444;&quot;
  &gt;Just an itch, wanted to see how Fedora 42 Workstation looks like.&lt;/span
&gt;
&lt;span
  face=&quot;Arial, Tahoma, Helvetica, FreeSans, sans-serif&quot;
  style=&quot;background-color: white; color: #444444;&quot;
  &gt;For other versions see&amp;nbsp;&lt;/span
&gt;&lt;a
  href=&quot;https://8thstring.blogspot.com/2020/01/fedora-install-screen-chronicle.html&quot;
  style=&quot;background-color: white; color: #4d469c; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; text-decoration-line: none;&quot;
  &gt;here&lt;/a
&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
  &lt;a
    href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsU0GDe5I_LfLKAsIXyllinl92alTFDRveOV7ERHe-BaY1Jz03NbnS1ooy7raionYkaErDSfBxPaAVL9lvjXz5-DNkJmAtmdUeWjs-rPqRtFVoS2ZgFzJbe3dTooMdH7hACf2C38t8fcUmTyLdSbe0Q2HKkvhqRTKGgrVrT6KGDie7uiOxwvtFxjTigZM/s720/VirtualBox_F42_01_01_2026_21_40_11.png&quot;
    style=&quot;display: block; padding: 1em 0; text-align: center; &quot;
    &gt;&lt;img
      alt=&quot;&quot;
      border=&quot;0&quot;
      width=&quot;320&quot;
      data-original-height=&quot;400&quot;
      data-original-width=&quot;720&quot;
      src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsU0GDe5I_LfLKAsIXyllinl92alTFDRveOV7ERHe-BaY1Jz03NbnS1ooy7raionYkaErDSfBxPaAVL9lvjXz5-DNkJmAtmdUeWjs-rPqRtFVoS2ZgFzJbe3dTooMdH7hACf2C38t8fcUmTyLdSbe0Q2HKkvhqRTKGgrVrT6KGDie7uiOxwvtFxjTigZM/s320/VirtualBox_F42_01_01_2026_21_40_11.png&quot;
  /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
  &lt;a
    href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSqiUKuakKKTjT3CWQrW-JVvyqfiiAskHFodTtiWpEX7PbHl_gxJhMFSV3-Qzh18Rg-X_svx2PkcdJw_VinbA_upvt5PGsPq_HjNo86T-aAd7XtmrnQzkC643foB_2g2cPs3eLVsr2OsAQ1DEx-0uZy4pCQnF63Yl4olS8Cv4lG03SKVmUpHRSFeVlMnQ/s800/VirtualBox_F42_01_01_2026_21_44_12.png&quot;
    style=&quot;display: block; padding: 1em 0; text-align: center; &quot;
    &gt;&lt;img
      alt=&quot;&quot;
      border=&quot;0&quot;
      width=&quot;320&quot;
      data-original-height=&quot;600&quot;
      data-original-width=&quot;800&quot;
      src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSqiUKuakKKTjT3CWQrW-JVvyqfiiAskHFodTtiWpEX7PbHl_gxJhMFSV3-Qzh18Rg-X_svx2PkcdJw_VinbA_upvt5PGsPq_HjNo86T-aAd7XtmrnQzkC643foB_2g2cPs3eLVsr2OsAQ1DEx-0uZy4pCQnF63Yl4olS8Cv4lG03SKVmUpHRSFeVlMnQ/s320/VirtualBox_F42_01_01_2026_21_44_12.png&quot;
  /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
  &lt;a
    href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7IwOnK7PtRObI8w1vfI3AELoJooqqhZDXe6ahTC5_S8_1_HRm5wf-jFhUTYSbBe8zIAk87A24UmY6nXfaTCBKEVOAFUbQJ12VFnwXYjq-AZufp8qnG4uhC-hHFfPZ3wow0Zm1iVF13nFLQyufsWad5GKzAGsxvZOIdiCsdqsOZ4IWoVaqHj5zaSLUD3A/s800/VirtualBox_F42_01_01_2026_21_44_21.png&quot;
    style=&quot;display: block; padding: 1em 0; text-align: center; &quot;
    &gt;&lt;img
      alt=&quot;&quot;
      border=&quot;0&quot;
      width=&quot;320&quot;
      data-original-height=&quot;600&quot;
      data-original-width=&quot;800&quot;
      src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7IwOnK7PtRObI8w1vfI3AELoJooqqhZDXe6ahTC5_S8_1_HRm5wf-jFhUTYSbBe8zIAk87A24UmY6nXfaTCBKEVOAFUbQJ12VFnwXYjq-AZufp8qnG4uhC-hHFfPZ3wow0Zm1iVF13nFLQyufsWad5GKzAGsxvZOIdiCsdqsOZ4IWoVaqHj5zaSLUD3A/s320/VirtualBox_F42_01_01_2026_21_44_21.png&quot;
  /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
  &lt;a
    href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQx9fCTFBwacGD-oHj24cnSO1XX28fiUFZanbkpwxlS41etteBUush4-gnzfhM3kOagzyloZMhI0Bf3J3S63DJgvjgUDXTCcjM6LG0sSwPgctpnD-ff3aHzLwUpZCaLTZqq_rq40-qH6mVzobojC2ML6B2xaEo4aIkyVvoQA-D9hEqQkHwgGZtFeh0rKc/s800/VirtualBox_F42_01_01_2026_21_44_49.png&quot;
    style=&quot;display: block; padding: 1em 0; text-align: center; &quot;
    &gt;&lt;img
      alt=&quot;&quot;
      border=&quot;0&quot;
      width=&quot;320&quot;
      data-original-height=&quot;600&quot;
      data-original-width=&quot;800&quot;
      src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQx9fCTFBwacGD-oHj24cnSO1XX28fiUFZanbkpwxlS41etteBUush4-gnzfhM3kOagzyloZMhI0Bf3J3S63DJgvjgUDXTCcjM6LG0sSwPgctpnD-ff3aHzLwUpZCaLTZqq_rq40-qH6mVzobojC2ML6B2xaEo4aIkyVvoQA-D9hEqQkHwgGZtFeh0rKc/s320/VirtualBox_F42_01_01_2026_21_44_49.png&quot;
  /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
  &lt;a
    href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1CiG0PABhVtGm2JKAgPfZJqS6ynwiLETmDq1sKhFLWhEt2swcV1bATAPKPf5FV04vE6a2S3xOJ-lv-upPBlAY1yUbS-dmdokRxLKFT6-U9P2UxQwOi7aDM0T3QwnvCsp2KCSuB4QVwGMC7_BNGns9EE49iOGuZQFwG0pFEpsKx_cic3egeelZHKuYyPs/s800/VirtualBox_F42_01_01_2026_21_45_13.png&quot;
    style=&quot;display: block; padding: 1em 0; text-align: center; &quot;
    &gt;&lt;img
      alt=&quot;&quot;
      border=&quot;0&quot;
      width=&quot;320&quot;
      data-original-height=&quot;600&quot;
      data-original-width=&quot;800&quot;
      src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1CiG0PABhVtGm2JKAgPfZJqS6ynwiLETmDq1sKhFLWhEt2swcV1bATAPKPf5FV04vE6a2S3xOJ-lv-upPBlAY1yUbS-dmdokRxLKFT6-U9P2UxQwOi7aDM0T3QwnvCsp2KCSuB4QVwGMC7_BNGns9EE49iOGuZQFwG0pFEpsKx_cic3egeelZHKuYyPs/s320/VirtualBox_F42_01_01_2026_21_45_13.png&quot;
  /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
  &lt;a
    href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJBwWLVd_wb4MtK9TDfJOVZPg6AfuRBaXFzw0e7g2KrIpCb9uxQbym_OifeJPb2mDeNElHM3PtU2g9P6Tkp6wknSCzLgsLCkPFfolwkdbfWeN-VeI3PpZ7N2TJdMkjJN3iLAMxa41H9Ih-uCAhClsQuJC6FY4bwVlodg7QVvI2jU4pDhyaC6elncf99xk/s800/VirtualBox_F42_01_01_2026_21_45_22.png&quot;
    style=&quot;display: block; padding: 1em 0; text-align: center; &quot;
    &gt;&lt;img
      alt=&quot;&quot;
      border=&quot;0&quot;
      width=&quot;320&quot;
      data-original-height=&quot;600&quot;
      data-original-width=&quot;800&quot;
      src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJBwWLVd_wb4MtK9TDfJOVZPg6AfuRBaXFzw0e7g2KrIpCb9uxQbym_OifeJPb2mDeNElHM3PtU2g9P6Tkp6wknSCzLgsLCkPFfolwkdbfWeN-VeI3PpZ7N2TJdMkjJN3iLAMxa41H9Ih-uCAhClsQuJC6FY4bwVlodg7QVvI2jU4pDhyaC6elncf99xk/s320/VirtualBox_F42_01_01_2026_21_45_22.png&quot;
  /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
  &lt;a
    href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCmm2cQ3bD_SFW_tQFCdc2nlVN3bppKE1ZKq9dtEdvBUAZMSP5SVUN1ZD1fVW7eELjlPYm0SSCZ646OO8VhlZ1ztRHwa2oUhNJbIVJ6OziI9Jq7HSfbW0thwiZJJHZ7mVrNlx4po9eOL4E09E87_xk0-vy5Ka51wpW09W2hrZmOhl2f5y-ZQ7q0JINKIg/s800/VirtualBox_F42_01_01_2026_21_45_30.png&quot;
    style=&quot;display: block; padding: 1em 0; text-align: center; &quot;
    &gt;&lt;img
      alt=&quot;&quot;
      border=&quot;0&quot;
      width=&quot;320&quot;
      data-original-height=&quot;600&quot;
      data-original-width=&quot;800&quot;
      src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCmm2cQ3bD_SFW_tQFCdc2nlVN3bppKE1ZKq9dtEdvBUAZMSP5SVUN1ZD1fVW7eELjlPYm0SSCZ646OO8VhlZ1ztRHwa2oUhNJbIVJ6OziI9Jq7HSfbW0thwiZJJHZ7mVrNlx4po9eOL4E09E87_xk0-vy5Ka51wpW09W2hrZmOhl2f5y-ZQ7q0JINKIg/s320/VirtualBox_F42_01_01_2026_21_45_30.png&quot;
  /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
  &lt;a
    href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhibP1ccLiygwIx7ImPzloYwAFdPlrqJWXO1qNc6SudAnCyqvu5b9SLYIgNfiQhG1o5GJ0kKh_hB9-kRlK9wDwmMeQgxfStJ_xfF_iQaNnPirftuzrY_bliNojRSlSb0zrFaVJP1pjjYCRcy7hTsPKyrhFsh4mYvBQYaWTBY_XmrEbEQRcIOZvjP16M6Ww/s800/VirtualBox_F42_01_01_2026_21_45_38.png&quot;
    style=&quot;display: block; padding: 1em 0; text-align: center; &quot;
    &gt;&lt;img
      alt=&quot;&quot;
      border=&quot;0&quot;
      width=&quot;320&quot;
      data-original-height=&quot;600&quot;
      data-original-width=&quot;800&quot;
      src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhibP1ccLiygwIx7ImPzloYwAFdPlrqJWXO1qNc6SudAnCyqvu5b9SLYIgNfiQhG1o5GJ0kKh_hB9-kRlK9wDwmMeQgxfStJ_xfF_iQaNnPirftuzrY_bliNojRSlSb0zrFaVJP1pjjYCRcy7hTsPKyrhFsh4mYvBQYaWTBY_XmrEbEQRcIOZvjP16M6Ww/s320/VirtualBox_F42_01_01_2026_21_45_38.png&quot;
  /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
  &lt;a
    href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyw4XZkBB7WE7MDxmN61_10c6ykJGxDHRHcOzkne7V_ixOJhD72wWr7pK4SaV2ogzzQ6BjUQNj46rKK2JYQVD-tybI8LTfPdoBFOmw_5APE-VlIEkmnYL9LIwTQhX56gpobPYhFkQvZC4BZjRHejnA2CG2wImeYDUYyCO7bRo1ULMGstJJSEyNolxFePQ/s800/VirtualBox_F42_01_01_2026_21_52_01.png&quot;
    style=&quot;display: block; padding: 1em 0; text-align: center; &quot;
    &gt;&lt;img
      alt=&quot;&quot;
      border=&quot;0&quot;
      width=&quot;320&quot;
      data-original-height=&quot;600&quot;
      data-original-width=&quot;800&quot;
      src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyw4XZkBB7WE7MDxmN61_10c6ykJGxDHRHcOzkne7V_ixOJhD72wWr7pK4SaV2ogzzQ6BjUQNj46rKK2JYQVD-tybI8LTfPdoBFOmw_5APE-VlIEkmnYL9LIwTQhX56gpobPYhFkQvZC4BZjRHejnA2CG2wImeYDUYyCO7bRo1ULMGstJJSEyNolxFePQ/s320/VirtualBox_F42_01_01_2026_21_52_01.png&quot;
  /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
  &lt;a
    href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIslFYNq_mhyphenhyphensTJNuYjes4LNUpLVcPY_QnK8EuwicVp5Ms78aJ8w1FBAwJWX11sorpsJWV-fjvqEO5OxB2fhG_5lTDxDile_gbPiCIuzCeOb9j2s4AgwiFJ2pxMykZxh8bRCwDSEEu5CyPhD3QuvNt6KR842Bnv-XhhpgTQLd_qaccsQvbZGvt7C35ejE/s800/VirtualBox_F42_01_01_2026_21_54_33.png&quot;
    style=&quot;display: block; padding: 1em 0; text-align: center; &quot;
    &gt;&lt;img
      alt=&quot;&quot;
      border=&quot;0&quot;
      width=&quot;320&quot;
      data-original-height=&quot;600&quot;
      data-original-width=&quot;800&quot;
      src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIslFYNq_mhyphenhyphensTJNuYjes4LNUpLVcPY_QnK8EuwicVp5Ms78aJ8w1FBAwJWX11sorpsJWV-fjvqEO5OxB2fhG_5lTDxDile_gbPiCIuzCeOb9j2s4AgwiFJ2pxMykZxh8bRCwDSEEu5CyPhD3QuvNt6KR842Bnv-XhhpgTQLd_qaccsQvbZGvt7C35ejE/s320/VirtualBox_F42_01_01_2026_21_54_33.png&quot;
  /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
  &lt;a
    href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWfxfCnIspefwCtA_BbCE5S2-5K6i-jURqQqr8iS9iPO39635sFvYbvme4B4ReuN9IVaPYLMy27895vPg4UwH_zrGHL1vpAUOQG7gE03AZ2tJ4NhKyH1zh9RoqtT1YLN4Gix09cOY2OkvSvtOsl40-ejEovpoMtXGP7i8qSP_vlTA2risgIXMcz6P2giI/s800/VirtualBox_F42_01_01_2026_21_54_45.png&quot;
    style=&quot;display: block; padding: 1em 0; text-align: center; &quot;
    &gt;&lt;img
      alt=&quot;&quot;
      border=&quot;0&quot;
      width=&quot;320&quot;
      data-original-height=&quot;600&quot;
      data-original-width=&quot;800&quot;
      src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWfxfCnIspefwCtA_BbCE5S2-5K6i-jURqQqr8iS9iPO39635sFvYbvme4B4ReuN9IVaPYLMy27895vPg4UwH_zrGHL1vpAUOQG7gE03AZ2tJ4NhKyH1zh9RoqtT1YLN4Gix09cOY2OkvSvtOsl40-ejEovpoMtXGP7i8qSP_vlTA2risgIXMcz6P2giI/s320/VirtualBox_F42_01_01_2026_21_54_45.png&quot;
  /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
  &lt;a
    href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCyhWsBp4rlkSczY_dQZlrpHDWMu1AE_wFncuh5ZC-que-w_0SalVHsgCDMt69db0d55zlMS1uOgci21pskNpa6-44Kjv2roKkBVnCXfp4TqGJt6GA-n-NUotPAS_c0xlZiR8Y9kaycWAeCmIh80VzH7dXA3I4Myy4EFjSie-lEOBkbHLMWcjoW5Q3zXU/s800/VirtualBox_F42_01_01_2026_21_55_05.png&quot;
    style=&quot;display: block; padding: 1em 0; text-align: center; &quot;
    &gt;&lt;img
      alt=&quot;&quot;
      border=&quot;0&quot;
      width=&quot;320&quot;
      data-original-height=&quot;600&quot;
      data-original-width=&quot;800&quot;
      src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCyhWsBp4rlkSczY_dQZlrpHDWMu1AE_wFncuh5ZC-que-w_0SalVHsgCDMt69db0d55zlMS1uOgci21pskNpa6-44Kjv2roKkBVnCXfp4TqGJt6GA-n-NUotPAS_c0xlZiR8Y9kaycWAeCmIh80VzH7dXA3I4Myy4EFjSie-lEOBkbHLMWcjoW5Q3zXU/s320/VirtualBox_F42_01_01_2026_21_55_05.png&quot;
  /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
  &lt;a
    href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFoo-z-E1HQQ3KE7VqabSBtnb0OQYuSBHpo0UPCdG00jUiNH-oKY32gmFMmvrioKHmlydXOOM4wGS1fsdCrhc9w-T6v9R2cC-mLR6Jx4dSrcAIeYrQ8HPklBd834uc8mdEtJKnVwOG2hdCCxxDcM01SZvvwmy3-b34wtH6J9pAhTiSi8I_rMB5JZsHiYw/s800/VirtualBox_F42_01_01_2026_21_55_37.png&quot;
    style=&quot;display: block; padding: 1em 0; text-align: center; &quot;
    &gt;&lt;img
      alt=&quot;&quot;
      border=&quot;0&quot;
      width=&quot;320&quot;
      data-original-height=&quot;600&quot;
      data-original-width=&quot;800&quot;
      src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFoo-z-E1HQQ3KE7VqabSBtnb0OQYuSBHpo0UPCdG00jUiNH-oKY32gmFMmvrioKHmlydXOOM4wGS1fsdCrhc9w-T6v9R2cC-mLR6Jx4dSrcAIeYrQ8HPklBd834uc8mdEtJKnVwOG2hdCCxxDcM01SZvvwmy3-b34wtH6J9pAhTiSi8I_rMB5JZsHiYw/s320/VirtualBox_F42_01_01_2026_21_55_37.png&quot;
  /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
  &lt;a
    href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnoAcYbSe0vHN__VTI1Nqsfg2gORwkP-IWg1kqD9SD9TWioCqQFhUsllFq53ANstKXJkpyMOAS6ZTKh-yr0Wmv7hwvsxC3V_xmHWiFmZY9i4XtGlQ-6-M6sX1bDhV44bJGE8VyUf1jpVkJQtpBieuCiTY29cLhW_Es_BRUZ94FViK2jSQQshcqJO9Ar3I/s800/VirtualBox_F42_01_01_2026_21_55_46.png&quot;
    style=&quot;display: block; padding: 1em 0; text-align: center; &quot;
    &gt;&lt;img
      alt=&quot;&quot;
      border=&quot;0&quot;
      width=&quot;320&quot;
      data-original-height=&quot;600&quot;
      data-original-width=&quot;800&quot;
      src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnoAcYbSe0vHN__VTI1Nqsfg2gORwkP-IWg1kqD9SD9TWioCqQFhUsllFq53ANstKXJkpyMOAS6ZTKh-yr0Wmv7hwvsxC3V_xmHWiFmZY9i4XtGlQ-6-M6sX1bDhV44bJGE8VyUf1jpVkJQtpBieuCiTY29cLhW_Es_BRUZ94FViK2jSQQshcqJO9Ar3I/s320/VirtualBox_F42_01_01_2026_21_55_46.png&quot;
  /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
  &lt;a
    href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjq7knveWUnBZVQyXZcbzT8CNk3jmkCtyXL2ZlmBp32z8HPYtZxwqNNzrLTe-JGMg3q3A8EFkRApPyJXaIjt11Jvdypc04eQjhsrOAxyJ38utLS0ZkgGowBDTW_HWZlJjrmZhOpIoIQx3No1VLD9Hw0mJHDbbe-iiTUDKYHQ1TDeBmqtmuBLqaw_V_eYUA/s800/VirtualBox_F42_01_01_2026_21_56_02.png&quot;
    style=&quot;display: block; padding: 1em 0; text-align: center; &quot;
    &gt;&lt;img
      alt=&quot;&quot;
      border=&quot;0&quot;
      width=&quot;320&quot;
      data-original-height=&quot;600&quot;
      data-original-width=&quot;800&quot;
      src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjq7knveWUnBZVQyXZcbzT8CNk3jmkCtyXL2ZlmBp32z8HPYtZxwqNNzrLTe-JGMg3q3A8EFkRApPyJXaIjt11Jvdypc04eQjhsrOAxyJ38utLS0ZkgGowBDTW_HWZlJjrmZhOpIoIQx3No1VLD9Hw0mJHDbbe-iiTUDKYHQ1TDeBmqtmuBLqaw_V_eYUA/s320/VirtualBox_F42_01_01_2026_21_56_02.png&quot;
  /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
  &lt;a
    href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZh3cy2PfHVd74Jm2gTsvFZuhpg4b61pD9pdn2A7wZ6EBlRZzuAPXLukW4pS1A9yIbPD_M-xEhptOx-CRgTaEuzZFjYugqy6dcNokY_gp8VuA-WcFNc8EF98GTVprfNBXyWDgZ39oTAUz0_XWvSAu4sN2aFMfXeZh0_13KkcK5H2g3tZsWb5rGW03A8Dk/s800/VirtualBox_F42_01_01_2026_21_56_27.png&quot;
    style=&quot;display: block; padding: 1em 0; text-align: center; &quot;
    &gt;&lt;img
      alt=&quot;&quot;
      border=&quot;0&quot;
      width=&quot;320&quot;
      data-original-height=&quot;600&quot;
      data-original-width=&quot;800&quot;
      src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZh3cy2PfHVd74Jm2gTsvFZuhpg4b61pD9pdn2A7wZ6EBlRZzuAPXLukW4pS1A9yIbPD_M-xEhptOx-CRgTaEuzZFjYugqy6dcNokY_gp8VuA-WcFNc8EF98GTVprfNBXyWDgZ39oTAUz0_XWvSAu4sN2aFMfXeZh0_13KkcK5H2g3tZsWb5rGW03A8Dk/s320/VirtualBox_F42_01_01_2026_21_56_27.png&quot;
  /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
  &lt;a
    href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZhiqUorMinxHQDSjMiBXjHoXnCVTP6sMUYf9x2injnvrkiJZpZ6s78r2tGCSSfy2fNWxVOCkJJeEhYFvA0Jx7lTgmWaq_vG8bpePZYenLM2We1DRz0ONxaD2QVNdNq8N5ZeDUeCiTnuhD7FSJjdBBQwWIgRWy-ko4JcyPZEShSVK-vRwEXEPmVJ3K3z0/s800/VirtualBox_F42_01_01_2026_21_56_37.png&quot;
    style=&quot;display: block; padding: 1em 0; text-align: center; &quot;
    &gt;&lt;img
      alt=&quot;&quot;
      border=&quot;0&quot;
      width=&quot;320&quot;
      data-original-height=&quot;600&quot;
      data-original-width=&quot;800&quot;
      src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZhiqUorMinxHQDSjMiBXjHoXnCVTP6sMUYf9x2injnvrkiJZpZ6s78r2tGCSSfy2fNWxVOCkJJeEhYFvA0Jx7lTgmWaq_vG8bpePZYenLM2We1DRz0ONxaD2QVNdNq8N5ZeDUeCiTnuhD7FSJjdBBQwWIgRWy-ko4JcyPZEShSVK-vRwEXEPmVJ3K3z0/s320/VirtualBox_F42_01_01_2026_21_56_37.png&quot;
  /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
  &lt;a
    href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgohHaiXOK-5yPpSuJnzV9pbGhFQGrV4IB73RdkFp9MOdrui9Mg3WH5oPX8lTL-eq8OpHYtwSoytvxMwyV6hXbGb162VGAkZSMakpFStXsApJx2eykRJRW_jcY_lPZx1abuANoJH_q_RsbCjET6cz6XF8rjh-yQJqksf9YNkD4BZJcKzd-JKEfAB-cMKu4/s800/VirtualBox_F42_01_01_2026_21_56_49.png&quot;
    style=&quot;display: block; padding: 1em 0; text-align: center; &quot;
    &gt;&lt;img
      alt=&quot;&quot;
      border=&quot;0&quot;
      width=&quot;320&quot;
      data-original-height=&quot;600&quot;
      data-original-width=&quot;800&quot;
      src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgohHaiXOK-5yPpSuJnzV9pbGhFQGrV4IB73RdkFp9MOdrui9Mg3WH5oPX8lTL-eq8OpHYtwSoytvxMwyV6hXbGb162VGAkZSMakpFStXsApJx2eykRJRW_jcY_lPZx1abuANoJH_q_RsbCjET6cz6XF8rjh-yQJqksf9YNkD4BZJcKzd-JKEfAB-cMKu4/s320/VirtualBox_F42_01_01_2026_21_56_49.png&quot;
  /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
  &lt;a
    href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdA2yzvrA4dwpGRAOyj0v1CgYD8wGf-CFCO5x4ebOjv08kyiD5-jvi_agubfJJoDvqsK27ZvLjiksYjla1gFOGhX66C9GeFJ1nhzrIdtNVzVHKO-u9DIxy7N21b04IV4jq0pChiZLQjcVH8cW09-nKhR1b7GPmp01UJR_CsnAVuz_ufoqYhXi626S_pZY/s800/VirtualBox_F42_01_01_2026_21_57_51.png&quot;
    style=&quot;display: block; padding: 1em 0; text-align: center; &quot;
    &gt;&lt;img
      alt=&quot;&quot;
      border=&quot;0&quot;
      width=&quot;320&quot;
      data-original-height=&quot;600&quot;
      data-original-width=&quot;800&quot;
      src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdA2yzvrA4dwpGRAOyj0v1CgYD8wGf-CFCO5x4ebOjv08kyiD5-jvi_agubfJJoDvqsK27ZvLjiksYjla1gFOGhX66C9GeFJ1nhzrIdtNVzVHKO-u9DIxy7N21b04IV4jq0pChiZLQjcVH8cW09-nKhR1b7GPmp01UJR_CsnAVuz_ufoqYhXi626S_pZY/s320/VirtualBox_F42_01_01_2026_21_57_51.png&quot;
  /&gt;&lt;/a&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://8thstring.blogspot.com/feeds/6025992860029870076/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/717820506911776525/6025992860029870076' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/717820506911776525/posts/default/6025992860029870076'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/717820506911776525/posts/default/6025992860029870076'/><link rel='alternate' type='text/html' href='http://8thstring.blogspot.com/2026/01/fedora-42-workstation-installation.html' title='Fedora 42 Workstation installation screen capture'/><author><name>Techno Scavenger</name><uri>http://www.blogger.com/profile/17927601050941548819</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsU0GDe5I_LfLKAsIXyllinl92alTFDRveOV7ERHe-BaY1Jz03NbnS1ooy7raionYkaErDSfBxPaAVL9lvjXz5-DNkJmAtmdUeWjs-rPqRtFVoS2ZgFzJbe3dTooMdH7hACf2C38t8fcUmTyLdSbe0Q2HKkvhqRTKGgrVrT6KGDie7uiOxwvtFxjTigZM/s72-c/VirtualBox_F42_01_01_2026_21_40_11.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-717820506911776525.post-9050405045715460693</id><published>2026-01-01T21:16:00.000-06:00</published><updated>2026-01-01T21:16:56.515-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Fedora"/><category scheme="http://www.blogger.com/atom/ns#" term="VirtualBox"/><title type='text'>Error opening directory &#39;/media/sf_C_DRIVE&#39;: Permission denied</title><content type='html'>I tried to share a folder from Windows 10 host to Kali 2020.1 Linux guest using VirtualBox but I am getting the following error message:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
Error opening directory &#39;/media/sf_C_DRIVE&#39;: Permission denied&lt;/blockquote&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLa-2428QvuFbTY_DgJqte1hAkIOpbk7p_tNwNvN2LLg972EZcX7H6YE-NpWf509k02ZmzPK-MskyOBso7R9vLbkPmWo2ef8l1TPLcEu1uSLkWeEfBIDq1k_BTdME7b368gTJ3j1HQhHM/s1600/Screenshot_2020-02-13_22-00-35.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;513&quot; data-original-width=&quot;650&quot; height=&quot;252&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLa-2428QvuFbTY_DgJqte1hAkIOpbk7p_tNwNvN2LLg972EZcX7H6YE-NpWf509k02ZmzPK-MskyOBso7R9vLbkPmWo2ef8l1TPLcEu1uSLkWeEfBIDq1k_BTdME7b368gTJ3j1HQhHM/s320/Screenshot_2020-02-13_22-00-35.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
To fix, do:&lt;br /&gt;
&lt;div class=&quot;code&quot; style=&quot;background-color: #ffffee; border: 1px solid rgb(153, 102, 0); padding: 0.5em;&quot;&gt;
&lt;pre style=&quot;display: inline; font-family: monospace; font-size: 100%; margin: 0px; white-space: pre-wrap;&quot;&gt;$: sudo adduser $USER vboxsf
&lt;/pre&gt;
&lt;/div&gt;
Then log-off then log back in. If this does not work, reboot the VM&lt;br /&gt;
&lt;br /&gt;
Getting similar issue using Fedora 33 on VirtualBox 7.0.12 (tested up to Fedora 41 [VBox 7.2.4]) , below is the error message
&lt;blockquote&gt;This location could not be displayed
You do not have the permissions necessary to view the contents of &quot;sf_D_DRIVE&quot;&lt;/blockquote&gt;
To fix do the following and reboot the VM.
&lt;div class=&quot;code&quot; style=&quot;background-color: #ffffee; border: 1px solid rgb(153, 102, 0); padding: 0.5em;&quot;&gt;
&lt;pre style=&quot;display: inline; font-family: monospace; font-size: 100%; margin: 0px; white-space: pre-wrap;&quot;&gt;$: sudo usermod -a -G vboxsf $USER
&lt;/pre&gt;
&lt;/div&gt;

Refs:&lt;br /&gt;
&lt;a href=&quot;https://stackoverflow.com/questions/26740113/virtualbox-shared-folder-permissions&quot;&gt;https://stackoverflow.com/questions/26740113/virtualbox-shared-folder-permissions&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://8thstring.blogspot.com/feeds/9050405045715460693/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/717820506911776525/9050405045715460693' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/717820506911776525/posts/default/9050405045715460693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/717820506911776525/posts/default/9050405045715460693'/><link rel='alternate' type='text/html' href='http://8thstring.blogspot.com/2020/02/error-opening-directory-mediasfcdrive.html' title='Error opening directory &#39;/media/sf_C_DRIVE&#39;: Permission denied'/><author><name>Techno Scavenger</name><uri>http://www.blogger.com/profile/17927601050941548819</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLa-2428QvuFbTY_DgJqte1hAkIOpbk7p_tNwNvN2LLg972EZcX7H6YE-NpWf509k02ZmzPK-MskyOBso7R9vLbkPmWo2ef8l1TPLcEu1uSLkWeEfBIDq1k_BTdME7b368gTJ3j1HQhHM/s72-c/Screenshot_2020-02-13_22-00-35.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-717820506911776525.post-4939164303812561820</id><published>2025-12-25T00:15:00.035-06:00</published><updated>2025-12-25T04:24:20.236-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Rust"/><category scheme="http://www.blogger.com/atom/ns#" term="Ubuntu"/><category scheme="http://www.blogger.com/atom/ns#" term="Xubuntu"/><title type='text'>Rust and WebAssembly quick start guide 2025</title><content type='html'>&lt;h1&gt;Rust and WebAssembly quick start guide 2025&lt;/h1&gt;
As of December 2025, Rust and WebAssembly is reorganizing. Documentation is
currently out of date and not working. This is my notes on getting started using
Rust WebAssembly. Most of the
&lt;a href=&quot;https://rustwasm.github.io/book/game-of-life/setup.html&quot;
  &gt;documentation&lt;/a
&gt;
still works - below is distilled version. &lt;br /&gt;&lt;br /&gt;
Install Rust toolchain
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;$ curl --proto &#39;=https&#39; --tlsv1.2 -sSf https://sh.rustup.rs | sh
&lt;/code&gt;&lt;/pre&gt;
Below shows my Rust toolchain versions
&lt;div class=&quot;code&quot; style=&quot;background-color: #fff; border: 1px solid rgb(185,185,185); border-radius: 1px; border-top-color: rgb(160,160,160); padding: 0.5em&quot;&gt;
&lt;pre style=&quot;font-family: monospace; font-size: 100%; margin: 0px; display:inline;  white-space: pre-wrap;&quot;&gt;
q@x1m9:~/tmp$ cargo --version
cargo 1.92.0 (344c4567c 2025-10-21)
q@x1m9:~/tmp$ rustc --version
rustc 1.92.0 (ded5c06cf 2025-12-08)
&lt;/pre&gt;
&lt;/div&gt;
&lt;br/&gt;&lt;br/&gt;
Install &lt;span style=&quot;border: 1px solid #DDD;line-height: 1.5em;color: #555;padding: 0.1em;margin: -1px 0;border-radius: 0.4em;font-family:monospace;&quot;&gt;wasm-pack&lt;/span&gt; - your one-stop shop for building, testing, and publishing Rust-generated WebAssembly.
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;$ sudo apt install build-essential
$ cargo install wasm-pack
&lt;/code&gt;&lt;/pre&gt;

wasm-pack version
&lt;div class=&quot;code&quot; style=&quot;background-color: #fff; border: 1px solid rgb(185,185,185); border-radius: 1px; border-top-color: rgb(160,160,160); padding: 0.5em&quot;&gt;
&lt;pre style=&quot;font-family: monospace; font-size: 100%; margin: 0px; display:inline;  white-space: pre-wrap;&quot;&gt;
q@x1m9:~/tmp$ wasm-pack --version
wasm-pack 0.13.1
&lt;/pre&gt;
&lt;/div&gt;
&lt;br/&gt;&lt;br/&gt;

Install &lt;span style=&quot;border: 1px solid #DDD;line-height: 1.5em;color: #555;padding: 0.1em;margin: -1px 0;border-radius: 0.4em;font-family:monospace;&quot;&gt;cargo-generate&lt;/span&gt; - helps you get up and running quickly with a new Rust project by leveraging a pre-existing git repository as a template.
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;$ sudo apt install libssl-dev
$ sudo apt install pkg-config
$ cargo install cargo-generate
&lt;/code&gt;&lt;/pre&gt;

cargo-generate version
&lt;div class=&quot;code&quot; style=&quot;background-color: #fff; border: 1px solid rgb(185,185,185); border-radius: 1px; border-top-color: rgb(160,160,160); padding: 0.5em&quot;&gt;
&lt;pre style=&quot;font-family: monospace; font-size: 100%; margin: 0px; display:inline;  white-space: pre-wrap;&quot;&gt;
q@x1m9:~/tmp$ cargo-generate --version
cargo generate 0.23.7
&lt;/pre&gt;
&lt;/div&gt;
&lt;br/&gt;&lt;br/&gt;

Install &lt;span style=&quot;border: 1px solid #DDD;line-height: 1.5em;color: #555;padding: 0.1em;margin: -1px 0;border-radius: 0.4em;font-family:monospace;&quot;&gt;npm&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;
Install node version manager - &lt;span style=&quot;border: 1px solid #DDD;line-height: 1.5em;color: #555;padding: 0.1em;margin: -1px 0;border-radius: 0.4em;font-family:monospace;&quot;&gt;nvm&lt;/span&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
&lt;/code&gt;&lt;/pre&gt;

nvm version
&lt;div class=&quot;code&quot; style=&quot;background-color: #fff; border: 1px solid rgb(185,185,185); border-radius: 1px; border-top-color: rgb(160,160,160); padding: 0.5em&quot;&gt;
&lt;pre style=&quot;font-family: monospace; font-size: 100%; margin: 0px; display:inline;  white-space: pre-wrap;&quot;&gt;
q@x1m9:~/tmp$ nvm --version
0.40.3
&lt;/pre&gt;
&lt;/div&gt;
&lt;br/&gt;&lt;br/&gt;
Now install latest version of node
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;$ nvm install node
&lt;/code&gt;&lt;/pre&gt;

node version
&lt;div class=&quot;code&quot; style=&quot;background-color: #fff; border: 1px solid rgb(185,185,185); border-radius: 1px; border-top-color: rgb(160,160,160); padding: 0.5em&quot;&gt;
&lt;pre style=&quot;font-family: monospace; font-size: 100%; margin: 0px; display:inline;  white-space: pre-wrap;&quot;&gt;
q@x1m9:~/tmp$ node --version
v25.2.1
&lt;/pre&gt;
&lt;/div&gt;

&lt;br/&gt;&lt;br/&gt;
Clone project template
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;$ cargo generate --git https://github.com/rustwasm/wasm-pack-template.git --name wasm-game-of-life
$ cd wasm-game-of-life
&lt;/code&gt;&lt;/pre&gt;

&lt;br/&gt;&lt;br/&gt;
Build the project
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;$ wasm-pack build
&lt;/code&gt;&lt;/pre&gt;

&lt;br/&gt;&lt;br/&gt;
Putting it into a webpage, run in project root
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;$ sudo apt install git
$ npm init wasm-app www
&lt;/code&gt;&lt;/pre&gt;

&lt;br/&gt;&lt;br/&gt;
Install dependencies 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;$ cd ~/p/wasm-game-of-life/www
$ npm install
&lt;/code&gt;&lt;/pre&gt;

&lt;br/&gt;&lt;br/&gt;
Edit ~/p/wasm-game-of-life/www/package.json 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;$ nvim ~/p/wasm-game-of-life/www/package.json 
&lt;/code&gt;&lt;/pre&gt;

&lt;br/&gt;&lt;br/&gt;
Add wasm-game-of-life to dependencies section of package.json and also note that devDependencies is updated.
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{
  &quot;name&quot;: &quot;create-wasm-app&quot;,
  &quot;version&quot;: &quot;0.1.0&quot;,
  &quot;description&quot;: &quot;create an app to consume rust-generated wasm packages&quot;,
  &quot;main&quot;: &quot;index.js&quot;,
  &quot;bin&quot;: {
    &quot;create-wasm-app&quot;: &quot;.bin/create-wasm-app.js&quot;
  },
  &quot;scripts&quot;: {
    &quot;build&quot;: &quot;webpack --config webpack.config.js&quot;,
    &quot;start&quot;: &quot;webpack-dev-server&quot;
  },
  &quot;repository&quot;: {
    &quot;type&quot;: &quot;git&quot;,
    &quot;url&quot;: &quot;git+https://github.com/rustwasm/create-wasm-app.git&quot;
  },
  &quot;keywords&quot;: [
    &quot;webassembly&quot;,
    &quot;wasm&quot;,
    &quot;rust&quot;,
    &quot;webpack&quot;
  ],
  &quot;author&quot;: &quot;Ashley Williams &lt;ashley666ashley@gmail.com&gt;&quot;,
  &quot;license&quot;: &quot;(MIT OR Apache-2.0)&quot;,
  &quot;bugs&quot;: {
    &quot;url&quot;: &quot;https://github.com/rustwasm/create-wasm-app/issues&quot;
  },
  &quot;homepage&quot;: &quot;https://github.com/rustwasm/create-wasm-app#readme&quot;,
  &quot;devDependencies&quot;: {
    &quot;webpack&quot;: &quot;^5.0.0&quot;,
    &quot;webpack-cli&quot;: &quot;^5.0.0&quot;,
    &quot;webpack-dev-server&quot;: &quot;^4.0.0&quot;,
    &quot;copy-webpack-plugin&quot;: &quot;^11.0.0&quot;,
    &quot;hello-wasm-pack&quot;: &quot;^0.1.0&quot;
  },
  &quot;dependencies&quot;: {
    &quot;wasm-game-of-life&quot;: &quot;file:../pkg&quot;
  }
}
&lt;/code&gt;&lt;/pre&gt;


&lt;br/&gt;&lt;br/&gt;
Edit ~/p/wasm-game-of-life/www/index.js
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;$ nvim ~/p/wasm-game-of-life/www/index.js
&lt;/code&gt;&lt;/pre&gt;

&lt;br/&gt;&lt;br/&gt;
Add wasm-game-of-life package to index.js
&lt;pre&gt;&lt;code class=&quot;language-javascript&quot;&gt;import * as wasm from &quot;wasm-game-of-life&quot;;

wasm.greet();
&lt;/code&gt;&lt;/pre&gt;

&lt;br/&gt;&lt;br/&gt;
Install wasm-game-of-life package and force clean as we have upgraded devDependencies 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;$ cd ~/p/wasm-game-of-life/www
$ rm -rf node_modules package-lock.json
$ npm install
&lt;/code&gt;&lt;/pre&gt;

&lt;br/&gt;&lt;br/&gt;
Fix ~/p/wasm-game-of-life/www/webpack.config.js
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;$ nvim ~/p/wasm-game-of-life/www/webpack.config.js
&lt;/code&gt;&lt;/pre&gt;

&lt;br/&gt;&lt;br/&gt;
Observe we have changed CopyWebpackPlugin and added asyncWebAssembly
&lt;pre&gt;&lt;code class=&quot;language-javascript&quot;&gt;const CopyWebpackPlugin = require(&quot;copy-webpack-plugin&quot;);
const path = require(&#39;path&#39;);

module.exports = {
  entry: &quot;./bootstrap.js&quot;,
  output: {
    path: path.resolve(__dirname, &quot;dist&quot;),
    filename: &quot;bootstrap.js&quot;,
  },
  mode: &quot;development&quot;,
  plugins: [
    new CopyWebpackPlugin({
      patterns: [
        { from: &quot;index.html&quot; },
      ],
    })
  ],
  experiments: {
    asyncWebAssembly: true,
  },
};
&lt;/code&gt;&lt;/pre&gt;

&lt;br/&gt;&lt;br/&gt;
Now run it
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;$ npm run start
&lt;/code&gt;&lt;/pre&gt;

&lt;br/&gt;&lt;br/&gt;
Open http://localhost:8080
</content><link rel='replies' type='application/atom+xml' href='http://8thstring.blogspot.com/feeds/4939164303812561820/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/717820506911776525/4939164303812561820' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/717820506911776525/posts/default/4939164303812561820'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/717820506911776525/posts/default/4939164303812561820'/><link rel='alternate' type='text/html' href='http://8thstring.blogspot.com/2025/12/rust-and-webassembly-quick-start-guide.html' title='Rust and WebAssembly quick start guide 2025'/><author><name>Techno Scavenger</name><uri>http://www.blogger.com/profile/17927601050941548819</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-717820506911776525.post-6237869344287713328</id><published>2025-11-27T15:14:00.000-06:00</published><updated>2025-11-27T15:14:37.417-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Ubuntu"/><category scheme="http://www.blogger.com/atom/ns#" term="VNC"/><title type='text'>Installing TigerVNC in Ubuntu 24.04</title><content type='html'>&lt;H1&gt;Installing TigerVNC in Ubuntu 24.04&lt;/H1&gt;
Ubuntu 24.04 supports RPD protocol but it behaves in a way that is not fit for my needs. The &lt;b&gt;Desktop Sharing&lt;/b&gt; mode needs to have a user logged in or set to automatically login on reboot. Anyone will have access to your desktop if they are physically present. The &lt;b&gt;Remote Login&lt;/b&gt; would have been the best option but when the connection is lost, all applications running on that session are gone. So you can&#39;t reconnect to that same session. 
&lt;br/&gt;&lt;br/&gt;
So, we are back to the tried and tested VNC protocol. To get TigerVNC working on Ubuntu 24.04 is a little tricky due to Wayland becoming the default in 24.04. To workaround Wayland, we need to install XFCE, like so:
&lt;div class=&quot;code&quot; style=&quot;background-color: #ffffee; border: 1px solid rgb(153, 102, 0); padding: 0.5em&quot;&gt;
&lt;pre style=&quot;font-family: monospace; font-size: 100%; margin: 0px; display:inline; white-space: pre-wrap;&quot;&gt;
$ sudo apt install --no-install-recommends xubuntu-desktop
&lt;/pre&gt;
&lt;/div&gt;
This installs base XFCE4 with very applications specific to XFCE. 
&lt;br/&gt;
&lt;br/&gt;
Install &lt;b&gt;xfce4-terminal&lt;/b&gt; for convenience. GNOME-Terminal is pretty heavy and uxterm/xterm are not to my liking. 
&lt;div class=&quot;code&quot; style=&quot;background-color: #ffffee; border: 1px solid rgb(153, 102, 0); padding: 0.5em&quot;&gt;
&lt;pre style=&quot;font-family: monospace; font-size: 100%; margin: 0px; display:inline; white-space: pre-wrap;&quot;&gt;
$ sudo apt install xfce4-terminal
&lt;/pre&gt;
&lt;/div&gt;
Now install TigerVNC
&lt;div class=&quot;code&quot; style=&quot;background-color: #ffffee; border: 1px solid rgb(153, 102, 0); padding: 0.5em&quot;&gt;
&lt;pre style=&quot;font-family: monospace; font-size: 100%; margin: 0px; display:inline; white-space: pre-wrap;&quot;&gt;
$ sudo apt install tigervnc-standalone-server
&lt;/pre&gt;
&lt;/div&gt;
Then set the password that will be used to connect to the VNC server by running it like below:
&lt;div class=&quot;code&quot; style=&quot;background-color: #ffffee; border: 1px solid rgb(153, 102, 0); padding: 0.5em&quot;&gt;
&lt;pre style=&quot;font-family: monospace; font-size: 100%; margin: 0px; display:inline; white-space: pre-wrap;&quot;&gt;
$ vncpasswd
&lt;/pre&gt;
&lt;/div&gt;
Now we have to define the mapping between a VNC session and user for that session. To do this open &lt;b&gt;/etc/tigervnc/vncserver.users&lt;/b&gt;, like:
&lt;div class=&quot;code&quot; style=&quot;background-color: #ffffee; border: 1px solid rgb(153, 102, 0); padding: 0.5em&quot;&gt;
&lt;pre style=&quot;font-family: monospace; font-size: 100%; margin: 0px; display:inline; white-space: pre-wrap;&quot;&gt;
$ sudo vim /etc/tigervnc/vncserver.users
&lt;/pre&gt;
&lt;/div&gt;
Below is an example that shows user &lt;b&gt;u1&lt;/b&gt; is mapped to VNC server session 2:
&lt;div class=&quot;code&quot; style=&quot;background-color: #fff; border: 1px solid rgb(185,185,185); border-radius: 1px; border-top-color: rgb(160,160,160); padding: 0.5em&quot;&gt;
&lt;pre style=&quot;font-family: monospace; font-size: 100%; margin: 0px; display:inline;  white-space: pre-wrap;&quot;&gt;
# TigerVNC User assignment
#
# This file assigns users to specific VNC display numbers.
# The syntax is &amp;lt;display&amp;gt;=&amp;lt;username&amp;gt;. E.g.:
#
# :2=andrew
# :3=lisa
:2=u1
&lt;/pre&gt;
&lt;/div&gt;
Now run VNC server, like:
&lt;div class=&quot;code&quot; style=&quot;background-color: #ffffee; border: 1px solid rgb(153, 102, 0); padding: 0.5em&quot;&gt;
&lt;pre style=&quot;font-family: monospace; font-size: 100%; margin: 0px; display:inline; white-space: pre-wrap;&quot;&gt;
$ vncserver -geometry=1360x768 -xstartup /usr/bin/startxfce4 :2 -localhost no
&lt;/pre&gt;
&lt;/div&gt;
Using RealVNC client on Windows, you can calculate geometry of the server like this to get maximum client area:
&lt;script src=&quot;https://gist.github.com/technoscavenger/1395761f33721dd37be86c83a5925816.js&quot;&gt;&lt;/script&gt;
The same script can be used to calculate client dimensions for remote desktop client. &lt;br/&gt;&lt;br/&gt;
Should you need to close/kill the session, do:
&lt;div class=&quot;code&quot; style=&quot;background-color: #ffffee; border: 1px solid rgb(153, 102, 0); padding: 0.5em&quot;&gt;
&lt;pre style=&quot;font-family: monospace; font-size: 100%; margin: 0px; display:inline; white-space: pre-wrap;&quot;&gt;
$ vncserver -kill :2
&lt;/pre&gt;
&lt;/div&gt;
&lt;br/&gt;&lt;br/&gt;
There is a &lt;b&gt;big caveat&lt;/b&gt; that I haven&#39;t figured out, yet. No user should be logged in to the console/physical session. Otherwise, everything goes crazy. 

&lt;br/&gt;
References:&lt;br/&gt;
&lt;a href=&quot;https://medium.com/oracledevs/your-next-developer-desktop-with-ubuntu-24-04-and-tigervnc-on-oci-d0356ffa0cf9&quot;&gt;https://medium.com/oracledevs/your-next-developer-desktop-with-ubuntu-24-04-and-tigervnc-on-oci-d0356ffa0cf9&lt;/a&gt;
</content><link rel='replies' type='application/atom+xml' href='http://8thstring.blogspot.com/feeds/6237869344287713328/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/717820506911776525/6237869344287713328' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/717820506911776525/posts/default/6237869344287713328'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/717820506911776525/posts/default/6237869344287713328'/><link rel='alternate' type='text/html' href='http://8thstring.blogspot.com/2025/04/installing-tigervnc-in-ubuntu-2404.html' title='Installing TigerVNC in Ubuntu 24.04'/><author><name>Techno Scavenger</name><uri>http://www.blogger.com/profile/17927601050941548819</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-717820506911776525.post-7536626091446333455</id><published>2025-10-29T18:08:00.000-05:00</published><updated>2025-10-29T18:08:41.100-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Winget"/><title type='text'>Install Winget on Windows 2022 or Windows 10 LSTC</title><content type='html'>&lt;h1&gt;Install Winget on Windows 2022 or Windows 10 LTSC&lt;/h1&gt;

&lt;h2&gt;Install Pre-reqs&lt;/h2&gt;

&lt;h3&gt;Install Microsoft.UI.Xaml/2.8.6&lt;/h3&gt;
Navigate to
&lt;a href=&quot;https://www.nuget.org/packages/Microsoft.UI.Xaml/2.8.6&quot;
  &gt;https://www.nuget.org/packages/Microsoft.UI.Xaml/2.8.6&lt;/a
&gt;, on the left side look for &lt;b&gt;Download Package&lt;/b&gt; button to download
microsoft.ui.xaml.2.8.6.nupkg. &lt;br /&gt;&lt;br /&gt;

Using 7-zip, extract
microsoft.ui.xaml.2.8.6.nupkg\tools\AppX\x64\Release\Microsoft.UI.Xaml.2.8.appx
&lt;br /&gt;&lt;br /&gt;

Install
&lt;div
  class=&quot;code&quot;
  style=&quot;background-color: #ffffee; border: 1px solid rgb(153, 102, 0); padding: 0.5em;&quot;
&gt;
  &lt;pre
    style=&quot;display: inline; font-family: monospace; font-size: 100%; margin: 0px; white-space: pre-wrap;&quot;
  &gt;
PS C:\&gt;Add-AppxPackage .\Microsoft.UI.Xaml.2.8.appx
&lt;/pre
  &gt;
&lt;/div&gt;

&lt;h3&gt;Install Microsoft.VCLibs.140.00.UWPDesktop&lt;/h3&gt;
Download
&lt;a href=&quot;https://aka.ms/Microsoft.VCLibs.x64.14.00.Desktop.appx&quot;
  &gt;https://aka.ms/Microsoft.VCLibs.x64.14.00.Desktop.appx&lt;/a
&gt;

&lt;br /&gt;&lt;br /&gt;
Install
&lt;div
  class=&quot;code&quot;
  style=&quot;background-color: #ffffee; border: 1px solid rgb(153, 102, 0); padding: 0.5em;&quot;
&gt;
  &lt;pre
    style=&quot;display: inline; font-family: monospace; font-size: 100%; margin: 0px; white-space: pre-wrap;&quot;
  &gt;
PS C:\&gt;Add-AppxPackage .\Microsoft.VCLibs.x64.14.00.Desktop.appx
&lt;/pre
  &gt;
&lt;/div&gt;

&lt;h2&gt;Install Winget&lt;/h2&gt;

Download Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle or any recent
versions (tested using 1.8.1911) from
&lt;a href=&quot;https://github.com/microsoft/winget-cli/releases/tag/v1.8.1911&quot;
  &gt;Github&lt;/a
&gt;
&lt;br /&gt;&lt;br /&gt;
Download license file 76fba573f02545629706ab99170237bc_License1.xml (should be
one of the artifacts) from Github, the same URL from above.
&lt;br /&gt;&lt;br /&gt;
Install (on elevated cmd/shell)
&lt;div
  class=&quot;code&quot;
  style=&quot;background-color: #ffffee; border: 1px solid rgb(153, 102, 0); padding: 0.5em;&quot;
&gt;
  &lt;pre
    style=&quot;display: inline; font-family: monospace; font-size: 100%; margin: 0px; white-space: pre-wrap;&quot;
  &gt;
PS C:\&gt;cd ~/Downloads
PS C:\Users\u1\Downloads&gt; Add-AppxProvisionedPackage -Online -PackagePath .\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle -LicensePath .\76fba573f02545629706ab99170237bc_License1.xml -Verbose
&lt;/pre
  &gt;
&lt;/div&gt;

&lt;br /&gt;If you are in a hurry, you can grab the script below and run it on a
PowerShell console
&lt;script src=&quot;https://gist.github.com/technoscavenger/37f06e23daa833d0c7bee1d378ff332e.js&quot;&gt;&lt;/script&gt;

&lt;br /&gt;And if you trust me ;), run below:
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;iex (Invoke-RestMethod -Uri &quot;https://gist.githubusercontent.com/technoscavenger/37f06e23daa833d0c7bee1d378ff332e/raw/122d300c8a6bb711dcd70652551599818dfdb09e/InstallWinget.ps1&quot;)
&lt;/code&gt;&lt;/pre&gt;

&lt;br /&gt;&lt;br /&gt;
Refs:
&lt;a
  href=&quot;https://8thstring.blogspot.com/2023/04/install-winget-on-windows-2022.html&quot;
  &gt;https://8thstring.blogspot.com/2023/04/install-winget-on-windows-2022.html&lt;/a
&gt;
</content><link rel='replies' type='application/atom+xml' href='http://8thstring.blogspot.com/feeds/7536626091446333455/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/717820506911776525/7536626091446333455' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/717820506911776525/posts/default/7536626091446333455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/717820506911776525/posts/default/7536626091446333455'/><link rel='alternate' type='text/html' href='http://8thstring.blogspot.com/2023/10/install-winget-on-windows-2022-or.html' title='Install Winget on Windows 2022 or Windows 10 LSTC'/><author><name>Techno Scavenger</name><uri>http://www.blogger.com/profile/17927601050941548819</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-717820506911776525.post-507044993133911769</id><published>2025-10-01T18:12:00.000-05:00</published><updated>2025-10-01T18:12:59.437-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="CPP"/><category scheme="http://www.blogger.com/atom/ns#" term="QNX"/><title type='text'>QNX: Running a function at specific interval using timer interrupt</title><content type='html'>&lt;pre&gt;&lt;code class=&quot;language-cpp&quot;&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;csignal&amp;gt;
#include &amp;lt;ctime&amp;gt;
#include &amp;lt;cerrno&amp;gt;
#include &amp;lt;cstring&amp;gt;
#include &amp;lt;unistd.h&amp;gt;
#include &amp;lt;sys/time.h&amp;gt;
#include &amp;lt;time.h&amp;gt;
#include &amp;lt;stdio.h&amp;gt;

void timer_handler(int signo) { 
    struct timeval tv;
    gettimeofday(&amp;amp;tv, NULL);
    char buf[100];
    struct tm* nowtm;
    nowtm = localtime(&amp;amp;tv.tv_sec);
    strftime(buf, sizeof(buf), &amp;quot;%Y-%m-%d %H:%M:%S&amp;quot;, nowtm);
    printf(&amp;quot;Timer expired at %s.%03ld\n&amp;quot;, buf, tv.tv_usec / 1000);
}

int main() {
    timer_t timerid;
    struct sigevent sev;
    struct itimerspec its;
    struct sigaction sa;

    // Install the timer handler
    sa.sa_flags = 0;
    sa.sa_handler = timer_handler;
    sigemptyset(&amp;amp;sa.sa_mask);
    if (sigaction(SIGRTMIN, &amp;amp;sa, NULL) == -1) {
        std::cerr &amp;lt;&amp;lt; &amp;quot;sigaction: &amp;quot; &amp;lt;&amp;lt; errno &amp;lt;&amp;lt; std::endl;
        return -1;
    }

    // Create the timer
    sev.sigev_notify = SIGEV_SIGNAL;
    sev.sigev_signo = SIGRTMIN;
    if (timer_create(CLOCK_REALTIME, &amp;amp;sev, &amp;amp;timerid) == -1) {
        std::cerr &amp;lt;&amp;lt; &amp;quot;timer_create: &amp;quot; &amp;lt;&amp;lt; errno &amp;lt;&amp;lt; std::endl;
        return -1;
    }

    // Set the timer to expire every second
    its.it_value.tv_sec = 1;
    its.it_value.tv_nsec = 0;
    its.it_interval.tv_sec = 1;
    its.it_interval.tv_nsec = 0;
    if (timer_settime(timerid, 0, &amp;amp;its, NULL) == -1) {
        std::cerr &amp;lt;&amp;lt; &amp;quot;timer_settime: &amp;quot; &amp;lt;&amp;lt; errno &amp;lt;&amp;lt; std::endl;
        return -1;
    }

    // Main loop
    while (true) {
        pause(); // Wait for signals
    }

    return 0;
}
&lt;/code&gt;&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://8thstring.blogspot.com/feeds/507044993133911769/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/717820506911776525/507044993133911769' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/717820506911776525/posts/default/507044993133911769'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/717820506911776525/posts/default/507044993133911769'/><link rel='alternate' type='text/html' href='http://8thstring.blogspot.com/2025/09/qnx-running-function-at-specific.html' title='QNX: Running a function at specific interval using timer interrupt'/><author><name>Techno Scavenger</name><uri>http://www.blogger.com/profile/17927601050941548819</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-717820506911776525.post-7339626839228124132</id><published>2025-09-21T20:57:00.000-05:00</published><updated>2025-09-21T20:57:22.948-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="CPP"/><category scheme="http://www.blogger.com/atom/ns#" term="Qt"/><title type='text'>Qt console hello world</title><content type='html'>&lt;h1&gt;Qt console hello world&lt;/h1&gt;
This guide shows how a Qt console hello world looks like.
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
  ▣ Open&amp;nbsp;&lt;b&gt;Qt Creator&lt;/b&gt;&amp;nbsp;and click on&amp;nbsp;&lt;b&gt;Create Project...&lt;/b&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
  &lt;a
    href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYp7yCrtOmqO5OwF-P2gbksASUApLU7NwgagysU-J-IFTMCHLHjMn6wJ2ZFSUdwbj969_tCEZIr8eNLiUpcag8RrQMdJ4b99kBOlyCCyYlPPbJuS-HVzswmccmRy5qayvlf1BL1b658tpY7ThdTT-t1Mllz3zqo-6Xrb2y-YchdJ7EGr7CFpWiyeRn/s1262/f.png&quot;
    style=&quot;margin-left: 1em; margin-right: 1em;&quot;
    &gt;&lt;img
      border=&quot;0&quot;
      data-original-height=&quot;732&quot;
      data-original-width=&quot;1262&quot;
      src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYp7yCrtOmqO5OwF-P2gbksASUApLU7NwgagysU-J-IFTMCHLHjMn6wJ2ZFSUdwbj969_tCEZIr8eNLiUpcag8RrQMdJ4b99kBOlyCCyYlPPbJuS-HVzswmccmRy5qayvlf1BL1b658tpY7ThdTT-t1Mllz3zqo-6Xrb2y-YchdJ7EGr7CFpWiyeRn/s16000/f.png&quot;
  /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div&gt;
  ▣ Create &lt;b&gt;Qt Console Application&lt;/b&gt; by following the section from @1 to
  @3.&amp;nbsp;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
  &lt;a
    href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKmftNAFQarGGd_Uoei7NqnBtVtxszrkXW0km-0grNMH3T2zw1qEzKpg_jBfpwSDaj9kC7PxKkOldru2yTDjc_jaspk2o6uNU-KK_2i1cLdkFVVR-DkpQsaV5CKuDGlLReW9jOdy67nas3MqD2EMqBEz3MrmHNQmi5Lu-CokmrnhY_Qe0-Jr0l9D7l/s882/g.png&quot;
    style=&quot;margin-left: 1em; margin-right: 1em;&quot;
    &gt;&lt;img
      border=&quot;0&quot;
      data-original-height=&quot;552&quot;
      data-original-width=&quot;882&quot;
      src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKmftNAFQarGGd_Uoei7NqnBtVtxszrkXW0km-0grNMH3T2zw1qEzKpg_jBfpwSDaj9kC7PxKkOldru2yTDjc_jaspk2o6uNU-KK_2i1cLdkFVVR-DkpQsaV5CKuDGlLReW9jOdy67nas3MqD2EMqBEz3MrmHNQmi5Lu-CokmrnhY_Qe0-Jr0l9D7l/s16000/g.png&quot;
  /&gt;&lt;/a&gt;
&lt;/div&gt;
▣ In &lt;b&gt;Project Location&lt;/b&gt; window provide a project name, i.e.,
&lt;b&gt;HelloWorldConsole&lt;/b&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
  &lt;a
    href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBwK8k0XtdFfia3Nl1NBojp5n15L8_GxAOldYkeCjayLCJlDDZedzWQZUEw6qeDFc_wM2lNcLGgHCqpbaMicMWkBndSEf0Wbq6P44RXqaIs4IcCHEzCRcVbFRF3nMKCWXCJqDRZtu6pAZw06u6ENnpYYsD0OH8XLk5MB3pjn2vDbbz48Gs7QQYYYN_/s802/Screenshot%202022-12-25%20142536.png&quot;
    style=&quot;margin-left: 1em; margin-right: 1em;&quot;
    &gt;&lt;img
      border=&quot;0&quot;
      data-original-height=&quot;525&quot;
      data-original-width=&quot;802&quot;
      src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBwK8k0XtdFfia3Nl1NBojp5n15L8_GxAOldYkeCjayLCJlDDZedzWQZUEw6qeDFc_wM2lNcLGgHCqpbaMicMWkBndSEf0Wbq6P44RXqaIs4IcCHEzCRcVbFRF3nMKCWXCJqDRZtu6pAZw06u6ENnpYYsD0OH8XLk5MB3pjn2vDbbz48Gs7QQYYYN_/s16000/Screenshot%202022-12-25%20142536.png&quot;
  /&gt;&lt;/a&gt;
&lt;/div&gt;
▣ In &lt;b&gt;Define Build System&lt;/b&gt; select &lt;b&gt;CMake&lt;/b&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
  &lt;a
    href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgu-mjmDDc1hZVcRMS9bzzdgE0naBSEH-SpaSRkUNP-VkgPuRLppgl1p7yKie2wyf0S0oBt3TjkhpHBOC5T-39KGEhYFCdEJHsafN3SfxzJC_aQeuTsmIuRf3dSoaK7ozg1kGywyby8WNTzGObjQWWQ7OoPGYQ-flc5Iyrmg54xfV2Djqu8Sx1vc96w/s802/Screenshot%202022-12-25%20142713.png&quot;
    style=&quot;margin-left: 1em; margin-right: 1em;&quot;
    &gt;&lt;img
      border=&quot;0&quot;
      data-original-height=&quot;525&quot;
      data-original-width=&quot;802&quot;
      src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgu-mjmDDc1hZVcRMS9bzzdgE0naBSEH-SpaSRkUNP-VkgPuRLppgl1p7yKie2wyf0S0oBt3TjkhpHBOC5T-39KGEhYFCdEJHsafN3SfxzJC_aQeuTsmIuRf3dSoaK7ozg1kGywyby8WNTzGObjQWWQ7OoPGYQ-flc5Iyrmg54xfV2Djqu8Sx1vc96w/s16000/Screenshot%202022-12-25%20142713.png&quot;
  /&gt;&lt;/a&gt;
&lt;/div&gt;
▣ In &lt;b&gt;Translation File&lt;/b&gt;, take the default values&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
  &lt;a
    href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8rsTlRiCKay5UKZcdCTvyONPu68mwTLw_6-KNF12LQXT5Gx4wQAyugnlFj5oqldggL-vQD6Ywu3mGG-Y4G1MwxXKU7TKm-VA0mK8cJ101Yisfa2VvwbrvXhr2tUOC56sJlwgER7X3TnCzZ5h46ZDNxh0-Eo2k0KQiDkLNV29YXUJbnzYcVQbVjnPo/s802/Screenshot%202022-12-25%20142811.png&quot;
    style=&quot;margin-left: 1em; margin-right: 1em;&quot;
    &gt;&lt;img
      border=&quot;0&quot;
      data-original-height=&quot;525&quot;
      data-original-width=&quot;802&quot;
      src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8rsTlRiCKay5UKZcdCTvyONPu68mwTLw_6-KNF12LQXT5Gx4wQAyugnlFj5oqldggL-vQD6Ywu3mGG-Y4G1MwxXKU7TKm-VA0mK8cJ101Yisfa2VvwbrvXhr2tUOC56sJlwgER7X3TnCzZ5h46ZDNxh0-Eo2k0KQiDkLNV29YXUJbnzYcVQbVjnPo/s16000/Screenshot%202022-12-25%20142811.png&quot;
  /&gt;&lt;/a&gt;
&lt;/div&gt;
▣ In &lt;b&gt;Kit Selection&lt;/b&gt;, select the toolchain kit to be used. Below shows only
one which is MinGW 64-bit.&amp;nbsp;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
  &lt;a
    href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyhkB3VO_NECCWLUl85o2CpzUAsgOlQFcjxr2JMk3LuRqSiTHU_TU-I3HxgYLO_TeI6L2cQY3XFII1AK5LboTYeYdu3sq3EE9E-Hd5d-LymhGntQf3AxkgQf2yavvyf-T3ZMflbP-RK2V6Oq3vpsYVBhCtDUwFcTu1bU1Pv3R61QFW_Po7UsDu67sb/s802/Screenshot%202022-12-25%20142916.png&quot;
    style=&quot;margin-left: 1em; margin-right: 1em;&quot;
    &gt;&lt;img
      border=&quot;0&quot;
      data-original-height=&quot;525&quot;
      data-original-width=&quot;802&quot;
      src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyhkB3VO_NECCWLUl85o2CpzUAsgOlQFcjxr2JMk3LuRqSiTHU_TU-I3HxgYLO_TeI6L2cQY3XFII1AK5LboTYeYdu3sq3EE9E-Hd5d-LymhGntQf3AxkgQf2yavvyf-T3ZMflbP-RK2V6Oq3vpsYVBhCtDUwFcTu1bU1Pv3R61QFW_Po7UsDu67sb/s16000/Screenshot%202022-12-25%20142916.png&quot;
  /&gt;&lt;/a&gt;
&lt;/div&gt;
▣ In &lt;b&gt;Project Management,&lt;/b&gt; take the default.&amp;nbsp;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
  &lt;a
    href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYkvSE2QWW4xYqc4fuoCqIUa27_tpe05v3zq5kvaTcW4-HzEvIb6EZC2WmI7ldG8SOO188B2KMOCubGjv7XdAsMlJ4A9ZXjLX7Q-DpbUdqQVPFqkZ0HcAtbc5y9ptACI694TFGFhRhnGVYXXXzQYN3LpDiszwmddDY3TnlG-1PjVL-Y0eJoydhNkL7/s802/Screenshot%202022-12-25%20143122.png&quot;
    style=&quot;margin-left: 1em; margin-right: 1em;&quot;
    &gt;&lt;img
      border=&quot;0&quot;
      data-original-height=&quot;525&quot;
      data-original-width=&quot;802&quot;
      src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYkvSE2QWW4xYqc4fuoCqIUa27_tpe05v3zq5kvaTcW4-HzEvIb6EZC2WmI7ldG8SOO188B2KMOCubGjv7XdAsMlJ4A9ZXjLX7Q-DpbUdqQVPFqkZ0HcAtbc5y9ptACI694TFGFhRhnGVYXXXzQYN3LpDiszwmddDY3TnlG-1PjVL-Y0eJoydhNkL7/s16000/Screenshot%202022-12-25%20143122.png&quot;
  /&gt;&lt;/a&gt;
&lt;/div&gt;
▣ In line 6, I have added an instruction to output Hello World in to the
console. Also changed to return 0 to exit the application as event loop is not
needed.
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
  &lt;a
    href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQVfczT5vakWy9eRXhg4WXDENi0CCXAxqPD7TmrY1zpxaV4FZm9fsA0iYQ2aZTyWU-5RsnozZHJ1YdWubt3ueXnKwQ8t75ZWg4nb8KBGE5OfM3vx3R6L6k_tdOYPgJwU7Fs8RVLvioJosiWip3q8R2T3qCkD9svBr0fOgOnqntAOWv6upYUcGnbn7e/s1262/Screenshot%202022-12-25%20161049.png&quot;
    style=&quot;margin-left: 1em; margin-right: 1em;&quot;
    &gt;&lt;img
      border=&quot;0&quot;
      data-original-height=&quot;732&quot;
      data-original-width=&quot;1262&quot;
      src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQVfczT5vakWy9eRXhg4WXDENi0CCXAxqPD7TmrY1zpxaV4FZm9fsA0iYQ2aZTyWU-5RsnozZHJ1YdWubt3ueXnKwQ8t75ZWg4nb8KBGE5OfM3vx3R6L6k_tdOYPgJwU7Fs8RVLvioJosiWip3q8R2T3qCkD9svBr0fOgOnqntAOWv6upYUcGnbn7e/s16000/Screenshot%202022-12-25%20161049.png&quot;
  /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div&gt;
  &lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;
  &lt;div&gt;▣ Gist source code shown below for convenience&lt;/div&gt;
  &lt;script src=&quot;https://gist.github.com/technoscavenger/1141dd80e4c6b8b8ed355c4d7653e701.js&quot;&gt;&lt;/script&gt;
  In Qt Creator 17.0.1/Qt 6.9.2, need to add &lt;b&gt;QTextStream&lt;/b&gt;
  &lt;script src=&quot;https://gist.github.com/technoscavenger/b5ccb464202b93e899227a7515ab523b.js&quot;&gt;&lt;/script&gt;
  &lt;div&gt;
    ▣ Running it using Qt Creator is well and good but we probably want to run
    it external to the IDE. To deploy the binary with all the dependencies, open
    the compiler environment used to build the application. In the case above we
    have used Qt 6.4.1 (MinGW 11.2.0 64-bit).&amp;nbsp;
  &lt;/div&gt;
  &lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
    &lt;a
      href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgw8_3HJWz_DS30AvrNF8liB82shyrBOyVGqGH9wiLTFREpDXcQbsPyhBM6YJi3gNSn--0vwaIBKHvRzAtbnAtDD3jj7xNng8JpJ-312w6Yn8tKFhrfE2-BxxnzkR8yct9z9WI4BQ5QT0W9FLViEsksYCdThyL9nFgXRk8HBlXeEIwBj5YrDcbSbAA9/s422/image690.png&quot;
      style=&quot;margin-left: 1em; margin-right: 1em;&quot;
      &gt;&lt;img
        border=&quot;0&quot;
        data-original-height=&quot;422&quot;
        data-original-width=&quot;321&quot;
        src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgw8_3HJWz_DS30AvrNF8liB82shyrBOyVGqGH9wiLTFREpDXcQbsPyhBM6YJi3gNSn--0vwaIBKHvRzAtbnAtDD3jj7xNng8JpJ-312w6Yn8tKFhrfE2-BxxnzkR8yct9z9WI4BQ5QT0W9FLViEsksYCdThyL9nFgXRk8HBlXeEIwBj5YrDcbSbAA9/s16000/image690.png&quot;
    /&gt;&lt;/a&gt;
  &lt;/div&gt;
  ▣ Run the following command (change the paths as necessary)&lt;br /&gt;
  &lt;div
    class=&quot;code&quot;
    style=&quot;background-color: #ffffee; border: 1px solid rgb(153, 102, 0); padding: 0.5em;&quot;
  &gt;
    &lt;pre
      style=&quot;display: inline; font-family: monospace; font-size: 100%; margin: 0px; white-space: pre-wrap;&quot;
    &gt;
cd \
md tmp
cd tmp
copy C:\Users\t\Documents\build-HelloWorldConsole-Desktop_Qt_6_4_1_MinGW_64_bit-Debug\HelloWorldConsole.exe
windeployqt HelloWorldConsole.exe
&lt;/pre
    &gt;
  &lt;/div&gt;
  &lt;div&gt;
    ▣ The folder structure should look like this. It also shows a sample out
    from the application.&amp;nbsp;
  &lt;/div&gt;
  &lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
    &lt;a
      href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYxjWm1KUNb4WrXWcNCn9zslM1EXYvip1HSbIc5qfqNCtj5cPGXCwwhminqD9Oq4tHiiipa8on_PDiLChvAiUWwZUVL5GKMhtXBnmcRTIRa-WRUFVK2U-AOsY0kcaQJ7XabjXOJH4rjG31h9e-cVzHMPhKiKUsFJ5QxjLlQDm5nLMVoOqHDb7Z5y2d/s979/Screenshot%202022-12-25%20163754.png&quot;
      imageanchor=&quot;1&quot;
      style=&quot;margin-left: 1em; margin-right: 1em;&quot;
      &gt;&lt;img
        border=&quot;0&quot;
        data-original-height=&quot;512&quot;
        data-original-width=&quot;979&quot;
        src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYxjWm1KUNb4WrXWcNCn9zslM1EXYvip1HSbIc5qfqNCtj5cPGXCwwhminqD9Oq4tHiiipa8on_PDiLChvAiUWwZUVL5GKMhtXBnmcRTIRa-WRUFVK2U-AOsY0kcaQJ7XabjXOJH4rjG31h9e-cVzHMPhKiKUsFJ5QxjLlQDm5nLMVoOqHDb7Z5y2d/s16000/Screenshot%202022-12-25%20163754.png&quot;
    /&gt;&lt;/a&gt;
  &lt;/div&gt;
  &lt;br /&gt;
  &lt;div&gt;&lt;br /&gt;&lt;/div&gt;
  &lt;div&gt;Keywords: CPP, Qt, Hello World&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://8thstring.blogspot.com/feeds/7339626839228124132/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/717820506911776525/7339626839228124132' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/717820506911776525/posts/default/7339626839228124132'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/717820506911776525/posts/default/7339626839228124132'/><link rel='alternate' type='text/html' href='http://8thstring.blogspot.com/2022/12/qt-console-hello-world.html' title='Qt console hello world'/><author><name>Techno Scavenger</name><uri>http://www.blogger.com/profile/17927601050941548819</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYp7yCrtOmqO5OwF-P2gbksASUApLU7NwgagysU-J-IFTMCHLHjMn6wJ2ZFSUdwbj969_tCEZIr8eNLiUpcag8RrQMdJ4b99kBOlyCCyYlPPbJuS-HVzswmccmRy5qayvlf1BL1b658tpY7ThdTT-t1Mllz3zqo-6Xrb2y-YchdJ7EGr7CFpWiyeRn/s72-c/f.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-717820506911776525.post-6286858389439813875</id><published>2025-09-17T22:54:00.002-05:00</published><updated>2025-09-17T22:55:52.594-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Ubuntu"/><category scheme="http://www.blogger.com/atom/ns#" term="vmware"/><title type='text'>Several modules must be compiled when running VMware Workstation on Ubuntu</title><content type='html'>&lt;h2&gt;Several modules must be compiled when running VMware Workstation on Ubuntu&lt;/h2&gt;
I have a machine with Ubuntu 24.04.2 with VMware Workstation working as expected. When I connected to the machine Ubuntu told me there were packages available that can be updated inlcuding the kernel. So, I did the update and rebooted the machine. Running VMware Workstation failed with &quot;several modules must be compiled&quot;. The fix is quite easy, run the following to fix it. 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;$ sudo vmware-modconfig --console --install-all
&lt;/code&gt;&lt;/pre&gt;
Notes: &lt;br/&gt;
- VMWare Workstation: 17.6.3&lt;br/&gt;
- Host: Ubuntu 24.04.2 LTS&lt;br/&gt;
</content><link rel='replies' type='application/atom+xml' href='http://8thstring.blogspot.com/feeds/6286858389439813875/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/717820506911776525/6286858389439813875' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/717820506911776525/posts/default/6286858389439813875'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/717820506911776525/posts/default/6286858389439813875'/><link rel='alternate' type='text/html' href='http://8thstring.blogspot.com/2025/09/several-modules-must-be-compiled-when.html' title='Several modules must be compiled when running VMware Workstation on Ubuntu'/><author><name>Techno Scavenger</name><uri>http://www.blogger.com/profile/17927601050941548819</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-717820506911776525.post-274691695381662543</id><published>2025-09-12T22:03:00.001-05:00</published><updated>2025-09-12T22:03:06.725-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Assembly"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><title type='text'>Hello world assembly on x86 Linux</title><content type='html'>&lt;h2&gt;Hello world assembly on x86 Linux&lt;/h2&gt;
Save code below as &lt;b&gt;hello.asm&lt;/b&gt;
&lt;pre&gt;&lt;code class=&quot;language&quot;&gt;global _start

section .data
message: db &#39;hello, world!&#39;, 10

section .text
_start:
    mov     rax, 1          ; system call number should be stored in rax
    mov     rdi, 1          ; argument #1 in rdi, where to write (description)?
    mov     rsi, message    ; argument #2 in rsi, where does the string start?
    mov     rdx, 14         ; argument #3 in rdx, how many bytes to write?
    syscall                 ; this instruction invokes a system call

    mov     rax, 60         ; &#39;exit&#39; syscall number
    xor     rdi, rdi
    syscall
&lt;/code&gt;&lt;/pre&gt;
Now assemble/build the file
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;nasm -felf64 hello.asm -o hello.o
&lt;/code&gt;&lt;/pre&gt;
Link to create executable
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;ld -o hello hello.o
&lt;/code&gt;&lt;/pre&gt;
Run it
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;u1@v1vm10:~$ ./hello 
hello, world!
&lt;/code&gt;&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://8thstring.blogspot.com/feeds/274691695381662543/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/717820506911776525/274691695381662543' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/717820506911776525/posts/default/274691695381662543'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/717820506911776525/posts/default/274691695381662543'/><link rel='alternate' type='text/html' href='http://8thstring.blogspot.com/2025/09/hello-world-assembly-on-x86-linux.html' title='Hello world assembly on x86 Linux'/><author><name>Techno Scavenger</name><uri>http://www.blogger.com/profile/17927601050941548819</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-717820506911776525.post-5070721507796731461</id><published>2025-09-10T01:19:00.002-05:00</published><updated>2025-09-10T01:23:13.352-05:00</updated><title type='text'>Formatting code in Blogger</title><content type='html'>I have been using &lt;b&gt;Github gists&lt;/b&gt; to share code and I have no plan of
abandoning it. For smaller/one liners, I sometimes use div element with inline
CSS.&lt;br /&gt;&lt;br /&gt;

I have been exploring formatting my code directly in Blogger but it is mostly
hit and miss. I came accross
&lt;a href=&quot;https://highlightjs.org/&quot;&gt;highlight.js&lt;/a&gt; and I am impressed with
the result. &lt;br /&gt;&lt;br /&gt;

Below is a quick guide how to format code using
&lt;a href=&quot;https://highlightjs.org/&quot;&gt;highlight.js&lt;/a&gt;:
&lt;div&gt;
  &lt;ol style=&quot;text-align: left;&quot;&gt;
    &lt;li&gt;
      Open blogger template
      &lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
        &lt;a
          href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyk-dtwN-n7lYY25LOlTszqAXWR_oQyKf5RmSN0WEBMZY8ziFWJkodQk5kpwLGHyDUxsSt1ce2HWG1aNop8TxCzOo5KASd6BR_pEoGzdo7yn0qNANHO-9xCwj-3ZIW30WNUNDEpGfAvX545baj1256l3DAK2w7j9r5qLcWlQs2nkdW5pb2A092Qt7r6YQ/s1600/2025-09-09%2022_03_49-Downloads%20-%20File%20Explorer.png&quot;
          style=&quot;display: block; padding: 1em 0; text-align: left; &quot;
          &gt;&lt;img
            alt=&quot;&quot;
            border=&quot;0&quot;
            data-original-height=&quot;320&quot;
            data-original-width=&quot;628&quot;
            src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyk-dtwN-n7lYY25LOlTszqAXWR_oQyKf5RmSN0WEBMZY8ziFWJkodQk5kpwLGHyDUxsSt1ce2HWG1aNop8TxCzOo5KASd6BR_pEoGzdo7yn0qNANHO-9xCwj-3ZIW30WNUNDEpGfAvX545baj1256l3DAK2w7j9r5qLcWlQs2nkdW5pb2A092Qt7r6YQ/s1600/2025-09-09%2022_03_49-Downloads%20-%20File%20Explorer.png&quot;
        /&gt;&lt;/a&gt;
      &lt;/div&gt;
      &lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
        &lt;a
          href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMEoHatr2AA9wwrWzdmvew8_LL0pnyI72IPyJ1DkXrBhohCI_fPKXuLg6sPpDiW5zaU85g-Q1eoCnhuL8RWF3hmpQjpPCV6ZhyFOPS2Y5YeW_omxHX1bqPs6tTTk80S7EElrOu9MKQ6mTxRZ1q4yv041Qg9DNyrTq4dDRubHegJVjByDydeWenld65jrQ/s1600/2025-09-09%2022_08_37-Clipboard.png&quot;
          style=&quot;display: block; padding: 1em 0; text-align: left; &quot;
          &gt;&lt;img
            alt=&quot;&quot;
            border=&quot;0&quot;
            data-original-height=&quot;334&quot;
            data-original-width=&quot;346&quot;
            src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMEoHatr2AA9wwrWzdmvew8_LL0pnyI72IPyJ1DkXrBhohCI_fPKXuLg6sPpDiW5zaU85g-Q1eoCnhuL8RWF3hmpQjpPCV6ZhyFOPS2Y5YeW_omxHX1bqPs6tTTk80S7EElrOu9MKQ6mTxRZ1q4yv041Qg9DNyrTq4dDRubHegJVjByDydeWenld65jrQ/s1600/2025-09-09%2022_08_37-Clipboard.png&quot;
        /&gt;&lt;/a&gt;
      &lt;/div&gt;
    &lt;/li&gt;
    &lt;li&gt;
      Before the &lt;b&gt;&amp;lt;head&amp;gt;&lt;/b&gt; element, add the following&lt;br/&gt;
      &lt;script src=&quot;https://gist.github.com/technoscavenger/5bc4690da8fcb945d94b9eb742f5ddef.js&quot;&gt;&lt;/script&gt;
    &lt;/li&gt;
    &lt;li&gt;
      In the post itself, soround the code like:&lt;br/&gt;
      &lt;script src=&quot;https://gist.github.com/technoscavenger/979283fdba6f6c5584f4655217521994.js&quot;&gt;&lt;/script&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://8thstring.blogspot.com/feeds/5070721507796731461/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/717820506911776525/5070721507796731461' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/717820506911776525/posts/default/5070721507796731461'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/717820506911776525/posts/default/5070721507796731461'/><link rel='alternate' type='text/html' href='http://8thstring.blogspot.com/2025/09/formatting-code-in-blogger.html' title='Formatting code in Blogger'/><author><name>Techno Scavenger</name><uri>http://www.blogger.com/profile/17927601050941548819</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyk-dtwN-n7lYY25LOlTszqAXWR_oQyKf5RmSN0WEBMZY8ziFWJkodQk5kpwLGHyDUxsSt1ce2HWG1aNop8TxCzOo5KASd6BR_pEoGzdo7yn0qNANHO-9xCwj-3ZIW30WNUNDEpGfAvX545baj1256l3DAK2w7j9r5qLcWlQs2nkdW5pb2A092Qt7r6YQ/s72-c/2025-09-09%2022_03_49-Downloads%20-%20File%20Explorer.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-717820506911776525.post-5628359945187580693</id><published>2025-09-07T23:47:00.013-05:00</published><updated>2025-09-08T16:30:10.129-05:00</updated><title type='text'>Test page for code formatting</title><content type='html'>&lt;!-- HTML generated using hilite.me --&gt;
&lt;div
  style=&quot;background: #ffffff; overflow:auto;width:auto;border:solid gray;border-width:.1em .1em .1em .8em;padding:.2em .6em;&quot;
&gt;
  &lt;pre
    style=&quot;margin: 0; line-height: 125%;&quot;
  &gt;&lt;span&gt;&lt;/span&gt;netsh&lt;span style=&quot;color: #BBB&quot;&gt; &lt;/span&gt;advfirewall&lt;span style=&quot;color: #BBB&quot;&gt; &lt;/span&gt;firewall&lt;span style=&quot;color: #BBB&quot;&gt; &lt;/span&gt;add&lt;span style=&quot;color: #BBB&quot;&gt; &lt;/span&gt;rule&lt;span style=&quot;color: #BBB&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #963&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color: #333&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-color: #FFF0F0&quot;&gt;&amp;quot;RPC Endpoint Mapper&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #BBB&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #963&quot;&gt;dir&lt;/span&gt;&lt;span style=&quot;color: #333&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #080; font-weight: bold&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color: #BBB&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #963&quot;&gt;action&lt;/span&gt;&lt;span style=&quot;color: #333&quot;&gt;=&lt;/span&gt;allow&lt;span style=&quot;color: #BBB&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #963&quot;&gt;protocol&lt;/span&gt;&lt;span style=&quot;color: #333&quot;&gt;=&lt;/span&gt;TCP&lt;span style=&quot;color: #BBB&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #963&quot;&gt;localport&lt;/span&gt;&lt;span style=&quot;color: #333&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #60E; font-weight: bold&quot;&gt;135&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;

&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;netsh advfirewall firewall add rule name=&quot;RPC Endpoint Mapper&quot; dir=in action=allow protocol=TCP localport=135
&lt;/code&gt;&lt;/pre&gt;
Tags: &lt;br/&gt;
- Highlight.js&lt;br/&gt;
- hilite.me&lt;br/&gt;</content><link rel='replies' type='application/atom+xml' href='http://8thstring.blogspot.com/feeds/5628359945187580693/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/717820506911776525/5628359945187580693' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/717820506911776525/posts/default/5628359945187580693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/717820506911776525/posts/default/5628359945187580693'/><link rel='alternate' type='text/html' href='http://8thstring.blogspot.com/2025/09/test-code.html' title='Test page for code formatting'/><author><name>Techno Scavenger</name><uri>http://www.blogger.com/profile/17927601050941548819</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>