It seems like there is no person left on Earth who wouldn’t spend some time connected to some type of social media. It can be Facebook, YouTube, Instagram etc.
These platforms provide endless content that is easy to watch, but difficult to stop watching. Though it seems like these services are for free, we know they are definitely not. In return for free shorts, reels etc. you pay with an access to your personal information and an easy compilation of your behavioral patterns that allow companies to manipulate you. But what is more problematic is that you trade your own time for a chance to waste it on, mostly, useless content.
Why is it a problem you may ask? Well, since we don’t live forever, spending time using social media puts you in a kind of digital prison, which is difficult to escape as more and more time spent there. It is known that social media is addictive and that is why its effects are dangerous.
A good analogy can be an analogy with junk or, as it’s now called, ultra-processed foods. It is known that such food is, relatively, cheap, devoid of healthy content and very addictive. People whose diet is full of such food are prone to a following progression: being overweight, then obese, then type 2 diabetic.
The same is applicable to social media content. It’s cheap. It’s, mostly, devoid of healthy content and it’s very addictive. Well, what can we do in this case? Using the same analogy, it is known that the main component that is harmful in ultra-processed food are refined carbohydrates, especially, when they combined with refined seed oils. Refined carbohydrates are harmful, because they raise insulin hormone, that in turns promotes fat storage and hence weight gain. Solutions to this problems are intermittent fasting, which allows insulin hormone to become low and hence utilize stored fat for energy. And ketogenic diets, that achieve weight loss with a similar effect on insulin hormone.
Well, how is this applicable to social media? It seems reasonable that intermittent fasting or complete fasting from social media can be an effective approach to reclaim your time and start focusing your efforts somewhere else. Somewhere, where your time and effort may be helpful to you and other people in your life. We are talking about focusing your time on things you’d like to achieve or change. Things that require concentrated effort for long periods of time. Such an effort isn’t possible with destructive social media interference.
So, there you have it. One possible way forward is to delete some or all of your social media apps from your phone. Start intermittent fasting from social media for 16 or more hours a day, just like is done in 16:8 intermittent fasting, where you fast for 16 hours, and eat only within 8 hour eating window. Practice complete abstinence from social media for a number of days. What is known as prolonged fasting in a fasting world. Search for other ways to break the addiction, for you have only limited time on this Earth.
I was always intrigued by how operating systems worked under the hood. A couple of years ago I watched an interesting interview with David Cutler who was a chief architect of Windows NT. Microsoft started designing NT back in 1988 and released it in 1993 as Windows NT 3.1. David Cutler wrote most of the kernel himself and his code is still there in Windows 11.
Having watched the interview I searched for a book that would describe how Windows NT was designed and developed. What I found was a nonfiction book Showstopper! The Breakneck Race to Create Windows NT and the Next Generation at Microsoft by G. Pascal Zachary written in 1994. The book was interesting to read and it described what toll it took for developers to deliver Windows NT in a relatively short time period for OS development.
Last year I started to look for technical books on Windows that described design, architecture and hands-on details of the OS. There are only a few books that exist on the subject. Among the best known ones is Windows Internals series of books that had a number of editions since 1992 when Inside Windows NT book by Helen Custer was published. As of today, the latest edition of the two part Windows Internals series is 7th from 2016. These books are not cheap, but they are written by the experts in the field, such as Pavel Yosifovich, Alex Ionescu, Mark Russinovich, David Solomon and Andrea Alliev.
Since I wanted to start somewhere I chose to buy a used copy of Inside Windows NT. Even though the book is quite dated and is from 1992 it was still interesting to read and most parts of it are still relevant after 34 years. I think it’s because the book describes the design and architecture of Windows NT without going into specific technical details of OS implementation. Also, Helen Custer was a technical writer with Windows NT team and she did a very good job explaining how NT worked that is still enjoyable to read nowadays. Having said that there are parts of the book that are dated and no longer applicable, for example the Networking chapter. But, reading this book can provide a reader with the basic understanding of operating systems design that is a good foundation to next read books such as Windows Internals and other books on operating systems.
In parallel, I thought it’s good to get some hands on experience working with kernel related code. So, I searched for the books that authors of Windows Internals wrote and I found out that Pavel Yosifovich wrote a number of detailed technical books about Windows programming and among them Windows Kernel Programming book which I bought. This book provides hands-on lessons that can teach you how to write Windows software device drivers which are drivers that run in kernel mode. In general, in operating systems there are two modes of code execution. One is called a user mode where applications run with restricted privileges. When user applications need privileged access they call services that are executed in kernel mode to get the work done.
At this point I felt like I needed also to get a good understanding of operating systems design in general. So, I asked Gemini to give me a list of books which it did.
1. The “Gold Standard” for Theory
“Operating System Concepts” by Silberschatz, Galvin, and Gagne(Often called “The Dinosaur Book” because of its cover)
Why it’s great: This is the most widely used textbook in the world. It explains the “why” behind OS design—how CPU scheduling works, why we need virtual memory, and how file systems are structured.
Best for: A high-level, comprehensive overview of all concepts.
Note: It is very theoretical. You won’t see much actual code, but you will understand the logic that applies to all operating systems.
2. The Practical “In the Trenches” Choice
“Operating Systems: Three Easy Pieces” (OSTEP) by Remzi and Andrea Arpaci-Dusseau
Why it’s great: This book is legendary for being readable, witty, and free (available online). It breaks the OS down into three pillars: Virtualization, Concurrency, and Persistence.
Best for: Someone who finds traditional textbooks dry. It includes homework assignments and coding projects that make the concepts “click.”
Link to Electronics: It does a fantastic job explaining how software abstractions interact with physical hardware (RAM and Disk).
3. For the Hardcore Implementation
“Modern Operating Systems” by Andrew S. Tanenbaum
Best for: Understanding the “Microkernel vs. Monolithic” debate you’ve been looking into. It provides a very detailed look at the interface between hardware and software.
Why it’s great: Tanenbaum is the creator of MINIX, the OS that inspired Linux. This book is famous for its depth. It doesn’t just tell you how a kernel works; it shows you the trade-offs involved in building one.
So, here I am reading some of the books above and working with the Windows Kernel Programming book at the moment. Below, I’ll provide links to all the books above and some YouTube videos on the subject.
In the age of GenAI tools dominance it is easy to use these tools blindly, without thinking how the tools come up with their answers.
The main issue with treating these tools as a black box is the fact that people learn by making mistakes, while they apply what they try to learn. The problem with GenAI tools is that they give you a complete answer without you exerting any effort in trying to solve the problem on your own. Hence, you miss a critical step in a learning process, which is without a challenge there is no gain.
I can say this based on my own experience with using GenAI tools at work and at home for dozens if not hundreds times a day. The main issue with using GenAI tools at work, such as M365 Copilot Chat and the like, for software development tasks, is what I’ve mentioned above. These tools may give you a complete implementation that works, but you don’t learn anything new as a result, since you don’t try to implement that same thing on your own.
A good example, can be a situation where you’d like to have a Python script that can transform data from one format into another. Recently, I needed to transform an OWASP Dependency Check plugin JSON report into a more user friendly format, specifically into a CSV file (aka Excel) to be able to see security vulnerabilities at a glance and to be able to sort them by the NVD last updated date.
To write such a script in Python would take me some time for sure. For I need to understand how to parse JSON file, extract various fields and then write the data in to CSV file. I had a bright idea to use GenAI to do it quickly to save time and effort. Indeed, after a few back and forth iterations with M365 Copilot Chat I had a working Python script that delivered what I needed, without me even looking into the implementation. It was what I’ve mentioned a black box treatment of the GenAI response. It worked and I didn’t care how. But, the main point was, that I didn’t learn anything in the process and felt actually as I was cheating.
I needed to update the script in the end, so I did indeed look at the implementation. And it took me some time to figure out how it worked. It was written well and in a modular fashion. But, I think I’d never do it in a similar way as a GenAI model did. I was able to understand and adapt the code enough for it to work, but it didn’t work quite well. So, I said to myself, well it’s time to save my effort and asked GenAI to refactor it, which it did correctly first time.
So, in the end, I did save time on that script, and I did learn how it worked, since I was curious, but I didn’t get the same amount of experience, should I implement it on my own from start to finish.
In this case, I am not talking about GitHub Copilot, for I don’t use it currently. But, even using free GenAI tools can be harmful in the long run, if you treat them as black boxes, instead of tools that help you think better. They cannot substitute thinking, for then you become dumber in the process.
Also, with recent improvements in Anthropic Claude agents, people such as Andrej Karpathy state that we are in the new era of software programming. It sounds that it’s a valid statement to make, since he’s not the only one noticing this change in performance of GenAI agents, but the crucial point is that people who didn’t have software programming experience before starting to use such tools will certainly have a gap in programming skills, for they didn’t face challenges that taught them how to really think. Karpathy is a good example, since he was a programmer before GenAI tools where on the horizon.
In the end, GenAI tools can be very helpful and effective in helping you learn whatever topic you want, but they can be as effective in preventing you from gaining valuable experience while you master the subject.
I think there’s hardly a person left who didn’t hear about 3I/ATLAS. Third interstellar object that has visited us and is currently moving through Solar System on its way towards Jupiter Hill radius.
This interstellar object is unlike any comet known to us so far. With its anomalies, that some of them have not been explained, it sparks imagination of observers. For it could be an artificial object visiting us from afar.
I am interested in astronomy, space exploration in general and Solar System exploration in particular. So, I tend to follow what’s new in this area. As soon as I heard about 3I/ATLAS I knew I needed to check what Avi Loeb had to say on the subject, for I knew he had provided an interesting hypothesis about Oumuamua being a light sail object of a potential artificial origin.
Lo and behold, back in the summer of 2025 Avi wrote a paper where he mentioned that 3I/ATALS could be a spacecraft that could release probes, but most importantly, he mentioned Dark Forest theory. I was curious what that dark forest was about and this way I found out about The Dark Forest book in the Remembrance of Earth’s Past trilogy written by Chinese science fiction writer Liu Cixin.
I ordered the first book in a series on September 9th, 2025. It turned out that the book was very interesting to say the least. I think the trilogy is the best hard science fiction that I ever read. Maybe, I didn’t read a lot of sci-fi.
I forgot to mentioned that before reading the book I started to watch Netflix series that was based on the trilogy. I liked first few episodes a lot. But the book is much more better, and they changed almost everything in the series, which I found dubious. There is a Chinese movie adaptation of The Three-Body problem book which is quite faithful to the book content, but that series is a little bit boring because of this.
Well, having finished reading the trilogy I was curious whether other books of Liu Cixin were that good and bought Ball Lightning on Sep 29th, 2025. That book was interesting, but underwhelming in comparison to The Three-Bod Problem. I should mentioned that the book was written before the trilogy, though. Recently, he hasn’t written new sci-fi novels that could compare to the trilogy. I watched a couple of interviews with Liu Cixin and he mentioned that it’s difficult to write something significant after the trilogy.
The hard sci-fi books above were very influential, so I used Copilot Chat to search for similar books. In the end, I found Revelation Space series by Alastair Reynolds and on Oct 28th, 2025 I got Revelation Space book. This series was quite different in comparison to Three-Body Problem, but still it was very captivating reading. I ended up reading all the books in the series including the recent forth one Inhibitor Phase that I got on Dec 10th, 2025. I read a number of his other books since then.
Next, I figured out that buying books was quite expensive and discovered that borrowing books from a local library was free and it had most of the books by Alastair Reynolds and other sci-fi authors.
So, after reading 11 books by Reynolds, which I will list later in the post, I thought I needed to find something similar again. Watching a YouTuber that talks about sci-fi books he reads I found out about Spin by Robert Charles Wilson. I, actually, bought that book on Jan 1st, 2026, since library didn’t have it. I liked that book a lot. It is different in many ways in comparison to Three-Body Problem and books by Reynolds. It has a number of very interesting hard sci-fi ideas which you can discover by reading the book.
Then I checked what other books he wrote, and as a consequence read his The Chronoliths novel, which I borrowed in January 2025 from the library.
Well, what should I read next? I re-watched recently Contact movie which was based on the Contact novel by Carl Sagan. Well, I needed to read it too. So, I borrowed it from the library and finished recently.
Now, in February 2026 I am reading The Revelation Space Collection Volume 1 and 2, which is a collection of sci-fi stories happening in the Revelation Space Universe that Alastair Reynolds written throughout the years starting from 1990 and until 2021.
I also ordered Ring by Stephen Baxter on Feb 7th, 2026 and I have a book of stories by Ted Chiang Exhalation and a novel Children of Time by Adrian Tchaikovsky on hold in the library.
Statistics
To summarize from Sep 9th 2025 until February 8th, 2026 which is a period of five months I’ve read 18 books.
Each book on average had 500 pages which makes it 18 * 500 = 9,000 pages. Or 9000 / 5 = 1800 pages a month, or 60 pages a day:
The Three-Body Problem
The Dark Forest
Death’s End
Ball Lightning
Revelation Space
Redemption Ark
Absolution Gap
Inhibitor Phase
Chasm City
Aurora Rising
Elysium Fire
Machine Vendetta
House of Suns
Pushing Ice
Eversion
Spin
The Chronoliths
Contact
What’s next?
As, I’ve mentioned I am reading The Revelation Space Collection Volume 1 and 2, and next Ring by Stephen Baxter, Children of Time by Adrian Tchaikovsky.
As it sometime happens to me while I was checking what’s new on YouTube the suggestions algorithm had a video about Memristorwhich was a forth basic electrical element that had a memory in it. While I was watching that interesting video that was created by prof. Giordano Scarciotti I saw the symmetry diagram that prof. Leon Chua came up with back in 1971. In that paper he proposed Memristor as a missing fundamental component in electrical circuit theory. So, what’s interesting about that diagram that it very much resembles diagrams in Category Theory.
Next, I’ve used Windows Copilot to elaborate on that idea. Chatting with it back and forth resulted in the blog post below:
Introduction
When we first learn electronics, we’re introduced to three fundamental passive elements: the resistor, the capacitor, and the inductor. Each one ties together two physical quantities:
Resistor: relates voltage V and current i.
Capacitor: relates voltage V and charge q.
Inductor: relates current i and magnetic flux φ.
But in 1971, Leon Chua predicted a missing fourth element — the memristor — which connects charge q and flux φ. This completed the symmetry among the four fundamental electrical quantities.
🔎 Constitutive Relations and the “=0” Notation
In advanced circuit theory, each element is defined by a constitutive relation: a constraint between two variables. Instead of writing explicit formulas like Ohm’s Law (V = R·i), theorists often use an implicit form:
Resistor: R(V, i) = 0
Capacitor: C(V, q) = 0
Inductor: L(i, φ) = 0
Memristor: M(q, φ) = 0
This doesn’t mean resistance is zero. It means: the pair of variables must satisfy some relation enforced by the element. For a linear resistor, that relation is V − R·i = 0. For nonlinear devices, the relation could be more complex. The implicit form is powerful because it generalizes to nonlinear, time-varying, and memory-dependent behaviors.
🔄 Symmetry and Completeness
Chua’s insight was that with four fundamental quantities (V, i, q, φ), there should be six possible pairings. Three were already realized by resistor, capacitor, and inductor. The missing link — charge to flux — was filled by the memristor. This symmetry is what makes the framework elegant: every pair of quantities is connected by a constitutive relation.
🧩 A Category-Theoretic Perspective
Here’s where the categorical flavor comes in. The symmetry looks a lot like category theory:
Objects: The four quantities (V, i, q, φ).
Morphisms: The four elements (resistor, capacitor, inductor, memristor).
Composition: Just as morphisms compose in category theory, circuit elements combine to form networks.
Commutativity: The square diagram commutes: L ∘ R = M ∘ C meaning that whether voltage is mapped to flux via current (resistor → inductor) or via charge (capacitor → memristor), the structural mapping is consistent.
🖼️ ASCII Diagrams
Fundamental Square of Relations
V ──R──▶ i
│ │
C L
│ │
▼ ▼
q ──M──▶ φ
R : V → i (Resistor)
C : V → q (Capacitor)
L : i → φ (Inductor)
M : q → φ (Memristor)
Commutative Diagram
V
/ \
R C
/ \
i q
\ /
L M
\ /
φ
Here, the two paths from V to φ are equivalent: L ∘ R = M ∘ C
✨ Why This Matters
Thinking categorically opens new doors:
Circuits can be modeled as categories of physical quantities.
Functorial translations could connect circuit categories to computational categories (logic, automata).
Neuromorphic computing, where memristors play a central role, might benefit from categorical semantics.
The memristor isn’t just a missing device — it’s the morphism that makes the diagram commute, completing the symmetry both physically and mathematically.
🧠 The Main Idea
By reframing Chua’s symmetry in categorical terms, we see circuits not just as physical devices but as mathematical structures. The memristor completes not only the physics of passive elements but also the mathematics of a commutative square.
This perspective — born from blending electronics with category theory — is a fresh, original way of thinking about circuit theory. It shows how abstract mathematics can illuminate engineering, and how symmetry drives discovery.
If you have some basic background in programming, or even if you don’t, but want to get some then you can turn to chatbots and in particular to Windows Copilot (I’ll refer to it as Copilot for shortness). You can use Gemini, ChatGPT, Claude etc. if you prefer, and they’ll be as useful. This is what I did just recently when I stumbled upon a post by Dave Plummer at X, where he talked about the need for programmers to understand how compilers produced their output, hence the need to know assembly language. By the way, Dave Plummer developed Windows Task Manager when he was a programmer with Microsoft . He has a YouTube channel where he posts interesting videos related to programming.
Why chatbots can be helpful in this case? First, if you didn’t program in assembly before it can be difficult to approach it. Second, chatbots are very helpful in explaining existing code in any programming language they had in their training data. And, I guess, it means it should know details about most modern programing languages.
Well, next I’ll provide a screenshot of that post, then I’ll show you that chatbot can transcribe the code from an image alone and explain what we are looking at there. The short summary is that post was about binary to ASCII (BTOA) conversion program written in PDP-11 computer assembly. By the way, all these details where extracted by Copilot from the code in the image. Then, I’ve used Copilot to explain to me in detail how the code works to get full understanding of it.
Pay attention, that I use line separator to mark when the response from chatbot has finished.
Original post
I suppose there's a whole class of programmers for whom a compiler is akin to magic, but knowing what's getting emitted and how it works is fundamental to your success over the long haul.
I suppose there’s a whole class of programmers for whom a compiler is akin to magic, but knowing what’s getting emitted and how it works is fundamental to your success over the long haul. Write some assembly. Read the Dragon book on an airplane. AI will still be here when you get back. In five years, anyone capable of structured thought will be able to become a prompt engineer, but only 1% of software developers will actually be able to debug the stuff that comes out the other end. Be the 1%
What did I do next?
As I’ve mentioned I’ve copy and pasted the image in Copilot and asked it to transcribe the code from the image and explain what it’s doing.
Prompt: Transcribe the code from the image and explain (an image was attached as can be seen in the screenshot below). Response:
Below comes a full response.
Here’s the full transcription of the PDP-11 assembly code using MACRO-11 syntax, followed by a detailed explanation: Transcribed Code
.TITLE BTOA ; Program title
.MCALL .PRINT,.EXIT,.TTYOUT ; System macros
HELLOMSG: .ASCIZ /BTOA Example/
.EVEN ; Ensure we're on a word boundary
START: .PRINT #HELLOMSG
MOV #12345., R0 ; Number to convert
JSR PC, BTOA
.EXIT
BTOA:
MOV R0, -(SP) ; Save R0 on stack
MOV R1, -(SP) ; Save R1 on stack
MOV R2, -(SP) ; Save R2 on stack
MOV R0, R1 ; Move number to R1 (low part of dividend)
CLR R0 ; Clear R0 (high part of dividend)
DIV #10., R0 ; Divide R0:R1 by 10, quotient in R0, remainder in R1
TST R0 ; Check if quotient is 0
BEQ PRINT ; If quotient is 0, print digit
JSR PC, BTOA ; Recursive call with quotient
PRINT: ADD #'0, R1 ; Convert remainder to ASCII
MOV R1, R0 ; Move ASCII digit to R0
.TTYOUT R0 ; Print the digit
MOV (SP)+, R2 ; Restore R2
MOV (SP)+, R1 ; Restore R1
MOV (SP)+, R0 ; Restore R0
RTS PC ; Return
.END START
🧠 Explanation
This program converts a binary number (in this case, 12345) to its ASCII decimal representation and prints it to the terminal.
🔹 Header and Setup
.TITLE BTOA: Sets the title of the program.
.MCALL .PRINT,.EXIT,.TTYOUT: Declares macros for printing, exiting, and terminal output.
HELLOMSG: .ASCIZ /BTOA Example/: Defines a null-terminated string.
.EVEN: Ensures the next instruction is aligned on a word boundary.
🔹 Main Routine (START)
.PRINT #HELLOMSG: Prints the greeting message.
MOV #12345., R0: Loads the number 12345 into register R0.
JSR PC, BTOA: Calls the BTOA subroutine to convert and print the number.
.EXIT: Ends the program.
🔹 Subroutine (BTOA)
Saves registers R0, R1, and R2 to the stack.
Sets up for division: moves the number to R1, clears R0 to form a 32-bit dividend.
DIV #10., R0: Divides R0:R1 by 10. Quotient goes to R0, remainder to R1.
TST R0: Tests if quotient is zero.
If yes, go to PRINT.
If not, recursively call BTOA with the quotient.
PRINT: Converts the remainder (digit) to ASCII by adding '0', then outputs it using .TTYOUT.
Restores registers from the stack and returns.
This recursive approach ensures digits are printed in the correct order (most significant to least significant). Would you like to see how this would look in C or another language for comparison?
Let’s try to understand how it works in more detail.
Question: First of all, what is BTOA?
Response:
Great question! 🧠
BTOA stands for Binary To ASCII. It’s a common abbreviation used in programming to describe the process of converting a binary (or numeric) value into its ASCII character representation, typically for display or output purposes.
🔍 What does “Binary to ASCII” mean?
Binary: In this context, it refers to a numeric value stored in binary format (e.g., the number 12345 in machine-readable form).
ASCII: The American Standard Code for Information Interchange — a character encoding standard that maps numbers to printable characters like '0' to '9', 'A' to 'Z', etc.
Okay, now that we know what that mysterious BTOA was how about we understand what happens inside this block of code that resides inside the BTOA function?
MOV R0, R1 ; Move number to R1 (low part of dividend)
CLR R0 ; Clear R0 (high part of dividend)
DIV #10., R0 ; Divide R0:R1 by 10, quotient in R0, remainder in R1
TST R0 ; Check if quotient is 0
BEQ PRINT ; If quotient is 0, print digit
JSR PC, BTOA ; Recursive call with quotient
Also, before jumping to Copilot for help we can see assembly language program that is doing some computation using registers in CPU such as R0 and R1. We can see the data is moved, cleared, a division is done and then there is a conditional logic on lines 5, 6 and 7. In the screenshot it corresponds to lines 22, 23 and 24.
So what is the explanation ? Response:
This block of PDP-11 assembly code is the core of the binary-to-ASCII conversion logic. It performs division by 10 to extract digits from a number and uses recursion to print them in the correct order. Here’s a breakdown of each line:
🔍 Line-by-Line Explanation
18 MOV R0, R1 ; Move number to R1 (low part of dividend)
Copies the number from R0 to R1.
This sets up the 32-bit dividend for division: R0:R1 (high:low).
19 CLR R0 ; Clear R0 (high part of dividend)
Clears R0 to zero.
Now the full dividend is 0:R1, effectively treating the original number as a 32-bit value with high word = 0.
20 DIV #10., R0 ; Divide R0:R1 by 10, quotient in R0, remainder in R1
Performs a 32-bit division of R0:R1 by 10.
After this:
R0 contains the quotient (i.e., number / 10)
R1 contains the remainder (i.e., number % 10), which is the rightmost digit
22 TST R0 ; Check if quotient is 0
Tests if the quotient is zero.
This determines whether there are more digits to process.
23 BEQ PRINT ; If quotient is 0, print digit
If R0 is zero, it means this is the last digit.
Branches to PRINT to output the digit.
24 JSR PC, BTOA ; Recursive call with quotient
If R0 is not zero, it means there are more digits.
Recursively calls BTOA with the quotient in R0, continuing the process.
🧠 Summary
This block:
Extracts the least significant digit of the number.
Uses division and recursion to process digits from most significant to least significant.
Ensures digits are printed in the correct order by printing only after recursion unwinds.
Conclusion
Well, I guess it clarifies a bit what the code is doing. And you probably got a point of how you can use a chatbot to help you understand a piece of code in a programming language you probably never saw and drill down to nitty gritty details of the implementation and really understand how it works.
Have you wondered how it is possible to develop imagination in general and creative imagination in particular. After all, it seems like the state of the things is that some people have it and others don’t. But don’t be so fast to think so. It turns out that it is possible to train your imagination in a similar way as how you can gain muscles by exercising in a structured way.
To save you time and effort imaging such a structured and systematic approach to developing creative imagination you can turn to a method that was developed by Genrikh Altshuller the creator of the Theory Of Inventive Problem Solving also known in its Russian acronym form as TRIZ.
One constituent part of TRIZ is Development of Creative Imagination. It consists of a number of methods and imaginative techniques (operators) that can help you develop creative imagination in engaging and joyful manner.
In this post I’d like to mention some of the techniques or imaginative operators that can be helpful in developing creative imagination. These operators were introduced by sci-fi writer Pavel Amnuel.
A complete list of operators comes below. I call them operators in the mathematical sense, since they act on an object, idea etc. and transform them in one way or the other. As you may notice, first operator in the list is Inverse.
Do the “opposite” – Inversion. (The following methods form pairs in which one element is the opposite of the other—i.e., using the “do the opposite” operator or duality.)
Segmentation – Unification (for a property or object)
Make Dynamic – Static
Turn Artificial – Natural
A method to change immutable things (Change what is usually considered unchangeable).
Next, I’ll provide visual examples of each operator by referencing sci-fi movies that incorporated them.
Examples of the operators in sci-fi movies
Supersize me
The movies below are an example of Increase – Decrease operator where kids were shrunk and then a kid was enlarged. And what’s funny going from an idea of one movie to the other involved simply using an Inversion operator.
Most probably first literary reference of this operator in fiction was: Gulliver’s Travels by Jonathan Swift (1726)
Honey, I Shrunk the Kids (1989),
Honey, I Blew Up the Kid (1992)
Superman
The movie below is an example of Acceleration and Addition operators when a number of regular human abilities were increased and placed in a single person.
Superman movie from 1978.
Superman was originally created by DC Comics (1938).
Superman’s famous arsenal of powers has included flight, super-strength, super-speed, vision powers (including x-ray, heat-emitting, telescopic, infra-red, and microscopic vision), super-hearing, and super-breath.
Intelligence Enhancement
The movie below is an example of Addition – Removaloperator when super-intelligence was added to a person that didn’t have it originally.
The Lawnmower Man (1992).
A short story Flowers for Algernon by Daniel Keyes (1959) is based on a similar idea.
The Invisible Man
The image below is an example of the Insertion – Extraction operator where a property of being visible was extracted from a body of a person.
Book: The Invisible Man by H.G. Wells (1897)
Time Travel
The movie below is an example of the Inversion and Discrete – Continuous operator when a continuous time made discrete and traversable back and forth.
Film: Back to the Future (1985)
The idea originally came from the book: The Time Machine by H.G. Wells (1895)
Anti-gravity
The idea below is based on the Method to change immutable things (Change what is usually considered unchangeable).
The concept was first introduced formally as “Cavorite” in H. G. Wells’ The First Men in the Moon (1901).
Capitan’s Log
The idea below is based on the Segmentation-Unification operator when an object is segmented into atoms and then assembled into a whole again.
Teleportation is the transfer of matter from one point to another, more or less instantaneously.
The word “teleportation” was coined in 1939 by American writer Charles Fort to describe the strange disappearances and appearances of anomalies, which he suggested may be connected.
In this post I’d like to provide a short example of how chatbots, in particular Windows Copilot, can help you address issues related to web browsing, programming, reverse engineering, intelligent internet searching (aka semantic searching) etc.
The issue
In this case I wanted to check what sci-fi writer Pavel Amnuel had on his website. Even though that website looks dated and it is, the information it contains is still relevant to this day. There you can find his essays on hard science fiction, a “A Course of Lectures on TRIZ and the Development of Creative Imagination (PTB)” and more.
That course on Development of Creative Imagination consists of thirteen parts, and it turns out that the 11th one has incorrect encoding and looks like this at the time of writing
So, what I did I’ve posted a part of it in Windows Copilot and asked about the encoding issue. It came up with a correct explanation right away.
prompt: fix encoding of this text …
response: The text you’ve provided appears to be Cyrillic text misinterpreted as Latin characters due to incorrect character encoding. Most likely, it was originally written in Russian using Windows-1251 encoding, but then read or displayed using Windows-1252 (Latin-1) or UTF-8 without proper conversion.
🔍 Correct Encoding: Windows-1251 (Cyrillic)
When decoded properly, the text reads as: РТВ — ЭТО ОЧЕНЬ ПРОСТО! Г. Альтшуллер Курс лекций по развитию творческого воображения и теории решения изобретательских задач для начинающих. (Proverb 11)
В тексте есть некоторые задачи по ТРИЗ из РТВ, из книг и статей Г.С. Альтшуллера, Б.Л. Злотина, А.В.В. Асмана и других авторов.
🛠 How to fix encoding issues
If you encounter similar garbled text:
Identify the original encoding — in this case, Windows-1251.
Use a text editor or converter that allows you to change encoding (e.g., Notepad++, Sublime Text, iconv).
Convert from Windows-1251 to UTF-8 to make it readable across modern systems.
Would you like me to help you convert a file or more text like this?
I’ve tried a couple of approaches, again, using Copilot’s assistance. In the end what I’ve ended up doing is saving the page as html file and updating the headelement with the following meta tag below which provided correct Cyrillic encoding instead of the Latin one.
<meta charset=”windows-1251″>
This is how the properly encoded version looks like
I’ve also notified the author about this issue, and hopefully, by the time you are reading this post it will be fixed already.
Bonus
One more thing, if you’ve noticed the link to Pavel Amnuel’s website opens that page in English. This is no coincidence. The page is originally in Russian, but Copilot helped me to discover that Google Translate allows to translate a web page into a specific language and get a link to that translated page. How neat is that?
prompt: I mean I need a link that I can share after it was translated response: Ah, got it! You want a sharable link to the translated version of the page. Here’s how to do that using Google Translate:
Can be shared with anyone — they’ll see the English version of the Russian page
Translates the page from Russian (sl=ru) to English (hl=en)
Automatically opens the translated version in Google Translate
By the way, while on that website you can right click on the mouse button and translate any of the articles into English. Nowadays, translations are of a very high quality. Also, I saw that when you navigate to a translated page link, other linked pages are translated automatically!
Summary
Here you have it Windows Copilot or any other similar tool can do wonders if you ask it to help.
In this post I’d like to share useful information on how to use LLMs and in particular Windows Copilot powered by GPT-4o (most probably) and GPT-5 models to assist in reverse engineering electronic boards.
So far, I was able to use these models to successfully reverse engineer software projects at work. And over the weekend I was able to apply Windows Copilot to help me reverse engineer a Switched-Mode Power Supply (SMPS) Board from a cheap DVD player I bought a couple of years ago.
The background for this hardware reverse engineering effort was that I bought a DVD player at Amazon to watch a couple of DVDs and listen to CDs I had. I used it a number of times and then didn’t use it for a while. When I tried to power it on a couple of years later it didn’t work. The debugging showed that the capacitor in the SMPS board was leaked. So, I found a similar capacitor (1000 uF, but 10 V max) in one of the old mobile phone charges and replaced it. The DVD started to work again. I’ve documented this process in the YouTube video. The main issue was that I didn’t check what was that capacitor’s maximum voltage. And as I’ve mentioned, it was 10 V. But other capacitors that were filtering the ripple before output were 16 V. I didn’t notice this at the time. So when I tried to use that DVD player later it didn’t start again. I already wanted to throw it into garbage, when I gave it a chance and opened it again. What I saw that the same capacitor that I replaced before leaked too. It turns out there is a need to use a 16 V maximum rated capacitor to account for potential voltage spikes.
This time I was more systematic and started to use Windows Copilot to query for what capacitor I could use in place the leaked one. I had a couple of old mobile phone charges left that I disassembled while looking for a 1000 uF capacitor which I didn’t found in the end. I only had 470 uF ones. But LLM reasonably suggested to use 1000 uF cap, since you can’t replace a capacitor without considering what was its purpose in the circuit. So, I understood that I must follow an advice from the Debugging Rules! book by Dave Agans, first I needed to Understand the System!
Since, I am an electrical engineer by education, I had some background to understand what various components were on the board and what some of them were responsible for. For example, I could see a rectifier bridge (it is used to convert AC current to DC), transformer, resistors, capacitors, chips and more. Which was helpful. If you have no such background, then before attempting a hardware reverse engineering project, you can use LLMs to learn the basics of electronics.
So, the board in question looks like below. First image shows the board from the top, and second image shows the board when it is placed on the lamp and it looks transparent to see the traces (wires) on the back side of it.
So, when you look at the left-hand side part of the left image you can see a white connector which connects to the AC power cord. Then it goes through the fuse just above it and connects to the black choke coils. It in turn connects to a bridge rectifier. Then it goes to a capacitor. After this I didn’t know what the circuit was doing exactly, though I could see a 8 pins Integrated Circuit (IC), a transformer with a yellow tape around it. More diodes, resistors, caps and a white output connector.
What was helpful was that the board had good markings explaining various components. This is a standard engineering practice. For example, R stands for Resistor, L stands for Inductor, C stands for Capacitor, D stands for a Diode, U stands for an Integrated Circuit (chip), Q stands for Transistor, J stands for a Connectors, F stands for Fuse.
I had an idea to upload an image of the board on the left in Windows Copilot and I did just that. GPT was able right away to tell that fuse was there, the transformer was there and it could recognize other parts too. It was also able to understand that it was a Switched-Mode Power Supply of a flyback type. So I started to provide it with information about the capacitor I wanted to replace, in particular that it was connected to the GND output pin. I also provided it with the pinout of the output connector and it was able to infer from it that there were two +5 V pins connected together which was correct.
But the most surprising part was that GPT was able to infer that there should have been a feedback loop implemented with optocoupler marked as PC817, which I was able later to identify on the board. Then it was able to infer that the 8 pin chip was most probably Pulse Width Modulation (PWM) controller and that it should have been connected to power transistor. Looking at the specification of that DM1203 chip I was able to confirm that it came with power transistor built-in shown in the diagram for the spec below.
In the end GPT taught me that the output from the PWM controller should be connected to the snubber capacitor
In the end after back end forth with the GPT it was able to provide me with the description of the schematics of the board. Since I don’t have a history of my prompts at this time I tried to recreate in a concise manner my interaction with LLM. In the case below I provided two images and not one, and a detailed description of the board. LLM was able to exhibit very detailed understanding of what were the components on the board and how it worked.
Prompt: I have the Switched Mode Power Supply board with following components PWM controller DM1203, optocoupler PC817, transformer with 12V and 5V output, smoothing capacitors at the output and the following pinout of the connector: -12V, GND, 12V, GND, +5V, +5V. Also attached come two images of the board: one front and one transparent that shows traces on the board. How about you provide me with the description of this board
Response from GPT-5 Board Overview
This is a flyback switched-mode power supply (SMPS) built around the DM1203 PWM controller IC. It takes AC mains input, rectifies and filters it, then uses a transformer to generate isolated DC outputs: +5V, +12V, and –12V. Regulation is achieved through an optocoupler (PC817) and a TL431 reference.
⚡ Input Stage
Fuse (F2AL250V): Protects against overcurrent.
NTC thermistor: Limits inrush current when first powered on.
Bridge rectifier (D9–D12): Converts AC mains to high-voltage DC.
Bulk capacitor (large electrolytic, ~220µF/400V): Smooths the rectified DC.
EMI filter (C1, C2, L1): Reduces conducted noise back into the mains.
Transformer (EE-25 core): Stores energy during switch ON time, releases it to secondary when OFF.
Snubber network: A 10nF/1kV capacitor (103) in series with a 47kΩ resistor across the primary winding — absorbs voltage spikes caused by leakage inductance.
Startup/VCC capacitor: Provides supply to the DM1203 once oscillation begins.
⚙️ Secondary Side (Low Voltage Outputs)
Rectifier diodes: Fast recovery or Schottky diodes on each secondary winding.
Filter capacitors: Large electrolytics (e.g., 470µF/16V) smooth the DC outputs.
Inductors/ferrite beads: Further reduce ripple and noise.
Outputs provided:
+5V (two pins)
+12V
–12V
Ground (two pins)
🔁 Feedback & Regulation
Voltage divider (resistors): Scales the +5V output down to 2.5V.
TL431 shunt regulator: Compares scaled voltage to its 2.5V reference.
PC817 optocoupler: Transfers the error signal across isolation barrier to the DM1203’s FB pin.
FB pin capacitor (1nF–10nF): Stabilizes the feedback loop.
This ensures the +5V rail is tightly regulated, while the ±12V rails are “cross-regulated” (their accuracy depends on transformer design and load balance).
🧠 Functional Summary
AC mains → rectified to ~300V DC.
DM1203 chops this DC at ~65kHz into the transformer.
Transformer provides isolated secondary voltages.
Diodes + capacitors filter into smooth DC rails.
TL431 + PC817 feedback loop keeps +5V stable.
Snubber protects the switch from voltage spikes.
👉 In short: this board is a multi-output flyback SMPS designed for small electronic equipment, giving you isolated +5V, +12V, and –12V rails with the +5V as the regulated “master” output.
Would you like me to redraw this description into a clean block diagram (showing input → primary → transformer → secondary → feedback) so you can visualize the flow more easily?
You can tell that it’s quite amazing what LLM was capable of looking at the description above.
I’ve followed up and asked it to provide a block diagram too:
Prompt: sure block diagram is good
Response from GPT-5:
Parting thoughts
So there you have it Windows Copilot using GPT-5 model in particular is capable of being a patient super skillful engineer that could help you with hardware reverse engineering on demand. You only need some basic understanding of the subject you’d like to explore and a curiosity to try new things.
Bonus
After I’ve replaced the leaked capacitor with a new one and the DVD player works again.
Recently, I’ve read the Remembrance of Earth’s Past trilogy by Chinese author Cixin Liu and was very much impressed by it. This in turn awakened my fascination with hard science fiction and development of creative imagination. What I mean by creative imagination development is a technique that was promoted by Genrikh Altshuller who was inventor, sci-fi writer and the creator of The Theory of Inventive problem Solving (TRIZ). To provide some context that creative imagination development technique was conceived by Altshuller with the help of his students, such Pavel Amnuel, who himself is a prolific si-fi writer and astrophysicist.
Since I am interested in topic of guided inventions which Genrikh Altshuller was written about I intend to write a number of post related to how hard sci-fi ideas can be purposefully engineered, using the tools of creative imagination development technique.