New UNIX and Linux History Sections

Dear All,

Taking a break from Vue.js coding for the site, SEO and YT videos; and hopefully addressing some well deserved criticism from some here that I have been too focused on the visual aspects of the forums versus the substance and the community....

While the "current generation programming and tech" is interesting, it is also very important we honor all those before us who made computing as we know it today possible.

Here is a PHP plugin I started this week:

<?php
$rand = mt_rand(0, 5); 

if ($rand == 0) { 
    eval('$history_div_for_users = "' . fetch_template('unix_linux_history') . '";'); 
} elseif ($rand == 1) { 
    eval('$history_div_for_users= "' . fetch_template('linux_unix_history') . '";'); 
} elseif ($rand == 2) { 
    eval('$history_div_for_users= "' . fetch_template('red_hat_history') . '";'); 
} elseif ($rand == 3) { 
    eval('$history_div_for_users = "' . fetch_template('ubuntu_history') . '";'); 
}  elseif ($rand == 4) { 
    eval('$history_div_for_users = "' . fetch_template('gnu_history') . '";'); 
} elseif ($rand == 5) { 
    eval('$history_div_for_users = "' . fetch_template('man_page_history') . '";'); 
} else{ 
    $history_div_for_users = ''; 
}  

Basically, I use this plugin to insert a single random history section into forum pages, based on the size of the content and other factors. You can see these sections in:

  • Short Discussion Threads
  • Show Posts Pages
  • Short Man Pages
  • Tag Search Pages

For example, for each man page, the template looks like this:

<if condition="$length_manpage < 1500">
<div style="margin-top:20px;">
    $history_div_for_users
</div>
</if>

I should have done this years ago, and so I apologize for not creating UNIX and Linux history sections for the site years ago.

However, better late than never, as they say.

Here is one example I just put together for GNU:

<div class="neo-table-border" style="margin-bottom:20px;">
  <article class="neo-highlight">
    <div class="alt1 npb-message">
      <div class="smallfont">
        <strong>GNU</strong>
      </div>
      <hr class="npb-hr" />

      <div
        id="post_message_$post[postid]"
        class="alt1 neo-message-area npb-pmessage"
      >
        <div style="margin-bottom:15px;">
          The development of the GNU operating system began in 1983 by Richard
          Stallman. At the time, Richard worked at the MIT Artificial
          Intelligence Laboratory and publicly announced the GNU Project on
          September 27, 1983 on the net.unix-wizards and net.usoft USENET
          newsgroups. GNU software development formally started on January 5,
          1984. The goal of GNU was to bring a totally free software operating
          system into the world. Richard has a vision that computer users should
          be free to study the source code of the computer software, share
          software with others, modify the software, and publish modified
          versions.
        </div>
        <div style="margin-bottom:15px;">
          The GNU open source idea was published as the GNU Manifesto in March
          1985. GNU was designed from the start to be unix-compatible and so GNU
          development used C and Lisp as the GNU system programming languages.
          Most of GNU was been written by volunteers with the exception of
          numerous adopted third-party components. Richard Stallman set up the
          Free Software Foundation (FSF) in October 1985 Then in the late 1980s
          and 1990s the FSF hired software developers to write GNU software. As
          GNU gained in popularity various businesses began contributing to GNU
          development or selling GNU software and support, including Cygnus
          Solutions which eventually became a part of Red Hat.
        </div>
        <div>
          Please enjoy and help our forum community by "showing your work" and
          posting your code, even when your code is not working as expected. To
          help others help you, please wrap your code blocks, sample input,
          sample output, error messages, and other data in
          <span class="neo-icode-tag">CODE</span> tags and wrap your short
          commands and short data objects in
          <span class="neo-icode-tag">ICODE</span> tags. We were all beginners
          in the beginning. If you have any questions about how to register or
          how to post, please contact us in
          <a
            style="color:indigo;cursor:pointer;"
            href="https://www.unix.com/usercp/#/livechat">Live Chat</a>. Thank you and enjoy this "forever free" technical support community
          for UNIX, Linux and computer information technology in general.
        </div>
      </div>
    </div>
  </article>
</div>

So far, I have created 5 of these history sections.

  • UNIX and Linux
  • Linux and UNIX
  • GNU
  • Red Hat
  • Ubuntu

It would be great for contributors here to write a short section like the GNU example above, for their favorite parts of UNIX and Linux history.

Here is the HTML for the "Ubuntu" history. You don't need to write the HTML, just a few paragraphs and I will do the rest.

<div class="neo-table-border" style="margin-bottom:20px;">
  <article class="neo-highlight">
    <div class="alt1 npb-message">
      <div class="smallfont">
        <strong>Ubuntu</strong>
      </div>
      <hr class="npb-hr" />

      <div
        id="post_message_$post[postid]"
        class="alt1 neo-message-area npb-pmessage"
      >
        <div>
          <div style="margin-bottom:20px;">
            Ubuntu is a free, open-source Linux distribution based on Debian
            Linux; and Ubuntu
            is named after the African philosophy of ubuntu, which Canonical
            translates as "humanity to others" or "I am what I am because of who
            we all are". Ubuntu is developed by Canonical and the
            community under a "meritocratic" governance model. Canonical
            provides security updates and support for each Ubuntu release,
            starting from the release date and until the release reaches its
            designated end-of-life (EOL) date. Canonical generates revenue
            through the sale of premium services associated with Ubuntu. Ubuntu is generally released to the public in three editions:
            Desktop, Server, and Core (for IoT devices and robots). Ubuntu is a
            popular operating system for cloud computing and supports OpenStack.
            Ubuntu is released every six months with long-term support (LTS)
            releases every two years. 
          </div>
          <div>
            Please enjoy and help our forum community by "showing your work" and
            posting your code, even when your code is not working as expected.
            To help others help you, please wrap your code blocks, sample input,
            sample output, error messages, and other data in
            <span class="neo-icode-tag">CODE</span> tags and wrap your short
            commands and short data objects in
            <span class="neo-icode-tag">ICODE</span> tags. We were all beginners
            in the beginning. If you have any questions about how to register or
            how to post, please contact us in
            <a style="color:indigo;cursor:pointer;" href="https://www.unix.com/usercp/#/livechat">Live Chat</a>. Thank you and enjoy this "forever free" technical support
            community for UNIX, Linux and computer information technology in
            general.
          </div>
        </div>
      </div>
    </div>
  </article>
</div>

My apologies for not doing this a decade ago. Better late than never as they say. We should expand this for Solaris, other UNIX variants, UNIX and Linux people and personalities, and more to honor all those before us who made computing as we know it today possible.

Also, since I've been getting deeper into video media lately, I think I will make some UNIX and Linux history videos based on this project complete with cool special effects and more, honoring those before us.

6 Likes

Update:

Added two short bios, Ken Thompson and Dennis Ritchie. More to come as I have time ...

$rand = mt_rand(0, 7); 

if ($rand == 0) { 
    eval('$history_div_for_users = "' . fetch_template('unix_linux_history') . '";'); 
} elseif ($rand == 1) { 
    eval('$history_div_for_users = "' . fetch_template('linux_unix_history') . '";'); 
} elseif ($rand == 2) { 
    eval('$history_div_for_users = "' . fetch_template('red_hat_history') . '";'); 
} elseif ($rand == 3) { 
    eval('$history_div_for_users = "' . fetch_template('ubuntu_history') . '";'); 
}  elseif ($rand == 4) { 
    eval('$history_div_for_users = "' . fetch_template('gnu_history') . '";'); 
} elseif ($rand == 5) { 
    eval('$history_div_for_users = "' . fetch_template('man_page_history') . '";'); 
} elseif ($rand == 6) { 
    eval('$history_div_for_users = "' . fetch_template('ken_thompson_history') . '";'); 
}elseif ($rand == 7) { 
    eval('$history_div_for_users = "' . fetch_template('dennis_ritchie_history') . '";'); 
}else{ 
    $history_div_for_users = ''; 
}   

Please contribute if you have time, otherwise I'll have to have all the "historical" fun myself.

5 Likes

Update:
(11 down, maybe 89 more to go...)

Added Linus Torvalds and a rough list of various Unix-like flavors, and simplified the PHP plugin:

<?php
$rand = mt_rand(0, 10);

$flavs = array(
    'unix_linux_history',
    'linux_unix_history',
    'red_hat_history', 
    'ubuntu_history', 
    'gnu_history', 
    'man_page_history',
    'ken_thompson_history', 
    'dennis_ritchie_history', 
    'linus_torvalds_history', 
    'unix_flavors_history',
    'brian_kernighan_history');

$flav = $flavs["$rand"];
eval('$history_div_for_users = "' . fetch_template($flav) . '";');

Note:

You can easily see these "historical sections" on any tags search result at the bottom of the page; for example linux:

https://www.unix.com/tags/linux.html

Just reload the page to view the various random "historical" entries.

Update: Added Richard Stallman to this plugin:


$rand = mt_rand(0, 16);

$flavs = array('unix_linux_history','linux_unix_history','red_hat_history','ubuntu_history','gnu_history','man_page_history',
'ken_thompson_history','dennis_ritchie_history','linus_torvalds_history','unix_flavors_history','brian_kernighan_history',
 'richard_stallman_history','bill_joy_history','grep_history','awk_history','sed_history','solaris_history');

$flav = $flavs["$rand"];
eval('$history_div_for_users = "' . fetch_template($flav) . '";');

We should have done this over decade ago (adding history to compliment the forums), but better late than never.

17 down, 83 more to go......

Update:

<?php
$rand = mt_rand(0, 17); 

$flavs = array(
    'unix_linux_history',
    'linux_unix_history',
    'red_hat_history',
    'ubuntu_history',
    'gnu_history',
    'man_page_history', 
    'ken_thompson_history',
    'dennis_ritchie_history',
    'linus_torvalds_history',
    'unix_flavors_history',
    'brian_kernighan_history',
    'richard_stallman_history',
    'bill_joy_history',
    'grep_history',
    'awk_history',
    'sed_history',
    'solaris_history',
    'vi_history'); 

$flav = $flavs["$rand"]; 
eval('$history_div_for_users = "' . fetch_template($flav) . '";'); 

Latest:

<?php
$nodisp = "<script>document.querySelector('.history-community').style.display='none';document.querySelector('.history-lastp').style.margin='0px';</script>";

$flavs = array(
    'unix_linux_history',
    'linux_unix_history',
    'red_hat_history',
    'ubuntu_history',
    'gnu_history',
    'man_page_history',
    'ken_thompson_history',
    'dennis_ritchie_history',
    'linus_torvalds_history',
    'unix_flavors_history',
    'brian_kernighan_history',
    'richard_stallman_history',
    'bill_joy_history',
    'grep_history',
    'awk_history',
    'sed_history',
    'solaris_history',
    'vi_history',
    'unix_like_history');

$final = sizeof($flavs) - 1;
$rand = mt_rand(0, $final);
$flav = $flavs["$rand"];
eval('$history_div_for_user = "' . fetch_template($flav) . '";');

$rand2 = mt_rand(0, 1);
if ($rand2 == 0) {
    $history_div_for_users = $history_div_for_user . $nodisp;
} else {
    $history_div_for_users = $history_div_for_user;
}

$rand2 = mt_rand(2, $final);
$flav2 = $flavs["$rand2"];
eval('$history_div_for_user2 = "' . fetch_template($flav2) . '";');
$history_div_for_homepage = $history_div_for_user2 . $nodisp;

Now displaying two "history blocks" on the home page; and displaying only one "history block" on prior "thin content" pages.

Nineteen done, eighty one to go....

When I get 100 done, I will group them somehow into a small number or arrays, and will then will change the algorithm a bit.

Also, for "thin content" pages like "single post", "tag search results" or "thin content man-pages", etc I will create a simple pattern matching routine to match the array of "_history" entries with the content, so for example solaris man pages will see a lot more solaris _history articles than linux history articles; and ditto for tags, and single post pages, or discussion pages with little content (no replies, etc).

So after 100 *_history templates are done (hopefully I will get 100 done all by myself), I'll write some logic to match content with the history files and stop relying strictly on a few random number generators.

I just created a "Review Page" for these little History sections (Temporarily Disabled) which has all the current "history" entries, so if anyone is interested, please review and cut-and-paste proposed additions or revisions.

(Temporary Disabled)

Thanks.

Or you can write your own and I'll format them.

Update:

This may be having an untended negative effect on SEO, because instead of "soft 404s" the search indexes are getting full of very old unix information, which may be of interest from an academic or historical perspective, are not really search terms which are relevant to today's problem solvers.

For example "Multics"... while this is historically interesting, it's not going to drive search results to the site from today's unix and linux users.

The same is true for other historical "keywords" and "historical bios".

Hmmmm.

I think we will need a more modern approach to making "soft 404" pages more appealing to Google, LOL

Maybe adding a relevant man page based on keyword matching to "thin" pages?

I have replaced this "history section" with a "matched man page section".

This was accomplished by moving the man page entries to an SQL database (currently over 210K unique entries) and doing Full Test searches of the DB to get scores of the matches and the to choose on of the top scores at random. The Man DB that I created for this may be larger than the entire DB before, and it is certainly by far the largest table in the DB.

I think this will work better than "history" sections, since we can learn new commands and man entries when viewing tags and posts.

After I runs a bit longer and it well tested, I will redo how the repositories are done; since I can now pull the info for all repositories for the DB and not read from the file system.

It should be a lot faster when I rewrite the repo pages to use the DB.

Also, our SEO scores should go up, I am guessing, and I anticipate the number of links in our index will continue to increase. Currently, GSC shows about 320K links. I expect this to continue to rise due to the changes I have made this month.

1 Like

Also, the old man page repo was giving about 10 - 15+ percent errors because it was so large and difficult to manage.

Now, that I am moving the man page text and keys to the SQL DB and rewritten the search algorithms, the error rate has dropped to 0.5 percent to 1.5 percent.

That is a huge improvement in results.

Also, since I have completely changed the search algorithm, I have completely eliminated the need for HTTP redirects completely, which was a flaw in the algorithm I wrote a decade ago.

Seriously, it's a huge improvement and will get even better when I rewrite the repo landing pages for each OS and create a new custom search function / page.

1 Like