gekk.info « articles
Getting Started with Solaris 2.6
Important: This page is not entirely about emulation!
Although the first part is, most of this is actually applicable if you have a
physical Sun machine with Solaris 2.x on it and want to get some applications or
GNU utilities onto it.
Note: This document took 48 hours of experimentation to
produce. I may have forgottten how I did certain things, or typoed filenames, or
rebuilt my VM in the middle of it. You will need to apply a lot of critical
thinking in any case to make this work.
If you like my work, consider
tossing me a few bucks. It takes a lot of effort and payment helps me
stay
motivated.
Preamble
Hello! If you are like me, you may have always been fascinated with the
concept of microcomputer Unixes, like Solaris, IRIX,
etc. but not sure how to actually experience one. Maybe you even had a
Sun machine at some point and no idea what to do with it other than
boot it up and type "ls
."
Fortunately, it's now possible to emulate a Sparc machine fast enough and
with enough hardware to get a reasonable impression of using a real one, and a number of interesting (though not platform-exclusive)
commercial software packages are available, so this is much easier to do now
without wrangling SCSI CD drives and so on.
If you want to set this up from scratch, you can follow the instruction on this page here:
https://learn.adafruit.com/build-your-own-sparc-with-qemu-and-solaris?view=all
To save you a lot of time and frustration however, I have prepared a copy of QEMU 4.2.0 with a preinstalled Solaris 2.6.5 (AKA
SunOS 5.6) which is ready to use on Windows immediately.
Just download it from
Internet Archive (here), extract it, and run sun.bat
. If you're on another
platform, install a QEMU for that platform, move over sparc.qcow2
and look at
the .bat file - it should be obvious what to change to make it run.
Once you have the machine started, you can log in with these accounts:
User: sol / solaris26
Root: root / rootpass
The image as provided is absolutely stock with no added software or
modifications other than the addition of the 'sol' user; this is
more or less exactly what
you would see on a brand new Sparcstation 5 in 1996, as I understand it.
If you
are used to Linux you will run into some hitches fairly quickly trying to use
the GUI or command line, since Unix does things a little different; see the
"Quirks" section for tips about this.
It goes without saying that the machine is not going to be quick. A real
Sparcstation was probably a little faster, but even on a very modern computer
it's tough to emulate at full speed. There's also no sound, unfortunately.
In this doc I will try to give you enough info to muddle through some Unixing.
You should probably be fairly familiar with Linux/BSD to
start since I will be leaving out some implicit steps that are just too obvious
for me to remember to document. Sorry :( But hopefully this is mostly
self-explanatory.
Starting Points
After starting up the machine, log in as sol and you'll find
yourself in the CDE desktop
environment or "workspace." Explore the workspace bar at the bottom to find some
programs, control panels, etc.
Obviously a lot of things will require a terminal, in the Unix style. Read
everything under "Quirks" to learn some important differences between this and
modern Linux, as well as some other general things you should know.
Programs
You can find some (but not all) preinstalled programs by simply right
clicking on the desktop and looking under Programs.
You should probably launch
Performance Meter and leave it open in a corner so you can get an idea of how
busy the system is, since a lot of programs quietly do things in the background
without any obvious indication.
A lot of other programs are in the workspace panel menus.
Go down to the "Programs that mostly work" section to get
started installing software.
This doc will walk you through the larger points of installing several
commercial software packages you can find on Winworld, Internet Archive, etc.
Keep in mind that in all cases the general experience is very "wild west" -
you're given very little guidance by the vendor on how to start installs, where
software should be installed, or even how to launch it once it's installed.
Other than Staroffice I've found no app that actually creates a shortcut in the
GUI menu; for the rest, I have to dig down into their installation folders and look
around in 'bin' and hope to find something that looks program-y.
Network
The machine has network access, complete with DNS, but ping does NOT work - this is a QEMU
limitation, it will not pass ICMP unless you change network "backends."
You can
use network services right away, although you'll find the builtin tools and
applications are nearly useless on the modern web - telnet will work, for
instance, but you don't have a useful web browser, SSH, etc. Later steps in this doc will
help you get wget, a slightly newer web browser, and some other things.
If you know of any plain-HTTP (no S) and plain-HTML (and i mean *plain*)
websites, you can launch the Web Browser app from the programs menu. It's slow
as molasses and extremely limited, so you're probably better off getting
Netscape installed - see instructions further down - although
it also has no HTTPS.
For just retrieving files, the wget (and probably the
curl) in the GNU utilities is going to be faster and more
reliable, and if you want an "actual" browser, links might be
ideal. Again, none of these will speak modern HTTPS; browsing a modern website
is impossible on this OS.
When you've figured out CDE for the most part, try OpenWindows. Like modern
Linux and the Gnome/KDE/XFCE/etc. split, Solaris had two desktop environments.
You can reach OpenWindows by going to the options button on the login screen,
then Sessions. It's an entirely different experience from a past era; try it!
Handling CDROMs in QEMU
To get any software onto this machine you'll
probably need to load from CD images. Here's how to do that.
- With QEMU running you should see a menubar. Click View
- Select "compatmonitor0". That is the QEMU "monitor" which lets you enter
commands to change the machine state while running.
- Type info block
- The line beginning scsi0-cd2 is the CD; if there's anything in it, you'll see
the filename
- If there is a CD inserted, you probably won't be able to change it without
ejecting it
- Open a terminal inside of Solaris and type "eject"; if you get no message, it
worked; go back to the monitor
- To insert a disk:
- Put the ISO in the qemu folder
- In the monitor, type change scsi0-cd2 filename.iso
- You can also mount a physical CD by just entering the drive letter e.g. D:.
This is useful if the file was an MDS or other incompatible image, because you
can mount those with an image loader
- Go back to "SUNW,tcx" from the View menu
- The CDROM should have popped up in the file browser; you can now use it.
Inserted CDROMs show up under /cdrom by their disc label, e.g. /cdrom/Wabi_2_1.
For some reason the solaris install media never disappears from here; who knows
why.
Note:
There is an "eject" command in the QEMU monitor, which you might be tempted to
use so you can e.g. delete an ISO without switching to another. However, if you
use this, the emulated machine will never see another CD until you restart. So
don't do that.
Quirks
- Don't use the 'reboot' command; it'll hang the system
- If you want to shut down, use 'poweroff' as root
- DO NOT USE THE COMMAND 'killall'! It does NOT do what it does on Linux! Under
UNIX, killall immediately kills all processes. Yep!
- Likewise, a lot of commands are... different. Be prepared for commands you
know to be present, but not work the same. For instance, "ps" requires a
-A
instead of -a to show all users. ifconfig requires
a -a to display all
interfaces. route doesn't exist; use netstat -r
instead. df displays in *blocks*
and has no -h; give it -k for kbytes.
- When installing apps, starting the installer as root makes a lot of
permissions stuff easier, but will tend to leave the installed program owned by
root so you can't execute it as your regular user until you chown -R the install
folder
- In CDE, executable files in the browser usually have a seashell icon or a
lightning bolt icon
- It'll often ask you when you click on them if you want to give command line
parameters; usually no
- The file browser in CDE crashes when doing copy operations if more than one
window is open. Don't do that.
- QEMUs mouse implementation is a little finicky. It doesn't properly "grab" the
mouse, so your real pointer and grabbed pointer can get out of sync, and then
mouse clicks start registering in different spots than where the pointer is! To
fix this hit Ctrl+Alt+G to un-grab, then put your cursor right over the emulated
one and click to grab again.
- A # prompt in the terminal means you're root; if you aren't root, many
commands will not be found even if they're installed, because /usr/sbin is not
in the path by default. You can fix this, or you can just su to use those
commands.
- There is no sudo; just type 'su' and enter the root password to switch to root
- If you're running HotJava and it hangs:
- ps -A | grep java
- kill (the PID for the java process)
Loading files with HTTP / Miniweb
One way to get files into the VM without any extra software is to use a plain
HTTP server. Anything on Internet Archive is available via HTTP - just copy the
download link, remove the S, and you can load it in the built in web browser per
the below instructions.
For more flexibility you can set up a local plain-HTTP web server. Miniweb
(https://sourceforge.net/projects/miniweb/) is one that works on Windows -
extract the folder, run the exe, and anything you put in the htdocs folder will
be accessible from within the VM.
Suppose your computer's IP is 192.168.1.15:
- Put bash.tar.gz in miniwebs htdocs
- From within the VM, launch Web Browser
- Type http://192.168.1.15:8000/bash.tar.gz in the address bar
- Wait for the page to load, click Save As, and pick a location.
Installing GNU tools (recommended)
Obviously we don't want to just turn this into a boring Linux machine, but let's
face facts - in 1996 you were probably loading most of your software from CDs,
tapes, floppies, etc. and you don't really have any of that available to put in
this machine. If you have .tar.gz files from websites you want to install, it's
a huge pain.
The basic Solaris 2.6.5 is a data island - there's no HTTPS support, the browser
is ancient, even the FTP client is incompatible with modern FTP servers. You can
try to install Netscape, but you'll find out that the installer is gzipped
and you have to get that somewhere else.
The basic shell is also infuriating, with no command history or tab completion.
Immersion in the technology of the time is one thing, but come on - you don't
have time for this crap! Install bash! And wget, and gzip, self care!!
You could maybe obtain the source to the GNU utilities and compile them but
personally that sounds like hell on earth to me and the compiler tools in
Solaris are... different.
Fortunately, there are precompiled binaries of tons of
GNU software from a project called sunfreeware. The main site is basically
paywalled now, however, I found a mirror of the collection and uploaded it to
Internet Archive. You can find that archive
here or you can hit the original
mirror
here to find packages for other solaris versions.
Auto-Install
I've put together a CD ISO (sun26gnu.iso) with several packages that I think you
will absolutely be grateful for (nano, wget, curl, links...), and a couple that
are essential (gzip, less...). You can install these manually from
/gnu on the
CD (per the "manual installation" process below) or just run the script to
install them all automatically:
- Mount the ISO
- Open a terminal and su
- csh /cdrom/sun26gnu/gnu/installgnu. (note the trailing period)
- This will take a while and will stop a couple times - answer "y" to any
questions
- When finished, follow the "enabling bash" section below
- Remember that none of the utilities will work until you add /usr/local/bin and
sbin to your PATH
Manual Installation
If you want to install packages individually (this is useful for all Solaris
packages, not just GNU):
- Either locate the file you want on my CD image, or download it from the
sunfreeware collection on Internet Archive
- pkgadd -d (filename) all
- e.g. pkgadd -d /cdrom/sol26gnu/bash-4.1-sol26-sparc-local all
- Press enter at the prompt
- Wait for install to complete
- Installs all go to /usr/local/bin or sbin
You should know that dependencies are not automatically resolved, so you won't
know things are missing until you launch the installed app. Run the program
after install and if it spits out an error about a missing library, try to find
a matching package in the collection, install it, and try again.
SSH does not appear viable without some wizardry, because Solaris 2.6 includes
no /dev/random.
Enabling bash
If you install bash and you want it to be your shell, do the following:
- Right click on the desktop, go to Programs, App Manager
- Start Admintool
- Locate your user e.g. sol and double click it
- Under Login Shell, select Other, then type in
/usr/local/bin/bash
- Click OK
- *DO NOT* update root yet - if you get it wrong, you'll be locked out of the
system completely
- Right click on the desktop and Log Out, then log back in as
sol
- Open a terminal. You should get a bash prompt and have tab completion and
command history working
- If this worked, repeat the process to update root. Otherwise every time you do
su you'll be back on sh, and that sucks
Enabling sudo
If you install sudo, remember that sudoers is in /usr/local/etc
Programs that mostly work
SimCity
https://archive.org/details/RareSimcity
Simcity was ported to Unix at one point, and here it is, pretty much exactly
identical to the original as I recall. It's a limited-time trial, so you can't
play a full game.
- You will need unzip and gzip from the GNU utilities to extract the files
- cd /export/home/sol
- You can get this from IA in a messy zip file or just copy it off my GNU
tools ISO:
- cp /cdrom/sun26gnu/apps/simcity_2_14_solaris_tar.gz .
- gzip -d SimCity-2.14-Solaris.tar.gz
- tar xvf SimCity-2.14-Solaris.tar
- cd SimCity
- ./SimCity
- This is an unlicensed trial so apparently your city will explode after 5
minutes
Staroffice 5.2
https://archive.org/details/staroffice52
Staroffice became OpenOffice. It sucks, but it's a complete office suite. Run it
if you want.
- Mount CD
- Open a terminal and su
- cd solaris/patches/solaris26
- ./installpatch .
- Wait a long time
- cd ../../staroffice52
- ./setup
- Use all default settings
- It will take a long time
- When finished it will appear to exit; it's not done. Wait for the Adabas D
installer to launch
- When that part is finished, log out (don't just restart workspace manager!)
and log back in
- There will now be a Staroffice icon at the far left of your workspace bar;
click it to launch
- If you get an error about a missing "sofficerc" file, fix permissions:
- Open a terminal
- su root
- cd /export/home/sol/
- chown -R sol *
- This will reassign ownership of all files in your homedir to you
- Now try relaunching
Netscape 4.06
https://archive.org/details/netscapecommunicator406std
lets go nets baby
love da nets eyyyyy
Remember that Netscape 4 has no modern SSL support, so
you're limited to plain HTTP sites, and the FTP language used by modern servers
seems to be different as well so you may have trouble reaching those in the
browser as well.
However, this is a particularly convenient way to get files
onto your VM - see the bit about MIniweb elsewhere in this document. If you just
dump files in the Miniweb htdocs, then pull up your host PC's IP in netscape
(port 8000), there's your files.
- You will need gzip to install; follow notes below on obtaining that
- Mount ISO
- From a terminal: cp /cdrom/communicator_406/unix/sunos551/sparc/comm406.tar
/export/home/sol/
- tar xvf comm406.tar
- cd communicator-v406.sparc-sun-solaris2.5.1
- ./ns-install
- Follow the prompts - default install location is /opt/netscape
- When install is complete, execute: /opt/netscape/netscape
Corel Draw 3.5
https://winworldpc.com/product/corel-draw/35-unix
Corel Draw eventually became a pretty competent Adobe Illustrator/Photoshop competitor
but this version's not quite there. All the same, you can do a lot of image
manipulation with this suite, and it appears to work fine.
- Mount ISO
- Open a terminal and su to root
- cd /cdrom/drw35egunix
- ./install.cd
- Change install folder to /opt/corel3.5
- Enter solaris as platform
- Press enter on a blank line to continue
- Accept prompts to continue
- When complete, cd /opt/corel3.5/corel/solaris_sparc
- For some reason the installer doesn't finish a couple steps that you'll have
to do manually
- cp libwix.so /lib/
- Type the following exactly as shown:
cat >> /export/home/sol/.profile
CORELHOME=/opt/corel3.5/corel
export CORELHOME
- Press Ctrl+D
- Log out and log back in
- Open a terminal again
- cd /opt/corel3.5/corel/solaris_sparc
- Type ls
- Everything starting with corel is a program. Execute
with e.g.
./corelpaint
Wordperfect 6
https://winworldpc.com/product/wordperfect/60-unix
Wordperfect is a seminal word processing suite. It's a big install and very
complex so I haven't tested much of it.
In particular I'm not sure if the
licensing element is worked out - the ISO in question doesn't appear to be
cracked in any way, and it has a complete "license manager" system service, yet
it accepted a nonsense CD key ("asd"). So maybe this will work for a while and
then stop working, who knows.
- Insert disc
- You probably shouldn't be root. If you are, it might set up the licensing
service to start automatically. If you want that, run as root, but honestly it
just seems like extra trouble to me. You can run the licensing service on demand
when you start the app if you install as a normal user.
- If you have problems, just run the installer as root, and when it's
done, do chmod -R sol /opt/wp60
- From a terminal, do /cdrom/corel_wpunix/install.wp
- Wait a long time
- Select Solaris2
- Accept the eula
- Default settings (GUI and text, etc) probably OK
- Install path is not OK: use /opt/wp60
- For the serial number, put in gibberish - I used asd
- Enter yes to each question (ignoring errors); e.g. licensing, terminal
selection, printer drivers
- WP will start installing - it takes a very long time to get to 1% and then
speeds up
- When complete the terminal will hang open with a message saying to "change
directory to (wherever)/wp50/wpbin and run .xwp or .wp" - you can close this
window when ready
- If you didn't run the installer as root, the license manager won't be set to
autostart (do you really want it to anyway?) so you'll need to start it by hand
- su to root
- /opt/wp60/shbin10/wplicense -s # WP60
- If the above fails, check the path and make sure it's where you installed;
otherwise it should say the license manager is started
- exit to return to normal user mode
- /opt/wp60/wpbin/xwp
- The program should launch
- The default colors may be messed up (grey background in your document instead
of white) - if this happens, you just need to restore a default color scheme:
- In the second (smaller) window in the upper right, go to preferences, then
colors
- Select "WP white" from the list and hit OK
- Restart the program
- Process some words!
Wabi 2.1
https://archive.org/details/SolarisWabi_21
Wabi is a Windows compatibility layer that, more or less, installs a complete
copy of Windows 3.1 in your Sun machine. I found it unstable and quirky, but
it's also laughably hideous; you should really install it and tinker around.
- Mount Wabi ISO
- Open terminal
- su
- pkgadd -d /cdrom/wabi_2_1/Wabi_2.1/sparc/pkgs all
- Select 2 for a "heavy" install
- For the "parent Answerbook directory" give /opt/
- Answer yes to every prompt
- Install will complete. Enter 'q' if needed to exit
- Type eject in a terminal
- You will need a CD ISO with the entirety of the Windows 3.1 install files in
it. You can create this yourself:
- From your normal OS, download "Windows 3.1 (Retail) (3.5-1.44mb)" from
https://winworldpc.com/product/windows-3/31
- Extract all images into one folder (overwriting as needed)
- You should now have a folder with a ton of files, like SETUP.EXE and ARIAL.TT_
- NOT in subdirectories, but all in one big folder
- Using CDBurnerXP or some other CD authoring program, put all files in the root
of a CD image
- Name the disc "win31" - you will have to figure out how to do this in your
authoring program
- Save it as an ISO
- Mount the Windows 3.1 ISO you've created
- Start wabi: /opt/SUNWwabi/bin/wabi
- Ignore the registration prompt
- When prompted for the Windows install files, click Browse
- Browse to cdrom/Win31 and you should see setup.exe on the right side
- Click OK and proceed and Windows will be installed
- When the install is complete you'll get a Windows program manager. But you
actually should close this immediately (you might have some trouble - go to the
File menu and press X on your keyboard if the mouse is acting up) and let it
restart, because it isn't quite done installing.
- After the restart, Windows is now properly running, for whatever that's worth.
DOOM
http://archive.org/sundgadoomv1.8
This is a perfectly serviceable vanilla Doom port that runs at full speed,
although it has no sound under current QEMU limitations.
- From a terminal:
- mkdir doom
- cd doom (you want to do this because the tarball has no
subdirectory)
- wget http://archive.org/download/sundgadoomv1.8/sundgadoomv1.8.tar.gz
- gzip -d sundgadoomv1.8.tar.gz
- If that gives error about the file not being the right format, then just do
tar xvf sundgadoomv1.8.tar.gz
- mv sndserver nothanks (this is because qemu has no sound, so we have to get
rid of the sound server or the game will crash)
- ./sunxdoom -2 to launch the game at double res. -3 will be nearly fullscreen
- The included wad is the shareware. Drop doom.wad or doom2.wad in there for the
full version.
Adobe Acrobat Reader
You can find this in the 'acrobat' folder on the Framemaker 7.1 CD
(mentioned further down). It seems to
work fine.
Internet Explorer 5 / Outlook Express
It's IE5 and OE. You know what you're in for. You need to install a kernel patch to
make this work.
Install System Patches
- Mount sun26gnu.iso
- cp /cdrom/sun26gnu/patches/2.6_Recommended.tar.z
/export/home/sol/2.6_Recommended.tar.Z
- NOTICE THE CHANGE IN CAPITALIZATION. The Z in the second filename has to be
uppercase.
- cd /export/home/sol/
- uncompress 2.6_Recommended.tar.Z
- tar xvf 2.6_Recommended.tar
- cp /cdrom/sun26gnu/patches/106391-01.tar.Z
- uncompress 106391-01.tar.Z
- tar xvf 106391-01.tar
- Type poweroff to shut down the system and wait until QEMU exits
- Start QEMU again
- Once you're at the login screen, go to Options and select
textmode session
- Press enter to get a login prompt; log in as root
- Type init 1
- Wait a long time for the system to go to singleuser mode
- When prompted, enter the root password
- cd /export/home/sol/2.6_Recommended/105181-39
- ./installpatch .
- Wait a very long time, agreeing to prompts periodically
- cd ../105633-64, then ./installpatch .
- cd ../105591-20, then ./installpatch .
- cd /export/home/sol/106391-01
- ./installpatch .
- When all finished, type poweroff to close and restart QEMU again
By the way, the 2.6_Recommended folder is a huge rollup that Sun released. If you
want to do the whole thing, instead of going just to 105181-39, just run
./install_cluster. This takes about two hours.
Install IE / OE
Now you can do the actual install.
- You will need gzip to make this work; see the GNU Tools section
- You can get the IE5 archive from my tools ISO, or from Internet Archive:
- From CD: cp /cdrom/sun26gnu/apps/ie5setup_sunos5.gz
- From IA: wget .......
- gzip -d ie5setup_sunos5.gz
- chmod +x ie5setup_sunos5
- ./ie5setup.sunos5
- Follow the prompts with the default options
- Launch IE5: /usr/local/microsoft/bin/iexplorer
- Launch OE: /usr/local/microsoft/bin/oexpress
Lotus Notes
https://archive.org/details/lotusnotesdominorelease45unix
Lotus Notes preceded Microsoft Exchange / Outlook in the genre of "absolutely
ghastly enterprise groupware horrorshow"; there are literally countless tales of
the agonies it imposed on its users despite acres of organizations living and
breathing to the beat of its drum.
- The installer is VERY weird. You use spacebar to cycle through options and tab
to proceed
- The default settings are usually fine
- I accidentally deleted it and it takes forever to install so I forgot
where the bin files are. You can find them somewhere in
/opt/lotus/bin
- Good luck figuring out the app. Notes is notoriously a bureaucratic disaster
- It might be possible to actually use it as an email client, if you hate
yourself
Programs that don't quite work
MAE
Macintosh Application Environment does not work, but may work
in a future QEMU, so I'm leaving my instructions here for future reference.
Besides, these are perfectly applicable on a real Sparcstation, which should
work with no problems.
There are two versions of MAE I'm aware of, both on Internet Archive. Both hard
crash the system and will corrupt your disk if you aren't careful, so I don't
recommend trying this.
Version 1.0 - meant for a very old SunOS; crashes right after the window first
appears. Includes a bunch of software demos
Version 3.0 - meant for a somewhat newer Solaris; crashes even quicker.
- For version 3, wget the .tar.gz from Internet Archive. For Version 1, just
mount the CD, cd /cdrom/mae, and skip to the second part below
- gzip -d (filename).tar.gz
- tar xvf (filename).tar
- cd (filename)
- gzip -d solaris.tar.gz
- cd solaris
- From terminal, cd /cdrom/mae
- su to root
- ./INSTALL.SH
- Accept the license
- Press enter
- Type 'custom' if you're installing 1.0 and want the demos; otherwise just hit
enter. These steps assume you entered custom.
- Default paths should be fine for each program
For version 3, you'll need to type all the following:
cat > /opt/apple/license.dat
FEATURE MAE3.0 AppleMAE 1.0 1-jan-0000 uncounted 85A3314BE100097B0A4D HOSTID =
ANY
Press enter, then press CTRL+D
Now you can try to launch MAE:
/opt/apple/bin/mae
Congratulations, you crashed your QEMU!
Adobe Framemaker
https://archive.org/details/framemakerunix
- mount CD
- from terminal, cd /cdrom/adobe_framemaker
- ./read.cd
- get through license agreement
- pick an install directory like /opt/framemaker
- at the "basic" or "custom" menu, pick "custom" if you want the example files
- select 1
- select 1
- select 5
- select B, B
- select N
- proceed with install - it will take a long time
- when finished you'll be asked some questions; you probably want to select
"user choice" for the Maker vs Structured question, and decline the rest of the
questions
- you'll be returned to the menu, select Q to quit
- You'll need to set up licensing. Run /opt/framemaker/bin/fmsetupfls
- Accept the defaults
- For Company Name put whatever you want
- Type add 1069-2235-2674-8084-6879-0288
- Type done and agree to save
- Agree to start the license server
- If the message "License server is ready" appears, you're good to go.
- Type /opt/framemaker/bin/maker
- Nothing will seem to happen. Wait a bit and Framemaker will start to start,
give a mode selector, then a splash screen, then die. Can't find any error logs
If this was interesting to you, or if you did something interesting with it, email me: articles@gekk.info
If you like my work, consider
tossing me a few bucks. It takes a lot of effort and payment helps me
stay
motivated.
List of Articles