Wednesday, September 29, 2010

Hackers are positive people


I was looking around at the movies coming up and looked into "The Social Network" which led me to Wikipedia for Mark Zuckerberg.

Once upon a time, I wrote a book about how computers work -- meant for the everyday person and trying to explain/show how the various parts of computers worked together. Although unpublished (and probably unnecessary anymore), one of the chapters dealt with hackers. According to Wikipedia, Zuckerberg said that hackers are people who aren't afraid to break something in order to make it better.

Personally, I would go a bit further. I would say that hackers are people who are curious about how software works, aren't afraid to break it, and who want to make it better (in the past, this often meant more efficient and faster, nowadays it more often means more features). At any rate, it is a positive purpose -- Bill Gates Jr., Wozniak (also a hardware tinkerer), and others are all hackers. I am also a hacker and proud of it.

So, why does the word "hacker" have such a negative connotation? Leave it to the sound bite. It sounds good and the media, rather than going into more detail as to what was actually done (which might bore a majority of their viewers/readers) just lumped all people working on software as hackers. This includes a sub-group of hackers which does NOT have such benevolent motives -- the "crackers". Crackers work to exploit the inherent weaknesses of software structure to allow misuse.

Crackers are a pain in the rear -- they do things for their own egos and pocketbooks and make the rest of us have to deal with their behavior. Hackers have made the fusionfalls (a current favorite of my kids), the facebooks, the Linuxes, and the spreadsheets possible (among thousands of other software programs). Hackers have found a home in the open source community but, for the most part, remain in individual obscurity.

Saturday, April 17, 2010

Where did they go?


Well, I decided to be inspired by one of the Blogs I follow -- "The Retirement Bubble" and accept the fact that I just am not going to be a daily blogger. So, I headed to my blog and "ZAP", my last blog was no longer there. In fact, my stat counter for visits (which I watch not go up very fast ) went backwards from 184 to 121.

I'm sure that things of this nature happen to you, also. What can the reason be?

Well, first, of course, there is the jello-like consistency of memory. I could have just imagined that I posted a blog entry last month. People look at memory as the chronicle of the past but it just doesn't really work that way. If you think about doing something enough times, with enough detail, it will blur the boundary between "memory" and "dream". Given an amount of elapsed time, that boundary may easily disappear. I know people who have very fixed "world views" and you can tell them "yes" to a question and, because they just "knew" you were going to say "no", they will HEAR "no" and remember "no". This is a bit more severe of a split between "memory" and "dream". The bottom line is -- one cannot really rely on memory

But, do I think that is what happened? No. Of course it could be vanity -- "other people may not remember correctly but I certainly do". No, the main reason I don't think that was the case is because of the stat number. Everyone has certain areas where their memory is well exercised and more reliable. My stepdaughter can remember what someone wore for a given date within the past few months and practically forever about what SHE was wearing. Other things aren't so important to her and she just doesn't remember. For me, it is numbers. I can visualize that "184" in the stats area and I'm pretty sure it isn't a false memory.

There are some aspects to irregular posting that are certainly suspect. For example, some of the formatting aspects of this blog seem to be strange to me -- but, for that, I will just blame my memory and not doing this blog often enough.

Assuming that I'm not crazy and my memory is not totally faulty, where did the blog go? Two possible avenues seem to rise to the surface. One, a system crashed and the disk got backed up (which, for Google, does seem a bit scary to think that backups are unreliable). Two, I didn't do something correctly to commit the blog into permanent status.

Actually, there is a third possibility but paranoia just isn't my thing. "Someone" could have removed it. Since the blog was concerned with firmware and quality control (and Toyota) I guess that there is a little weight to that but I don't really believe it.

At any rate, my last blog vanished and I'll have to think about it a bit to start over the chain. The last blog was on embedded software (firmware) and quality control. The next was going to be about embedded software on cars, unit testing and system testing -- and the difficulties of fully system testing real-time software for interconnecting modules (groups of software). And the next was going to be quality control and testing in general.

However, since the first of the series has vanished I guess I'll think it all out again.

Google, if you're listening -- maybe YOU can find out what happened to my last blog .

Friday, February 19, 2010

Ready, Set, Stop


We've probably all seen a car in an intersection -- rear end over the crosswalk and front end partially blocking the outside cross traffic land -- and they just stay there, never getting a green light to go. Or perhaps they have stopped 30 feet behind the crosswalk and they're stuck (and you're stuck behind them). There really is no mystery -- they are beyond the range of the sensor in the road and the traffic light system doesn't know they exist.

Traffic light systems are ideal for computer programming assignments. The basic system is very simple but it can be increased in complexity to understand more and more possibilities of design. I have used such systems as examples in a couple of my books.

The simplest form of traffic light is a blinking four-way stop (red lights). Not much of an advantage over a four-way set of stop signs except more visible in the dark. The next version can make use of a simple mechanical timer and set of switches (rather like many mechanical pool pump timers). The timer can revolve at a fixed rate and close contacts with the appropriate lights in the traffic system. It probably proceeds like

Green Red
-t- Red
Yellow Red
Red Red
Red Green
Red -t-
Red Yellow
Red Red
and back to the beginning. The "-t-" indicates some type of delay -- the length of time that the green light stays on for that direction. Note the two times that both directions are Red. This is very important for safety reasons.

This simple mechanical system has a timer and a set of connections to lights. The timer is an input and the connections are outputs. Mechanical systems can be designed to allow for a beautifully complex set of conditions but the actual construction becomes more and more precise and difficult to mass manufacture. It is much cheaper, and easier, to start adding microprocessors and programs to handle more complex operations.

With programming, the inputs are often extended to a clock, a set of timers, and one or more sensors. These are all concerned with events that affect the output -- which may be extended to include walk lights in addition to traffic lights. The programming may start taking into account the day of the week, time of day, whether it is a holiday, how many cars are waiting in a lane, and many other options. Once again, it can get pretty complex -- but most of the complexity is hidden in the programming and, thus, mass manufacturing is still possible (even reduces the cost per unit when more are made).

So, the car is stuck because the sensor no longer can tell it's there and it cannot use that as an event to trigger a light change.

Why go into all this detail? Who cares? Well, I find it interesting in itself but it's also a good prelude to talking about embedded processors in cars and the relation between complexity, sufficient testing, and safety which is definitely in the news of late. See the next blog .

Sunday, September 6, 2009

Basics of how email works


I have noticed that some of my friends are not really aware of just how email works. This isn't really necessary -- as long as it works the way one "expects". It only becomes a problem when it does NOT work the way that it is expected.

Email starts out the same way as paper mail. It has an address and it has a letter (or body). It may even include some type of contents (attachment). The actual format of an email body is only important for a corporate systems administrator -- you'll probably never have to worry about it. The way attachments are carried may be of interest but, once again, it will work for you or it won't work for you. One popular method is MIME (Multipurpose Internet Mail Extensions) which allows mixing various types of files (photos, movies, music, text, etc.) within the same email file.

An address consists of a user id an "at" sign and a mail server name. A server is a computer which provides services to other computers (possibly in addition to providing services to someone directly using the computer). These services can be acting as remote data servers or it can be as a mail server. A mail server acts as a post office with each individual user id acting to identify an individual post office box. Popular mail servers include gmail.com, att.net, verizon.net, charter.net, yahoo.com, and aol.com. These people-readable, "friendly", names are actually translated into machine-friendly numbers (such as 103.56.113.114) by a system of other servers which provide domain name services (DNS). These machine addresses are used by the Internet Protocol (IP) network to route messages to the correct servers.

Most mail servers act as a "post office" for many different user ids. However, it is always possible for you to have a computer in your own home that acts directly as a mail server for your own domain name. When you send mail to someone, it is routed to the mail server for that address. The computer that acts as the mail server may be located anywhere -- Ohio, Paris, London, Florida, Washington state, or wherever. The mail will stay on that server until someone "picks it up" and then deletes it (or the mailbox capacity is exceeded). The important point is that, for most people, the email actually exists on some other computer that may be far away.

In order to pick up your email, you have two basic options. You can use a browser (or other program) to connect directly to your mail server and read/delete/send mail. Or you can use a mail program (such as Outlook, Thunderbird, Mac Mail, or AOL) to connect to the mail server and download the mail on the server to the computer upon which you are typing. At the point of downloading, there are still two copies of the email -- one on the mail server and one on your local computer. However, this is a waste of storage space, so most mail programs give you various options (under "options" or "preferences" usually) to delete the copy of the email on the mail server. This can be done immediately, in three days, in a week, or an arbitrary interval.

And now you have your email and can deliberate on a thoughtful response.

http://technoglot.blogspot.com

Saturday, September 5, 2009

What makes high tech "high"?


People, and the media, talk a lot about "high tech"? But what is high tech? Warren Buffett says that he does not invest in high tech -- not because he thinks that it is bad but because he feels that it is wisest to invest in companies that one understands. This allows a good understanding of the business and the market and the managerial capability to run the company.

High tech exists because of all of the levels of technology upon which it relies. Thus, it is at the apex (or top) of a very large pyramid. This is reflected by our education and what we are expected to be able to do at different periods of our education.

At the bottom of the pyramid are "simple machines" and, as listed in Susan Kristoff's "Introduction to Simple Machines", scientists in the Renaissance period listed six devices for simple machines. These are the lever, the wheel and axle, the pulley, the inclined plane, the wedge, and the screw. In order to create, or make use of, simple machines, a variety of "simple tools" are required -- such as hammers, screwdrivers, wrenches, pliers, saws, and shovels. To this list, I would add cutting instruments such as knives and chisels.

Of course, when you read through lists such as this, you will find yourself saying -- but what about scissors, and bolts, and nuts, and ...? Just because the Renaissance scientists made a specific list of six items doesn't mean that everyone will feel that is THE correct list. For example, I could argue that the wedge and the inclined plane are variations on the same thing. I would actually be tempted to classify into categories of mechanical movement such as lifting, pushing, pulling, and rotating.

It really doesn't matter. The fact is that there are some basic machines and tools that exist at the bottom of the pyramid. By using such basic devices, we can produce "low tech" -- a swing set, a door, a teeter-totter (for those that remember such ), pogo sticks, and so forth. These can all be easily built using basic devices and tools. Of course, the degree of "finish" for something will depend on the quality of the tools and the experience of the craftsperson. I can create hinges and a door but you probably wouldn't want it on the front of your house.

We now reach into the "middle technology" category. Note that things are not REALLY so nicely divided as something may easily be broken into parts that are of various levels of needs. When we get to middle technology, we get to phonographs (for those who remember such), steam engines, paddlewheels, flour mills, ships, and so forth. These are items where you might appreciate the work which goes into them but aren't likely to cause you to gasp with astonishment. And many moderately experienced modern young adults can probably make such. They take knowledge, tools, and the ability to design and follow directions. I could probably make a horrible sounding, but functional, record player (and record). Neither Bose nor Boston Acoustics will lose sleep over that.

Now, we come to high tech. High tech requires the use of middle tech tools and machines to create their products. A CD player requires the ability to create lasers, and smoothly precise rotating movements, and a lot of semiconductor chips, and wiring and special metals and materials. I could NOT create a CD player without first creating a lot of things that I would need prior to being able to create the CD player. High tech requires middle tech which requires low tech. And that is the real story -- high tech builds upon other techs.

http://technoglot.blogspot.com

Wednesday, September 2, 2009

Computer Literacy 101 -- what is a peripheral?


A computer system cannot often stand alone -- it needs a way to input data, it needs a way to output data and it needs a way to expand its capabilities. These devices are called peripherals. A keyboard is a peripheral. A monitor is a peripheral. The time panel on a microwave oven can properly be called a peripheral, although it may be part of the overall design and not optional.

Peripherals can be grouped in classes. One class is Input/Output (or I/O). These peripherals allow you to put in (input) data or to access (output) data. Another class would include removable storage systems -- a flash card, a hard disk, a CD-ROM unit. Other classes exist.

Input devices have a particular requirement from the operating system. Since it is unknown just WHEN data will be input, there must be a way for the operating system to notice that data are available. The two main ways of doing this are via polling and via interrupts. A poll is a periodic check for data -- like a child in a car asking "Are we there yet?". An interrupt is like a tap on the shoulder. Different systems will use different methods. A poll does not take long but there will be many times that the answer will be "no" -- and, thus, the time taken is "wasted". An interrupt takes much more time because it is necessary to save the current situation (maybe you're in the middle of a program) before the interrupt can be handled. Let's say that handling an interrupt takes 50 milliseconds and a poll takes 1 millisecond. If an event occurs once a minute, then doing an interrupt will take less time than polling once a second (50 < (60 x 1)). However, if the event occurs twice a minute, then polling is more efficient (50 > (30 x 1)).

A keyboard is an input peripheral. So is a mouse. In the case of a keyboard, a specific data value is sent when a key, or combination of keys, is pressed. This is usually kept in a temporary memory buffer that can be read by another program that is currently accepting input from keyboards (maybe a word processing program, maybe a browser window). A mouse sends two types of information -- a change in location and key presses. The key presses are handled similar to those of a keyboard. However, the change in location is done by the computer keeping track of the "location" of the mouse. When the computer starts up, the mouse is considered to be in a "default" (starting) location (often the upper left of your monitor). If you move your mouse to the right, it keeps track of how far to the right it has moved. Note that it isn't usually a one-to-one movement or your mouse pad would have to be as large as your monitor. Also, if you pick up the mouse and move it, it is as if it never moved.

Printers and monitors are typical output peripherals. Printers are fairly straightforward (although the actual data may not be such) -- your output may say "give me a new page", "print the letter 'a'", "go to the next line", and so forth but it basically is given a set of commands in sequence. A monitor, currently, is more complicated because of the idea of active windows and locations. So, in a modern operating system, the computer not only needs to keep track of where the mouse (as reflected by the cursor displayed on the monitor) but what program is making use of input while the cursor is at that location and what menu or button must be activated if there is further input (keyboard or mouse click) while at a specific location within that program's active space (or window). The input devices are actually what are causing changes about what you see -- the monitor just reflects the effects of that input.

And that pretty well covers Computer Literacy 101 -- though I would be happy to try to address any areas (of the many) that I have neglected.

Tuesday, September 1, 2009

Computer Literacy 101 -- what is an operating system?


An operating system (or OS) is a special program that allows other programs to run. This is the core of a general purpose computer -- the ability to run programs that are not pre-determined. A specialized computer (or microprocessor) may be able to run multiple programs but they are known in advance and, thus, the system can be designed to just run those programs (simpler, faster, and smaller).

As a more general definition, an operating system manages the resources of a computer. Sometimes, it is defined by a hierarchical model (sometimes known as the "onion" model) because there are services that are provided by the primary section of the operating system. Then there is another layer that provides new services plus makes use of the primary section. Then another layer that makes use of the other two layers, and so forth.

Some of the services provided by an operating system (in "layer order") are task (program) management, memory management, process (tasks communicating with one another) management, device management (such as hard disks, or CD-ROM drives, and so forth), and finally file management.

Because the applications make use of operating system services, which in turn rely on other "lower layer" services, most applications are not portable between different operating systems. This is why a program that works with Windows (a particular operating system) may not work on a Macintosh (running Mac OS X, a different specific operating system) or under a system running UNIX or Linux (two closely related operating systems).

There is an apparent exception to this -- but it really still follows the same rules. If one uses a browser that executes a program within the browser, that program may work with browsers running on computers using different OSs. It appears to be OS independent (able to work under any operating system) but, actually, it is making use of a set of services that have been defined to have the same use on multiple operating systems. Because this set of services, or interface, between the program and the next layer is the same, the program can run under different operating systems -- but the underlying program that provides that interface is still operating system dependent.

There is little agreement on what Operating System is "best". In general, the one that provides the services that you need, and the applications you need, for the lowest price and greatest speed is "best" for you. (It may not be the best for someone else with different needs.)

Friday, August 28, 2009

Computer Literacy 101 -- what are programs?


Data falls into two categories, as we saw in the previous blog. These categories are instruction data and program data. Instruction data can also be called a program -- which makes use of the program data to fulfill its purpose. Many times, a program will be called an application. Most people refer to programs as applications if they are widely used by different people. A word processing program may be considered an application. A spreadsheet program may be considered an application. Programs that people do not directly make use of are usually not called applications.

Programs consist of a sequence of instructions that tell the computer what to do. In the first blog of this series, we mentioned the types of instructions that may be given a microprocessor. These instructions are called machine language because they are sets of datum that are interpreted directly by the microprocessor. For example, the decimal value of 026002 will tell an HP 2100 computer to "jump" (change the current address for the next address) to address 002. The 026 portion is a "change the current instruction address to" code for the microprocessor and the 002 portion tells it the new value for the instruction address. Frankly, you don't really want to know much more than that unless you are involved with microprocessor design. Most microprocessors have their instructions written in binary (0s and 1s) or hexadecimal (symbols 1 through F for each numerical location) but the computers of the "early days" were not always standardized.

There is a hierarchy of languages used to program computers. At the base is machine language -- normally represented by a series of 0s and 1s -- like 10011001100011100011111101011110 -- which would be considered 32-bits. Current-day programmers almost never use machine language directly. The next level is called assembly language which uses a set of readable codes that can be directly translated into machine language. An example of assembly language might be "JMP START", where JMP is the operation to be performed and START is a symbol for an address that is the value to be used by the operation. The next level consists of many different languages in a family called high-level computer languages. A compiler changes the high-level language into assembly language (or, sometimes, directly into machine language. An assembler changes the assembly language into machine language. Finally (at least, at this current point of time) there are machine-independent languages which are used to create programs that may be run on many different computers without being changed.

Programmers write programs. Very few write machine language programs. More, but not many, write assembly language programs. Most write programs in high-level languages. An increasing number write programs in machine-independent languages (such as Java). However, all of them end up actually creating machine language -- with special programs such as Java interpreters/compilers, compilers, and assemblers acting to make it into this special, final, form.

I said earlier that some programs are visibly used by people -- and these are called applications. The ones that are NOT visibly used by people are sometimes called system programs. These are programs that enable to computer to perform the acts that people want. A printer program will be used to allow people to print a document from their application. At the core of all of the system programs is a particular program called an operating system and this will be addressed in the next blog.

Thursday, August 27, 2009

Computer Literacy 101 -- what are data?


All computers work with data. But, what are data? I say "what are data" because the word data is a plural one -- it is the plural of datum. However, almost no one ever uses the word datum and just about everyone treats data, grammatically, as singular. A datum is a single piece of information -- yes or no, it is raining or it is not raining, you have eaten breakfast or you have not eaten breakfast. You will note that a datum only indicates a yes/no or off/on, binary, condition. Most of the time, when we need information, it is really a collection of datum -- or data.

The same is true with computers -- they work on each individual datum but they pull them out of a pool of data. This data (I will use the conventional singular grammar here) is kept in storage, as I pointed out in a previous blog. It is then transferred from one storage area to the local RAM where the microprocessor can directly work with it.

Data is used by the microprocessor at many stages. The first stage, or startup (or bootup), is when the microprocessor first receives electricity. The actual hardware (the collection of semiconductor chips, and other discrete electronic components) is designed to start transferring data from a specific memory storage area and address. Often, this is address zero (0). This means that the microprocessor will transfer data from address 0 (the actual physical location, once again, depends on design of the hardware) to its working memory. It then executes the data -- it starts to perform specific operations based on the contents of that data that was at that address and then increments the address for the next instruction (usually by one -- unless the first instruction says something else) and then executes the operations for that address and on and on.

The next stage occurs once the registers (we talked about them in the storage blog) of the microprocessor have been filled with working data. At this stage, it is prepared to continue to execute instructions as it transfers them from memory. You can look at is as having two stages -- the first where the microprocessor "wakes up" with no specific contents in its registers and the second when the microprocessor has been initialized and can now proceed to work as the data tells it. Or, you can look at it as having three stages -- the first one the boot stage, the second is the startup stage where it is still getting ALL of the hardware connected to the computer ready to be used, and the third stage where any type of instructions can be executed because all of the hardware has been set up to be ready for use.

All of this works with the data. The data, for a general purpose microprocessor, is what makes it able to work differently each time it is turned on. For a specialized microprocessor, the incoming data starts the activities for which the microprocessor is designed.

Somehow, I managed to avoid the word program in this description but data are often split into two categories. Instruction data, or programs, are executable -- they contain instructions for the microprocessor while program data is used by the programs to produce more data. The difference between these categories of data is that instruction data does not change (unless someone specifically writes another program to change that instruction data -- the topic of viruses and software patches).

I'm going to swap the next two items on my original "computer literacy" list and talk about programs more in the next blog.

Thursday, August 20, 2009

Computer literacy 101 -- what is memory?


We talked about the microprocessor, or CPU, of a computer last blog -- but what can it do without someplace to store, and retrieve, information (next entry will talk about how that information -- or data -- is used)?

The first thing to know about memory for computers is the idea of address space. Address space serves the same purpose for computers as postal addresses do for paper mail. Often that address space will start at zero (0) and continue to as large as the physical memory allows. As an example, you have a 4GB flash drive that you use for assignments -- carried between home and work, or classes. The addresses of the information on that flash drive will be from 0 up to 4 gigabyte - 1 (or
actually 4,294,967,295 but you can think of it as 4,000,000,000 units of information).

You also may have many different locations for memory -- these are called storage units. So, you may have a hard drive, a DVD-ROM drive, a USB flash card, and a set of backup files on a tape unit. Using the comparison to the paper mail system, let's say that each of these are in a different city -- so addresses consist of the information location (0 to 4 gigabyte on the flash drive) and storage location "G:flash_drive".

Alright, this is pretty cumbersome and it can really strain a microprocessor to directly address 4 gigabyte of memory (although it is possible for computers that describe themselves as "64-bit processors"). So, what most computer systems do is to break this memory down into separate "blocks" (or streets in the mail system). Each block may consist of 512 bytes. Therefore, we can now address a block as "G:flash_drive", "block 0 to 8,388,607" and a specific location as "G:flash_drive", "block 1,567", "byte 93".

OK. We see that by numbering the information and then breaking it down into separate groups we can effectively find all the information. But it is still rather clumsy talking about "G:flash_drive", "block 1,567", "byte 93". That is where the file system comes into play. A file system starts putting all of those numbers into friendlier terms. "Charles resume" is a lot easier to remember when one is doing a word processing program than telling it -- give me "C:CKS_hard_drive", "block 7,432 through 7,987", "bytes 0 (of first block) through 345 (of last block)".

Not only that, but this specific labeling of the location makes it very hard to move it -- what if I add something to the information (or file)? It will get bigger and the location will also get bigger -- do I now have to remember a whole new set of numbers? No. The file system will keep track of just where the file is now located and how large it is. (It also means that the file does not have to be contiguous -- the bytes can be located in different blocks and not come one after another.)

There are two other regions of memory that should be understood -- these are RAM and registers. Random Access Memory (RAM) is like your own pile of papers on your desk. It can be gotten to very quickly and is "right there". Registers are like "post-its" and are used for temporary copies of numbers to be used. RAM will often be addressed just by the byte numbers and registers will be referred to by special names (R1 for register 1) -- but these details aren't really important to most people.

Now that we have information in memory, how do we use it? That is the concept of data.

Wednesday, August 19, 2009

Computer literacy 101 -- what is a computer?


Back from jury duty (actually, jury selection -- I didn't have to serve). I am going to start my short series on areas that I feel are important to become computer literate. I will try to make it useful but not to go into greater detail than necessary.

A computer, of today, is based on a semiconductor chip called a microprocessor. This is also sometimes referred to as a CPU (Central Processing Unit). This microprocessor changes numbers. It does very simple things with the numbers -- moves them from one location to another, shifts them (which effectively multiplies them by 2 or divides them by 2), does "logic" operations on them (which, if you don't know what that is -- will be another topic in the future), and changes the order in which it follows directions depending on the values that it has been given or has created based on the instructions given. That's about it, although some microprocessors will have other instructions that are actually shortcuts for a sequence of operations that could be done with a long series of simpler instructions.

The microprocessor does simple things with the numbers -- but it does them very, very quickly. When you see an advertisement for a "4 GHz CPU", it is an indication of how fast the microprocessor is and an indication of how quickly instructions can be processed. Larger numbers indicate a greater potential for speed. I say potential because the final speed depends on many design factors but, in general, you can use these numbers as an indicator of speed.

Microprocessors are used in many devices in our modern world. When they are in something that allows its use for different, non predetermined, purposes, it is called a "general purpose computer" or just plain old computer. Most people are familiar with smaller computers that are referred to as Personal Computers (PCs) but computers come in many sizes from a "smart" cell phone to a large "mainframe" which might be as large as several filing cabinets (they keep getting smaller, though).

The other category of use of microprocessors is for specialized uses -- the microprocessor is used for only one thing, or for one category of uses. Televisions, amplifiers, DVD players, watches, digital clocks, refrigerators, coffee makers, fuel injection and engine monitoring systems, traffic lights, alarm systems and MP3 players are all examples of devices using specialized processors. Some devices start entering into a "grey" area where they could be used for various, non-predetermined, purposes but are actually primarily used for a single purpose.

The microprocessor does not exist just by itself. It must have access to ways of giving it information upon which to work and ways to give results. In order to do this, other electronic devices will be connected to it and they, in turn, will be connected to other devices. A digital watch is an example of a very "simple" system which has buttons for setting information and a display to give results.

One very important additional item to which the microprocessor must have access is memory, which will be the topic of the next blog.

Expand the Middle-Class Again: The money supply of the middle- and lower-class has been diverted for 40+ years

     Once upon a time, before Ronald Reagan’s group of associates invented the fantasy of “trickle-down” economics, many more people made a ...