It was the best of times, it was the worst of times . . .  I never actually read the book “A Tale of Two Cities” by Charles Dickens, but a book covering these three kernels and how they interrelate would be fascinating.  A few years ago I heard of the Hurd, and I wanted to see what was up today. (Yes, I couldn’t resist that play on words.)  I then decided to see how BSD and its derivatives related to GNU/Linux.  Here’s the tale . . .

It all started with Bell Lab’s product called UNIX, which stands for Uniplexed Information and Computing Service.  The unique trait with UNIX is that you got the source code for the OS as well as other things.  That way you could modify it and recompile it if you wanted.  The compiler for C was the new thing because for the first time, source code was portable because you just needed the pcode to assembler part of the compiler in order to take source code written in C to compile for your machine.  A group from the University of California, at Berkeley got really aggressive and heavily modified and ‘fixed’ some issues they saw with UNIX.  In fact, their fixes and adjustments to UNIX were so popular, they made it available.  Computer Scientists really studied the code and the methodology behind this new and powerful system.  UNIX was made available to Universities at a lower cost so that people would be hitting the market trained to operate and maintain the UNIX system.

About the same time, a new computer innovation hit, the 16 bit home computer.  Computer Scientists wondered if they could bring the UNIX system to the PC.  There were many in Berkeley, who tried this kind of project.  They called themselves Berkeley Software Distribution (BSD).  Many used the letters BSD (Berkeley Software Distribution) in their project’s name.  The Berkeley modifications to UNIX had the letters BSD associated with it.  Soon AT&T sued the Berkeley group because they were worried about their intellectual property rights and wanted to make sure Berkeley wasn’t taking code that was constructed by AT&T and using for their own purposes.  This lawsuit put a hold on everything that had BSD in its name.

A man by the name of Richard Stallman announced on Usenet the founding of a project he called GNU.  It stood for Gnu is Not Unix.  Its goal was to make a version of Unix, following Open Source standards.  It was, as I understand it, to be in the spirit of Unix, but not a dedicated port of Unix.

What is a kernel? As I currently understand it, it is the program that interfaces with the physical hardware and the applications that a user wants to run.  BASH, Firefox, apt-get, and almost all commands from the terminal, as well as your desktop apps are just that apps that the kernel runs in coordination with other things.  All operating systems need a kernel.  Kernels are designed with a certain philosophy in mind.  One type is a monolithic structure where everything is together.  Another type is a distributed kernel where the different tasks are run concurrently and they communicate with each other.  This, from my understanding, is called a micro kernel structure.  Unix, from Bell Labs, has a micro kernel structure.   Back to our story . . .

Stallman wanted a micro kernel structure due to some perceived advantages.  Just before the GNU project was announced.  One of the BSD projects, which became known as FreeBSD was coming along nicely.  The FreeBSD OS is a ‘port’ of Unix without ripping off AT&T’s intellectual’s rights.  FreeBSD is developed and maintained as an entity.  Stallman’s GNU project was to be a community effort.  This means there would be many maintainers and developers.  This is one of the BIG differences between GNU and FreeBSD projects.  Stallman was tempted to choose the BSD kernel, but due to the lawsuit, he stayed clear and started the Hurd kernel project which would be the center of the GNU operating system he proposed.   HURD stands for HIRD of Unix-Replacing Daemons and HIRD stands for HURD of Interfaces Representing Depth.

Somewhere in Finland, a young man who had been captivated by assembly programming on his VIC-20 computer, began a quest for this new computer, a PC running an Intel 386 processor.  He also had discovered a work called Minix.  This is another work where the UNIX foundation and design was ported to a PC.  Using an open standard, he began work on a kernel, not because of Stallman’s announcement  as I understand, but because it was in his nature to write a kernel because he was enamored with assembly programming.  His announcement totally stunned the world and drew the focus off of the HURD project.

Having a working kernel, even though it is monolithic in nature, was better than no kernel, and the dream of getting the GNU system running was very intoxicating.  So intoxicating that the GNU project became known as Linux.  Now this name change has been disturbing to Mr. Stallman.  That is why I refer to it as GNU/Linux rather than Linux.  If HURD gets to a workable state, which I understand it is to an extent, then the releases are called GNU/HURD.  Debian Project is one of the entities working on the HURD kernel.  In a very short time, Linus’ kernel was turned into a working kernel and the GNU/Linux operating system rose to life.  The HURD project has suffered from a lack of support due to most people not really caring about the architecture of the kernel in their computer’s operating system.  I believe very few people even care about such heady and intense considerations.  I also don’t think most people care about the Open Source movement or the Free Software Foundation and the philosophy behind them.  They just like the free OS and apps.

I wonder what would have happened if Mr. Stallman had chosen the BSD kernel?  What would be different today?  Would we even know about Linus Torvalds?  What do you think?  Give me some feedback.

Advertisements

After running GNU/Linux for a little while a user will no doubt want to get to know the guts of GNU/Linux.  One of the first steps is to enable your file manager to see the hidden folders and files.  For Thunar, it is to click on View and then Show Hidden Files.  You will notice there are file and folders that start with a period.  It is these folders and files that are a big  key to how GNU/Linux works for you.  They are, or contain, config files.  GNU/Linux uses config files to set how programs, and processes work.  Users of Microsoft’s OS are probably thinking, “That is a really ancient way of doing things.  Microsoft uses the registry.”  Well, the registry is just one large file that is encrypted.  It also holds some hidden areas, something you won’t find in GNU/Linux.  Everything in GNU/Linux is available for the user to see and modify, sometimes at your own risk. (Side note: If you haven’t ruined your install of GNU/Linux, then you haven’t explored it enough!  lol.  I know I have done it a few times.)

Config files are a really simple way to set program information. Most config files are small text files which are easily and quickly read by almost every programming language.  That is why GNU/Linux uses them.  It is a simple way for the OS and users to use.  Some config files you probably will explore are these .bashrc, .config/xfce4/terminal/terminalrc, and many others.  Don’t be afraid to open them with your favorite editor.  As long as you don’t save it you will be ok.  If you want to do some customization just do a search on the config file and you will find a site that will discuss how to edit it.  Remember, GNU/Linux is open and you can find some documentation on every file.  One last thing, check each program in question, many of them have a preferences area that will set all of the settings you find in a config file.  The .bashrc is a file I edit because it controls your Terminal session.  If you get into Linux, you will definitely get used to the Terminal.

When working within the terminal environment, there will be times you want to edit a file.  I found that nano is an EXCELLENT program to use.  It is easy to use and pretty powerful.  The homepage is here:  http://www.nano-editor.org/   Nano is usually installed on most distributions, or it can be loaded easily from  your distro’s install program.  It has a file browser to find where to save a file.  To save your work just use CTRL O.  Most of the commands are combos of CTRL and a key.  It even has options to have color highlighting for files, which helps seeing command words and the like.  This link shows how to get the config file up and running.  http://www.nano-editor.org/dist/v2.2/faq.html#3.9  Again, read the site.  All the information is there.  Nano makes editing files and such easy.  When making BASH scrips, I will use nano.

For those who love to customize XFCE with themes, icons, cursors and wallpapers, I found settings that will help make it easy.  Now, I found all this from the XFCE site.  It is easy to setup what you need in your home area.  With these folders, you will just drop in what you want and the system programs will find the new theme elements.  To setup custom wallpapers you make a the following path in your home folder:  .local/share/xfce4/backdrops  All of your custom wallpapers will be dropped here.  I can’t remember which folders I created, but just how deep you can go and create what is not there.  If I remember correctly, I had to create the xfce4 and backdrops folders.  Anything you put in there will be automatically picked up by the appropriate tools.  Additional themes will be dropped in a folder by the name of:  .themes .  Cursors and icons are dropped in a folder named   .icons .  These config folders really help with adding new themes.  I used the site http://xfce-look.org/ to get new themes.  Just untar or unzip with the archive manager the downloads and drop them in the appropriate folders.

One of the best things I like about GNU/Linux is the choices that it offers.  You can do so much with GNU/Linux.  GNU/Linux allows you to adjust and tweak settings to your liking.  Open Source philosophy allows you to read manuals and dig into the guts of the system to make it what you want.  That is right, you can adjust many, if not all, parts of GNU/Linux.  If you wanted, you can get all the source code and compile it just for the computer you want to run it on.  Most people don’t get started with GNU/Linux that way though.  The process to compile and assemble a working box takes some skill and effort.  Most people get started with a version of GNU/Linux that is easy to install and use.  Ubuntu is that distribution that many people have started with.  Though, many move onto a different distribution for one reason or another.  For me, though, the ability to tweak is a trap.  I start to tweak and then sooner or later I don’t know when to stop.

Other than icon sets, cursor sets, wallpapers, window themes, and sounds, you can also load applications to do system tasks to your liking. There are many built in programming languages.  Bash, which is great for many tasks and is mostly used in the Terminal Window. Python is an open source object oriented language.  Java and C/C++ are also easy to install an IDE to compile and run.  C/C++ come with every version of GNU/Linux and just needs an IDE to use.  The best choice is Eclipse which can be used for both Java and C/C++ development.  Not to mention the thousands of apps that do this or that.  And that is where I am at, in tweaker’s paradise.  I don’t get anything accomplished because I am getting everything the way I want it.  Well, today I am calling a halt to that.  No more tweaking.  None.  I am running with what I have and what it looks like.

So, when you use your Windows system, realize I have choices you don’t.  I have options you can never have.  Linux.  It is a great choice.  You need to check it out.  Try a Live CD of xubuntu, which is my favorite, or Kubuntu, or even Ubuntu.  You might discover the fun in computing again.

It is amazing how quickly one’s mind can change.  I found Synapse after watching a podcast of Linux Action Show.  It is part of the Jupiter Broadcasting lineup.  You need to go to YouTube and do a search for them.  The show is great.  Synapse is a program launcher, file finder and so much more.  I never quite liked the way Ubuntu’s desktop searched for stuff.  With Synapse, you just type in the program name and hit return and voila!  The program executes.  I am still learning how to use it, but it has already demonstrated how computer life can go on without a desktop menu.  I like the way it launches the app, or document based upon the text you type. It tries to do an auto-complete on your typing.  The home page for Synapse is here :  https://launchpad.net/synapse-project  There is also a wiki here: http://synapse.zeitgeist-project.com/wiki/index.php?title=Main_Page   To be honest it took me a while to “get” how it works, but I really like the app and find it very handy and more useful than the menu.  I still use a menu, but it does speed up many tasks.  I do wish it had a feature that would open a folder of my designation.  It probably does and I just don’t know the proper way to do that.

This is why I am loving Linux more and more.  It gives you options and you are not stuck with just one company’s philosophy about how to use computers.

You gotta try Synapse.  You really do.

It has been too long since I last posted.  Well, my life without Microsoft Windows has been great!  Since I am an experience Linux user, the total switch wasn’t difficult.  There are differences between Microsoft, Apple and the Linux operating systems.  Why?  Well, it has to do with development philosophies and market distinction.  Yes, I know that Apple’s OS is written from Linux.  Still, Apple has put their spin on Linux.  Most users that switch, or experience another operating system don’t realize how much they get used to one operating system and how it does what it does.  Many users think, “This is the way it needs to be.”  They don’t realize there are multiple ways to do things.  So, I you are thinking of switching, realize you will learn something new and be challenged to do things in a different way.

I switched from Ubuntu classic to xubuntu last January.  Why?  Well, I gave Unity a shot and came to the conclusion that it wasn’t for me.  Why did I make the switch to xubuntu rather than __________? (Fill in the blank yourself.)  Well, here are my reasons.  First of all, I wanted a traditional menu to choose apps.  I don’t want to search to find out what I have installed.  A menu is a quick way to find an application.  Second, I wanted to stay with Ubuntu based system for now.  Third, I always lean to a light, or rather lighter weight desktop environment rather than a full-featured environment like KDE.  Back when I was dual booting with Linux, KDE and GNOME were the two main desktop environments.  KDE was more resource hungry than GNOME.  I was a dedicated GNOME desktop user.  In fact, when Slackware went KDE only, I dropped Slackware in favor for Debian.  So with those choices xubuntu and lubuntu were the two choices.  I went with xubuntu because of XFCE, which has been around a while and has quite good features to it.  After tweaking XFCE a little by loading some things with Synaptic Package Manager, I am happy with my install.  I found xubuntu left a few features out and Synaptic allowed me to load the rest.

I chose a Ubuntu based distribution because Ubuntu has added the things that most people use, or at least, makes it easy to load the multimedia codecs that I really want to use.  Debian is the base for Ubuntu and Debian has the most packages available.  Ubuntu also has really improved package install and that is where I was frustrated in the past.  With Software Center and Synaptic Package Manager I can load anything that I need.  Also, I download packages from the source, like Libre Office and Eclipse.  What is good is that most sites include packages that load on Ubuntu systems.

Life has been great without windows.  You might find that it can be great for you.  Especially if Windows 8 is not to your liking.  There is a big community out there.  Check Linux out.

I have been wanting to learn Java for a while. I recently decided to choose a project to stimulate my learning of the language. Give my learning some focus and attention. If you have been ready this blog, I am developing a 4X strategy game. Well, as I have been reading on Java to remind myself and to understand some of the basics of Object Oriented Programming (OOP) I have grokked the concept of polymorphism. Well, not grokked, but I understand it now. I see a purpose and a reason for it to exist. Here is how I understand polymorphism. If anyone has anything to add or clarify, go ahead and post something. I would love to understand or have clarified anything I have wrong.

Polymorphism of SHIP to FREIGHTER

Polymorphism of SHIP to FREIGHTER

Polymorphism is a way to reuse a class. If a new class had to be made for everything, then the language definition, let alone any complex solution to a computer problem would be huge. The purpose for polymorphism is to allow reuse and redefinition of a class. In my case here is how polymorphism helps. Any 4X Space game will have ships, lots of ships. If I made a class for every ship and every modified ship, then I would have a real bloated program, but with polymorphism, I can do some very cool things. Here are some basics. I can define a basic SHIP class that has the properies of hit points, attack strength, defense strength, owner, location, and speed. All ships in my game will have these properties. So instead of writing methods for each ship to move, attack and repair, I can write it once in the SHIP class. So ALL ships will move, attack, defend, and repair the same basic way. This helps to add consitency to my program. I can still have varieties of ships by extending the SHIP class. One way to do that is to create a Freighter and add cargo space. I will later write methods that will load cargo and remove cargo for the freighter class.
I am still prototyping the classes and ideas, but I am looking forward to developing this because it is giving me some concrete examples of how to use items in OOP that I previously didn’t realize how to use them.

Recently, my laptop’s hard drive (HDD) decided to stop working efficiently. It took 5-10 times longer for my laptop to do anything. I had my laptop evaluated by Best Buy and they said it was just the HDD. I bought a new 1 TB HDD figuring I would try to restore windows on my currently installed HDD on the laptop, and if that failed I would install the new one after making some restore disks. Well, that didn’t work out and the restore partition didn’t work. I installed my new 1TB HDD and decided to make the switch to Ubuntu Linux. I have messed with Linux for about 15-20 year so it was time to make the permanent switch. I just didn’t want to pay money to get a set of restore CDs from Toshiba. I am tired of the money grabbing by micro$oft. Gates’ idea of purchasing the right to run software is just rediculous. This has set my development back due to a total loss of everything on the HDD.

Oh well, I am very satisfied with the Ubuntu and am looking forward to getting reaquainted with Linux. The good thing is that Java is a cross platform environment and I can get the same stuff done in Ubuntu that I could in windows.

I read this quote on a discussion board. I really like it and it gets to the heart of the purpose of the user interface:

The day that these monster one-man army developers start doing GUIs, they will conquer PC gaming. I love their ideas, but if you are unwilling to bridge them to me, then the effort I have to make can be outright frustrating and disappointing.

Basically they are the equivalent of your brilliant but absent-minded and introverted university professor in gaming.

The key is this quote “bridge them to me” a user interface is the way the developer brings into focus the game play and data that is necessary to play the game with enjoyment. Too much data and the user is confused. Too little data and the user has no creativity to express in the game.

This quote has gotten to the heart of the matter. A game can be great, but the user interface can make the game unplayable or confusing.

As of right now, I am a developer of a space strategy game. I am taking the jump and making the plunge. I don’t have many details, but I will use this blog to update the status of the game. I don’t even have a working title that is significant enough to post. Strategy games are something I love to play. I have played many, from Civ I to Reach for the Stars to Sword of the Stars and Sins of a Solar Empire. I have some ideas that I will post on one area. I have much to learn with programming and much to learn about game programming and AI. I am no where near any release, because I have just decided to do this. Stay tuned for more details.

Never Give Up, Never Surrender!

We’re in a heat wave.  I keep hearing Global Warming.  I don’t believe science has enough data to know.   I realize that there is something going on, but how do we know it is not a local increase rather than this drastic, permanent increase?  Any function can have a local increase or decrease, but is the function overall increasing?  That is where I wonder.  I am tired of the Chicken Littles of this world.  Blaming everything on Global Warming.  The recent cold winter, a year ago, was blamed on Global Warming.  Everything outside of a narrow band of expectation is blamed on Global Warming.  Well, let us make sure we are right.