Computer & Web Info in the Hive
Presented for your pleasure, education, and entertainment by
Bob Beeman
Updated 2013-07-25 @ 12:11 EDT (UT-4)

Pages in the Hive
This page allows you to convert between Text (US-ASCII or UTF-8), Hexadecimal, and Base64 representations of data.

Computer Benchmarks
How fast were those old computers (TI-99, Atari-400, ZX-81 etc.) compared to today's machines? Visit this page and see one attempt to find out.

Conway's Game of Life
A preliminary attempt to implement "Life" using html, css, and JavaScript.

Grep is a useful UNIX utility that is used for finding pattern matches in files. It has many interesting uses, but the purpose for which we are going to use it now is finding words that match a particular pattern. Such problems often occur in Mu Alpha Theta contests.

Object-Oriented JavaScript
JavaScript (the language used to perform calculations on web pages) is a "Prototype-Based" language, which means that it can be used to write Object-Oriented scripts for pages. This page gets you started with a few basic concepts.

Password Strength
A page that allows you to calculate how long it would take to break a password by brute force given the alphabet used, the number of characters in the password, the speed of the hash cracker, and the % assurance needed that the password will be found.

A JavaScript web page that implements this old internet trick. This is a "secret code" that isn't secret. The purpose? To allow you to EMAIL or post movie spoilers, joke punch lines, answers to riddles, etc so that readers won't read them accidentally, but will be able to read them easily when they want to.

A JavaScript web page that implements this sibling of the much better-known ROT-13. The purpose is the same as ROT-13, but it is a lot harder to teach yourself to read ROT-47 without aid from a computer.

Alphabetic Code Key Creation
A JavaScript web page that illustrates a better way to create keys for Mono-Alphabetic Substitution Keys. Like ROT-13 and ROT-47 this is for Hobby-Cryptography only.

Morse Code Extended 4A5L
A JavaScript web page that allows you to convert UNICODE and ASCII text, Hexadecimal, and Base64 representations of text.

A JavaScript web page for playing this old familiar game.

Unicode Reference
This page allows you to view and use the Unicode characters and their UTF-8 representations which your browser can display. Unicode is the International standard for text characters from all living and some important dead languages. US-ASCII is a proper subset of Unicode.

The standard character set that English-speakers in the US know and love. American Standard Code for Information Interchange = ASCII.

Notes and Hints
Mice and your OSX Mac
Did you know that if you are running MacOSX you can plug in just about any USB 2 or 3 button mouse, with or without a scroll-wheel and it will work? Its true. Right-clicking on a 2 button mouse will give you the equivalent of a "control click", which is almost identical to right-clicking in Windows. Also, if your mouse has a scroll-wheel it will work, but only on OSX-based programs, not on OS9 programs. I use a Logitech optical mouse (this is a statement of fact, not an endorsement). On this mouse the scroll-wheel doubles as a third button, but if you want to use the third button meaningfully, you do have to download an OSX driver from Logitech. If you don't care about the third button, just plug the mouse into a USB port and forget the driver.

Refreshing Web Pages
So you say you went to a web page and you got an old version of the page in spite of the fact that you knew it had been updated? Then you hit the "Refresh/Reload" button in your browser, and STILL got an outdated page? Welcome to the world of Caches!

Your internet provider, your school, and even your browser store pages that you have seen before. The reason? Your ISP or school has to pay for internet connectivity bandwidth and doesn't really want to pull down a frequently-accessed web page and its associated files from Timbucktu every time somebody wants to use it, and you would be upset with your browser if it insisted on re-loading a page you just looked at every time you return to it.

So all of these entities store frequently (or recently) viewed web pages. Most of the big web sites put markers in their pages to indicate when the page was last changed, and how long you can wait before checking for a page update. These entities store these markers and use them to control their caches. For example, they can just read the header of a large page (the header is MUCH smaller than the page itself) and see when it was last changed. If it was more recently than the date and time indicated on their stored marker, they update, otherwise they don't.

But sometimes a page gets changed ahead of time, or it doesn't have a marker, or its an infrequently used page. In that case, you need to force the caches to actually look at the page itself and see if it is different. You can do this by putting a question mark (?) after the URL in the address bar of the browser. For example you could go to my home page at the following URL:

Why does this work? The question mark after the URL is an indicator that you are sending a "Query String", which is everything after the question mark, to the web site. Query Strings are used for cases where you are requesting specific information which must be specifically provided to you. Yahoo's stock quotes work this way, with the Query String providing the ticker symbols of the stocks whose price you want to track. Since you don't want just a generic page, and the ISPs have no clue as to what the query strings mean, the caches know that they must actually retrieve the page, not just give you a stored version.

IT WOULD BE IRRESPONSIBLE to just put a question mark after every web page request, as this runs up the costs for everyone and provides no benefit for you. So use this trick only when you know or strongly suspect that you are not getting the latest version of a page.

UNIX Shell command lines on your OSX Mac
MacOSX is a UNIX-based operating system, and its inner workings are a standards-compliant OpenBSD UNIX implementation. To start a UNIX shell, all you have to do is locate the "Terminal" application (located in /Applications/Utilities) and start it. This will create a UNIX shell. More details of this are described on the grep page.