<!-- 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>
+++ /dev/null
-<!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>
<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">
<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>
--- /dev/null
+<!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>
--- /dev/null
+<!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 > Passwords > 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 > Printers > 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 > Network > Logon</i>.
+ Open <i>Edit</i> menu pick <i>New > 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 > 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 > Network > 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 > Find > 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>
--- /dev/null
+<!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; # seconds in year<br><br>
+ while (1) {<br>
+ my $year = int($time_f / $year_s + 1970);<br>
+ print "unix time: $time_f \tyear: $year\n";<br>
+ $time_f++;<br>
+ #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 <stdio.h><br>
+#include <stdlib.h><br>
+#include <string.h><br>
+#include <gmp.h> // GNU Multiple Precision Arithmetic Library<br><br>
+
+int main() {<br><br>
+
+ mpz_t time_f, year_s, year;<br>
+ mpz_init(time_f);<br>
+ mpz_init(year_s);<br>
+ mpz_init(year);<br><br>
+
+ mpz_set_str(time_f, "9223372036854775809", 10); // out of long int range<br>
+ mpz_set_str(year_s, "31536000", 10);
+ // seconds in year<br><br>
+
+ while (1) {<br>
+ mpz_tdiv_q(year, time_f, year_s);<br><br>
+ gmp_printf("unix time: %Zd", time_f);<br>
+ gmp_printf("\t\tyear: %Zd\n", year);<br><br>
+
+ // Increment unix time by 1<br>
+ mpz_add_ui(time_f, time_f, 1);<br><br>
+ }<br>
+ 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>
+ int *digits; // Pointer to an array of digits<br>
+ int size; // 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>
+ int len = strlen(str); // Get the length of the string<br>
+ BigInt num; // Declare a BigInt variable<br>
+ num.size = len; // Set the size of BigInt to the length of the string<br>
+ num.digits = (int *)malloc(len * sizeof(int)); // Alloc memory for the digits<br>
+ for (int i = 0; i < len; i++) {<br>
+ num.digits[i] = str[len - 1 - i] - '0'; // Convert digits to int and store them in reverse<br>
+ }<br>
+ return num; // 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>
+ free(num->digits);<br>
+ num->digits = NULL;<br>
+ 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>
+ BigInt time_f = loadCurrentUnixTime();<br>
+ 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>
+ // Initialize result size and allocate memory for its digits<br>
+ result->size = dividend->size; <br>
+ result->digits = (int *)calloc(result->size, sizeof(int));<br><br>
+
+ // Initialize help BigInt named current<br>
+ BigInt current;<br>
+ current.size = 0;<br>
+ current.digits = (int *)calloc(dividend->size, sizeof(int));<br><br>
+
+ // Fill the "current" helper var<br>
+ for (int i = dividend->size - 1; i >= 0; i--) {<br>
+ // Shift digits in the "current" to the left<br>
+ for (int j = current.size; j > 0; j--) {<br>
+ current.digits[j] = current.digits[j - 1];<br>
+ }<br>
+ // Add the next digit from dividend to the "current"<br>
+ current.digits[0] = dividend->digits[i];<br>
+ current.size++;<br><br>
+
+ // Remove leading zeros in the "current"<br>
+ while (current.size > 1 && current.digits[current.size - 1] == 0) {<br>
+ current.size--;<br>
+ }<br><br>
+
+ int count = 0;<br>
+ // Do division until the "current" is less than the divisor<br>
+ while (isGreaterOrEqual(&current, divisor)) {<br>
+ BigInt tempResult;<br>
+ // Subtract divisor from the "current"<br>
+ subtractBigInt(&current, divisor, &tempResult);<br>
+ free(current.digits);<br>
+ current = tempResult;<br>
+ count++;<br>
+ }<br><br>
+ // Store the quotient in the result<br>
+ result->digits[i] = count;<br>
+ }<br><br>
+
+ // Remove leading zeros in the result<br>
+ while (result->size > 1 && result->digits[result->size - 1] == 0) {<br>
+ result->size--;<br>
+ }<br><br>
+ 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>
<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>
- 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>
--- /dev/null
+ /**
+ *
+ * @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();
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>
<!-- 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>
+++ /dev/null
-<!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>
<!-- 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>
+++ /dev/null
-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ě
-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
<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>