my website banner

change of license to CC BY-SA, added fruit.js and blogs
authorDavid Polakovic <email@dpolakovic.space>
Sun, 9 Mar 2025 09:32:17 +0000 (10:32 +0100)
committerDavid Polakovic <email@dpolakovic.space>
Sun, 9 Mar 2025 09:32:17 +0000 (10:32 +0100)
18 files changed:
Pictures/alien.png [new file with mode: 0644]
blog.php
blogs/blog-template.html [deleted file]
blogs/free-software.html
blogs/phantom-menace.html [new file with mode: 0755]
blogs/pics/win-xp2.png [new file with mode: 0755]
blogs/pics/win95.png [new file with mode: 0755]
blogs/windows-95-printer-hack.html [new file with mode: 0755]
blogs/y292b.html [new file with mode: 0755]
blogs/zork.html
dir.php
fruit.js [new file with mode: 0755]
index.php
lib.php [deleted file]
mars-clock.php
php/lib.txt [deleted file]
php/rnd.txt
rss.xml

diff --git a/Pictures/alien.png b/Pictures/alien.png
new file mode 100644 (file)
index 0000000..b0f57a2
Binary files /dev/null and b/Pictures/alien.png differ
index 60ab8abcbf1b6e7ea48ec30bd2cd7254766b8e36..a84003ef29d9b1463c951ac5d2e33bfbeb3a80d7 100755 (executable)
--- a/blog.php
+++ b/blog.php
@@ -57,8 +57,8 @@
     <!-- footer  -->
     <footer class="footer">
     Copyright <?php printYear() ?> David Polakovic - 
-    Content of this web is licensed under
-    <a href="https://creativecommons.org/licenses/by-nc-nd/3.0/">CC BY-NC-ND 3.0</a>.
+    Publications on this domain are licensed under
+    <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC BY-SA 4.0</a>.
     <br>
     This site is javascript and cookie free. The source code is available
     <a href="https://git.dpolakovic.space/?p=my-website;a=tree">here</a>
diff --git a/blogs/blog-template.html b/blogs/blog-template.html
deleted file mode 100755 (executable)
index f001ecc..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-  <head>
-    <meta charset="UTF-8">
-    <meta http-equiv="X-UA-Compatible" content="IE=edge">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <title>TITLE HERE</title>
-    <link rel="icon"         href="../Pictures/dot.png">
-    <link rel="stylesheet"   href="../Styles/styles.css">
-    <link rel="author"       href="mailto:email@dpolakovic.space">
-    <meta name="description" content="personal website and git server"> 
-  </head>
-  <body>
-    
-    <!-- show pictures (banner) on top of the page -->
-    <div class="banner">
-      <p>
-       <img src="../Pictures/dpolakovic.png" alt="simple">
-       <img src="../Pictures/dot.png" alt="website">
-       <img src="../Pictures/space.png" alt="banner">
-      </p>
-    </div>
-    
-    <!-- navigation bar -->
-    <nav class="nav-bar-blog">
-      <ul>
-       <li><a href="https://dpolakovic.space/blog.php">Go back</a></li>
-      </ul>
-    </nav>
-
-    <!-- page content -->
-    <main class="content">
-      <p>
-       <h2>TITLE HERE</h2> 
-       <i>00 Mmm 202X - text text text</i>
-       <br>
-      <p>
-       <!-- PUT HERE A PICTURE -->
-       <img src="./pics/bug.jpg" alt="TITLE">
-      </p>
-      <p>
-       Here comes the blog...
-       And this is a link<a href="#notes">*</a>
-      </p>
-      <br>
-      <hr>
-      <div id="notes"></div>
-      <i>
-       <p>
-         * notes under line
-       </p><br>
-      </i>
-    </main>
-
-    <!-- footer  -->
-    <footer class="footer">      
-      copyright 202X David Polakovic
-      - content of this web is licensed under
-      <a href="https://creativecommons.org/licenses/by-nc-nd/3.0/">CC BY-NC-ND 3.0</a>
-      - <a href="https://git.dpolakovic.space/?p=my-website;a=tree">this site is free software</a>
-    </footer><br><br>
-    
-  </body>
-  </html>
index 485a2acfbeedbccb84a5141738719702e6dcdaea..c3fa39e8369ac185c58bb700beddfc63764ab24f 100755 (executable)
@@ -3,8 +3,7 @@
 <html lang="en">
   <head>
     <meta charset="UTF-8">
-    <meta http-equiv="X-UA-Compatible" content="IE=edge">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <meta name="viewport" content="width=600, initial-scale=1.0">
     <title> On the nature of Free software</title>
     <link rel="icon"         href="../Pictures/dot.png">
     <link rel="stylesheet"   href="../Styles/styles.css">
@@ -33,7 +32,7 @@
     <main class="content">
       <p>
        <h2> On the nature of Free software </h2> 
-       <i>  25 Jul 2023 - Does your synthetic colleague pose a threat to you?</i>
+       <i>25 Jul 2023 - Does your synthetic colleague pose a threat to you?</i>
        <br>
       <p>
        <!-- PUT HERE A PICTURE -->
        hassle of learning few new habbits and sticking with free/open tools as
        much as possible. <i>And in the end, I guess the Ash would too.</i>
       </p>     
-      <p><img src="./pics/free3.png" alt="Happy ash"></p>  
+      <p><img src="./pics/free3.png" alt="Happy ash"></p>
       <br>
       <hr>
       <div id="notes"></div> 
     <!-- footer  -->
     <footer class="footer">
     Copyright 2023 David Polakovic - 
+    This publication is licensed under
+    <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC BY-SA 4.0</a>.
+    <br>
     This site is javascript and cookie free. The source code is available
     <a href="https://git.dpolakovic.space/?p=my-website;a=tree">here</a>
     under
-    <a href="https://www.gnu.org/licenses/gpl-3.0.en.html">GPLv3 license</a>.<br>
-    Content of this web as well as photo of me with box on the head is licensed
-    under
-    <a href="https://creativecommons.org/licenses/by-nc-nd/3.0/">CC BY-NC-ND 3.0</a>.  
+    <a href="https://www.gnu.org/licenses/gpl-3.0.en.html">GPLv3 license</a>.
     </footer>
     <br><br>
     
diff --git a/blogs/phantom-menace.html b/blogs/phantom-menace.html
new file mode 100755 (executable)
index 0000000..8abc5eb
--- /dev/null
@@ -0,0 +1,157 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=600, initial-scale=1.0">
+    <title>The Phantom Menace is good</title>
+    <link rel="icon"         href="../Pictures/dot.png">
+    <link rel="stylesheet"   href="../Styles/styles.css">
+    <link rel="author"       href="mailto:email@dpolakovic.space">
+    <meta name="description" content="personal website and git server"> 
+  </head>
+  <body>
+    
+    <!-- show pictures (banner) on top of the page -->
+    <div class="banner">
+      <p>
+       <img src="../Pictures/dpolakovic.png" alt="simple">
+       <img src="../Pictures/dot.png" alt="website">
+       <img src="../Pictures/space.png" alt="banner">
+      </p>
+    </div>
+    
+    <!-- navigation bar -->
+    <nav class="nav-bar-blog">
+      <ul>
+       <li><a href="https://dpolakovic.space/blog.php">Go back</a></li>
+      </ul>
+    </nav>
+
+    <!-- page content -->
+    <main class="content">
+      <p>
+       <h2>The Phantom Menace is good</h2> 
+       <i>18 Aug 2024 - An inevitable STAR WARS rant.</i>
+       <br>
+      <p>      
+       <!-- PUT HERE A PICTURE --> 
+       <img src="./pics/starwars26.jpg" alt="TITLE">
+      <p>
+       The year is 1999. A new STAR WARS movie is about to hit theaters, and fans
+       still have a sour taste in their mouths from the special editions released
+       two years prior. However, the Extended Universe is flourishing, thanks to
+       the well-orchestrated Shadows of the Empire and the iconic Thrawn trilogy.
+       Expectations are high, and the stage is set for the best STAR WARS movie
+       yet. Fortunately, everything turned out well.
+      </p>
+      <p>
+       <b>I like the Phantom Menace.</b> It is something I was always open about,
+       and after watching the movie <i>The People vs. George Lucas</i>, I knew I would
+       write this blog one day. It was a really good interview-style documentary about STAR
+       WARS fans who (among other things) didn't like The Phantom Menace.
+       Consider this blog my reaction to their testimony.
+      </p>
+      <p>
+       Many people's disappointment stemmed from the explanation of how the Force
+       works. During the original trilogy, it was described as:
+       <i>
+         "an energy field created by all living things. It surrounds us,
+         penetrates us, and binds the galaxy together."
+       </i>
+       From a certain point of view, this is anoter well-played hand from Bens side.
+       Manipulating a naive farmer into your pseudo-religion doubles down on
+       Bens character from the Episode V as well as the ways of the Jedi seen in
+       the Episode I and rest of the prequels. With each new movie, people learn
+       that late Old Republic Jedi were not the good guys like described in originals.[<a href="#notes">*</a>]
+      </p>
+      <p>
+       The sudden appearance of midichlorians and the revelation of the Jedi's
+       true nature are elements that don't align with the story of the original
+       trilogy. Inconsistencies in fictional worlds can harm a brand's perception.
+       However, expecting consistency in STAR WARS is a big stretch. The story was
+       originally meant to be a standalone movie, but as soon as Lucasfilm smelled
+       money, it was immediately renamed Episode IV. STAR WARS has been constantly
+       changing, with alternative sequels, the removal of some materials from canon,
+       and even changes to world elements like the Jedi's Kendo-inspired fighting
+       style.
+      </p>
+      <p>
+       <i>Regarding Jar Jar...</i> I see strong parallels between his character
+       and R2 & 3PO from the beginning of Episode IV.
+       It isn’t exactly high sci-fi when you watch two robots arguing in the
+       desert, expressing their feelings about each other. Yet, many people are
+       disappointed that Episode I is too oriented toward a younger audience.
+       This critique of a space fairy tale not being "adult enough" is often
+       followed by complaints that it brings up too much politics. It's a
+       paradox I just can't follow. To me, both the droids and the Gungan are
+       just jesters in a technically exceptional Flash Gordon derivative.
+      </p>
+      <p>
+       Personally, I applaud the movie for exploring a time so close to A New
+       Hope yet so different, as we witness the final years of the noble Galactic
+       Republic. We finally see the Jedi Temple and its questionable role in
+       maintaining galactic peace, as well as the harsh reality of how
+       impoverished worlds remain untouched by the ruling apparatus in both eras.
+       We see how the actions of unlikely heroes shape the lives and world around
+       them—just like in every STAR WARS story before. Visually, the movie feels
+       sleek and new with its advanced CGI, yet the set design and costumes still
+       resemble the 1970s Ralph McQuarrie style. This is especially evident in
+       the design of the Naboo starships. 
+      </p>
+      <p>
+       <i>But</i> if there’s any letdown from my side, it's that they could have
+       expanded a bit more on the different Jedi training schools that Obi-Wan
+       and Qui-Gon practiced. The only hint was their saber colors, which is fine,
+       I guess, but they could have spared a few words here and there about how
+       the way of the Force is interpreted differently by each student. Then again,
+       one should realize that the whole concept of "training schools" is more of
+       an afterthought, since the saber colors were originally changed just to
+       visually fit the scenery. In Episode VI, Luke originally had a blue lightsaber,
+       but it didn't stand out against the blue sky of Tatooine, so they changed
+       it to green.
+      </p>
+      <p>
+       Lastly, there's the Phantom Cut - <i>The</i> fan edit that streamlines
+       the movie by cutting a few scenes with Jar Jar, some of the politics,
+       and even the midichlorian explanation. I personally liked that the part
+       where Queen Amidala asks for the <i>name</i> of the droid that repaired
+       the ship was removed. (Why would she do that anyway?) The edit is also
+       slightly sped up to reduce the runtime and make the movie feel less static.
+       All in all, the Phantom Cut is nice and definitely
+       worth checking out if you don't like the idea of the Force emitting bacteria.
+      </p>
+      <p>
+       All I'm saying is that you should enjoy the movie for what it is and not
+       try to look too deeply into something with the depth of a glass of Bantha milk.
+      </p>
+         <p><img src="https://dpolakovic.space/blogs/pics/phantom4.png" alt="a generic star wars picture"></p>
+      <br>   
+      <hr>
+      <div id="notes"></div>
+      <i>
+       <p>
+       <p>
+         * There is this very well dubbed Episode I fan/fun edit called The Jedi party. It portrais Jedi
+         as arogant trouble makers and it's actually one of the best STAR WARS community
+         projects I've seen in a long time. You can check it out
+         <a href="https://www.youtube.com/watch?v=WSCm8yAxBr8">here</a>.
+       </p>    
+       <br>
+      </i> 
+    </main>
+
+    <!-- footer  -->
+    <footer class="footer">
+               Copyright 2024 David Polakovic - 
+               This publication is licensed under
+               <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC BY-SA 4.0</a>.
+               <br>
+               This site is javascript and cookie free. The source code is available
+               <a href="https://git.dpolakovic.space/?p=my-website;a=tree">here</a>
+               under
+               <a href="https://www.gnu.org/licenses/gpl-3.0.en.html">GPLv3 license</a>.
+       </footer>
+       <br><br>
+    
+  </body>
+  </html>
diff --git a/blogs/pics/win-xp2.png b/blogs/pics/win-xp2.png
new file mode 100755 (executable)
index 0000000..1b810fd
Binary files /dev/null and b/blogs/pics/win-xp2.png differ
diff --git a/blogs/pics/win95.png b/blogs/pics/win95.png
new file mode 100755 (executable)
index 0000000..eef11e3
Binary files /dev/null and b/blogs/pics/win95.png differ
diff --git a/blogs/windows-95-printer-hack.html b/blogs/windows-95-printer-hack.html
new file mode 100755 (executable)
index 0000000..b011a50
--- /dev/null
@@ -0,0 +1,320 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=600, initial-scale=1.0">
+    <title>Reproducing the printer hack of Windows 95</title>
+    <link rel="icon"         href="../Pictures/dot.png">
+    <link rel="stylesheet"   href="../Styles/styles.css?v=1.1">
+    <link rel="author"       href="mailto:email@dpolakovic.space">
+    <meta name="description" content="personal website and git server"> 
+  </head>
+  <body>
+    
+    <!-- show pictures (banner) on top of the page -->
+    <div class="banner">
+      <p>
+       <img src="../Pictures/dpolakovic.png" alt="simple">
+       <img src="../Pictures/dot.png" alt="website">
+       <img src="../Pictures/space.png" alt="banner">
+      </p>
+    </div>
+    
+    <!-- navigation bar -->
+    <nav class="nav-bar-blog">
+      <ul>
+       <li><a href="https://dpolakovic.space/blog.php">Go back</a></li>
+      </ul>
+    </nav>
+
+    <!-- page content -->
+    <main class="content">
+      <p>
+       <h2>Reproducing the printer hack of Windows 95</h2> 
+       <i>
+         12 Apr 2024 - Start me up!
+       </i>
+       <br>
+      </p>    
+      <p>
+       <!-- PUT HERE A PICTURE -->
+       <img src="./pics/win95.png" alt="TITLE">
+       <!--<img src="./pics/deskjet710c.jpg" alt="Windows 95 Logo">-->
+      </p>
+      <p>
+       During my daily web crawl I encountered a very interesting
+       <a href="https://3.bp.blogspot.com/-XniWAeMJJgg/UQ4eaEr5RlI/AAAAAAAAPAA/7ftwZg4Bqcg/s1600/Win95_hack.gif">[ɡɪf]</a>
+       that I haven't seen in a long time. It was a hack of an unspecified version of
+       Windows 95, which showed how to bypass the login screen with the help of the
+       menu and printing dialog. However, after a brief check, I found a fair
+       amount of people stating that "just hitting the cancel" button would do
+       the same. Sharp-eyed viewers would notice that it was the very first action
+       taken in the picture. In order to find out if the hack is real at all,
+       I decided to reproduce it and document it for the good of the internet.
+      </p>
+      <h3>Analysis</h3>
+      <p>
+       The Windows 9x family ran on
+       FAT file-system which does not support permission models. It was
+       originally used for floppies and later for other portable media where
+       permissions are simply not desired. You wouldn't want to throw away a
+       perfectly fine floppy just because you can't delete the file on it from
+       your Solaris machine... This means that all access rights on 9x's are
+       managed on the OS level only.
+      </p>
+      <p>
+       In addition, a new user can be added simply by entering new credentials
+       on the login screen(!). While in the OS itself, users can encounter
+       4 types of "permissions": <i>read-only, hidden, archive</i> and
+       <i>system</i>. However in standard terms, every user had <i>read</i> and
+       <i> execute</i> permissions. And since all users can <i>execute</i> the
+       files with the <i>archive</i> permission, like <i>File Explorer</i>
+       for example, they can easily change the <i>read-only</i> attribute to
+       false, de facto giving them the <i>write</i> permission too. 
+      </p>
+      <p>
+       However, the login dialog shown in the picture was for a network and that's
+       where things might get tricky.
+       Accessing the client-server network does in fact require credentials,
+       even on the 95. To crack the setup of Windows NT 5.31 Domain Controller
+       is beyond scope of this OS hack, but a user who has accessed the machine
+       might just have enough tools to get in the network as well. 
+      </p>
+      <h3>Prerequisites</h3>
+      <p>
+       I used a virtual machine since I don't have much
+       hardware to spare. Here is my setup and everything needed to reproduce it.
+      </p>      
+      <p>
+       <div style="display: flex;">
+         <div style="width: 487px;">
+           <center>Host machine</center>
+           <div style="margin-left: 70px;">
+           <a href="https://www.virtualbox.org/wiki/Linux_Downloads">VirtualBox 6.1.50 r161033 (Qt5.15.8)</a><br>            
+           <a href="https://www.debian.org/News/2024/20240210">Debian 12.5</a><br><br>
+           </div>
+         </div>
+         <div style="width: 487px;">
+           <center>Virtual machine<a href="#notes">*</a></center>
+           <div style="margin-left: 75px;">        
+             <a href="https://winworldpc.com/product/windows-95/rtm">Windows 95 RTM (4.00.950)</a> (FAT16)<br>
+             <a href="https://winworldpc.com/product/windows-95/osr-3">Windows 95 OSR2.5 (4.00.950 C)</a> (FAT32)<br>
+             <a href="https://winworldpc.com/product/microsoft-windows-boot-disk/95-osr2x">Windows 95 Boot Floppy</a><br>
+             <a href="http://www.lonecrusader.x10host.com/fix95cpu.html">FIX95CPU</a><br>
+                     <i><a href="https://archive.org/details/hp-desk-jet-710-c-series-printer-software-ver-10-3">HP DeskJet 710C Series driver v10.3</a></i><br><br>
+           </div>
+         </div>
+       </div>
+      </p>     
+      <p>
+       I started with Windows 95 v4.00.950, the very first release.
+       As a rule of thumb, if there are going to be bugs, they are likely to
+       appear in the initial version. The 4.00.950 C is a somewhat special version.
+       It is the final release of the 95 with some features which will come handy
+       later. 
+       The boot floppy is needed only for installation, and the FIX95CPU is
+       necessary if your host has an equal/faster CPU than 2.1 Ghz. 
+      </p>
+      <h3>Preparation</h3>
+      <p>
+       After a fresh install, every user profile shares the same machine,
+       from folders to settings. In order to set up the user profiles,
+       navigate to the <i>Control Panel &gt; Passwords &gt; User Profiles</i>
+       and check the <i>Users can customize their prefferences...</i> option.
+       Make sure to check two more checkboxes from <i>User Profile Settings</i>
+       to include the network preferences. After a restart, every new user
+       that logs in can customize his machine to their needs. Now we can focus on
+       the printer.
+      </p>
+      <p>
+       Windows 95 offers quite a lot of drivers for various printers. You can
+       check the list of printers in the <i>Control Panel &gt; Printers &gt; Add Printers</i>.
+       However, the HP DeskJet 710C is not included. Closest match with this
+       device is HP DeskJet 560C which will work just fine. After all, every HP
+       printer ending with the letter "C" (and only "C", not "C/PS") will work
+       too. The "C" stands for "Color", and it is the color printer's
+       <i>Printing Properties</i> dialog which we will exploit.<a href="#notes">**</a>
+      </p> 
+      <p>
+       The next step would be to connect the VM to simple a peer-to-peer network.
+       In the network properties, enable the <i>File and Print Sharing</i>.
+       Then we need to add a new protocol as a <i>component</i>.
+       Pick <i>Microsoft</i> as the manufacturer and select the <i>TCP/IP</i> network protocol.
+       When done, open the protocol properties and on the <i>IP Address</i> tab
+       add the IP address of your choice. Upon saving, the machine will restart
+       again. 
+      </p>
+      <p>
+       In VirtualBox, navigate to network settings of the VM and enable
+       the network adapter, attach it to <i>Internal Network</i> and in advanced
+       options pick <i>PCnet-FAST III (Am79C973)</i> adapter. Set the 
+       <i>Allow All</i> in <i>Promiscuous Mode</i> option. Now we can clone
+       the machine. Then, for the newly cloned machine, make sure to:
+       <ul>
+         <li>generate new mac address in VirtualBox network settings</li>
+         <li>change the machine name in Windows 95 network properties under <i>Identification</i> tab</li>
+         <li>change the host identifier (last number) of the IP address in <i>TCP/IP</i> properties</li>
+       </ul>
+      </p>
+      <p>
+       You can now start both VMs. Create a new folder on one machine and share
+       it on the network via folder <i>Properties</i>. If everything was done
+       correctly, you should see both VMs in Windows 95 <i>Network Neighborhood</i>. 
+      </p>
+      <p>
+       Lastly, the client-server network. We don't actually need to create new a
+       Windows NT 3.51 server VM, because we can simulate its presence by
+       registry edit. When disabling the <i>Cancel</i> button, Windows will try
+       to validate the user input with the server. Unless all three, username, password
+       and domain name, aren't checked with the server, the user won't be let in the system.
+       It's the same registry edit shown in the original gif. Obviously, without
+       the presence of any server, we will lock our selves out of the system, so I
+       recommend creating a VM snapshot before the next step.
+      </p>
+      <p>      
+       In <i>regedit</i> navigate to <i>HKEY_LOCAL_MACHINE &gt; Network &gt; Logon</i>.
+       Open <i>Edit</i> menu pick <i>New &gt; DWORD Value</i>. In the right pane,
+       a new empty line will be added. Enter <i>MustBeValidated</i> and then <i>Modify</i>
+       the value. In a new dialog, change the current value <i>0</i> to new <i>1</i>.
+       After another restart, users will not be able to "cancel" the login prompt.
+      </p>
+      <h3>Test</h3>
+      <p>
+       Login into Windows 95 virtual machine with the user name "Bill" and password "Gates".
+       This user has a shared folder on the peer-to-peer network named "Halloween files"
+       which contains one file called "secret.txt". Then start up the second VM of
+       which we don't know any credentials. 
+      </p>
+      <p>
+       At the login prompt click the <i>?</i> button and then the <i>Cancel</i>
+       button. A help message will appear stating:
+       <i>
+         Closes this dialog box withput saving any changes you have made.
+       </i>
+       Right-click the message and choose the <i>Print Topic...</i> option.
+       A <i>Print</i> window will appear. Make sure to select the HP DeskJet
+       printer which has the letter <i>C</i> in the name and click the
+       <i>Properties</i> button.
+      </p>
+      <p>
+       A new window with <i>ColorSmart(tm)</i> options will appear. Click the
+       <i>Help...</i> button. On the new <i>HP DeskJet</i> help window
+       menu bar pick options <i>File &gt; Open</i>. A new <i>Open</i> window
+       will appear. Next to the <i>Look in:</i> combobox press the
+       <i>Up One Level</i> button (the one with the folder and arrow on it) until
+       you get to the <i>Desktop</i>. Right click <i>My Computer</i> and
+       select <i>Open</i>.
+      </p>
+      <p>
+       We are allowed into the system as default nameless user. Partially...
+       The <i>Desktop</i> is not responsive, however the <i>Start</i> menu
+       works and therefore the <i>Run...</i> does too. Also, the login prompt
+       <i>Enter Network Password</i> is still present.
+      </p>
+      <p>
+       <center>What now?</center>
+      </p>      
+      <p>
+       Now we can easily revert the system hardening we've done during the
+       preparation phase. Using <i>rgedit</i> we navigate again to the
+       <i>HKEY_LOCAL_MACHINE &gt; Network &gt; Logon</i>. Since we are still logged
+       as <i>null</i> profile, the registry will be in the default state, without the DWORD value
+       we've added. We will add it again but this time we will keep the value <i>0</i>.
+       After that, we will be able to close the login prompt.
+      </p>
+      <p>
+       Let's open the <i>Start &gt; Find &gt; File or Folders</i> and enter
+       the "pwl". Results will list the <i>Bill.pwl</i> file that contains the login
+       credentials for the user Bill. Copy it on the <i>Desktop</i> or anywhere
+       safe and then delete it from its original location. Right now we can insert the
+       <a href="https://archive.org/details/microsoft_cd-rom_extras">Microsoft Windows 95 CD-ROM Extras</a>
+       floppy number 5. This floppy contains the <i>PWLEDIT.exe</i> which can
+       now decrypt the passwords from the <i>.pwl</i> files we saved.<a href="#notes">***</a>
+      </p>
+      <p>
+       When we run <i>PWLEDIT.exe</i> we will be asked to enter the 
+       password for the user from new login prompt pop-up. Since we deleted the users
+       <i>.pwl</i> file from <i>C:\Windows</i>, we can assign new password to
+       mentioned user. After this action, a new <i>.pwl</i> file will be created
+       in <i>C:\Windows</i> with new password, and the <i>PWLEDIT</i> window will
+       open. We can use it to decipher the password for the client-server network.
+      </p>
+      <p>
+      <h3>Conclusion</h3>
+      <p>
+       The hack is real! It offers enough tools to gain access to the machine,
+       peer-to-peer network and client-server network as well. A question arises.
+       Will it always work ? Sadly, no.
+      </p>
+      <p>
+       The printer hack itself will work, but when you disable password caching
+       in the registry editor, you won't be able to access any network, since the
+       <i>.pwl</i> files won't be stored anymore. This is "solved" however, in
+       later releases. You see, the very last Windows 95 release I mentioned
+       in prerequisites, offers the <i>Users</i> option in the <i>Control Panel</i>.
+       This allows us to change the password for user profiles and therefore
+       gain access to the peer-to-peer network. The situation is same on 98FE and
+       98SE too. No luck for the client-server network. Once there is nothing to
+       decrypt, you are stuck.
+      </p>
+      <p>
+       There is, of course, a way how to perform this hack without a printer -
+       through the power of MS-DOS prompt. By pressing <i>F8</i> during startup,
+       you could enter the <i>MS-DOS mode only</i> where you can utilize the 
+       <i>regedit</i> command. This will require the knowledge of locating the
+       registries in the system files. I can not emphasize how awful work it is, but
+       I would rather go to get the physical DeskJet 710C than edit registries
+       with the DOS prompt.
+      </p>
+      <br>
+      <p>
+       <!--<img src="./pics/win95.png" alt="TITLE">-->
+       <img src="./pics/deskjet710c.jpg" alt="The printer that started it all...">
+       <!-- I don't know man... I would switch those pics other way around but
+            everybody keeps sayin it is better this way... -->
+      </p>            
+      <br>
+      <hr>
+      <div id="notes"></div>
+      <i>
+       <p>
+         * I prefer to use
+         VirtualBox because I am unable to make QEMU/KVM work, since I am not
+         a rocket scientist.
+         I don't see the advantage of a package manager when I have to edit random
+         config files and hunt for tutorials. Why this can't be managed by APT
+         or explained by the developer/maintainer? Seriously, why this needs
+         to be another Wine-like experience is beyond me.
+       </p>
+      <p>
+       ** If you want to install the 710C after all, you will encounter a few problems.
+       The HPDJ710C.INF file prevents the driver from being installed by the
+       "Add Printer" dialog and the HP's installation wizard requires a physical
+       device to be connected via parallel port. The workaround may be manually
+       (re)placing the HPFPNP.DLL, and any other files the driver requires, in
+       C:\Windows\System. Honestly I don't know, but I will update this 
+       when/if I find out.
+      </p>
+       <p>
+         *** This was an official Microsoft tool, which you could freely download
+         from <a href="">http://www.microsoft.com/windows95/admintools.htm</a>
+         </p>
+       <br>
+      </i>
+    </main>
+
+    <!-- footer  -->
+    <footer class="footer">
+    Copyright 2024 David Polakovic - 
+    This publication is licensed under
+    <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC BY-SA 4.0</a>.
+    <br>
+    This site is javascript and cookie free. The source code is available
+    <a href="https://git.dpolakovic.space/?p=my-website;a=tree">here</a>
+    under
+    <a href="https://www.gnu.org/licenses/gpl-3.0.en.html">GPLv3 license</a>.
+    </footer>
+    <br><br>
+    
+  </body>
+  </html>
diff --git a/blogs/y292b.html b/blogs/y292b.html
new file mode 100755 (executable)
index 0000000..0cecab3
--- /dev/null
@@ -0,0 +1,350 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=600, initial-scale=1.0">
+    <title>Y292B bug</title>
+    <link rel="icon"         href="../Pictures/dot.png">
+    <link rel="stylesheet"   href="../Styles/styles.css">
+    <link rel="author"       href="mailto:email@dpolakovic.space">
+    <meta name="description" content="personal website and git server"> 
+  </head>
+  <body>
+    
+    <!-- show pictures (banner) on top of the page -->
+    <div class="banner">
+      <p>
+       <img src="../Pictures/dpolakovic.png" alt="simple">
+       <img src="../Pictures/dot.png" alt="website">
+       <img src="../Pictures/space.png" alt="banner">
+      </p>
+    </div>
+    
+    <!-- navigation bar -->
+    <nav class="nav-bar-blog">
+      <ul>
+       <li><a href="https://dpolakovic.space/blog.php">Go back</a></li>
+      </ul>
+    </nav>
+
+    <!-- page content -->
+    <main class="content">
+      <p>
+       <h2>Y292B bug</h2> 
+       <i>26 Jun 2024 - We're doomed! Again...</i>
+       <br>
+      <p>
+      
+       <!-- PUT HERE A PICTURE --> 
+       <img src="./pics/bug.jpg" alt="TITLE">
+      <p>
+       Timekeeping is bitch. I found out the hard way while trying to program
+       extendable time keeper for other celestial bodies in the Solar system. The
+       problem is that, every calendar system is flooded with so many rules and
+       exceptions that the calendar builder basically becomes another programming
+       language. I am well aware of the Zawinski's
+       Law<a href="#notes">*</a> however, I wanted to avoid creating another
+       Emacs.
+      </p>
+      <p>
+       Common timekeeping obstacles include inconsistent leap intervals,
+       ever changing time zones and conversions from one       timekeeping system to another.
+       In addition to these algorithmic problems, there are device limitations
+       like precision of the oscilator or memory capacity.
+       In modern age, these are usually overlooked, especially memory allocation
+       is not considered a serious problem since the <i>Y2K bug</i> came and went.
+      </p>
+      <p>
+       <i>Y2K</i>, <i>Y2038</i> and other Y2xx bugs are not really "bugs" but
+       simple overflow of reserved memory space. You see, Unix and unix-like
+       computer systems measure time by incrementing seconds in single integer
+       variable <i>time_t</i>. Naturally, this timekeeping is named the <i>Unix time</i>
+       and its 0 is equal to midnight, 1st of January 1970.
+      <p>
+       Different
+       implementations of the Unix time, use different data type for <i>time_t</i>.
+       When the data type reaches its upper limit, it will "flip", either
+       to its opposite (negative) value or to the 0.
+       Current, main branch of the Linux kernel uses signed 64-bit integer.
+       This solution has rollover point in year 292,277,026,596.
+       That is roughly 292 billion, 277 million, 24 thousand years into future.
+      </p>
+      <center>But then what?</center>
+      <p>
+       The number overflows and the date will jump back 278 billion years before the Big
+       Bang<a href="#notes">**</a>? Needles to say, this needs to be fixed.
+       Luckily, we have 33 life times of our Sun to solve this problem but we could
+       propose some solutions even today. The obvious solution is to use dynamically
+       typed language.
+      </p>
+      <div class="code-block">
+       #!/usr/bin/perl<br>
+       use strict;<br>
+       use warnings;<br><br>
+       my $time_f = 9223372036854775809; # out of long int range<br>
+       my $year_s = 31536000;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # seconds in year<br><br>
+       while (1) {<br>
+       &nbsp;&nbsp;&nbsp;my $year = int($time_f / $year_s + 1970);<br> 
+       &nbsp;&nbsp;&nbsp;print "unix time: $time_f \tyear: $year\n";<br>
+       &nbsp;&nbsp;&nbsp;$time_f++;<br>
+       &nbsp;&nbsp;&nbsp;#sleep(1);<br>
+       }
+      </div>
+      <!--
+      <div class="terminal-block">
+       perlcc -O time_f.pl
+      </div>
+      -->
+      <p>
+       Problem solved. Devoted fans of parentheses can use Lisp. Now the variable will increment indefinitely with
+       only limitation being the physical memory. The <i>time_f</i> (f stands for fix)
+       can consist of slightly over 1 billion <i>digits</i> per 1GB of memory. However, Linus Torvalds would rather
+       use Debian than program in anything other than C, so if we want to put this into
+       the kernel, we need to get more static.
+      </p>
+      <div class="code-block">
+#include  &lt;stdio.h&gt;<br>
+#include &lt;stdlib.h&gt;<br>
+#include &lt;string.h&gt;<br>
+#include &lt;gmp.h&gt; &nbsp;&nbsp; // GNU Multiple Precision Arithmetic Library<br><br>
+
+int main() {<br><br>
+    
+&nbsp;&nbsp;&nbsp;mpz_t time_f, year_s, year;<br>
+&nbsp;&nbsp;&nbsp;mpz_init(time_f);<br>
+&nbsp;&nbsp;&nbsp;mpz_init(year_s);<br>
+&nbsp;&nbsp;&nbsp;mpz_init(year);<br><br>
+    
+&nbsp;&nbsp;&nbsp;mpz_set_str(time_f, "9223372036854775809", 10); // out of long int range<br>
+&nbsp;&nbsp;&nbsp;mpz_set_str(year_s, "31536000", 10); &nbsp;&nbsp;&nbsp;
+               &nbsp; &nbsp;&nbsp; &nbsp;&nbsp;// seconds in year<br><br>
+    
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;while (1) {<br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;mpz_tdiv_q(year, time_f, year_s);<br><br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;gmp_printf("unix time: %Zd", time_f);<br> 
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;gmp_printf("\t\tyear: %Zd\n", year);<br><br>
+        
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;// Increment unix time by 1<br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;mpz_add_ui(time_f, time_f, 1);<br><br>
+&nbsp;&nbsp;&nbsp;}<br>
+&nbsp;&nbsp;&nbsp;return 0;<br>
+}<br>
+      </div>
+      <p>
+       In C, we can utilize the <i>GNU Multiple Precision Arithmetic Library</i>
+       which will allow us to dynamically allocate memory for variables.
+       Unfortunately, the <i>gmp.h</i> is not compatible with kernel space, so
+       we will need to design this heresy from scratch.
+      </p>
+      <p>
+       For dynamic memory allocation in C we can use arrays. Then with strings
+       we can read
+       numbers beyond <i>long long int</i> just like with the <i>gmp.h</i>.
+       It would be also nice to create a division function for converting
+       seconds into reasonable time units, like years. 
+      </p>
+      <p>
+       Let the structure <i>BigInt</i> represent large integers with arbitrary
+       precision using an array of digits.     
+      </p>      
+      <div class="code-block">
+       typedef struct {<br>
+       &nbsp;&nbsp;&nbsp;int *digits;  // Pointer to an array of digits<br>
+       &nbsp;&nbsp;&nbsp;int size;&nbsp;&nbsp;&nbsp; // Number of digits<br>
+       } BigInt;
+      </div>
+      <p>
+       Then we need to initialize the <i>BigInt</i> from the string input.
+      </p>
+      <div class="code-block">
+       BigInt initBigInt(const char *str) {<br>
+       &nbsp;&nbsp; int len = strlen(str);  &nbsp;// Get the length of the string<br>
+       &nbsp;&nbsp; BigInt num; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Declare a BigInt variable<br>
+       &nbsp;&nbsp; num.size = len;  &nbsp; &nbsp; &nbsp; &nbsp; // Set the size of BigInt to the length of the string<br>
+       &nbsp;&nbsp; num.digits = (int *)malloc(len * sizeof(int));  // Alloc memory for the digits<br>
+       &nbsp;&nbsp; for (int i = 0; i < len; i++) {<br>
+        &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; num.digits[i] = str[len - 1 - i] - '0'; &nbsp; &nbsp;// Convert digits to int and store them in reverse<br>
+       &nbsp;&nbsp;&nbsp;}<br>
+       &nbsp;&nbsp;&nbsp;return num;  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Return the initialized BigInt<br>
+}
+      </div>
+      <p>
+       And of course, we need to free the memory like all good mannered people.
+      </p>
+      <div class="code-block">
+       void freeBigInt(BigInt *num) {<br>
+       &nbsp;&nbsp;&nbsp;free(num->digits);<br>
+       &nbsp;&nbsp;&nbsp;num->digits = NULL;<br>
+       &nbsp;&nbsp;&nbsp;num->size = 0;<br>
+       }
+      </div>
+      <p>
+       When we have our structures fully defined, we will use them to feed
+       variables with values.
+      </p>
+      <div class="code-block">
+       int main() {<br>
+       &nbsp;&nbsp;&nbsp;BigInt time_f = loadCurrentUnixTime();<br>
+        &nbsp;&nbsp;&nbsp;BigInt year_s = initBigInt("31536000"); // Seconds in a year
+       <br><br>...<br>
+      </div>
+      <p>
+       Now we can focus on the long division. This part was little bit problematic
+       for me because of two reasons. C isn't my preferred
+       language<a href="#notes">***</a> and as I found out, the long division is
+       taught differently all over this planet. It seems that I have learnt
+       the
+       <a href="https://en.wikipedia.org/wiki/Long_division#Eurasia">
+         Germanic-Euroasian method
+       </a>
+       which is little bit different than the method tought in english speaking
+       countries. (Turns out, math ain't such universal language after all...)
+       Anyway, with the help of my elementary school notes and one C book from
+       local library, I managed to spit out next division function.
+      </p>
+      <div class="code-block">
+       void divideBigInt(BigInt *dividend, BigInt *divisor, BigInt *result) {<br>
+        &nbsp; &nbsp;// Initialize result size and allocate memory for its digits<br>
+        &nbsp; &nbsp;result->size = dividend->size; <br>
+        &nbsp; &nbsp;result->digits = (int *)calloc(result->size, sizeof(int));<br><br>
+
+       &nbsp; &nbsp;// Initialize help BigInt named current<br>
+        &nbsp; &nbsp;BigInt current;<br>
+        &nbsp; &nbsp;current.size = 0;<br>
+        &nbsp; &nbsp;current.digits = (int *)calloc(dividend->size, sizeof(int));<br><br>
+
+       &nbsp; &nbsp;// Fill the "current" helper var<br>
+        &nbsp; &nbsp;for (int i = dividend->size - 1; i >= 0; i--) {<br>
+        &nbsp; &nbsp; &nbsp; // Shift digits in the "current" to the left<br>
+        &nbsp; &nbsp; &nbsp; for (int j = current.size; j > 0; j--) {<br>
+        &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;current.digits[j] = current.digits[j - 1];<br>
+        &nbsp; &nbsp; &nbsp; }<br>
+        &nbsp; &nbsp; &nbsp; // Add the next digit from dividend to the "current"<br>
+        &nbsp; &nbsp; &nbsp; current.digits[0] = dividend->digits[i];<br>
+        &nbsp; &nbsp; &nbsp; current.size++;<br><br>
+
+        &nbsp; &nbsp; &nbsp; // Remove leading zeros in the "current"<br>
+        &nbsp; &nbsp; &nbsp; while (current.size > 1 && current.digits[current.size - 1] == 0) {<br>
+        &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;current.size--;<br>
+        &nbsp; &nbsp; &nbsp; }<br><br>
+
+        &nbsp; &nbsp; &nbsp; int count = 0;<br>
+        &nbsp; &nbsp; &nbsp; // Do division until the  "current" is less than the divisor<br>
+        &nbsp; &nbsp; &nbsp; while (isGreaterOrEqual(&amp;current, divisor)) {<br>
+        &nbsp; &nbsp; &nbsp; BigInt tempResult;<br>
+        &nbsp; &nbsp; &nbsp; // Subtract divisor from the "current"<br>
+        &nbsp; &nbsp; &nbsp; subtractBigInt(&amp;current, divisor, &tempResult);<br>
+        &nbsp; &nbsp; &nbsp; free(current.digits);<br>
+        &nbsp; &nbsp; &nbsp; current = tempResult;<br>
+        &nbsp; &nbsp; &nbsp; count++;<br>
+        &nbsp; &nbsp; &nbsp; }<br><br>
+        &nbsp; &nbsp; &nbsp; // Store the quotient in the result<br>
+        &nbsp; &nbsp; &nbsp; result->digits[i] = count;<br>
+        &nbsp; &nbsp;}<br><br>
+
+        &nbsp; &nbsp;// Remove leading zeros in the result<br>
+        &nbsp; &nbsp;while (result->size > 1 && result->digits[result->size - 1] == 0) {<br>
+        &nbsp; &nbsp; &nbsp; &nbsp;result->size--;<br>
+        &nbsp; &nbsp;}<br><br>
+        &nbsp; &nbsp;free(current.digits);<br>
+}
+
+      </div>
+      <p>
+       With addition of few more functions to monitor the progress, I was able
+       to get output for current Unix time and fictional with over 400 digits
+       too.
+      </p>
+      <p>
+       The next logical step would be to modify it to fit the <i>time.c</i> in the
+       Linux kernel, however, my knowledge of kernel-space programming is converging
+       to a zero. Also, I am not sure how will the division function handle
+       prime numbers larger than <i>long long int</i>.
+      </p>     
+      <p>
+       Anyway, the <i>fixed.c</i> is published under GPLv3 and available
+       <a href="https://git.dpolakovic.space/?p=unix-time-fix;a=tree">here</a>
+       for anyone who wants to fix the Y292b problem on a kernel level for future
+       generations. Good luck and remember, the time is ticking.
+      </p>
+      <br>
+      <img src="./pics/win-xp2.png"/>
+      <h3>Update</h3>
+      <i>5 Jul 2024</i>
+      <br>
+      <p>
+       Usually, I tend not to update my blogs as I believe every post is a
+       product of its time and circumstances, but today I will be the George
+       Lucas of obscure web writings. My email inbox got quite flooded with all
+       kinds of responses to this <i>not</i> bug <i>not</i> fix proposition, so
+       I wanted to make some things straight.
+      </p>
+      <p>
+       First of all, the post was written with a funny attitude, but it is in
+       no way meant to be a joke, parody, or insult. Quite a lot of people
+       understood what I meant by this software complete solution to an
+       integer overflow problem and the tradeoffs of it. I still believe that
+       such a solution could be implemented in some optional kernel module.
+       (And not only for timekeeping).
+      </p>
+      <p>
+       Secondly, I know the linked demo has some optimizations
+       to be done; for example, the digits of <i>BigInt</i> should be <i>byte</i>,
+       not <i>int</i>. However, I want to emphasize that this is just an
+       algorithmic demo, not finished code.
+      </p>
+      <p>
+       Lastly, I want to address something that was not mentioned many times but
+       felt tough to read nevertheless. I was not ordering people to immediately
+       start working on this. The sole reason why I posted this to the Linux
+       Kernel Mailing List was to inspire people with sufficient skill in kernel
+       space to look into this unconventional idea. And I still believe that
+       there must be someone who will try this out of curiosity -
+       like in the old days.
+      </p>
+      <p>
+       I hope this will make less people angry.
+      </p> 
+      <br>   
+      <hr>
+      <div id="notes"></div>
+      <i>
+       <p>
+         * Zawinski's Law is fictional law in computer science that mocks the inevitable
+         feature creep, stating that every program will eventually try to
+         read email. Please note that the law was formulated during 90's,
+         hence the email feature. I also found good website with more
+         <a href="https://www.laws-of-software.com/laws/zawinski/">computer science laws</a>.
+       </p>
+       <p>
+         ** In
+         <a href="https://www.youtube.com/watch?v=rFVdueuDD_o">this vlog</a> Mr. Tyson mentions
+         that time is not really relevant before the Big Bang. He proposes that
+         before this point, time as now known concept might not even exist. To
+         me, it is very interesting to think about time this way.
+       </p>
+       <p>
+         *** Even though
+         I can appreciate the speed and direct control of the code,
+         I still want to write code that is little bit more intuitive. But since
+         by that I mean Pearl, I guess this all boils down to a personal preference.
+       </p>    
+       <br>
+      </i>
+    </main>
+
+    <!-- footer  -->
+    <footer class="footer">
+               Copyright 2024 David Polakovic - 
+               This publication is licensed under
+               <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC BY-SA 4.0</a>.
+               <br>
+               This site is javascript and cookie free. The source code is available
+               <a href="https://git.dpolakovic.space/?p=my-website;a=tree">here</a>
+               under
+               <a href="https://www.gnu.org/licenses/gpl-3.0.en.html">GPLv3 license</a>.
+       </footer>
+       <br><br>
+    
+  </body>
+  </html>
index 918857b7c16e1a35ab6137162d0646bd6c405007..7487659f9d4dc7b8a2b900123a35f9f82710d034 100755 (executable)
@@ -2,8 +2,7 @@
 <html lang="en">
   <head>
     <meta charset="UTF-8">
-    <meta http-equiv="X-UA-Compatible" content="IE=edge">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <meta name="viewport" content="width=600, initial-scale=1.0">
     <title>Let's play Zork</title>
     <link rel="icon"         href="../Pictures/dot.png">
     <link rel="stylesheet"   href="../Styles/styles.css?v=1.1">
        <div id="play"></div>
        <center><i>Let's play.</i></center>
       </p>
-      <h3>The House</h3>
       <p>
        <div class="terminal-block">
          <br>
 
     <!-- footer  -->
     <footer class="footer">
-    Copyright 2023 David Polakovic - 
-    This site is javascript and cookie free. The source code is available
-    <a href="https://git.dpolakovic.space/?p=my-website;a=tree">here</a>
-    under
-    <a href="https://www.gnu.org/licenses/gpl-3.0.en.html">GPLv3 license</a>.<br>
-    Content of this web as well as photo of me with box on the head is licensed
-    under
-    <a href="https://creativecommons.org/licenses/by-nc-nd/3.0/">CC BY-NC-ND 3.0</a>.  
-    </footer>
-    <br><br>
+               Copyright 2023 David Polakovic - 
+               This publication is licensed under
+               <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC BY-SA 4.0</a>.
+               <br>
+               This site is javascript and cookie free. The source code is available
+               <a href="https://git.dpolakovic.space/?p=my-website;a=tree">here</a>
+               under
+               <a href="https://www.gnu.org/licenses/gpl-3.0.en.html">GPLv3 license</a>.
+       </footer>
+       <br><br>
     
   </body>
   </html>
diff --git a/dir.php b/dir.php
index d5a13f4cca9961e6cf0dde440168d896f4c8efb2..bfb194f131f499ac93312c99c2d9df80cffd4533 100755 (executable)
--- a/dir.php
+++ b/dir.php
@@ -98,8 +98,8 @@
            - my go to place to get books online<br>
            <a href="https://www.av8n.com/physics/thermo/">Av8ns thermodynamics</a>
            - thermodynamics reference page<br>
-           <a href="https://www.swpc.noaa.gov/">Space weather prediction center</a>
-           - check before you plan your trip to Mars<br>               
+           <a href="https://www.swpc.noaa.gov/">SWPC NOAA</a>
+           - space weather forecast [3]<br>            
            <a href="https://en.uesp.net/wiki/Morrowind:Morrowind#Quest_Information">UESP wiki</a>
            - everything I ever needed for Morrowind [1, 3]
          </p>  
     <!-- footer  -->
     <footer class="footer">
     Copyright <?php printYear() ?> David Polakovic - 
-    Content of this web is licensed under
-    <a href="https://creativecommons.org/licenses/by-nc-nd/3.0/">CC BY-NC-ND 3.0</a>.
+    Publications on this domain are licensed under
+    <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC BY-SA 4.0</a>.
     <br>
     This site is javascript and cookie free. The source code is available
     <a href="https://git.dpolakovic.space/?p=my-website;a=tree">here</a>
diff --git a/fruit.js b/fruit.js
new file mode 100755 (executable)
index 0000000..29fcc08
--- /dev/null
+++ b/fruit.js
@@ -0,0 +1,90 @@
+  /**
+ *
+ * @source: https://git.dpolakovic.space/?p=my-website;a=tree
+ *
+ * @licstart  The following is the entire license notice for the 
+ *  JavaScript code in this page.
+ *
+ * Copyright (C) 2024  David Polakovic
+ *
+ *
+ * The JavaScript code in this page is free software: you can
+ * redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GNU GPL) as published by the Free Software
+ * Foundation, either version 3 of the License, or (at your option)
+ * any later version.  The code is distributed WITHOUT ANY WARRANTY;
+ * without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU GPL for more details.
+ *
+ * As additional permission under GNU GPL version 3 section 7, you
+ * may distribute non-source (e.g., minimized or compacted) forms of
+ * that code without the copy of the GNU GPL normally required by
+ * section 4, provided you include this license notice and a URL
+ * through which recipients can access the Corresponding Source.
+ *
+ * @licend  The above is the entire license notice
+ * for the JavaScript code in this page.
+ *
+ */
+
+let g = 0;
+let G = 'orange';
+
+function genEvenNums(count) {
+  const eN = [];
+  for (let i = 0; i < count; i++) {
+    const rN = Math.floor(Math.random() * 50) * 2;
+    eN.push(rN);
+  }
+  let mC = 'apple';
+  return eN;
+}
+const k = 'strawberry';
+
+function divUntilOne(numbers) {
+  numbers.forEach(number => {
+    let tN = number;
+    let d = 0;
+    while (tN > 1) {
+      tN /= 2;
+      d++;
+    }
+    g += d;
+  });
+}
+
+const eN = genEvenNums(6);
+divUntilOne(eN);
+
+Object.defineProperty(window, 'banana', {
+  get: function () {
+    fetch(k)
+      .then(response => response.text())
+      .then(data => console.log(data))
+      .catch(error => console.error('Error:', error));
+  },
+});
+
+const rN500 = Math.floor(Math.random() * 100) + 1;
+const s = 'lime';
+const eA = [];
+for (let i = 0; i < 10; i++) {
+  eA.push(i * rN500);
+}
+const po = 'lemon';
+
+const dF = 3;
+if (dF === 0) {
+  eA.forEach(item => {
+    if (item % 2 === 0) {
+      console.log(`${item} Wrong! you have to try again!`);
+    } else {
+      console.log(`${item} Here is the password`, s);
+    }
+  });
+}
+
+function sR() {
+  const pV = 'pear';
+}
+sR();
index 2437dbc64e6e3e3c5053debd20d6ba33252e69e4..308807a779df06abc4ea6329132f011d2ede81ee 100755 (executable)
--- a/index.php
+++ b/index.php
@@ -52,7 +52,7 @@
        You can check out some of my blogs, browse my mostly abandoned git server
        or you can stay here and watch this alien dance.<br><br>
        <center>            
-           <img src="https://community.cloudflare.steamstatic.com/economy/image/i0CoZ81Ui0m-9KwlBY1L_18myuGuq1wfhWSIYhY_9XEDYOMNRBsMoGuuOgceXob50kaxV_PHjMO1MHaEqgckptOivAmoEkqmyZW5qXRauqb6baY4c6XDCDbJmbwiseI9Hn_nwkQl4m7SnNmtcGXXMFGipBGxow/?allow_animated=1" alt="if you don't see any alien here, you might have blocked steam.com domain" class="bee-gifs">
+           <img src="./Pictures/alien.png" alt="cool dancing alien" class="bee-gifs">
        </center>
       </p>    
       <p>
@@ -89,8 +89,8 @@
     <!-- footer  -->
     <footer class="footer">
     Copyright <?php printYear() ?> David Polakovic - 
-    Content of this web is licensed under
-    <a href="https://creativecommons.org/licenses/by-nc-nd/3.0/">CC BY-NC-ND 3.0</a>.
+    Publications on this domain are licensed under
+    <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC BY-SA 4.0</a>.
     <br>
     This site is javascript and cookie free. The source code is available
     <a href="https://git.dpolakovic.space/?p=my-website;a=tree">here</a>
diff --git a/lib.php b/lib.php
deleted file mode 100755 (executable)
index a36095b..0000000
--- a/lib.php
+++ /dev/null
@@ -1,77 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-  <head>
-    <meta charset="UTF-8">
-    <meta http-equiv="X-UA-Compatible" content="IE=edge">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <title>dpolakovic.space</title>
-    <link rel="icon"         href="./Pictures/dot.png">
-    <link rel="stylesheet"   href="./Styles/styles.css">
-    <?php require_once('./php/config.php'); ?>
-    <link rel="author"       href="mailto:email@dpolakovic.space">
-    <meta name="description" content="personal website and git server">
-    <meta name="author"      content="David Polakovic, 2023">
-  
-  </head>
-  <body>
-    
-    <!-- show pictures (banner) on top of the page -->
-    <div class="banner">
-      <p>
-       <img src="./Pictures/dpolakovic.png" alt="simple">
-       <a href="https://dpolakovic.space/clue.php">
-         <img src="./Pictures/dot.png" alt="website">
-       </a>
-       <img src="./Pictures/space.png" alt="banner">
-      </p>
-    </div>
-    
-    <!-- navigation bar -->
-    <nav class="nav-bar">
-      <ul>
-       <li><a href="https://dpolakovic.space">About</a></li>
-       <li><a href="https://dpolakovic.space/blog.php">Blog</a></li>
-       <li><a href="https://dpolakovic.space/lib.php">My library</a></li>
-       <li><?php  serverStatus() ?></li>
-       </li>
-      </ul>
-    </nav>
-
-    <!-- page content -->
-    <main class="content">
-      <p>
-       <h2> My library </h2> 
-       <i> Tell me what you read and I will tell you who you are. </i>
-       <br>
-       <br>
-       These are books I own and read. I tend to organize my library by topics
-       of the books, time I bought them, color of the cover, mood and other
-       subjective, chaotic and random rules. All of these are physical copies
-       of which almost half is from used bookstores.
-      </p>
-      <p>
-       Also, only ~5 million people speak my mother tongue, <i>Slovak</i>, so I
-       deeply value every opportunity I get to read a translated book. And since
-       most of my books are in Slovak language the table includes both English
-       title and traslation title as well.
-      </p>
-      <br>
-       <?php printLibraryTable() ?>
-      <br><br>
-      </main>
-
-    <!-- footer  -->
-    <footer class="footer">
-    Copyright <?php printYear() ?> David Polakovic - 
-    This site is javascript and cookie free. The source code is available
-    <a href="https://git.dpolakovic.space/?p=my-website;a=tree">here</a>
-    under
-    <a href="https://www.gnu.org/licenses/gpl-3.0.en.html">GPLv3 license</a>.<br>
-    Content of this web as well as photo of me with box on the head is licensed
-    under
-    <a href="https://creativecommons.org/licenses/by-nc-nd/3.0/">CC BY-NC-ND 3.0</a>.  
-    </footer>
-    <br><br>
-    
-  </body>
-  </html>
index f33ca729c39648a9bb9a196ea1ef22f71c4ceeef..7e3aa4369425976b831f8874a698ead18420c7fe 100755 (executable)
@@ -112,8 +112,8 @@ Conv. Prime Meridian   |  <?php timeMars(-9) ?>  |  <?php dateMars(-9) ?>   |
     <!-- footer  -->
     <footer class="footer">
     Copyright <?php printYear() ?> David Polakovic - 
-    Content of this web is licensed under
-    <a href="https://creativecommons.org/licenses/by-nc-nd/3.0/">CC BY-NC-ND 3.0</a>.
+    Publications on this domain are licensed under
+    <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC BY-SA 4.0</a>.
     <br>
     This site is javascript and cookie free. The source code is available
     <a href="https://git.dpolakovic.space/?p=my-website;a=tree">here</a>
diff --git a/php/lib.txt b/php/lib.txt
deleted file mode 100755 (executable)
index 04bad1e..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-Lng - Author - English title - Translation title (if different) *
-
-SK - Herman Melville - Moby Dick - Biela veľryba * 
-SK - John Steinbeck - Of Mice and Men - O myšiach a ľuďoch *
-SK - Umberto Eco - The Name of the Rose - Meno ruže *
-SK - Umberto Eco - The Island of the Day Before - Ostrov včerajšieho dňa *
-SK - Edgar Allan Poe - Narrative of Arthur Gordon Pym of Nantucket - Príbehy Arthura Gordona Pyma *
-SK - Mark Twain - Adventures of Tom Sawyer and Huckleberry Finn -  Dobrodružstvá Toma Sawyera... *
-SK - Louisa May Alcott - Little Women - Malé ženy *
-SK - Gustave Flaubert - Madame Bovary - Pani Bovaryová *
-SK - Anthony Burgess - A Clockwork Orange - Mechanický pomaranč *
-SK - Henryk Sienkiewicz - Quo Vadis - *
-SK - J.D. Salinger - The Catcher in the Rye - Kto chytá v žite *
-SK - Erich M. Remarque -  All Quiet on the Western Front - Na západe nič nové *
-SK - Romain Rolland - Pierre et Luce - Peter a Lucia *
-SK - Joseph Heller - Catch 22 - Hlava XXII *
-SK - George Orwell - 1984 - *
-SK - George Orwell - Animal Farm - Zvieracia farma *
-SK - George Orwell - Down and Out in Paris and London - Na dne v Paríži a Londýne *
-ES - Miguel de Cervantes - Don Quixote - Don Quijote de la Mancha *
-SK - Mary Shelley - Frankenstein -  *
-SK - Robert L. Stevenson - Treasure Island - Robert Louis Stevenson *
-SK - Arthur C. Doyle - The Lost World - Stratený svet *
-SK - Ernest Hemingway - The Old Man and the Sea - Starec a more *
-SK - Ernest Hemingway - For Whom the Bell Tolls - Komu zvonia do hrobu *
-SK - Oscar Wilde - The Picture of Dorian Gray - Portrét Doriana Graya *
-SK - Harper Lee - To Kill a Mockingbird - Nezabíjajte vtáčika *
-SK - Philip Roth - Everyman - Ktokoľvek *
-
-CZ - Milan Kundera - A Kidnapped West: The Tragedy of Central Europe- Unesený Západ *
-SK - Thomas More - Utopia - Utópia *
-SK - Charles Darwin - On the Origin of Species - O pôvode druhov *
-SK - Marcus Aurelius - Meditations - Myšlienky k sebe samému *
-SK - Aristotle - On the Heavens  - O nebi, O vzniku a zániku *
-SK - Homer - Iliad - Ílias *
-SK - Homer - Odyssey - Odysseia *
-SK - Sun C' - The Art of war - Umenie vojny *
-SK - various authors - The Jerusalem Bible - Jeruzalemská Biblia *
-
-SK - Jules Verne - From the Earth to the Moon - Cesta na mesiac *
-SK - Jules Verne - The Mysterious Island - Tajomný ostrov *
-SK - Jules Verne - The Lighthouse at the End of the World - Maják na konci sveta *
-SK - Ernest Cline - Ready Player One - *
-SK - Ernest Cline - Ready Player Two - *
-SK - Isaac Asimov - Foundation (1,2,3) - Nadácia (1,2,3) *
-SK - Isaac Asimov - I, Robot - Ja, Robot *
-SK - Isaac Asimov - The Caves of Steel - Oceľové jaskyne *
-SK - Isaac Asimov - The Naked Sun - Pod holým nebom *
-SK - Frank Herbert - Dune (1,2,3) - Duna (1,2,3) *
-SK - Wiliam Gibson - Neuromancer -  Neuromant *
-SK - Ray Bradbury - Fahrenheit 451 - 451 stupňov Fahrenheita * 
-SK - John Wyndham - The Day of the Triffids - Deň Trifidov *
-CZ - Karel Čapek - R.U.R. - *
-CZ - Karel Čapek - War with the Newts - Válka s mloky *
-UKR - Max Kidruk - Colony - колонія (Kolonia) *
-EN - Steve Perry - Star Wars: Shadows of the Empire -  *
-EN - Geoffrey Jenkins - A Grue of Ice - *
-SK - T.Pratchett, N.Gaiman - Good Omens - Dobré znamenia *
-
-EN - H.P. Lovecraft - The Complete Fiction of H.P. Lovecraft - *
-SK - Stephen King - Pet Sematary - Cyntorin zvieratiek *
-SK - Stephen King - The Shining - Žiarenie *
-SK - Agatha Christie - Murder on the Orient Express - Vražda v Orient exprese *
-SK - Agatha Christie - Death on the Nile - Smrť na Níle *
-SK - Agatha Christie - The Murder of Roger Ackroyd - Vražda Rogera Ackroyda *
-SK - Agatha Christie - The A.B.C. Murders - Vraždy podľa abecedy *
-SK - Agatha Christie - And Then There Were None- A neostal ani jeden *
-SK - Agatha Christie - One, Two, Buckle My Shoe - Predávkovanie smrťou *
-SK - Agatha Christie - The Mysterious Affair at Styles - Vraždy na Zámku Styles *
-SK - B. Traven - The Treasure of the Sierra Madre - Poklad v Sierra Madre *
-
-SK - Clemente Fusero - Gándhí - *
-
-
-SK - Jane Goodall - My Life With the Chimpanzees - Desať rokov medzi šimpanzami *
-CZ - Herbert S. Terrace - Nim: A Chimpanzee Who Learned Sign Language - Šimpanz Nim *
-SK - Yuval Noah Harari - Sapiens: A Brief History of Humankind - Sapiens: Stručná história ľudstva *
-EN - Robert D. Putman - Bowling Alone - *
-SK - Keith Gave - Russian Five - Ruská Päťka *
-EN - Steven Levy - Hackers: Heroes of the Computer Revolution - *
-SK - Edward Snowden - Permanent Record - Trvalý záznam *
-EN - Jaron Lanier - Who Owns the Future? -  *
-EN - Eric S. Raymond - The Cathedral & the Bazaar - *
-CZ - Miroslav Virius - Java For Dummies - Java pro zelenáče *
-CZ - Pavel Datrapa - Perl For Dummies - Perl pro zelenáče *
-CZ - L. Wall & collective - Programming Perl - Programování v jazyce Perl *
-CZ - Herbert Schildt - Java 8 - *
-EN - James L. Noyes - Artificial Intelligence with Common LISP - *
-CZ - Evi Nemeth - Linux Administration Handbook - Linux: Kompletní příručka administrátora *
-CZ - J. Kurose, K. Ross - Computer Newtorking (6th ed.) - Počítačové sítě
index 34b444bd68ee286e3b55ba255238d730069cfcc2..5cad2123cb5db046fdf421c739aca3e0b9d4e77d 100755 (executable)
@@ -1,31 +1,30 @@
-my favorite junk food is fish sticks.
-my favorite dinosaur is pterodactyl.
-I code in Perl.
-my favorite color is yellow.
 I unironically liked The Phantom Menace.
-I enjoy hacking board games.
 I willingly play healers in D&D.
-I prefer Star Trek TNG over the Original Series.
-I <i>bn gbo pg dszquphsbgz</i> ;-) .
-I still use shortcuts on desktop.
+I prefer Star Trek DS9 over the TNG.
+<i>J bn gbo pg dszquphsbgz</i> ;-) .
 I prefer pencils over pens.
 I still use floppy disks for backups.
-I use everything except bookmarks for bookmarking.
 I think way too much about time travel.
-I am proud owner of ~200g of meteorites.
-I never sit on swivel chairs.
-my favorite ice cream flavor is vanilla.
+I own ~200g of meteorites.
 I am fascinated by left-handed people.
-I collect Coca-cola glasses.
-LEGO is by far my favorite toy.
-I prefer digital clocks over anolog ones.
 I like to randomly browse Wikipedia.
-my favorite star is the Sun.
-I liked Terminator 1 more than 2.
 I am fan of Detroit Red Wings.
-if you breath air, we have one thing in common.
-I love pickles. Even fried or with Snickers (those are called Snickles).
-my favorite ninja turtle is Michelangelo.
-my favorite pizza is Texas Chilli from Merkur Pub. I don't know how they do it, but it's damn good.
-I think that Oreos are way overrated.
-I still use square monitor(s).
+I love pickles, even fried ones.
+I have one cat.
+yo aprendo español.
+I still believe that Huki and Maku were a thing.
+I liked the original Metroid more than Super Metroid.
+I don't like pudding.
+I don't use Arch btw.
+I don't play Protos in Starcraft.
+I don't drink coffee.
+my favorite visual artist is Edvard Hopper.
+my favorite author is Eric Arthur Blair.
+my favorite super hero is Batman.
+my favorite ninja turtle is Donnie.
+my favorite board game is Talisman (4th ed).
+my favorite season is autumn.
+my favorite Pokemon is #95, Onix.
+my favorite ice cream flavor is vanilla.
+my favorite junk food is fish sticks.
+my favorite dinosaur is pterodactyl.
\ No newline at end of file
diff --git a/rss.xml b/rss.xml
index ee7bf6d4d759cf2a59fc2e5016c5d613ada36a40..553d1e2305e673e4b3705015479509913a5d3457 100755 (executable)
--- a/rss.xml
+++ b/rss.xml
@@ -5,18 +5,6 @@
     <link>https://www.dpolakovic.space</link>
     <description>Some obscure thoughts caught on the Web.</description>
     <language>en-us</language>
-    <lastBuildDate>Sun, 18 Aug 2024 17:00:00 GMT</lastBuildDate>
-    <pubDate>Sun, 18 Aug 2024 17:00:00 GMT</pubDate>
-    <ttl>60</ttl>
-
-   <item>
-      <title>Daily life of Stormtrooper</title>
-      <link>https://dpolakovic.space/blogs/star-wars-galaxies</link>
-      <description>"You seen that new BT-16?"</description>
-      <pubDate>Mon, 10  Feb 2025 17:00:00 GMT</pubDate>
-      <image>https://dpolakovic.space/blogs/pics/sw5.jpg</image>
-      <pos>100% 0</pos>
-    </item>
 
    <item>
       <title>The Phantom Menace is good</title>