piece of cyberspace. Here is description of the files:
.htaccess - hides file extensions in address bar
-index.php - the "About page" with contacts (not much going on here)
-blog.php - here I place my toughts which could be sorted by form (blogs or tweets)
+index.php - the "About page" with contact info (not much going on here)
+blog.php - here I place my some of my toughts (they are loaded from rss.xml)
lib.php - my book library in one table
-gpg.html - page with my email gpg key
-test.html - default test page for troubleshooting new features
-both .txt files are sources for php sites with hand written content.
-blog/pics/ - pictures for blogs
-blogs/blog-list.html - source for tweets and links to blogs for blog.php
+gpg.html - page with my public gpg key
+test.php - default test page for troubleshooting and new features
+cypher.html - ?
+dir.php - links to useful stuff
+rss.xml - rss feed for my blogs
+blogs/pics/ - pictures for blogs
blogs/blog-template.html - default template for new blogs
-Pictures/ - directory with all pictures for sites (except the blogs)
-Styles/* - dir with font I use and CSS style file
+php/ - all php code on one place
+Pictures/ - directory with all pictures on the web (except for the blogs)
+Styles/ - dir with font I use and CSS style file
+Zax/ - stuff for my other website https://www.zax-game.com (simple, one page)
LICENSE:
https://www.gnu.org/licenses/gpl-3.0.en.html
just simple bar from W3 schools with minor edits
https://www.w3schools.com/Css/css_navbar_horizontal.asp
*/
-.nav-bar {}
-.nav-bar ul {
- list-style-type: none;
- max-width:1000px;
- width: 100%;
- margin: 0 auto;
- padding: 0;
- overflow: hidden;
- background-color: #333;
- border-radius: 10px;
+nav {
+ display: flex;
+}
+
+.nav-bar > ul {
+ list-style-type: none;
+ max-width: 1000px;
+ width: 100%;
+ margin: 0 auto;
+ padding: 0;
+ background-color: #333;
+ border-radius: 10px;
}
-/* make everything stick to left side */
.nav-bar li {
- float: left;
+ float: left;
+}
+
+.nav-bar li a {
+ display: block;
+ color: white;
+ text-align: center;
+ padding: 14px 16px;
+ text-decoration: none;
}
-/* make "Git server" be on the far right */
.nav-bar li:last-child {
- float: right;
+ float: right;
+ position: relative;
}
-/* style for contents of the nav bar */
-.nav-bar li a {
- display: block;
- color: white;
- text-align: center;
- padding: 14px 16px;
- text-decoration: none;
+.nav-bar li:last-child a {
+ border-radius: 0 14px 14px 0;
}
-/* make background of the "Git server" with other color */
.gitserver {
- background-color: #1e1e1e;
+ background-color: #1e1e1e;
+}
+
+.gitstatus {
+ display: none;
+ list-style-type: none;
+ position: absolute;
+ color: black;
+}
+
+.nav-bar li:last-child:hover .gitstatus {
+ display: block;
}
+/*
+.gitstatus li::before {
+ content: '';
+ width: 10px;
+ height: 10px;
+ border-radius: 50%;
+ position: absolute;
+ top: 50%;
+ left: -14px;
+ transform: translateY(-50%);
+ background-color: green;
+}
+
+.gitstatus.offline li:before {
+ background-color: red;
+}
+*/
/* Banner pictures
style pictures shown on top of every page - should be all same size,
max-width: 100%;
}
+.content img.bee-gifs {
+ max-width: 95px;
+}
+
.hide-link {
color: inherit;
text-decoration: inherit;
float: right;
}
+.dir {
+ margin-left: 10px;
+}
+
/* Blog previews
these are clases for my blog page - they show small picture and
description in small fonts
}
.blog-prev-text {
+ margin-left: 10px;
height: 95px;
float: left;
color: #545454;
border: 1px solid #000;
/*border-left: 3px solid #f36d33; */
border-left: 3px solid #000;
- color: #99ffe6;
- /*color: #80ffdf; */
+ color: white;
+ /* color: #99ffe6;
+ color: #80ffdf; */
font-weight: bold;
page-break-inside: avoid;
font-family: monospace;
--- /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>Zax The Alien Hunter</title>
+ <!--<link rel="icon" href="icon.png">-->
+ <link rel="stylesheet" href="styles.css">
+ <link rel="author" href="mailto:email@dpolakovic.space">
+ <meta name="description" content="Zax: The alien hunter fan(?) page">
+ </head>
+ <body>
+ <!-- page content -->
+ <main class="content">
+ <h2>
+ Welcome to the <i>new</i> official site of ZAX The Alien Hunter videogame!
+ </h2>
+ <h3>
+ When I got my first PC, Zax was one of the three games that came bundled
+ with it. The other two were Morrowind and Aquanox. Out of nostalgia I
+ searched my room for this promo CD and I saw this domain printed on
+ top of it. Turns out it was free to claim. Now I have free ad for website
+ on 20 years old disk. <i>nice</i>
+ </h3>
+ <h3>
+ If you are super fan of this game, send me an
+ <a href="mailto:email@dpolakovic.space?subject=Zax super fan">>>email</a>
+ and I will put your name here on the official domain.
+ </h3>
+ <br><br>
+ <h3><center>THE FAN CLUB:</center></h3>
+ <i>
+ David (<a href="https://dpolakovic.space">me!</a>),
+ Majky, rancor4, KCR, ScarletWitch, Princess_Bx2,
+ WoodenBarQueen, RoperSoul_X, StickyBall_2
+ </i>
+ </main>
+ </body>
+ </html>
--- /dev/null
+@font-face{
+ font-family: Sans-serif;
+ src: url('Helvetica_Narrow_Bold.TTF');
+ font-weight: bold;
+}
+
+body {
+ background: linear-gradient(rgba(0, 0, 0, 0.8), rgba(0, 0, 0, 0.8)),
+ url('wall.jpg');
+ background-repeat: no-repeat;
+ background-attachment: fixed;
+ background-position: center;
+ background-color: black;
+ color: #e2ddba;
+}
+
+h2 {
+ color: white;
+}
+
+a {
+ color: green;
+}
+
+/* Main content
+ style for main content of each page - centers text and other stuff
+*/
+.content {
+ max-width: 975px;
+ width: 100%;
+ margin: 0 auto;
+ #text-align: justify;
+ padding: 100px 0;
+}
+
+.what-is-this {
+ color: #34301a;
+}
+
<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?v=1.1">
+ <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>
<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><a class="gitserver" href="https://git.dpolakovic.space">Git server</a>
- </li>
+ <li><a href="https://dpolakovic.space/dir.php">Web directory</a></li>
+ <li><?php serverStatus() ?></li>
</ul>
</nav>
<!-- page content -->
<main class="content">
<p>
- <h2> Blog </h2>
- <i> Some obscure thoughts caught on the Web. </i>
+ <h2>Blog</h2>
+ <i> Some obscure thoughts caught on the Web.</i>
+ <a class="banner" href="https://dpolakovic.space/rss.xml">
+ <img src="./Pictures/rss2.png" alt="link to rss.xml file">
+ </a>
<br>
<br>
- After eating and breathing, expressing opinions on the internet is the
- most important human need. Here are some of mine that occupied my mind
- for more than few seconds (but not much more). You can sort them to see
- bigger blogs or smaller, more random "tweets".
- </p>
- <?php
-
- $sort = 'all';
-
- // check if hyperlink has been clicked
- if (isset($_GET['sort']))
- {
- $sort = $_GET['sort'];
- }
-
-
- // Function for front page, shows latest 5 entries
- function printFile($filename) {
- $lines = file($filename);
- $count = 0; // counter for lines
- echo '<div>'; // a container for the lines
-
- foreach ($lines as $line) {
- echo $line . '<br>';
- $count++;
-
- // break the loop after displaying 5 lines
- if ($count >= 5) {
- break;
- }
- }
-
- echo '</div>';
- }
-
-
- // Prints latest 15 tweets and offers user to see them all
- function printFileTweets($filename) {
- $lines = file($filename);
- $count = 0;
- echo '<div>';
-
- foreach ($lines as $line) {
- // check for word "tweet" in the lines
- if (strpos($line, 'tweet') !== false) {
- echo $line . '<br>'; // Display the line if it contains 'foo'
- $count++;
-
- if ($count >= 15) {
- break; // Break the loop after displaying 15 matching lines
- }
- }
- }
-
- if ($count >= 15) {
- // Display a clickable link if there are more than 15 matching lines
- echo '<center><a href="https://dpolakovic.space/blog.php?sort=tweetsfull">Check the rest...</a></center>';
- }
-
- echo '</div>';
- }
-
-
- // Prints all tweets
- function printFileAllTweets($filename) {
- $file = fopen($filename, "r");
-
- while (($line = fgets($file)) !== false) {
- // check for word "tweet" in the lines
- if (strpos($line, 'tweet') !== false) {
- echo $line . '<br>';
- }
- }
- fclose($file);
- }
-
-
- // Prints latest 15 blogs and offers user to see them all
- function printFileBlogs($filename) {
- $lines = file($filename);
- $count = 0;
- echo '<div>';
-
- foreach ($lines as $line) {
- // check for word "blog-prev" in the lines
- if (strpos($line, 'blog-prev') !== false) {
- echo $line . '<br>'; // Display the line if it contains 'foo'
- $count++;
-
- if ($count >= 15) {
- break; // Break the loop after displaying 15 matching lines
- }
- }
- }
-
- if ($count >= 15) {
- // Display a clickable link if there are more than 15 matching lines
- echo '<center><a href="https://dpolakovic.space/blog.php?sort=blogsfull">Check the rest...</a></center>';
- }
- echo '</div>';
- }
-
-
- // Prints all blogs
- function printFileAllBlogs($filename) {
- $file = fopen($filename, "r");
-
- while (($line = fgets($file)) !== false) {
- // check for word "blog-prev" in the lines
- if (strpos($line, 'blog-prev') !== false) {
- echo $line . '<br>';
- }
- }
- fclose($file);
- }
- ?>
- <p>
- <center>
- Sort:
- <!-- <a href="?sort=all">All</a> -->
- <a href="?sort=tweets">Tweets</a>
- <a href="?sort=blogs">Blogs</a>
- </center>
- </p><br>
<?php
- //debug
- //echo "<br>Current value of key: $key <br>";
-
- // Print file sorted by user input
-
- // save path to the file into variable...
- $filename = './blogs/blog-list.html';
-
- // default - main page
- if ($sort == "all") {
- printFile($filename);
- }
-
- // show first 15 tweets
- if ($sort == "tweets") {
- printFileTweets($filename);
- }
-
- // show first 15 blogs
- if ($sort == "blogs") {
- printFileBlogs($filename);
- }
-
- // show all tweets
- if ($sort == "tweetsfull") {
- printFileAllTweets($filename);
- }
-
- // show all blogs
- if ($sort == "blogsfull"){
- printFileAllBlogs($filename);
- }
- ?>
- <br>
+ printBlog2("./rss.xml");
+ ?>
+ <br>
</main>
<!-- footer -->
- <footer class="footer">
- copyright 2023 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 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>
-
+ <br><br>
</body>
</html>
+++ /dev/null
-<div class="tweet">01.01.2000<br>blah blah blah</div>
-<div class="blog-prev"><div class="blog-prev-img"><a href="https://dpolakovic.space/blogs/blog-template.html"><img src="https://dpolakovic.space/blogs/pics/bug.jpg" alt="text" style="object-position: 100% 0;"></a></div><div class="blog-prev-text"> <a href="https://dpolakovic.space/blogs/blog-template.html">BLOG TITLE</a><br> DATE<br><i> text text text</i></div></div>
<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?v=1.1">
+ <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>
<main class="content">
<p>
<h2>TITLE HERE</h2>
- <i>00.00.0000 - text text text</i>
+ <i>00 Mmm 202X - text text text</i>
<br>
<p>
<!-- PUT HERE A PICTURE -->
</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
<!-- footer -->
<footer class="footer">
- copyright 2023 David Polakovic
+ 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>
--- /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> On the nature of Free software</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> On the nature of Free software </h2>
+ <i> 25 Jul 2023 - Does your synthetic colleague pose a threat to you?</i>
+ <br>
+ <p>
+ <!-- PUT HERE A PICTURE -->
+ <img src="https://dpolakovic.space/blogs/pics/free2.jpg"
+ alt="Ash from Alien (1979)">
+ </p>
+ <p>
+ A spaceship silently floats in space. There are eight passengers on board,
+ one of which is a monster, hidden from the others. When the monster kills
+ the first passenger, five remaining crew members try to kill the monster
+ but one tries to secretly keep it alive. This passenger is Ash and he is
+ a Čapek-style robot, programmed to help other passengers fulfill their
+ jobs and duties on board. He is also programmed to do other tasks like
+ protect anything with high value to the company that made him. For example,
+ a specimen of the first alien organism – the monster. Unknown to his crew
+ mates, their lives, sadly, have less value than his secret mission.
+ This is the plot of a 1979 movie Alien. Nowadays, while extraterrestrials
+ are still science fiction, universal machines and evil tech corporations
+ are not.
+ </p>
+ <p>
+ So how can you know if your computer or Hyperdyne Systems 120-A/2 series
+ robot isn't plotting some evil schemes against you? <i>Simply</i>, look into
+ its source code. Everything a machine can, and will do, is written there.
+ Problem is that overwhelming majority of software has inaccessible source
+ code. This is clever trick programmers use to avoid reading and copying
+ theirs software. (I will not comment on copying the software as
+ it might lead to talks about so called "piracy"[<a href="#notes">*</a>], which isn't
+ topic I want to explore here.) But when the source code is hidden it also
+ creates situation where you, as a user, might not benefit from the software
+ as much as the author does. Like when <i>same versions</i> of your favorite
+ spreadsheet editor are distributed differently with
+ <a href="https://answers.microsoft.com/en-us/msoffice/forum/all/my-excel-2016-missing-the-ifs-function/535af21d-456e-4305-a72b-7986211aeab1">
+ functionality locked</a>
+ behind a paywall. Or when a manufacturer decides what
+ <a href="https://archive.nytimes.com/pogue.blogs.nytimes.com/2009/07/17/some-e-books-are-more-equal-than-others/">files</a>
+ you can have on <i>your own</i> device.
+ </p>
+ <!--
+ <p>
+ (Dis)honorable mention include software called SoftRAM, which during
+ Win3.1 and 9X era claimed that can double your memory without physical
+ upgrade.
+ </p>
+ -->
+ <p>
+ Luckily, there are programs with open source code, so
+ the author has less possibilities how to make your life miserable.
+ Open Source programs have their code published publically to be read and
+ edited as you see fit, so you are always able to see what is going on
+ inside the program and change it when you don't like the outcome. Even
+ though there are
+ <a href="https://vscodium.com/#why-does-this-exist">
+ some traps in open source</a>
+ too, it is great step forward. The problem raises again when advantage
+ is taken of this superior development model by (legally) copying
+ open source program and then closing the source code and
+ <a href="https://lukesmith.xyz/articles/why-i-use-the-gpl-and-not-cuck-licenses/">
+ circle of unfairness</a>
+ as well. This way, it is likely that next robot which will try to
+ sacrifice you to an alien monster will be based on open source software,
+ with secret directives added after closing the code.
+ </p>
+ <p>
+ There is a solution, however, it has its own <i>catch 22</i>. Free software
+ - not to be confused with freeware - is basically open source software
+ with license that prevents close-sourcing the program, so once you release
+ your <i>ultimate-japh.pl</i> under
+ <a href="https://www.gnu.org/licenses/gpl-3.0.en.html">
+ free software license</a>, it stays free and every derivative work of
+ it as well. This viral
+ property of free software license is one of the best life hacks world has
+ seen. Most notable
+ free software include, of course, Linux kernel and GNU - the operating system
+ built on it. When you use it, you can be sure that every file on your
+ OS can be used, read, edited and redistribued freely. Now to the catch.
+ </p>
+ <p>
+ Running exclusively free software is not easy and open source too for
+ that matter. Let's start from the top of the pyramid - with operating
+ system. Not all GNU distribution are created equal. Every distro follows
+ its own ethical vision of what is best for their users and what exactly
+ the "free" part of free software means. You enter the world of
+ firmware, codecs, binary blobs and endless
+ discussions about if they are considered to be free or not. Some claims
+ that these few bytes of code might cause threat to your security.
+ Codecs for example, fall victim to software patents which are incompatible
+ with some free enterprise OS philosophies.
+ </p>
+ <p>
+ When you go to one level deeper, you hit the non-free Bios wall. With
+ closed source Bios, can you
+ be sure that there are no backdoors built into your main board?
+ You can't, because probably
+ <a href="https://en.wikipedia.org/wiki/Intel_Management_Engine">there are</a>.
+ Sure, there is
+ <a href="https://libreboot.org/">free boot software</a> available,
+ but not for every main board. To be more specific, the number of
+ <a href="https://libreboot.org/docs/hardware/#supported-hardware">main boards compatible</a>
+ is lower than number of all
+ of your digits. So in order to be fully in control of your machine, you
+ need to get hardware compatible with this level of user control. This is
+ can be often difficult financially (as with Talos2 mainboadrs) or
+ practically as most of the compatible hardware is often old.
+ </p>
+ <p>
+ And even if you would run the
+ <a href="https://tails.net/">Tails OS</a>
+ on your 120-A/2 series robot,
+ completely bypassing any hardware catches, you still haven't read the
+ 15 million+ lines of code in your free kernel alone. So as with everything in
+ life, even free software boils down into putting some level of trust to
+ the author. You will have to find the correct ratio of free and every other
+ kind of software to use. It is only natural that this ratio
+ will be different for every individual, but as the line between safety
+ and security gets ever more thinner, I would recommend going through the
+ 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>
+ <br>
+ <hr>
+ <div id="notes"></div>
+ <i>
+ <p>
+ * In context of illegal copying of programs, it is hard for me to compare
+ copying of fungible software tools to act of violent theft of non-fungible
+ goods (on the sea). However, I see somewhat relevant use of this comparision
+ in cases of illegal copying of creative works like art. To what one considers
+ to be an art is also for a much longer discussion.
+ </p>
+ <p>
+ But in general, I consider talks about legality of copying any digital file
+ pretty much irrelevant since the Web was built on the idea of copying,
+ which is on itself pretty weird as the existence of multiple copies of the
+ same file on a network is not a good design.
+ </p>
+ <p>
+ There were other propositions for how to design "internet-like network"
+ without possibility of copying files on (or through) it, with the most
+ well known example being the Project Xanadu. I wonder why isn't
+ every giant copyright holder investing their endless pits of money into
+ this long abandoned concept when they are so convinced about righteousness
+ of distribution restrictions over the network. (Maybe because it isn't
+ a good idea.)
+ </p>
+ </i>
+ <br>
+ </main>
+
+ <!-- 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>
+
+ </body>
+ </html>
--- /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>Let's play Zork</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> Let's play Zork </h2>
+ <i> 24 Nov 2023 - A hollow voice says "Fool".</i>
+ <br>
+ <p>
+ <!-- PUT HERE A PICTURE -->
+ <img src="./pics/zork.png" alt="Zork box art">
+ </p>
+ <p>
+ Recently I saw a rerun of The Big Bang Theory on TV. It was quite refreshing
+ since I don't rewatch any series, with the only exception being Black Books.
+ One of the aired episodes that day was the one
+ where Sheldon mentions playing a buggy beta version of Zork[<a href="#notes">*</a>].
+ Suddenly, I remembered that I wanted to try out this old text adventure since
+ I watched the episode back in 2010 or so. I considered it super weird then
+ to play videogames without the... well, video part. But I played many tabletop
+ RPGs since, so I am now well aware of using imagination as a game mechanic.
+ And I've seen Zork appear many times on online forums and even in Call of Duty
+ Black ops which I played on Xbox360.
+ So I assume this rerun was the last straw and the "call to
+ adventure" I was waiting for. Let's start with preparation for the descent.
+ </p>
+ <p>
+ Firstly, we will need to
+ <a href="https://eblong.com/infocom/#zork1">obtain the game</a>
+ and
+ <a href="http://infodoc.plover.net/manuals/zork1.pdf">the manual</a> might
+ also come handy. (If you already have ZORK I, you can
+ <a href="#play">jump here</a>.)
+ For enjoyers of adavnced LISP, I include source code
+ for the
+ <a href="https://github.com/historicalsource/zork">Infocom version</a>,
+ <a href="https://github.com/MITDDC/zork">MIT release</a>
+ as well as the
+ <a href="https://github.com/heasm66/mdlzork">mainframe versions</a>.
+ And in order to actually use game files, we will need package <i>frotz</i>.
+ <div class="code-block">
+ sudo apt install frotz
+ </div>
+ Frotz is licensed as free software under GPLv2+ but you won't find it in
+ the Free software directory. I tried to contact its maintainer David Griffith
+ about this issue, but recieved no answer so far. But the frotz source code
+ is available
+ <a href="https://gitlab.com/DavidGriffith/frotz">here</a>
+ for every Z-machines enthusiasts which favors Graham Nelson's specification
+ standard 1.0.
+ </p>
+ <p>
+ Anyway, we will use frotz interpreter to run the game files.
+ Don't forget to use the full path to the directory where you downloaded or moved
+ the game files. A <i>Games</i> directory at the home might be a good idea.
+ <div class="code-block">
+ frotz ~/Games/zork1-r88-s840726.z3
+ </div>
+ We can also make an alias in your <i>.bashrc</i> file
+ to start the game from everywhere.
+ Or... we can unleash our inner hacker and create a bash script that will run any
+ version of Zork we downloaded simply by argument.
+ </p>
+ <p>
+ <div class="code-block">
+ #!/bin/bash<br><br>
+
+ # Define a dictionary of aliases<br>
+ declare -A dictionary=(<br>
+ ["r2"]="zork1-r2-sAS000C.z1"<br>
+ ["r15"]="zork1-r15-sXXXXXX.z2"<br>
+ ["r88"]="zork1-r88-s840726.z3"<br>
+ ["r52"]="zork1-invclues-r52-s871125.z5"<br>
+
+ # You can add more zork versions here<br>
+ )<br><br>
+
+ # Check if the correct number of arguments is provided<br>
+ if [ $# -ne 1 ]; then<br>
+ echo "Usage: zork <version>"<br>
+ exit 1<br>
+ # Or we can hard code any version to be default e.g.<br>
+ # cd ~/Games/ && frotz zork1-r88-s840726.z3<br>
+ fi<br><br>
+
+ # Check if alias exists in the dictionary<br>
+ alias="$1"<br>
+ file="${dictionary[$alias]}"<br><br>
+
+ if [ -z "$file" ]; then<br>
+ echo "Zork version '$alias' not found."<br>
+ exit 1<br>
+ fi<br><br>
+
+ # Cd to your directory where you store the game files<br>
+ #<br>
+ # note:<br>
+ # you could use full path to file with frotz command<br>
+ # but your saved game files would be then stored at ~<br>
+ cd ~/Games/<br><br>
+
+ # Profit!<br>
+ frotz "$file"<br>
+ </div>
+ In order to run this script from everywhere in our file system, we will save it under
+ name <i>zork</i> (without ".sh") and move it into our bash PATH.
+ For me it will be <i>~/.local/bin</i> . After that we will need to "chmod-ex"
+ our script to make it executable.
+ </p>
+ <p>
+ <div class="code-block">
+ chmod +x zork
+ </div>
+ And now we can run any version of Zork we like by using the release number
+ of desired version as argument for our script.
+ </p>
+ <p>
+ <div class="code-block">
+ zork r52
+ </div>
+ </p>
+ <p>
+ This script can come in handy as different builds have different bugs
+ and command responses. The first two versions (r2 and r5) will teleport player
+ to a random location when a nonsense travel command is given, like GO WALL
+ or GO TREE. In all versions except for <i>solid gold</i> (r52) you can
+ pour water from the bottle even if the bottle isn't open. And every version
+ suffers from EXAMINE OVERBOARD problem. You can check the full list of differences
+ in
+ <a href="http://graeme.50webs.com/infobugs/zork1.htm">Infobugs</a> and
+ <a href="https://www.microheaven.com/InfocomBugs/zorki.shtml">Microheavens</a>
+ zork sections. Exploiting those older buggy versions sounds fun and I, as
+ a real adventurer, picked up release r15 the "Hack of 15.UG3AU5" version.
+ </p>
+ <p>
+ The game itself is pretty straight forward. Our adventure takes place
+ circa 300 years after the fall of the Greatest Underground Empire, and we
+ take the role of nameless adventurer seeking fame and fortune in the ruins
+ of the once unmatched empire. The manual explains that the game is played by
+ typing commands and awaiting the response from the game. It is basically a
+ Read Eval Print Loop with a complex parser and a score system. And just like any
+ REPL, Zork counts your lines - in this case, commands or actions. The goal is
+ to retrieve treasures and <i>put</i> them into the <i>trophy case</i>
+ with the least actions possible. The more we return, more we score. The manual
+ gives no information on how many treasuers are out there or if we lose
+ when we waste too many turns. However, it mentions five times to draw a map
+ as we play, so I will.
+ </p>
+ <p>
+ <div id="play"></div>
+ <center><i>Let's play.</i></center>
+ </p>
+ <h3>The House</h3>
+ <p>
+ <div class="terminal-block">
+ <br>
+ ZORK: The Great Underground Empire - Part I<br>
+ Copyright (c) 1980 by Infocom, Inc. All rights reserved.<br>
+ ZORK is a trademark of Infocom, Inc.<br>
+ Release 15 / Serial number ââââââ<br><br>
+ West of House<br>
+ You are standing in an open field west of a white house,
+ with a boarded front door.<br>
+ There is a small mailbox here.<br>
+ ><br>
+ </div>
+ I fire up the zork script and I start by reading a leaflet
+ from the mailbox, leading me nowhere. But after the first
+ one hundred valid actions, I managed to map the surroundings of the house,
+ locate the trophy case, find a sword and get a lamp with a terrific score
+ of 10. The last thing to point out in this location might be the <i>wooden
+ door with strange gothic lettering</i> in the living room of the house,
+ which is worth looking into. I will leave this intentionally blank.
+ It is time to move elsewere.
+ </p>
+ <p>
+ I found a canyon to the east of the house, so I went there.
+ I arrived at the canyon view and continued to the west through
+ the forest. I stopped next to the big tree with suspiciously looking
+ lower branches. This is a hint. After climbing the tree, I found a bird's
+ nest with a jewel-encrusted egg. What a luck! I grab it and run with it to
+ the trophy case before it's <i>rightful owner</i> comes for it. (I have
+ a feeling that it is not the bird.) On my way back I got lost a little in
+ the forest, but somehow I appeared in the clearing behind the house. Jumped
+ through the kitchen window, spent some time (turns) trying to <i>put</i>
+ the egg jewel into the trophy case and... Success! First treasure
+ collected, 10 score earned, totaling on 20 right now.
+ </p>
+ <p>
+ So far so good. The forest on the east had a few more roads to go, but I am
+ not sure if I got lost because of some glitch or if the forest was too thick.
+ Either way, I exit the house and march to the west this time.
+ <i>One hundred moves later</i>... Dead end, just like the canyon on the east
+ and forests on the north and south.
+ I am going back to house to regroup and look for more clues. After further
+ examination of the house, I see only a chimney in the kitchen and a rug in the
+ living room. I bet on a rug as it nicely ties the room together.
+ "With the rug moved, the dusty cover of a closed trap-door appears."
+ I hastily open the trap-door and descent into the darkness. The score jumped
+ to 25 points.
+ </p>
+ <p>
+ With someone's help, the trap door closes above my head. I am in a dark cellar and
+ the ancient sword starts to glow a little. Tension rises. As I put my foot in
+ the room to the north, a nasty-looking troll blocking my way out. First enemy
+ encounter. The troll seems to be wielding an axe and my sword glows very brightly now.
+ I charge the troll, but he nimbly jumps away and reaches me with his ax.
+ The game responds with <i>Ouch!</i> so I assume it is just a flesh wound...
+ </p>
+ <div class="terminal-block">
+ >attack troll with sword<br>
+ Your sword misses the troll by an inch.<br>
+ The flat of the troll's axe hits you delicately on the head, knocking you out.<br>
+ The troll hesitates, fingering his axe.<br>
+ Conquering his fears, the troll puts you to death.<br>
+ It appears that that last blow was too much for you. I'm afraid you are dead.<br><br>
+ **** You have died ****<br>
+ </div>
+ <center>It wasn't a flesh wound after all.</center>
+ <p>
+ Never mind I restore the game, enter the room again and after a long fight
+ troll dies with another swing of my blade. As soon as he breathes his last
+ breath, his body disappears in sinister black fog and my sword is no longer glowing.
+ My score is 45 now, but as I try to lift his blody axe, I realize my inventory
+ is full. I'll stick with the sword.
+ </p>
+ <p>
+ As I look around, I see labyrinth to the west and a long passage to the east.
+ I try to circle the cellar I came from, which leads me to the Mirror room. In it, there
+ is only a mirror which seems to be responding to touch but nothing else. Two other
+ exits from the room lead to the same cave, making it the dead end with the only way
+ down into the cave. But as I try to leave the mirror room I realize that this
+ is not the same passage I came in... It took me a lot of reloads (<i>restores</i>) to realize that
+ the mirror is a portal to another mirror room.
+ </p>
+ <p>
+ I am redrawing my map and teleporting back to the first mirror room,
+ which I mark with a letter "A" now. The map is starting to look very
+ complicated, and it's much bigger than I expected. I have the temptation
+ to draw it in some visual tool on PC but for now I am staying OG with
+ pencil. I haven't found anything of value so far and I am afraid to go on
+ this new mirror branch so soon.
+ </p>
+ <p>
+ I return back to the first room, cellar, and try to focus on going another
+ direction than east as it, too holds many rooms. I go south and
+ enter the gallery. A loot at last. But then, out of nowhere
+ I spot somebody in the room with me. He says nothing, but
+ holds a bag. At this point I have no idea what to do. I am not sure if
+ I can say something (in this game) but I just don't want to attack someone
+ who is not hostile to me.
+ I am reaching for the manual. There is mention of both <i>say</i> and <i>tell</i> keywords on
+ page 19, but the game doesn't recognize them somehow. This might be a trait of my buggy build.
+ Nevermind, I try waving.
+ Not working. I will wave my glowing sword, showing I am armed and dangerous.
+ Nothing. As a somewhat veteran of D&D I will try one last effort to stay civilized - <i>wait.</i>
+ </p>
+ <div class="terminal-block">
+ >wave hand<br>
+ I can't use the word 'hand' here.<br>
+ >wave sword<br>
+ Waving the sword isn't notably helpful.<br>
+ >wait<br>
+ Shifting in the midst of a thrust, the thief knocks you unconscious with the haft of his<br>
+ stiletto.<br>
+ The thief entertains himself by rifling your pack.<br>
+ The thief, who is essentially a pragmatist, dispatches you as a threat to his livelihood.<br>
+ It appears that that last blow was too much for you. I'm afraid you are dead.<br><br>
+ **** You have died ****<br>
+ </div>
+ <center>I guess peace was never an option...</center>
+ <p>
+ I restored from the last save point in the circle room and run straight to the
+ gallery. I enter the room with sword in my hand, but the room is empty(?).
+ I will spare you of my
+ hundreds of reloads but it works like this. The thief shows up whenever
+ you pick up or come to something worth points. He will take it whether it
+ is in a room or on you. You can fight him but I was out of luck.
+ I tried knife, but that was doing no damage at all, sword performed best
+ but he was always quicker than me and troll's ax hit him too, but after
+ first hit he stole my stuff and left. Command <i>follow thief</i> doesn't
+ work - boy I hate him. But I was able to "bug him out" by taking the
+ painting, saving and restoring the just saved game. He didn't come back.
+ </p>
+ <p>
+ But still, my inventory is getting full, and I will have to carry things
+ out to the trophy case. So the new plan is to look for a way out and then try
+ to scavenge for other valuables. And nothing screams more "way out" than
+ a maze. I go back to the cellar (again), this time with painting and enter
+ the maze
+ to the west. I will mark down all of my moves on separate sheet of paper
+ and drop items to be my breadcrumbs. And I will save often, just in case
+ the old friend shows up.
+ </p>
+ <p>
+ I managed to navigate myself to the treasure inside the maze. It is the
+ skeleton key and the bag of coins. Score is 64. I do know my way back,
+ but I need to get out another way, hopefully leading me to the house again.
+ I managed to navigate to the room with evil cyclops. I must say that the whole
+ maze solving took me about 1,5 hours of which I had to deal with thief
+ at least 10 times. I am more than ready to kill the beast standing before me or
+ die trying. I charge the monster and after a tough one-sided battle...
+ </p>
+ <div class="terminal-block">
+ >attack cyclops with sword<br>
+ The cyclops shrugs but otherwise ignores your pitiful attempt.<br>
+ The cyclops, tired of all of your games and trickery, eats you. The cyclops says 'Mmm. Just<br>
+ like Mom used to make 'em.'<br><br>
+ **** You have died ****
+ </div>
+ <center>Dead, thanks to nobody's favorite X-men character.</center>
+ <p>
+ Ok. New plan. Don't leave the sandwich in the maze and let's try to bribe the
+ cyclops with it. At this point, I knew how to solve the maze
+ from the top of my head. I face the beast again, this time without the sword,
+ holding only a small sub with peppers. He likes my proposition and takes my
+ bottle with water too. The beast falls asleep after a good lunch. I tried to look
+ around the room and I saw stairs up, but as soon as I enter the treasure
+ room on the upper floor... the thief, again. I am carrying the painting, the bag of coins
+ and just in front of our eyes, there is a beautiful silver chalice.The
+ score is 79 and it is time to play his own game.
+ </p>
+ <p>
+ I gave him my sword. He is stunned by this gesture and examines the
+ weapon. Then suddenly, out of nowhere, I sneak behind him and struck him dead with
+ knife from the attic. Well, it was like three attacks but nevertheless RETRIBUTION!
+ With the thief dead, I take
+ my sword back and drop the knife as insturment of a cold murder.
+ Then there is the silver chalice lying on the ground, but I am unable to
+ take it as the inventory is full. I want to drop
+ the garlic, but I am not sure if this underground is vampire-free,
+ so I will stick with the garlic and I drop the rope. I am sure I won't regret
+ it later... The score is just one point short of 100.
+ </p>
+ <p>
+ Sadly, no exit from the treasure room and cyclops room
+ is also a dead end. My patience is slowly fading away and I access the World
+ Wide Web for hints. I found a pretty nice map which told
+ me that there was another way out of the maze. It's the cryptic grating room
+ from clearing next to the house! I close the map and rush to it. But yeah,
+ the grating is locked and I left the skeleton key inside the maze...
+ Went back for the key, emerged on the surface and delivered the
+ treasures back to the living room in 2 rounds because of a small inventory.
+ Score is sitting way up on 115.
+ </p>
+ <p>
+ And right now, I am considering ending this adventure as the score is above 100
+ and my lust for retro gaming has been somewhat satisfied. I typed <i>score</i> to see
+ that I reached the rank of Junior Adventurer, which is
+ <a href="https://ganelson.github.io/inform-website/book/WI_9_3.html">4th rank out of 8</a>.
+ As much as I want to say that it was fun, I feel tricked into playing a
+ puzzle game with very little adventure in it.
+ The lack of usefull information and overall "story" puts this
+ game on the same level as some rogue-likes. It is good but not something
+ I can see falling into. At least not now. If you consider playing it,
+ here are my key takeaways from this short gameplay:
+ <ul>
+ <li>get lamp</li>
+ <li>drawing a map is neccessity</li>
+ <li>downloading the map when stuck is not a shame</li>
+ <li>drop items in maze to find your way out</li>
+ <li>use <i>up, down, SE, SW, NE, NW</i> directions (in maze) too</li>
+ <li>thief is son of a bitch, play dirty because he will</li>
+ </ul>
+ There are two other text adventures I've heard might be worth looking into,
+ <i>Planetfall</i> and <i>Lurking Horror</i>. But that is a story for next time.
+ Hopefully, a longer and a story...
+ </p>
+ <div class="terminal-block">
+ Living Room<br>
+ Your collection of treasures consists of:<br>
+ A bag of coins<br>
+ A painting<br>
+ A chalice<br>
+ A jewel-encrusted egg<br>
+ >Score<br>
+ Your score would be 115 (total of 350 points), in 352 moves.<br>
+ This score gives you the rank of Junior Adventurer.<br>
+ </div>
+ <br>
+ <hr>
+ <div id="notes"></div>
+ <i>
+ <p>
+ * Well-spread trivia says that "zork" was a jargon word for unfinished
+ software at MIT back in the 1970s. So we could say that Sheldon played a
+ "zork of the Zork". However, I could not find any source to back this
+ up. ESR's
+ <a href="https://www.catb.org/~esr/jargon/html/go01.html">jargon file</a>
+ knows the keyword "zork" only as the game and the most quoted source,
+ <a href="https://archive.org/stream/infocom-paper-2000-12-15/infocom-paper_djvu.txt">Down From the Top of Its Game: The Story of Infocom, Inc.</a>
+ does not contain this information either. If you happen to know a relevant
+ source that could prove this historical trivia, please reach me via
+ <a href="mailto:email@dpolakovic.space">email</a>.
+ </p>
+ </i>
+ <br>
+ </main>
+
+ <!-- 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>
+
+ </body>
+ </html>
+++ /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?v=1.1">
- <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">
- <img src="./Pictures/dot.png" alt="website">
- <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/dir.html">My web directory</a></li> -->
- <li><a href="https://dpolakovic.space/lib.php">My library</a></li>
- <li><a href="https://dpolakovic.space/cypher.html">?</a></li>
- <li><a class="gitserver" href="https://git.dpolakovic.space">Git server</a>
- </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
- // Read the contents of the lib.txt file
- $fileContents = file_get_contents('lib.txt');
-
- // Set the "*" as escape char for new table line
- $rows = explode('*', $fileContents);
-
- // Create the table
- echo '<table>';
-
- // Process each row
- foreach ($rows as $key => $row) {
-
- // Set the "-" as escape char for new column
- $columns = explode('-', $row);
-
- // Determine whether this is the first row
- $isFirstRow = ($key === 0);
-
- // Start a new table row
- echo '<tr>';
-
- // Process each column and create table cells
- foreach ($columns as $column) {
-
- // Use <th> for the first row, <td> for the rest
- $cellTag = $isFirstRow ? 'th' : 'td';
- echo '<' . $cellTag . '>' . htmlspecialchars($column) . '</' . $cellTag . '>';
- }
-
- // End the table row
- echo '</tr>';
- }
-
- // End the HTML table
- echo '</table>';
- ?>
- <br><br>
- </main>
-
- <!-- footer -->
- <footer class="footer">
- copyright 2023 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>
--- /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">
+ <img src="./Pictures/dot.png" alt="website">
+ <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/dir.php">Web directory</a></li>
+ <li><?php serverStatus() ?></li>
+ </ul>
+ </nav>
+
+ <!-- page content -->
+ <main class="content">
+ <p>
+ <h2> My Web directory </h2>
+ <i> Let's explore the Web. </i>
+ <br>
+ <br>
+ Since the online space is vast and still expanding, it is good practice for
+ surfers to share links between each other in web directories like this one.
+ So here are links I thought you might find useful.
+ </p>
+ <p>
+ <div class="dir">
+ <a href="https://directory.fsf.org/wiki/Main_Page">Free software directory</a>
+ - a collaborative catalog of free software<br>
+ <a href="https://cidr.xyz/">Cidr.xyz</a>
+ - when you're setting up network and you don't want to die over subnet
+ tables [3]<br>
+ <a href="https://wiki.eth0.nl/index.php/LackRack">Lack rack</a>
+ - nice hack that I use for my servers<br>
+ <a href="https://wine.htmlvalidator.com/">Installing Wine on Linux</a>
+ - this is tricky task for many distros, so I use this nice tutorial<br>
+ <a href="https://tube.cadence.moe/">CloudTube</a>
+ - one of many free (software) instances for youtube.com<br>
+ <a href="https://www.floppydisk.com">Floppydisk.com</a>
+ - new and refurbished floppies for okay prices [3]<br>
+ <a href="https://whichjdk.com/">Which JDK?</a>
+ - neat website when you want to install alternative Java Dev Kits<br>
+ <a href="https://jar-download.com/">JAR Download</a>
+ - Java libraries packed in .jars so you can manage them by hand<br>
+ <a href="https://perlmonks.org/">Perl monks</a>
+ - best place to seek help and wisdom in Perl<br>
+ <a href="https://cyber.dabamos.de/88x31/index.html">Web buttons</a>
+ - here is list of 4000+ web buttons from Cyber Vanguards website<br>
+ <a href="https://www.deadnet.se/88x31/">More Web buttons</a>
+ - another set of 4000 web buttons, this time from Deadnet<br>
+ <a href="https://web3isgoinggreat.com/">Web 3 is going great!</a>
+ - website that monitors all failures of this stupid bubble [3]<br>
+ <a href="https://winworldpc.com/home">WinWorld</a>
+ - online museum/library of vintage software<br>
+ <a href="https://en.uesp.net/wiki/Main_Page">UESP Wiki</a>
+ - everything I ever needed for TES III Morrowind I found here [2]<br>
+ </div>
+ </p>
+ <p>
+ And here are some good readings I found on the Web. I am not necessarily
+ <i>a fan</i> of authors, but I consider these specefic blog posts to be
+ worth your time.
+ </p>
+ <div class="dir">
+ <a href="http://catb.org/~esr/writings/hacker-history/hacker-history.html">A brief history of Hackerdom</a>
+ by Eric S. Raymond<br>
+ <a href="https://lukesmith.xyz/articles/the-parable-of-alien-chess/">The Parable of Alien Chess</a>
+ by Luke Smith<br>
+ <a href="https://qntm.org/models">Modelling time travel in fiction</a>
+ by qntm<br>
+ <a href="https://drewdevault.com/2023/08/29/2023-08-29-AI-crap.html">AI crap</a>
+ by Drew DeVault<br>
+ <a href="https://blog.danieljanus.pl/2019/10/07/web-of-documents/">Web of Documents</a>
+ by Daniel Janus<br>
+ </div>
+ <p>
+ Some of these websites contains "allergens"<br>
+ [1] - advertisements,
+ [2] - unnecessary cookies,
+ [3] - proprietary javascript
+ </p>
+ <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>
<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?v=1.1">
+ <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="description" content="personal website and git server">
</head>
- <body>
-
+ <!--
+ I would like to thank to my good friends JuryHa and Wendy who helped
+ me with everything I needed for this website. Big thanks also goes to
+ Peter Střelec who helped me set up the Git server.
+ Thank you all.
+ -->
+ <body>
<!-- show pictures (banner) on top of the page -->
<div class="banner">
<p>
<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/dir.html">My web directory</a></li> -->
- <li><a href="https://dpolakovic.space/lib.html">My library</a></li>
- <li><a class="gitserver" href="https://git.dpolakovic.space">Git server</a>
- </li>
+ <li><a href="https://dpolakovic.space/dir.php">Web directory</a></li>
+ <li><?php serverStatus() ?></li>
</ul>
</nav>
<br>
My name is
<a href="./Pictures/david.jpg" class="hide-link">David</a>
- and <?php
-
- $file = "./rnd.txt";
-
- // Read all lines from the file into an array
- $lines = file($file, FILE_IGNORE_NEW_LINES);
-
- if ($lines !== false && !empty($lines)) {
-
- // Get a random line index
- $randomIndex = array_rand($lines);
-
- // Display the random line
- echo $lines[$randomIndex];
-
- } else {
-
- echo "this is an error message.";
- }
-
- ?> This is my personal Web <i>space</i> which serves me as substitution
- for all social media.
- Feel free to browse here or check out my mostly
- abandoned git server. My primary communication channel is email,
- so if you wish to contact me, you can use:
- </p>
+ and <?php randomSentence() ?>
+ This is my personal Web <i>space</i> which I don't really need, but it is
+ nice to have one.
+ 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>
+ <center>
+ <img src="https://community.cloudflare.steamstatic.com/economy/image/i0CoZ81Ui0m-9KwlBY1L_18myuGuq1wfhWSIYhY_9XEDYOMNRBsMoGuuOgceXob50kaxV_PHjMO1MHaEqgckptOivAmoEkqmyZW5qXRauqb6baY4c6XDCDbJmbwiseI9Hn_nwkQl4m7SnNmtcGXXMFGipBGxow/?allow_animated=1" alt="cool dancing alien" class="bee-gifs">
+ </center>
+ </p>
<p>
- <center>
- <a href="mailto:email@dpolakovic.space">email at dpolakovic dot space</a>
-
- <a href="./gpg.html">(my public GPG)</a>
- </center>
+ I no longer use social media, so if you want to contact me,
+ you are likely to reach me via email. I read my mailbox quite often
+ so my usual response time is one day.
+ Feel free to use my GPG key for encryption of your messages.
</p>
<p>
- In light of the upcoming actions against the free web (C2PA, Web
- Environment Integrity) I might be looking into hosting this site via
- other protocols too. If you, <i>random visitor</i>, happen to know
- anything about running a gopher or gemini server, please, write
- me an email. This prompt is valid until deleted.
- <!-- And of course this website remains without ads, cookies, javascript
- and any form of tracking. -->
- </p>
+ <center>
+ <a href="mailto:email@dpolakovic.space">email at dpolakovic dot space</a>
+
+ <a href="./gpg.html">(my public GPG)</a>
+ </center>
+ </p>
<p>
- <!-- show my buttons button -->
- <a class="gif-buttons" href="https://www.gnu.org/gnu40/">
- <img src="./Pictures/gnu40.png" alt="GIF button: any browser campign">
+ <a class="gif-buttons" href="https://www.gnu.org/software/emacs/">
+ <img src="./Pictures/emacs3.png" alt="GIF button: made with Emacs">
</a>
<a class="gif-buttons" href="https://emailselfdefense.fsf.org/en/">
<img src="./Pictures/pgp-now.png" alt="GIF button: PGP set up guide">
</main>
<!-- footer -->
- <footer class="footer">
- copyright 2023 David Polakovic
- - 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>
- <br>
- <a href="https://git.dpolakovic.space/?p=my-website;a=tree">this site is free software</a>
+ <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>
<div class="what-is-this">
<center>
- ..-. .. -. -.. / - .... . / -... .. --. --. . ... - / -.. --- - / .. -. / .-.. .. -... .-. .- .-. -.--
+ -.. .--. --- .-.. .- -.- --- ...- .. -.-. / -.. --- - / ... .--. .- -.-. . / ... .-.. .- ... .... / -.-. -.-- .--. .... . .-.
</center>
</div>
</body>
<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?v=1.1">
+ <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">
<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/dir.html">My web directory</a></li> -->
<li><a href="https://dpolakovic.space/lib.php">My library</a></li>
- <li><a class="gitserver" href="https://git.dpolakovic.space">Git server</a>
+ <li><?php serverStatus() ?></li>
</li>
</ul>
</nav>
title and traslation title as well.
</p>
<br>
- <?php
- // Read the contents of the lib.txt file
- $fileContents = file_get_contents('lib.txt');
-
- // Set the "*" as escape char for new table line
- $rows = explode('*', $fileContents);
-
- // Create the table
- echo '<table>';
-
- // Process each row
- foreach ($rows as $key => $row) {
-
- // Set the "-" as escape char for new column
- $columns = explode('-', $row);
-
- // Determine whether this is the first row
- $isFirstRow = ($key === 0);
-
- // Start a new table row
- echo '<tr>';
-
- // Process each column and create table cells
- foreach ($columns as $column) {
-
- // Use <th> for the first row, <td> for the rest
- $cellTag = $isFirstRow ? 'th' : 'td';
- echo '<' . $cellTag . '>' . htmlspecialchars($column) . '</' . $cellTag . '>';
- }
-
- // End the table row
- echo '</tr>';
- }
-
- // End the HTML table
- echo '</table>';
- ?>
+ <?php printLibraryTable() ?>
<br><br>
</main>
<!-- footer -->
- <footer class="footer">
- copyright 2023 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 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>
+++ /dev/null
-Lng - Author - English title - Translation title (if different) *
-AA - Jon Doe - A book - Kniha *
--- /dev/null
+<?php
+
+// Function to check if is certain website reachable
+function isWebsiteOnline($url) {
+ // Set a timeout value in seconds
+ $timeout = 2;
+
+ $ch = curl_init($url);
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+ curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
+ $response = curl_exec($ch);
+ $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
+ curl_close($ch);
+
+ // Check if the HTTP code is in the range 200-299
+ // to consider it as "online"
+ return ($httpCode >= 200 && $httpCode < 300);
+}
+
+
+// Function displays <li> element on navigation bar
+// either online or offline status of gitserver
+function serverStatus() {
+ $websiteUrl = "https://git.dpolakovic.space";
+
+ if (isWebsiteOnline($websiteUrl)) {
+ echo '<a class="gitserver" href="https://git.dpolakovic.space">'.
+ 'Git server | online</a>';
+ }
+ else {
+ echo '<a class="gitserver" href="">Git server | offline</a>';
+ }
+}
+
+// Function for index.php to generate random second sentence
+function randomSentence() {
+ $file = "./php/rnd.txt";
+
+ // Read all lines from the file into an array
+ $lines = file($file, FILE_IGNORE_NEW_LINES);
+
+ if ($lines !== false && !empty($lines)) {
+
+ // Get a random line index
+ $randomIndex = array_rand($lines);
+
+ // Display the random line
+ echo $lines[$randomIndex];
+
+ }
+
+ else { echo "this is an error message."; }
+}
+
+// Function to update year for copyright in footer
+function printYear() {
+ $currentYear = date("Y");
+ if ($currentYear > 2023) {
+ echo "2023-" . $currentYear;
+ }
+ else { echo "2023"; }
+}
+
+
+// Function to convert RSS file into blog page
+function printBlog2($rss_file) {
+
+ // Load the XML file
+ $xml = simplexml_load_file($rss_file);
+
+ // Check if the XML is loaded successfully
+ if ($xml !== false) {
+ // Loop through each <item> tag in the RSS feed
+ foreach ($xml->channel->item as $item) {
+ $title = (string) $item->title;
+ $link = (string) $item->link;
+ $description = (string) $item->description;
+ $pubDate = (string) $item->pubDate;
+ $image_url = (string) $item->image;
+ $pos = (string) $item->pos;
+
+ // Output
+ echo "<div class=\"blog-prev\">" .
+ "<div class=\"blog-prev-img\">" .
+ "<a href=\"$link\">" .
+ "<img src=\"$image_url\" alt=\"Blog picture\"".
+ "style=\"object-position: $pos ;\">" .
+ "</a></div>";
+ echo "<div class=\"blog-prev-text\">".
+ "<a href=\"$link\">$title</a><br>";
+ echo substr($pubDate, 5, 12) . "<br>";
+ echo "<i>$description</i></div></div><br>";
+ }
+
+ } else {
+ // If the XML file fails to load
+ echo "Failed to load the blogs. The rss.xml file is either missing or corrupted.";
+ }
+}
+
+
+// Function to print my books on the website
+function printLibraryTable() {
+ // Read the contents of the lib.txt file
+ $fileContents = file_get_contents('./php/lib.txt');
+
+ // Set the "*" as escape char for new table line
+ $rows = explode('*', $fileContents);
+
+ // Create the table
+ echo '<table>';
+
+ // Process each row
+ foreach ($rows as $key => $row) {
+
+ // Set the "-" as escape char for new column
+ $columns = explode('-', $row);
+
+ // Determine whether this is the first row
+ $isFirstRow = ($key === 0);
+
+ // Start a new table row
+ echo '<tr>';
+
+ // Process each column and create table cells
+ foreach ($columns as $column) {
+
+ // Use <th> for the first row, <td> for the rest
+ $cellTag = $isFirstRow ? 'th' : 'td';
+ echo '<' . $cellTag . '>' . htmlspecialchars($column) .
+ '</' . $cellTag . '>';
+ }
+
+ // End the table row
+ echo '</tr>';
+ }
+
+ // End the HTML table
+ echo '</table>';
+
+}
+
+?>
\ No newline at end of file
--- /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ě
--- /dev/null
+my favorite junk food is fish sticks.
+my favorite dinosaur is pterodactyl.
+I like Perl more than Python.
+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 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 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 enjoy reading Agatha Christie.
+I am fan of Detroit Red Wings.
+if you breath air, we have one thing in common.
+I still read printed newspaper and magazines.
+my favorite fast food chain is Taco Bell.
+I love pickles. Even fried or with Snickers (those are called Snickles).
+I like peanut M&M's.
+my favorite cocktail is White Russian. And yes, it happend after The Big Lebowski.
+my favorite ninja turtle is Michelangelo.
+my favorite comic book series is The Tick.
+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 think that Dennis Nedry deserved raise.
+I miss Pepsi man.
+++ /dev/null
-example.
-and here is another example.
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<rss version="2.0">
+ <channel>
+ <title>dpolakovic.space</title>
+ <link>https://www.dpolakovic.space</link>
+ <description>Some obscure thoughts caught on the Web.</description>
+ <language>en-us</language>
+ <lastBuildDate>Mon, 8 Jan 2024 16:00:00 GMT</lastBuildDate>
+ <pubDate>Mon, 8 Jan 2024 16:00:00 GMT</pubDate>
+ <ttl>60</ttl>
+
+ <item>
+ <title>Let's play Zork</title>
+ <link>https://dpolakovic.space/blogs/zork</link>
+ <description>A hollow voice says "Fool".</description>
+ <pubDate>Fri, 24 Nov 2023 20:00:00 GMT</pubDate>
+ <image>https://dpolakovic.space/blogs/pics/zork.png</image>
+ <pos>100% 1</pos>
+ </item>
+
+ <item>
+ <title>On the nature of Free software</title>
+ <link>https://dpolakovic.space/blogs/free-software</link>
+ <description>Does your synthetic colleague pose a threat to you?</description>
+ <pubDate>Tue, 25 Jul 2023 20:00:00 GMT</pubDate>
+ <image>https://dpolakovic.space/blogs/pics/free2.jpg</image>
+ <pos>100% 0</pos>
+ </item>
+
+ </channel>
+</rss>
+++ /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>
- <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">
- <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">
- <img src="./Pictures/dot.png" alt="website">
- <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/dir.html">My web directory</a></li> -->
- <li><a href="https://dpolakovic.space/lib.html">My library</a></li>
- <li><a href="https://dpolakovic.space/test.html">TEST</a></li>
- <li><a class="gitserver" href="https://git.dpolakovic.space">Git server</a>
- </li>
- </ul>
- </nav>
-
- <!-- page content -->
- <main class="content">
- <p>
- <h2> Test </h2>
- <i> This is a test. </i>
- <br>
- <br>
- WHOOOPS! Nothing's here. You better check somewhere else...<br><br>
- </p>
- </main>
-
- <!-- footer -->
- <footer class="footer">
- copyright 2023 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>
-
- </body>
- </html>
--- /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>
+ <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">
+ <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">
+ <img src="./Pictures/dot.png" alt="website">
+ <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/dir.html">My web directory</a></li> -->
+ <li><a href="https://dpolakovic.space/lib.html">My library</a></li>
+ <li><a href="https://dpolakovic.space/test.html">TEST</a></li>
+ <li><a class="gitserver" href="https://git.dpolakovic.space">Git server</a>
+ </li>
+ </ul>
+ </nav>
+
+ <!-- page content -->
+ <main class="content">
+ <p>
+ <h2> Test </h2>
+ <i> This is a test. </i>
+ <br>
+ <br>
+ WHOOOPS! Nothing's here. You better check somewhere else...<br><br>
+ </p>
+ <p>
+ <?php
+function isWebsiteOnline($url) {
+ $timeout = 2; // Set a timeout value in seconds
+
+ $ch = curl_init($url);
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+ curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
+
+ $response = curl_exec($ch);
+ $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
+
+ curl_close($ch);
+
+ // Check if the HTTP code is in the range 200-299 to consider it as "online"
+ return ($httpCode >= 200 && $httpCode < 300);
+}
+
+$websiteUrl = "https://git.dpolakovic.space";
+
+if (isWebsiteOnline($websiteUrl)) {
+ echo "Git server status: Online";
+} else {
+ echo "Git server status: Offline";
+}
+?>
+
+
+ </p>
+ </main>
+
+ <!-- footer -->
+ <footer class="footer">
+ copyright 2023 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>
+
+ </body>
+ </html>