Leave a comment

Looking at making wine and beer.

Making wine:


Making beer:



Getting back to basics.

Leave a comment

Chit chat


I’m kind of quiet this week, but  here is a cartoon or two:

Building a six plus node analog computer cluster. An analog computer is a device that measures some value.

Future programmer.
She’s trying to get into your computer.
Bash issue…


Good old fashioned office.

Standalone packages


Word processor:

Integrated packages:
Office packages:



Integrated ERP/CMS:
Five basic components of computer system1.Input Unit
2.Output Unit
3.Storage Unit
4.Central Processing Unit (CPU)
5.Arithmetic and Logic Unit (ALU)
6.Control UnitThe internal architectural design of computers differs from one system model to another. However, the basic organization remains the same for all computer systems. The following five units (also called “The functional units”) correspond to the five basic operations performed by all computer systems.1. Input UnitData and instructions must enter the computer system before any computation can be performed on the supplied data. The input unit that links the external environment with the computer system performs this task. Data and instructions enter input units in forms that depend upon the particular device used. For example, data is entered from a keyboard in a manner similar to typing, and this differs from the way in which data is entered through a mouse, which is another type of input device. However, regardless of the form in which they receive their inputs, all input devices must provide a computer with data that are transformed into the binary codes that the primary memory of the computer is designed to accept. This transformation is accomplished by units that called input interfaces. Input interfaces are designed to match the unique physical or electrical characteristics of input devices to the requirements of the computer system.In short, an input unit performs the following functions.
It accepts (or reads) the list of instructions and data from the outside world.
It converts these instructions and data in computer acceptable format.
It supplies the converted instructions and data to the computer system for further processing.2. Output UnitThe job of an output unit is just the reverse of that of an input unit. It supplied information and results of computation to the outside world. Thus it links the computer with the external environment. As computers work with binary code, the results produced are also in the binary form. Hence, before supplying the results to the outside world, it must be converted to human acceptable (readable) form. This task is accomplished by units called output interfaces.In short, the following functions are performed by an output unit.
It accepts the results produced by the computer which are in coded form and hence cannot be easily understood by us.
It converts these coded results to human acceptable (readable) form.
It supplied the converted results to the outside world.3. Storage Unit (Memory and off-line storage memory).The data and instructions that are entered into the computer system through input units have to be stored inside the computer before the actual processing starts. Similarly, the results produced by the computer after processing must also be kept somewhere inside the computer system before being passed on to the output units. Moreover, the intermediate results produced by the computer must also be preserved for ongoing processing. The Storage Unit or the primary  main storage of a computer system is designed to do all these things. It provides space for storing data and instructions, space for intermediate results and also space for the final results.In short, the specific functions of the storage unit are to store:
All the data to be processed and the instruction required for processing (received from input devices).
Intermediate results of processing.
Final results of processing before these results are released to an output device.4. Central Processing Unit (CPU)

The main unit inside the computer is the CPU. This unit is responsible for all events inside the computer. It controls all internal and external devices, performs “Arithmetic and Logical operations”. The operations a Microprocessor performs are called “instruction set” of this processor. The instruction set is “hard wired” in the CPU and determines the machine language for the CPU. The more complicated the instruction set is, the slower the CPU works. Processors differed from one another by the instruction set. If the same program can run on two different computer brands they are said to be compatible. Programs written for IBM compatible computers will not run on Apple computers because these two architectures are not compatible.The control Unit and the Arithmetic and Logic unit of a computer system are jointly known as the Central Processing Unit (CPU). The CPU is the brain of any computer system. In a human body, all major decisions are taken by the brain and the other parts of the body function as directed by the brain. Similarly, in a computer system, all major calculations and comparisons are made inside the CPU and the CPU is also responsible for activating and controlling the operations of other units of a computer system.4. Arithmetic and Logic Unit (ALU)

The arithmetic and logic unit (ALU) of a computer system is the place where the actual execution of the instructions take place during the processing operations. All calculations are performed and all comparisons (decisions) are made in the ALU. The data and instructions, stored in the primary storage prior to processing are transferred as and when needed to the ALU where processing takes place. No processing is done in the primary storage unit. Intermediate results generated in the ALU are temporarily transferred back to the primary storage until needed at a later time. Data may thus move from primary storage to ALU and back again as storage many times before the processing is over. After the completion of processing, the final results which are stored in the storage unit are released to an output device.

The arithmetic and logic unit (ALU) is the part where actual computations take place. It consists of circuits that perform arithmetic operations (e.g. addition, subtraction, multiplication, division over data received from memory and capable to compare numbers (less than, equal to, or greater than).

While performing these operations the ALU takes data from the temporary storage are inside the CPU named registers. Registers are a group of cells used for memory addressing, data manipulation and processing. Some of the registers are general purpose and some are reserved for certain functions. It is a high-speed memory which holds only data from immediate processing and results of this processing. If these results are not needed for the next instruction, they are sent back to the main memory and registers are occupied by the new data used in the next instruction.

All activities in the computer system are composed of thousands of individual steps. These steps should follow in some order in fixed intervals of time. These intervals are generated by the Clock Unit. Every operation within the CPU takes place at the clock pulse. No operation, regardless of how simple, can be performed in less time than transpires between ticks of this clock. But some operations required more than one clock pulse. The faster the clock runs, the faster the computer performs. The clock rate is measured in megahertz (Mhz) or Gigahertz (Ghz). Larger systems are even faster. In older systems the clock unit is external to the microprocessor and resides on a separate chip. In most modern microprocessors the clock is usually incorporated within the CPU.

6. Control Unit

How the input device knows that it is time for it to feed data into the storage unit? How does the ALU know what should be done with the data once it is received? And how is it that only the final results are sent to the output devices and not the intermediate results? All this is possible because of the control unit of the computer system. By selecting, interpreting, and seeing to the execution of the program instructions, the control unit is able to maintain order and directs the operation of the entire system. Although, it does not perform any actual processing on the data, the control unit acts as a central nervous system for the other components of the computer. It manages and coordinates the entire computer system. It obtains instructions from the program stored in main memory, interprets the instructions, and issues signals that cause other units of the system to execute them.

The control unit directs and controls the activities of the internal and external devices. It interprets the instructions fetched into the computer, determines what data, if any, are needed, where it is stored, where to store the results of the operation, and sends the control signals to the devices involved in the execution of the instructions.


In an earlier article we briefly discussed the start, stop, and flow symbols. Now let us add one more symbol. Now let’s add the rectangle to represent process or arithmetic calculation. Computers have memory. We can represent a piece of memory with a symbol known as a variable. Variables can change value at any time we want them to. Usually when we change a variable, we assign a new value to it or we just want to define a part of memory to a particular variable.

In this case, we want define part of memory to be known as “A” and then assign the value of zero to it. We could also say that “A” was assigned a starting value of zero sort of like algebra you may have learned in school. So the program above starts, then assigns the value of zero to “A”, and then just stops  So far that does not seem very practical, but it is still a program.

So now so far, we have four tools to work with. Let’s review. Every program must have a starting and an ending point or termination. We need to have flowlines to describe how the program gets from the beginning to the end. Now we have a way to define a process or something to do in the program we have just created. This program might be represented in code as (rem stands for remarks or programmer notes that will not be executed by the computer):

‘rem start


‘rem start
‘rem assign values
let A = 0
‘rem stop

or you could go a bit further for documentation purposes:

‘  Program start

‘Variable assigment (aka starting values)

Let A = 0

‘  Program stop (this is the end of the program)



One of the most often asked questions I hear is “What language should I learn.?”. Can not really tell you the answer to that. Then I ask, what are going to do with your programming skills? The answer is many times they do not know. They just want to be a programmer. Many times they see the big dollar signs, but programming is not really where their heart is sometimes.

Usually for future programmers I recommend having two disciplines. For instance, how can you do an accounting program if you have no idea how debits and credits at the minimum even work. You need to know about what you want to program for. In most cases, people in a particular industry feel they do not have the software that meets their needs. They go on a quest to develop such software.

Now let us go one step further. You need to know more than a language. You need to understand logic modules, just like there are different rooms in a house. All houses have the basic rooms, but they are all not attached in the same way. So is it true of software. You will need to learn the basic constructs to apply them in programming. Some say musicians can make good programmers, because they are used to putting parts of songs together. You will also need to be a good problem solver to be a programmer. No piece of software works the first time.

If you have ever done a “todo” list, you have written a program aka a piece of software for humans. Unless you are an independent programmer, you will not be developing the code from scratch, You will have guidelines that will usually come from a systems analyst or the like. Those guidelines may come in either the form of a flowchart (sort of an architect’s blueprint) or it may come in some form of “todo” list such as pseudocode. It will be your job to translate those instructions in to a computer language program.

What makes up a program? Lots of instructions. Just like you speak English or even another language, you know you have to say things in a certain way so that you will be understood by the instructions you want to convey. You need to know the syntax or the constructs (there is that word again) of the programming language you are using to write your program. That leads people to want to use the language both spoken and as a program that you feel comfortable with. Only you can decide what that is for you.  What languages are there?

As for languages, some of them were developed to accomplish certain tasks easier. In the early days, Many people in the sciences learned Fortran (formula translation) because it was good for doing heavy computation. then again people use Cobol (common business oriented language) because it was good for business, self documenting  and was very much like using English. Now there are a zillion languages for a variety of purposes or just what someone liked at the time. There are also languages that were meant for teaching about computing such as Pascal, Basic, Python, and C (and it’s variants).

In some cases, especially working for an employer, more than likely you will not get to choose the programming language will program with. Be flexible. Just like now it is good to know more than one oral language even if you do not speak it fluently. Knowing even a little bit, makes it easier to communicate with others. makes it easier to translate computer code from one language to another. The Basic language is now sort of frowned upon. It is a shame. I like to use old books with Basic computer programs and translate them to what I can use. For example, mathematics is not my strong point. I found an old program that created what is known as a sine wave. I translated that into what I could use. So it is best to be multilingual both in programming and in oral conversations.

Now that we have gone through all of that, what is next? Of course, you want to write a program. You have either read a book, magazine article, took a class, or even looked at some old programs, that you would like to try!  You will need a program that will translate what you create into what the computer can understand or a sort of a translator. All computer language translators do not come with all machines. You can go online to places like compileonline.com to start entering programs to see the results. Computeronline.com has a wealth of programming languages to choose from. There you can experiment in coding and learning a language.

For a survey of a few languages see: http://computoman.blogspot.com/2014/09/freedom-of-assembly.html In my case, I wanted to learn a bit of Java. so I went to the java option and entered some code to see what would happen.

So now you have a sandbox to try several languages to see what you personally may like,


Whether you prefer a graphical user interface such as:

Where all you have to do is just double click a picture is so sexy and seems very easy. Let’s consider and alternative where all you have to do is just press a single key to start the program you want:

But then you could actually sort of do the same thing with an interface like this:

Oh but it is not as sexy some might say. It does exactly the same thing, but without using so many system resources. Not only that but you could get even more choices without having to redo the desktop. So if you pressed 1, you would get:

Or if you pressed 2 than you would get:

All this was done without any swiping!  Of course that does not prevent you from using your favorite program such as a spreadsheet or whatever:

But then you could do sort of the same thing with a text based alternative like homecalc or sc:

With all the embedded devices such as the Raspberry Pi and the like, you will want to be as resource conscious as you can.  Or to put it in another way, with all the impending issues in the world, what if computers, hand held devices and the like were stopped from being made? You still have to compute. What would you use? Those old systems in the closet do not look so bad now!?! Do not worry, computers will not be stop being made.

A bit of code:

echo “************************”
echo “* Music programs       *”
echo “************************”
echo “* [1] Autoharp         *”
echo “* [2] Radio            *”
echo “*                      *”
echo “* [0] Exit/Stop        *”
echo “************************”
echo “Enter your menu choice [1-2, or 0]: ”
read -n 1 yourch
case $yourch in
1) autoharp.sh  ;;
2) radio.sh ;;
0) exit 0 ;;
*) echo “Oopps!!! Please select choice 1,2 or 0”
echo “Press Enter to continue. . .” ; read ;;


Decided to take my score scraping script and apply it to other media. Per se maybe we just want the headlines of CNN.com. Used essentially the same set of instructions on a local news site with results. You will want to use the same rough logic or pseudocode:

Dump web page as ascii (text) to disk file.
Read disk file one line at a time in, but ignore all lines till you get what is needed.
Now continue reading one line at a time, but ignore certain lines
With the line you read in, output what is needed while editing out unwanted characters.
Stop output when you get to a point nothing else is needed.
Finnish reading file one line at a time.

You might get results like this ignoring equals signs.


THE LATEST* Source: Joan Rivers’ doc took selfie
* Freak accident kills hero bus
* IOS 8 is live: How to get it
* Five iOS 8 features you’ll love
* NEW Billionaire tells big named computer company: Innovate
* Obama stands firm: No ground troops
* Kerry heckled during testimony
* NEW Stocks hit record; thank Yellen
* NEW Panthers star takes leave
* Vikings: Peterson must stay away
* NEW Virus coming to a state near you
* Dowd inspires edible-pot campaign
* Wrongly convicted man gets a statue
* China blacks out CNN’s report
* He mistakenly calls 911, then …
* Surprise! Mendes, Gosling have babyOPINION


Then we can we can add it to our report.sh homemade newspaper. For details see:

# cnn.sh
echo “<h3>CNN Headines</h3>” >> report.html
echo “<pre>” >> report.html
# creates cnn.txt
./cnn.sh > cnn.txt
echo “<pre>” >> report.html
cat cnn.txt >> report.html
echo “</pre>” >> report.html

# Cnn Headline  Grabber
# Assignments
# --------------------------------
let "flag = 0"
# end assignments
# Get data file
elinks -dump "www.cnn.com"  > $datafile
# Extract and display data
while read line
do fdata[$a]=$line
    echo $line | grep -q "THE LATEST"
    if  [ $? -eq 0 ]; then
        # header
        let "flag = 1"
    if [ $flag -eq 1 ]; then
        echo $line | grep -q "Weather"
            if [ $? -eq 0 ]; then
            let "flag = 0"
            echo $line | grep -q "IMG"         
            if [ $? -eq 0 ]; then
                let "response = donothing"
                echo $line | sed 's/\[.*\]//'
let "a += 1"
done < $datafile
# footer
echo ---------------------------------------------
# End.


Schools spend a a lot of money on computer education management systems  such as the following: (values are subject to change at any time.)

Blackboard has dominated the market including try to allegedly sue out of business their competitors.  If your a small school with less than a hundred students, a thousand dollars a per student seems a bit extreme to me unless you can afford it.  The login in can tell you a lot about an institution. Lee college gives you the chance to look at potential courses.

Yet, when I see a credit card pictured and focused on, I wonder if the they are only looking for your money. Could be a turnoff for a potential student.

Now let’s look at an open source alternative. No money mentioned and you can again grab information without even signing up.

The cost of the Moodle software alone is $0 per student, allowing institutions to be more competitive. It is at least something to look at if you are an education administrator. Used Moodle a long time. Just did a fresh server install for testing. There are already many pre-setup modules you can use such as: http://moodle.net/?downloadable=1&submitbutton=Search+for+courses

Plus there are dozens of other sources with just a web search. i.e.  http://moodleshare.org/

Check out http://moodle.synergy-learning.com/.



Penne pasta and red sauce.


Good day.


Leave a comment

Have not made pasta in a long time. Took some penne pasta and made my own quickie red sauce. The homemade chicken lard really made it good.

Can crushed tomatoes. (fresh is better).
Homemade chicken lard.
Garlic salt.

Some of our pasta recipes.


Pxe booting to a linux install.

Leave a comment

Chit chat


Finally started putting back together my desktop. so I can get off a borrowed laptop.

This weekend is for building electeronic stuff.


Just a few notes about doing an http based linux install.


Linux Debian is kind of taking of the reigns of being one of the most popular linux distros. Like installing any operating system the traditional way, you can run into roadblocks.  For example, you may not be able to burn a linux cd, the machine you want to load linux on has a broken cd/dvd rom, or a host of other reasons. What we are about to do is what is known as pxeboot networking. Another words we will use a web server to get us started with a linux install on a system. Traditionally you actually had to have several servers to do the network install. You had to modify a Dhcp (Ipaddress servers) server,  a Tftp (boot files) server, and among other systems which general required a lot of setup and the blessing of the system administrator,

Tried this with the python web server, but you have to have all the files in one directory from what I could see.  I just did not want to take the time to do it.

$ python -m SimpleHTTPServer

I went ahead and used the Apache2 web server. You can get portable versions of the Apache2 web server so that there is not much to install. But before I get ahead of myself, we need a way to boot the target computer to access the network.

Etherboot led the way in this direction and had now graduated to Ipxe. (more information at http://www.etherboot.org). So we need to make a boot disk for the computer we want to install linux on. You have severaal choices. For our purposes a floppy will be used. You can also use a cd/dvd rom disk and or a very small usb stick. We need to go to http://www.romomatic.org to create the boot media for our system.

We chose the floppy disk. Now even though we can use the floppy disk to access the network, we need to add a short script to let the floppy know about the web server we want to use. in our case the script was for oeorgan1 using the debian in /var/www directory. The script is pretty standard so all we had to do was to change one line of the script.

echo Performing DHCP on first network interface
dhcp net0
set 209:string pxelinux.cfg/default
set 210:string http://oeorgan1/debian/
chain ${210:string}pxelinux.0

You will press the customization button to get the text box where to enter the script. If the script is ok, the you want to save it to your existing system.  It is usually saved as a very long name so I use the gui to rename it to test.dsk.

Now we need to get the image written to the floppy and that is pretty easy,

$ sudo dd if=test.dsk of=/dev/fd0

Note: on newer systems it might be something like:

$ sudo dd if=gpxe-1.0.1+-gpxe.dsk of=/dev/sdb

The client machine is ready to go, so now let us look at the server. You probably want to make a special directory such as debian in your document root. /var/www/.

$ sudo mkdir debian
$ cd debian

Now that we have a place to store the files we need to download them. Remember we will not have to burn a dvd. Here is where the files are, so all you have to do is download them directly to your web server,

$ sudo wget http://debian.linuxmint.com/incoming/dists/testing/main/installer- i386/current/images/netboot/netboot.tar.gz

The we need to expand the archive in the /var/www/debian directory.

$ tar zxvf netboot.tar.gz

Then you also need to get the cdrom image file for your system. In this case we are going for the i386 version,

$ wget http://ftp.nl.debian.org/debian/dists/wheezy/main/installer-i386/current/images/netboot/mini.iso

That is all you need! Make sure your apache2 web server is running though.

$ sudo service apache2 status

Apache is running (pid 12345)

Now it is time to boot up your client machine with the floppy media!


In just a few seconds you should get the install menu. Now the rest of the install should come from the internet. That is another article. We have our server set up to support several linux distros. i.e. Debian, Mint,  Ubuntu, and others. Using a standard boot media, there is.no need to burn new cd’s every time a new version of linux comes out.  Have fun!

Even if your computer does not have a floppy drive you can get a usb floppy drive fairly cheap. Since the data on the floppy is so small, it should not take long to load even with a usb floppy drive.. For mass installs we recommend the cobbler, drbd/clonezilla, or as a last resort the Fog software. I will talk about them later.  Last but not least you can also use this method to install MSWindows systems.


Arch Linux Netboot Live System

The Arch Linux netboot environment allows booting Arch Linux live media directly over the network. It will boot into a menu where you can choose from a list of available mirrors. The image will be downloaded into memory.
Requirements: A computer that connects to the internet via LAN and DHCP.
If your ethernet NIC is not supported by iPXE, you must use your NIC’s netboot capabilities. This is only possible if you select “Boot from network” in the BIOS and configure your DHCP server to load the PXE image provided below. In this case, the UNDI driver will be used for downloads until Linux is booted. The first stage of the download can be extremely slow.

Test netboot with qemu

Download an iPXE kernel image.

Run qemu with the kernel image:

qemu -m 1G -kernel ipxe.lkrn

Boot with any Linux bootloader

Download an iPXE kernel image to /boot.

Add the image to your bootloader configuration:

menuentry 'Arch Linux Netboot Environment' {
  set root='(hd0,1)'
  linux16 /ipxe.lkrn


LABEL archnetboot
MENU LABEL Arch Linux Netboot Environment
KERNEL /ipxe.lkrn

GRUB Legacy:

title Arch Linux Netboot Environment
    kernel (hd0,0)/ipxe.lkrn

Boot from USB

Install a bootloader (e.g. GRUB or syslinux) onto the USB drive and use the .lkrn file as described above.

Boot from Floppy

Download an iPXE floppy image.

Write the image to your floppy:

dd if=ipxe.dsk of=/dev/fd0

Boot from CD

Download an iPXE ISO image and write it to a CD.

Boot from the network   (from the Arch documentation)

There are two ways to do this:

Using an iPXE image

Download an iPXE PXE image into your TFTP root.

Set the PXE filename to ipxe.pxe (using the filename option in dhcpd or the -M option in dnsmasq).
This method is recommended, as it will always work – if iPXE lacks a native NIC driver, the UNDI driver will be used.

Flashing your boot ROM

You can build a custom iPXE images and flash it to your boot ROM. You must include one of the following iPXE scripts:

If you do this, your computer will always boot the Arch netboot environment when you netboot your computer.


Been spending time looking at booting systems to the net to install linux operating systems. So far we have looked at Arch and Debian based systems. Both Fedora and Centos have pre-made iso’s for network install.





But if you want to roll your own, here are some scripts to look at:


dhcp any
# Set source URI
set mirror http://download.fedoraproject.org/pub/fedora/linux/releases/20

# Detect CPU architecture and calculate repository URI
set arch i386
set repo ${mirror}/Fedora/${arch}/os

# Start installer
kernel ${repo}/images/pxeboot/vmlinuz initrd=initrd.img repo=${repo}
initrd ${repo}/images/pxeboot/initrd.img


dhcp any
# Set source URI
set mirror http://download.fedoraproject.org/pub/fedora/linux/releases/18

# Detect CPU architecture and calculate repository URI
cpuid –ext 29 && set arch x86_64 || set arch i386
set repo ${mirror}/Fedora/${arch}/os

# Start installer
kernel ${repo}/images/pxeboot/vmlinuz initrd=initrd.img repo=${repo}
initrd ${repo}/images/pxeboot/initrd.img

or older releases

dhcp any
# Set source URI
set mirror http://archives.fedoraproject.org/pub/archive/fedora/linux/releases/14

# Detect CPU architecture and calculate repository URI
set arch i386
set repo ${mirror}/Fedora/${arch}/os

# Start installer
kernel ${repo}/images/pxeboot/vmlinuz initrd=initrd.img repo=${repo}
initrd ${repo}/images/pxeboot/initrd.img



dhcp any
set base http://mirror.centos.org/centos/6/os/x86_64
kernel ${base}/images/pxeboot/vmlinuz stage2=${base}/images/install.img ksdevice=${netX/mac}
initrd ${base}/images/pxeboot/initrd.img


Our local server ipxe script

dhcp any
set base http://oeorgan1/distro/centos
kernel ${base}/pxeboot/vmlinuz stage2=${base}/install.img ksdevice=${netX/mac}
initrd ${base}/pxeboot/initrd.img

Files  for local server needed:


Stromboli biscuit:
Good day.