Exam woes

Exam woes

I am putting this here instead of sending it to Pearson Vue for two reasons: they are not likely to take it seriously, and two, to avoid the very slim chance that it may negatively affect the “greeter” who probably was doing his best with his tools.


Hello Pearson Vue,
I am sure millions use your services so frankly I don’t expect anyone to take this seriously.
All the same I have to put it on record.
1. I logged in well ahead of time, launched the app and was kept waiting for over 30 mins.
I tried the suggested chat option which was offline and then sent a mail as well as call the office line (OOTO message). Finally someone came online and told me you had technical challenges. I am also in IT support, if something is not working I am sure you have a record of all those scheduled to write exams during that window and you could have sent out a message (email/SMS/phone call). You probably don’t know the emotional strain standing by to write an exam with no idea what was going on.
2. The gentleman then released the exam and all I got on my screen was a message to “refresh the page”, he tried about 3 times then suggested I restart my system. Which I did. When the system came back on, he informed me the window to release the exam had closed! I asked if I can reschedule it for today and he told me all slots were occupied (I would expect if you kept me waiting for that long, you would bend a little). On top of that, he had then discovered the reason why the exam wasn’t opening on my system. An “illegal” application was running. If he had said that to begin with maybe I wouldn’t have had to reboot my system and then find out the exam releease window (5mins?) had expired. The only thing running on the system was Free Alarm Clock, otherwise it is a completely bare system. I didn’t even have an antivirus (removed yesterday and rebooted my system) just to be sure nothing interfered with the exam.
3. Two things come to mind, I think your greeters need more training – because obviously he didn’t know what was causing the blank page I got. And two, please improve your application (it sounds as if all you have is some whitelist that blacklists everything it doesn’t understand even if it is harmless). Addendum to this second point, have whatever screen the greeter is looking at pop-up the name of the “illegal” application so that the greeter won’t resort to the “reboot your PC” as the default solution only to then say the release window had expired.
Please note that the free alarm clock was running minimized into the systray. But after getting off the phone with the greeter to whom I insisted there was nothing on the system. I went through an audit and that is the only thing on the system (outside chrome, firefox, and java). It is not good enough to just say there is something illegal (for that matter, only after the fact) on my system. Even if the exam release window had not expired, the reboot would likely not have helped because the alarm software auto-starts by default.

Rant over.

Best Regards,

NB: I still get to write the exam, I just have to re-schedule it to another date in the future.

Posted in Uncategorized | Tagged , , , , , , , , | Leave a comment

Setup Roundcube Webmail on CentOS Linux

Setup Roundcube Webmail on CentOS Linux
– Install Centos 7
– Configure networking
– Disable selinux
– Uninstall sendmail

systemctl stop sendmail
systemctl disable sendmail
yum remove -y sendmail

– Install php

yum install -y php

– Enable EPEL repository:

cd /tmp
wget wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -ivh epel-release-latest-7.noarch.rpm

– Enable the REMI repository (for ImageMagick, etc):

cd /tmp
wget http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
rpm -ivh remi-release-7.rpm
vi /etc/yum.repos.d/remi-php54.repo (set "enabled=1" - because the current system has PHP version 5.4 installed. There are repo files for other PHP versions in the same directory)

– Add both the email domain name and the server’s FQDN as aliases to the “127.0.0.1” entry in file /etc/hosts
– Add another line to /etc/hosts for the server’s primary IP address mapping it to its short name and its FQDN
# cat /etc/hosts

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 itayemi.com myserver1.itayemi.com
192.168.109.10 myserver1.itayemi.com myserver1

– Allow incoming/outgoing connections through the firewall for apps:

firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --permanent --zone=public --add-service=imap
firewall-cmd --permanent --zone=public --add-service=imaps
firewall-cmd --permanent --zone=public --add-service=pop3s
firewall-cmd --permanent --zone=public --add-service=smtp
firewall-cmd --permanent --zone=public --add-service=smtps
firewall-cmd --permanent --zone=public --add-service=dns
firewall-cmd --reload

– Configure Postfix

yum install -y postfix
systemctl enable postfix
yum update postfix
systemctl start postfix
systemctl status postfix

– Configure Postfix

cd /tmp
openssl req -x509 -nodes -newkey rsa:2048 -keyout mailserver.key -out mailserver.crt -nodes -days 730
mkdir /etc/postfix/ssl
mv mailserver.key /etc/postfix/ssl
mv mailserver.crt /etc/postfix/ssl
chmod -R 660 /etc/postfix/ssl
vi /etc/postfix/master.cf (uncomment the following lines)
#submission inet n - n - - smtpd
# -o syslog_name=postfix/submission
# -o smtpd_tls_security_level=encrypt
# -o smtpd_sasl_auth_enable=yes
# -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
vi /etc/postfix/main.cf (uncomment the myhostname variable and set its value to the server's hostname)

vi /etc/postfix/main.cf (uncomment the mydomain variable and set it to the domain to receive emails for)

vi /etc/postfix/main.cf (uncomment the following lines)
#inet_interfaces = all
#inet_interfaces = localhost
#inet_protocols = all
#mydestination = $myhostname, localhost.$mydomain, localhost
#home_mailbox = Maildir/

vi /etc/postfix/main.cf (add the following lines to the end of the file)
smtpd_tls_key_file = /etc/postfix/ssl/mailserver.key
smtpd_tls_cert_file = /etc/postfix/ssl/mailserver.crt
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_tls_security_level=may

– Change the home_mailbox parameter for Postfix in file /etc/postfix/main.cf to match the dovecot config as follows (uncomment if necessary):

home_mailbox = Maildir/

– Add the hostname and domainname to mydestination parameter in the Postfix configuration file /etc/postfix/main.cf or you will get the “mail loops back to myself” error when attempting to send to local users.

mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

– Restart postfix:

systemctl restart postfix
systemctl status postfix

– Test Postfix with telnet (send a test mail to another local user then check that user’s /home/username/Maildir/new/ directory for the mail file)

yum install -y telnet
telnet localhost 25
quit

– Install and Configure Dovecot

yum install -y dovecot
systemctl enable dovecot
systemctl start dovecot
systemctl status dovecot

Edit config file /etc/dovecot/dovecot.conf and uncomment the line below:

protocols = imap pop3 lmtp

– Edit the file /etc/dovecot/conf.d/10-auth.conf and set the following parameters (also uncomment them as well):

disable_plaintext_auth = no
auth_mechanisms = plain login

– Edit the file /etc/dovecot/conf.d/10-master.conf and set the following section to:

unix_listener auth-userdb {
#mode = 0666
user = postfix
group = postfix
}

– Set the dovecot mail_location parameter in the file /etc/dovecot/conf.d/10-mail.conf  (Uncomment the line and change the value).

mail_location = maildir:~/Maildir

– Configure dovecot for pop3 via the file /etc/dovecot/conf.d/20-pop3.conf (Uncomment or add the following lines):

pop3_uidl_format = %08Xu%08Xv
pop3_client_workarounds = outlook-no-nuls oe-ns-eoh

– Restart dovecot to activate all the configuration changes:

systemctl restart dovecot

– Create the Maildir folder in the skeletons folder so that future users are created with the folder automatically (manually create it for all existing users and change the ownership accordingly)

mkdir -p /etc/skel/Maildir/{cur,new,tmp}

– Install and configure fetchmail and procmail (if required)

yum install -y fetchmail
yum install -y procmail
which procmail

– Install and Configure Apache webserver

yum install -y httpd
systemctl enable httpd
systemctl start httpd
systemctl status httpd

– Edit the file /etc/{nginx,apache2,httpd}/etc/httpd/conf.d/ssl.conf and change X-Frame-Options to SAMEORIGIN. For example, the line “Header always set X-Frame-Options DENY” becomes “Header always set X-Frame-Options SAMEORIGIN”
Note that without this change sending appears to hang (spins but a refresh shows the mail in the Sent folder, AND more importantly, attempts to attach files to the mail throws an error and faiils).

– Install Roundcube

yum install -y mysql mariadb-server php php-common php-json php-xml php-mbstring
systemctl enable mariadb
systemctl start mariadb
systemctl status mariadb
mysql -u root -p (Just press ENTER when prompted for the password)
MariaDB [(none)]> create database roundcube_db;
MariaDB [(none)]> grant all on roundcube_db.* to roundcube_user@localhost identified by 'roundcube_db_password';
MariaDB [(none)]> select user from  mysql.user;
MariaDB [(none)]> quit

NOTE: substitute your own username and password for “roundcube_user” and “roundcube_db_password” in the “grant” command above.

cd /var/www/html/
wget https://github.com/roundcube/roundcubemail/releases/download/1.3.7/roundcubemail-1.3.7-complete.tar.gz
tar -zxvf roundcubemail-1.3.7-complete.tar.gz
mv roundcubemail-1.3.7 roundcube
chown -R apache:apache roundcube

– Install various PHP extensions (that are not installed by default)

yum install -y php-pdo
yum install -y php-intl
yum install -y php-gd
yum install -y php-pear
yum install -y php-pecl-imagick
yum install -y php-mysql
yum install -y php-ldap

– Set your timezone in /etc/php.ini (e.g., add the following line to the file)

date.timezone=Africa/Lagos

– Restart Apache webserver to detect the changes:

systemctl restart httpd

– Complete the install by using the URL http://servername-or-ip/roundcube/installer
– 1. Check environment – install any missing but required PHP extensions, DB, etc
– 2. Create config – make changes as required to various config options including the database parameters (name, user, user password – created earlier). At the end, click the “Create Config” button which creates and stores the config file defaults.inc.php in the roundcube config directory (/var/www/html/roundcube/config/). Click the “CONTINUE” button.
– 3. Test config – test that roundcube can connect login to the IMAP (dovecot) and SMTP (Postfix) servers successfully
– Click the “Initialize database” button
– Scroll down and “Test SMTP config” by supplying sender/recipient email addresses
– Then “Test IMAP config” by supplying the username and password of a local user account

– 4. Delete the installer directory (or move the directory outside /var/www/html/) to prevent reconfiguration and/or unauthorized access:

rm -rf /var/www/html/roundcube/installer

– 5. Enable Roundcube’s automatic cache-cleaning (optional but recommended):

sudo crontab -u apache -l | { cat; echo "18 11 * * * /var/www/html/roundcube/bin/cleandb.sh"; } | sudo crontab -u apache -

– 6. Confirm that the parameter default_host in the Roundcube config file /var/www/html/roundcube/config/config.inc.php is set to the email domain name.

$config['default_host'] = 'itayemi.com';

– 7. Optional: default maximum attachment size is 2MB. To increase this value, edit file /etc/php.ini and increase the value of the parameter upload_max_filesize (default is 2M) to your desired size then restart the Apache webserver:

upload_max_filesize = 6M

– 8. Restart Apache webserver:

systemctl restart httpd

——————————————————————————————————–

– Optionally Enable SSL for extra security

yum install mod_ssl
mkdir /etc/httpd/ssl
openssl req -x509 -nodes -days 1095 -newkey rsa:2048 -out /etc/httpd/ssl/server.crt -keyout /etc/httpd/ssl/server.key
openssl dhparam -out /etc/httpd/ssl/dhparam.pem 2048
cat /etc/httpd/ssl/dhparam.pem | tee -a /etc/httpd/ssl/server.crt
chmod -R 660 /etc/httpd/ssl

– Edit mod_ssl config file /etc/httpd/conf.modules.d/ssl.conf
vi /etc/httpd/conf.d/ssl.conf

– Find the section that begins with “<VirtualHost _default_:443>” and uncomment the 2 lines below. Also change the ServerName parameter to your server’s name/IP
DocumentRoot “/var/www/html”
ServerName itayemi.com:443

– Find the SSLProtocol and SSLCipherSuite lines and either delete them or comment them out.

– Find the SSLCertificateFile and SSLCertificateKeyFile lines and change them to the paths to the SSL keys we created earlier:

SSLCertificateFile /etc/httpd/ssl/server.crt
SSLCertificateKeyFile /etc/httpd/ssl/server.key

– Paste in the lines below AFTER the end of the VirtualHost block (after “”):

SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
SSLProtocol All -SSLv2 -SSLv3
SSLHonorCipherOrder On
Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains"
Header always set X-Frame-Options DENY
Header always set X-Content-Type-Options nosniff
SSLCompression off
SSLUseStapling on
SSLStaplingCache "shmcb:logs/stapling-cache(150000)"

– For additional security, redirect all traffic to be SSL encrypted. Create the file /etc/httpd/conf.d/non-ssl.conf with the content below (use your own servername or IP-address):

vi /etc/httpd/conf.d/non-ssl.conf

<VirtualHost *:80>
     ServerName mailserver.example.com
     Redirect "/" "https://mailserver.example.com/"
</VirtualHost>

– Restart Apache webserver:
systemctl restart httpd

——————————————————————————————————

References:
https://nolabnoparty.com/en/setup-mail-server-postfix-dovecot-roundcube-centos/
https://firewalld.org/documentation/howto/open-a-port-or-service.html
https://firewalld.org/documentation/howto/add-a-service.html

MySQL List Users – How to List MySQL User Accounts via command line?


https://www.1and1.com/cloud-community/learn/application/e-mail/set-up-a-postfix-mail-server-with-dovecot-and-roundcube-on-centos-7/
https://www.howtoforge.com/tutorial/perfect-server-centos-7-apache-mysql-php-pureftpd-postfix-dovecot-and-ispconfig/

How to Enable EPEL Repository for RHEL/CentOS 7.x/6.x/5.x


https://www.vultr.com/docs/install-imagemagick-on-centos-6

How to Install ImageMagick on CentOS & RHEL


https://forums.fedoraforum.org/archive/index.php/t-262200.html
https://www.digitalocean.com/community/tutorials/how-to-create-a-ssl-certificate-on-apache-for-centos-6
https://www.digitalocean.com/community/tutorials/how-to-create-an-ssl-certificate-on-apache-for-centos-7

Enable SSL for apache server in 5 minutes


https://wiki.centos.org/HowTos/Https
https://www.linode.com/docs/email/clients/using-fetchmail-to-retrieve-email/https://support.rackspace.com/how-to/dovecot-installation-and-configuration-on-centos/https://support.plesk.com/hc/en-us/articles/115002060625-Roundcube-Attachment-and-settings-do-not-work-File-Upload-Failed
https://support.rackspace.com/how-to/dovecot-installation-and-configuration-on-centos/

For nginx (webserver):
https://linuxize.com/series/setting-up-and-configuring-a-mail-server/
https://linuxize.com/post/install-and-configure-roundcube-webmail/

 

OTHER USEFUL NOTES
————————————————————————
– Fetchmail does not seem to come with control scripts, but if you create them yourself (under /etc/init.d and links to /etc/rc.d/rcX.d/), systemd will pick them up

– Sample Fetchmail config that downloads mails for 3 users (5 minutes interval) from a remote mail server (IP n.n.n.n or FQDN)

# cat /root/.fetchmailrc
set syslog
set no bouncemail
set no spambounce
set daemon 300
poll n.n.n.n
with proto pop3
    username user1@mydomain.com password Password@123 is localuser1 mda "/bin/procmail -d %T"
    username anotheruser@mydomain.com password my-Password@123 is localanotheruser mda "/bin/procmail -d %T"
    username thirduser@mydomain.com password justaPassword is localeusername mda "/bin/procmail -d %T"

– Fetchmail knows to use /root/.fetchmailrc because it is defined in its startup script:
# grep fetchmailrc /etc/init.d/fetchmail
FRC=/root/.fetchmailrc
FRC=/root/.fetchmailrc

————————————————-
– If you use a relayhost (i.e., your mail server can’t send mails directly), uncomment and set the relayhost variable to your service provider’s SMTP server (and port e.g., 587) – especially necessary if they are blocking TCP port 25.
See link for sample steps for postfix: https://www.linode.com/docs/email/postfix/postfix-smtp-debian7/
————————————————-
The default postfix/fetchmail/dovecot log on CentOS/RedHat/Oracle_Linux is /var/log/maillog (look in the file for troubleshooting)
————————————————-

– If you have mails in /var/mail/ (e.g., because you were using Sendmail before) and you want that mail to be accessible in Roundcube or other email clients such as Outlook, you may need to use the mbox format instead of the Maildir folder, i.e., change the mail_location in file /etc/dovecot/conf.d/10-mail.conf as follows.

NOTE: If you switch to the mbox format, make sure the permission on INBOX files in /var/mail/ is 0600

  • If you would rather “migrate” the old mails in mbox format to the Maildir format (recommended for Postfix/Dovecot), you may need to use the mb2md utility.
    The mail_location in dovecot’s configuration remains as before:
    # grep mail_location  /etc/dovecot/conf.d/10-mail.conf
    mail_location = maildir:~/Maildir
    # Install mb2md mail formatconverter utility
    yum install -y mb2md-3.20-17.el7.noarch# Migrate each existing user’s old mails with the command below:
    su – <username>
    mb2md -m -d ~/Maildir/

    # NOTE: I tried both dsync and doveadm for the migration but got inconsistent results – not all mails were migrated or the commands just errored out with a core dump.

Refence link: https://wiki2.dovecot.org/Errors/ChgrpNoPerm

Posted in Uncategorized | Tagged , , , , , , , , , | Leave a comment

The Chupacabra

The Chupacabra

The night was long
And I didn’t have a song
So I went for a walk
Rather than toss and sulk

I took two candelabra
And met a Chupacabra
I asked him where he was going
“To eat you, I am going”

He might talk funny
But he was no bunny
“I am 200 and drink a lot of pop”
“My blood is diluted and would ruin your sup”

Better to leave this hood
And head to Hollywood
There are 600s with fat to spare
All you can drink and none would care

So I gave him some money
And my lunchbox too
He said “Is it veggie? It smells funny”
“No way in hell, I am a carnivore too”

If you think it’s not worth much
Surviving his clutch
I met a Chupacabra
Top that, you son-of-a-cabra!

Posted in POEMS | Tagged , , , , , , , | Leave a comment

Installing MacOS High Sierra v10.13.4 on VirtualBox

For Educational/Research Purposes

Installing MacOS Sierra 10.13.4 on VirtualBox 5.2.0 r 118431 (04/22/2018)

    • Download VirtualBox 5.2.x and install it
    • Download 5.07GB Sierra ISO image (macOS_High_Sierra_10_13_1_Official.iso) with md5sum 2ba1e2160b69a9bd080646664c8edc12 (though any bootable one you can get should do).
    • Create a new VM with Type “Mac OS X” and Version “Mac OS X (64-bit)”
    • Other VM settings include: Chipset set to PIIX3*, Memory size at least 4GB, 2x CPUs, 128MB Video Memory, Network (Adapter) interface, Disk at least 40GB.
    • Insert file macOS_High_Sierra_10_13_1_Official.iso into the CDROM drive
    • Shutdown (exit) VirtualBox application
    • From an admin CLI (cmd.exe), run the following commands (substituing your VM-name for “mac3”):
 cd "C:\Program Files\Oracle\VirtualBox\"
 VBoxManage setextradata "mac3" "VBoxInternal/Devices/smc/0/Config/GetKeyFromRealSMC" 1
 VBoxManage setextradata "mac3" "VBoxInternal/Devices/efi/0/Config/DmiSystemVersion" "1.0"
 VBoxManage setextradata "mac3" "VBoxInternal/Devices/efi/0/Config/DmiSystemProduct" "iMac14,2"
 VBoxManage setextradata "mac3" "VBoxInternal/Devices/smc/0/Config/DeviceKey" "ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc"
 VBoxManage setextradata "mac3" "VBoxInternal/Devices/efi/0/Config/DmiBoardProduct" "Mac-27ADBB7B4CEE8E61"
  • Launch VirtualBox and start the VM
  • It will put you at the Language selection screen with English as default (Next button)
  • The new screen is titled “macOS Utilities” with 4 options: Restore from Time Machine Backup; Install macOS; Get Help Online; and Disk Utility.
  • Choose Disk Utility (u won’t see the HDD)
  • From the menu choose View -> “Show All Devices” (your HDD will show up on the interface)
  • Select your disk and choose the “Erase” button (give it a Name: and leave the Format: as “Mac OS Extended (Journaled)” and the Scheme: as “GUID Partition Map”)
  • Click Erase button; Click Done button once the erasing process is done.
  • Exit Disk Utility (menu Disk Utility -> Quit Disk Utility) and back to the “macOS Utilities” screen
  • Choose “Install macOS”
  • Continue (button) on the “Install macOS High Sierra” screen
  • Agree button (terms/license agreement)
  • Agree button (in the small popup to confirm you have read the terms)
  • Select your disk and click on the Install button on the screen stating macOS will be installed on your disk (the installation start – 4mins remaining)
  • Remove the ISO image from CDROM when it restarts otherwise the VM boots from it again (if so, shutdown the VM, remove the ISO and start up the VM)
  • The VM boots to a text screen (“UEFI Interactive Shell v2.1 ….”) with several options (FS0, FS1, BLK0, BLK3) then drops to a “Shell>” prompt
    – Type “FS1:” and press ENTER
    – Navigate the directory structure by typing:
    cd “macOS Install Data”
    cd “Locked Files”
    cd “Boot Files”
    boot.efi (press ENTER)
  • The installation process will continue to a GUI (“Installing on disk-name”)
  • When the install completes, you are presented with a Welcome screen:
    -> Choose Country
    -> Keyboard 
    -> Don't transfer any information now 
    -> Don't sign in (sign in fails if you try anyway) 
    -> Skip when prompted if you are sure you don't want to sign in 
    -> Next on the Terms & Conditions -> Agree to the license agreement popup
    -> Enter details on the "Create a Computer Account" screen 
    -> Express Set Up screen (Choose "Customize Settings")
    -> Enable Location Services (optional)
    -> Analytics (uncheck/deselect "Share Mac Analytics with Apple") 
    -> Enable Ask Siri (default) -> Setting Up Your Mac ... 
    -> Keyboard Setup Assistant (continue) 
    -> Identify Your Keyboard (select key to right of left shift key, then key to left of right shift key)
    -> Conclusion (click "Done" button unless you want to change the selected keyboard)
    - Congratulations! You have successfully installed MacOS High Sierra v10.13.1 and you are presented with the desktop

    Congratulations! You have successfully installed MacOS High Sierra v10.13.1 and you are presented with the desktop.

——————————————————————————————————–
Now let’s update it to MacOS High Sierra version 10.13.4! 🙂
——————————————————————————————————–

  • Choose “Install macOS”
  • Optional: Shutdown the VM, take a snapshot (you can delete it later if everything goes well). Start the VM.
  • Download macOSUpdCombo10.13.4.dmg from Apple website* (see notes below)
  • Double-click to extract/open it to macOSUpdCombo10.13.4.pkg
  • Double-click to start installation
  • Welcome to … 10.13.4 Update Installer (Continue)
  • Important Info (Continue)
  • Software License Agreement (Continue)
  • Terms of the agreement popup (Agree)
  • Standard Install on … (Install button)
  • Enter password in credentials pop and press “Install Software” button
  • Install software now popup (“Continue Installation” button)
  • Install will continue after restart
  • Take another snapshot before clicking the “Restart” button
  • Installing Software Update screen
  • Keep pressing F12 or “Windows-Key+R” once the system reboots (make sure the VM has input focus otherwise it won’t work and once you miss it, you have to revert to the last snapshot)
  • You should land on a screen with 5 menu options: Continue; Select Language; Boot Manager; Device Manager; and Boot Maintenance Manager
  • Take another VM snapshot on the BIOS screen before continuing
  • Choose “Boot Manager” and press ENTER
  • Choose “EFI Internal Shell” and press ENTER which drops you into the “Shell>” prompt
  • Type the following (press ENTER after each command)
 FS1:
 cd "macOS Install Data"
 cd "Locked Files"
 cd "Boot Files"
 boot.efi
  • If the boot process got stuck with a bunch of error messages similar to “Error loading kernel cache (0x9)” or “prelinked kernel error”, shutdown the VM and restore the previous snapshot.
  • Repeat previous steps above from “Choose Boot Manager and press ENTER” …
  • System boots to “Installing on …” screen and the installation continues.
  • When the installation completes and the VM boots up completely, login and the system should be running MacOS High Sierra version 10.13.4
  • You can now delete the snapshots if you want.

——————————————————————————————————–

NOTES:

– To set a custom screen resolution such as “1920×1080” (the default seems to be 1024×768), use the command:

VBoxManage setextradata "mac2" "VBoxInternal2/EfiGraphicsResolution" "1920x1080"

– You need to be running at least MacOS version 10.13.2 to be able to install Xcode from the App Store

– If the chipset is set to ICH9, after rebooting the VM gets stuck on a text screen (boot-args = usb=0x800 ….)

– Installing the 10.13.4 update from the App Store does not work. After the installation completes, the version still remains 10.13.1

– *I prefer to download the update to my host, then use an ISO creation app such as cdrtfe to create a data ISO disk. Insert the ISO into the CDROM drive attached to the VM and run the update from there.

– md5sum of the boot ISO macOS_High_Sierra_10_13_1_Official.iso I used for the installation is 2ba1e2160b69a9bd080646664c8edc12 though other versions out there should probably work as well.

– “About This Mac” shows the following details: macOS High Sierra Version 10.13.4, Serial Number 0, Graphics Display 3 MB.

– If you require a proxy to access the Internet, set it up by going to Apple Menu -> “System Preferences” -> Network -> Advanced.. -> Proxies -> configure “Web Proxy (HTTP)” and “Secure Web Proxy (HTTPS)”

LINKS:

https://forums.virtualbox.org/viewtopic.php?f=22&t=86239#p411173

How to Fix macOS Sierra Screen Resolution on VirtualBox?

Post by okiuss helped with the update to 10.13.4 (below):
https://forums.virtualbox.org/viewtopic.php?f=22&t=86633&sid=e75178f31bb38a514f0e61a3fdb8cc99

Posted in Uncategorized | Tagged , , , , , , , , , | 1 Comment

Beethoven Akinjiwonuola III

Beethoven Akinjiwonuola III
(April 3, 2018. 6:38am)

Let me tell you about Beethoven Akinjiwonuola III (it’s alright if you can’t pronounce his name properly; I can’t either).

Yes, his mother named him after the famous composer.
But unfortunately he held the violin’s bow the way he held his fork.
And he couldn’t tell a music note from a Greek letter.
His music teachers gave up in despair and one said even the Sphinx can’t solve the riddle of how it was possible to be so utterly lacking in talent.
In other words Beethoven couldn’t do music if his life depended on it.
That of course was the source of much angst From friends and foes alike. No wonder of course, with a name like Beethoven.

But there was one thing Beethoven liked doing – that was running.
Unfortunately his other issue had made him much too shy, so no one ever knew about his true gift.
Beethoven grew up more or less in obscurity.
You could always find him near the curtains at parties.
Or pretending to be furniture.
Or at the refreshment table debating whether a piece of bread or a croissant is the way to go.
Because he never did learn how to make small talk, all the girls with no exception found him curious but no fun at all. As one put it “disturbing and nice” (but nice never a boyfriend made.)

Nevertheless Beethoven knew how to run.
He ran past the rectory which caused the priest to think the second coming was at hand.
Leading to several sermons on how the congregation ought to be ready because no one he said, can outrun the coming apocalypse.

He ran past the bakery.
The wind rushed through the oven
The fire burnt so hot it turned all that day’s bread to ashes.
And for the first time since old Mr. Peterson (the war hero) could recall, there was not a loaf of fresh bread in all the town.

He ran across the river.
And all that witnessed it said the river was parted for a minute.
With fishes flapping on dry ground.
Just like the Red Sea in Moses days.

He ran past the court house.
And blew away all the papers.
The clerk said there were no copies
The accused was teetering at heaven’s door anyway.
So the judge set him free for lack of evidence.

He ran through the cornfield.
All the ears of corn fell off their stalks, peeled themselves, and the grains jumped off the cobs and piled up at one end of the field.
The farmers woke up to the miracle of the harvest.

He ran and he ran and he ran, and he ran and he ran into the past.
No he didn’t grow younger like Benjamin Button.
But he ran so fast and so far that his grown self met his preteen self.
So he told his young self what he ought to do and what he ought not to do.

One would have thought that was the end of it. But no, he didn’t stop running. He ran, and he ran, and he ran all the way to that first day when there was no day and no night and the earth was just a chunk of darkness spinning in the nothingness. Then he ran some more.

No one truly knows what became of Beethoven Akinjiwonuola III. (It’s alright if you can’t pronounce his name properly; I can’t either). But it seems very likely that he just ran out of time.

Ayotunde Itayemi (April 3, 2018. 7:21 am)

Posted in POEMS | Tagged , , , , , , , , , | Leave a comment

Weird dream

Weird zombie dream this morning. Started off discussing a data protection solution with a prospect and I said to him that at one end of the chain are the Inside sales team, then the field sales team, and at the other end is the customer. That’s about when there was some sort of commotion and most of the light in the city went out.
Next I was running away from the zombies, they were quick, not Z (Brad Pitt) quick though. The strange thing was that all their faces were in silhouette so I couldn’t make out any features. I was hopping from one roof to another and it seems I was headed for a safe zone.
Just as I came in sight of the gates, a woman came running up and asked which way to Microsoft.
She made it through the gate first and was captured by some humoungous humanoid-zombie which is when I realizedd the safe zone was compromised.
Earlier in the dream I had gone to eat at some local restaurant. I had to go pay at the cashier’s stand and I set down my back pack. One of the kids in the place got into the backpack and stole my phone. I ran after him and as I got the phone back, another kid stole something else from the backpack and I proceeded to hunt him down too: why didn’t I just take the backpack with me?

Posted in Uncategorized | Leave a comment

Leaving is hard

Leaving is hard (9/15/2017 – 1PM)

It is said that when life hands you lemons, you make lemonade. Well, I tried. The lemonade was just too sharp to drink daily. So, finally I decided to “check out.” Can’t be that difficult, right? I read all sorts of stories on the internet and that shit is happening all the time – teens, 20s, 30s, 40s, 50s, 60s after which it seems people sort of accept their fate and get on with the hassle of living. Well, it isn’t. Maybe I was just grossly incompetent, just plain unlucky, or at some subconscious level I wasn’t really ready to go.

I did my research. Ok, truth be told, I just watched a bunch of documentaries. I made a list of possible options and the old car exhaust method seems to be the most painless way to go. Just sit back and relax, and let odorless carbon monoxide do the trick. I didn’t have much of any affairs to set in order which suited me fine. I wrote a brief “suicide note” and snail mailed it to the only person I knew wouldn’t bother to open the mail until I was gone. Checked the listing for vacancies and found a warehouse that looked like it would be suitable from the pictures online. I wasn’t going to leave anything to chance, so I fired up Google Earth as well, and it appears the pictures posted by the estate firm didn’t even do it justice – it looked even more decrepit, abandoned and weed-grown from above (damn estate agents using old pictures!)

I read somewhere that the best time to die was either Friday afternoon right after the work day ends or on Monday mornings: Friday evening people can’t wait to get on home or hit the pubs, and Monday morning they are too busy trying to get to work early or still recovering from the weekend hangover: either way, they can’t see you for their own issues. Which is how you want it when you want to commit a permanent crime against your own person.

I pulled up to the warehouse in my old jalopy and drove straight through the excuse for a double door that wouldn’t even keep a horse out (and horses are known for following the rules, right?). the only thing I had with me was a family-size KFC bucket and a 2-litre bottle of Coca Cola: I intend to die happy. Besides, whoever heard of the dead dying of diabetes? I ate half of the bucket and washed it down generously with the coke. I guess I should have bought a non-carbonated drink instead for all the burps the coke was inducing in me.

Time to get down to business. The key is not to hesitate. I plugged the hose to the exhaust pipe of the car, went back with the other end and stuck it through a little gap in the window, then tape everything up nicely. I started the car, reclined the seat and closed my eyes. Anytime now … who says this stuff has no smell …. as long as it gets the job done …. my shut eyes were burning and I started to cough … I intend to wait this thing out …. finally I checked my wristwatch and noticed it’s been close to an hour. It wasn’t supposed to take this long. I couldn’t cope with it any longer and opened the door. Turns out my old jalopy wasn’t exactly airtight and I could have punished myself in there for a month of Sundays and all I would have had was a nasty headache and possibly bronchitis.

I was disappointed of course but I still had my list. I returned home and the fact that no police or anyone for that matter had showed up looking for me means I was right about the fellow I sent the letter to. The only letter he opens with any sort of regularity is the ones containing his disability checks.

I spent the next few days investigating option two. Again, to tell the truth, after a few YouTube videos about how to tie a noose, I sort of got carried away watching the season 7 episodes of GOT. I was disappointed by the ending. I knew season 8 would be the final season by I am not sticking around for 2 years to discover who finally gets to sit on the iron throne. No way. I took a trip to Walmart and bought a good length of a thick strong woven synthetic rope they had. Another detour to KFC and I was set with another family bucket and this time non-fizzy ginger ale from the gas station. It only cost $1.29 for a 2-litre bottle. Maybe the warehouse was jinxed, this time I searched for a nice house that was for lease in the suburbs. I timed my arrival to ensure the dads have gone to work and the mums are probably doing laundry or visiting. I parked a few blocks away and made the last few meters on foot. With my face cap and bag slung over my shoulder, I could pass for some courier guy. I was in luck as the keys to the front door were under the “welcome” doormat. It was nice and dark inside. Half a bucket of chicken and a liter of ginger ale later, I was ready to go. A quick look at a straight-to-the-point video on YouTube on how to tie a noose securely again and I was ready to make my own copy. It seems the cable I bought was too “fat.” After battling with it for what seemed like an eternity, I threw it down in disgust. I watched the video again and looked at the comments under it. That’s when I found that there was a suggestion as to the optimal diameter for a rope to make the sort of noose in the video. Aaaarrrgh! OK. Not too bad. I can still make it to Walmart, exchange the rope for something thinner and be back in time before the husbands’ lunches are ready.

I am not sure where I got the idea that the “real Walmart people” only come out after midnight. Seems they made a special exception that day to torpedo my plans. All the queues were packed and half of them dressed as if they had just escaped from some nearby loonie-bin. By the time it got to my turn, the day was far gone but I was going to try anyway. That’s when I learnt that the rope in my hand had been paid for by someone and should not have been on the shelf. I was on the way back when I had to stop at an intersection for the lights to go green. A fellow called to me from the sidewalk asking if I had any loose change. From his looks, I suspect he was a druggie, but where I am going I don’t need any cash. He came over and I gave him some notes then on a hunch asked if he knew where I could get some ropes? Without missing a beat, he said it was my lucky day and I should drive round the corner to some construction work going on. Big mistake. I didn’t even make it out of the car before I had a gun shoved in my face by a second guy that appeared out of nowhere. Long and short of it was that I was parted with my car and wallet. The fellow was nice enough to leave me a $20 bill for my cab ride home. He wanted to give me a smaller bill because he thinks wherever I was going wasn’t far and a $10 should get me there. Fortunately, he couldn’t find one.

The escapade had taken it out of me. I flagged down a cab and had to go into my apartment to get the balance of $6.24 because the ride ended up costing $26.24 – freaking mugger!

No more ropes. And I needed a break and some distraction. I went looking for the chap I had sent the letter to. He’s always welcoming as long has you have a pack or two of something cold in your hands. He was watching Netflix. I pulled up a tattered seat and sat next to him. Just on the table behind me was my letter. He hadn’t opened it. I picked it up and slipped it into my pocket.

I told him in passing that I had attempted to “off” myself. He chuckled and went on watching the TV. I don’t think he quite registered what I said I had done. Stayed there watching the TV amidst some light banter till late in the evening then went back home.

I was ruing my fate by the roadside when I noticed this bird that kept making short dashes into the road from the curb and back to the curb. It was obviously hurt cause one wing sort of hung to the ground. Then a police car came flying past with sirens howling and made a road kill of the bird. I stood there and looked at the mess on the road: minced meat. I couldn’t believe it. That bird had probably had enough of this world, and it got to leave without even trying! I was clenching my fists and grinding my teeth in anger when the idea came to me. It was a real eureka moment. All that was missing was the lit light-bulb hovering over my head. I was going to commit suicide by cop. But I have to get a gun to do it right. I will go to the seedier side of town and purchase one. Either I get mugged and stabbed to death (though from all the movies I have seen, that shit ain’t quick and painless) or I get the gun and go out in a blaze of glory full of holes by the men in blue.

When they say a place is the underbelly of the city, I didn’t realize it literally meant the smell of weed, vomit, feces (and more I couldn’t identify) all rolled into one. It’s amazing that I have lived in the city for as long as I have and have never had cause to visit this area of town. It’s one of those areas you just naturally learn to avoid in the cause of time. But yet, that night found me wandering around the darkly lit streets. My plan was to go from club to club, by a drink, cozy up to one or two people and stylishly drop the fact that I was looking to purchase a gun. Nothing but hostile looks in the first four or five bars and I was getting tipsy. I looked back on my trip to the next bar and realized I had picked up some real “hostiles.” My mind told me to run but my legs went two steps forward, one step back and half a step sideways. As I was about to topple over, strong arms grabbed me from either side and I heard a voice say “You are the prick looking to buy a gun yeah?” All I could do was nod because I could feel something struggling to break free if I so much as opened my mouth. “Well, it’s your lucky day. We have just the thing you need. Untraceable, yeah?” I nodded again. “With a box of bullets to get the job done.” I shook my head, I didn’t actually intend to shoot anyone. Next thing I was dragged into an alley and frisked from head to toe. I was being held down and struggled feebly because the alcohol was messing with my coordination. “Hold still!” one of them shouted and when I still continued to try to resist, I felt the impact of a set of knuckles connect with my face. I did not see stars: I saw a bright light for a second or two, or three. I laid still for what seemed like forever. When I finally decided to move, I could only see out of one eye. The other was swollen shut. A toy gun (I didn’t realize it until I picked it up and felt how light it was) was on the street next to me. All I got was a black eye, and a toy gun for my troubles.

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

The gun was on my work table right beside my laptop for several days. I was staring out the window one of those nights when the moonlight glanced off it. To my now back to fully functional eyes, it looked black, shiny and real enough. I decided it was still worth a try especially if it was in the dark. Now to find a situation where there would be enough cops to ensure I don’t end up partially paralyzed or brain dead – I need to be real dead as in DOA-dead. I knew a local bar where on certain nights cops gather after work and there’s always a few out in the parking lots smoking at any point in time. I was going to go there and make their day. I knew I had to make it so unexpected so their instinct kicks in and they unload their weapons without hesitation. I whipped out the gun as a I walked towards them in the partially-lit parking lot and pressed the trigger for the fun of it. The gun burst into all sorts of multicolored flashing light and some baby-sounding voice saying “I am an officer of the law. Surrender now!” followed by that ice cream truck music. I was sniffing shoe dust in a matter of seconds with my hands behind my back and my chest to the floor. As I was dragged up to my feet, all I could think of was the fact that I couldn’t even get killed by cops and I am black and I had a gun. That damn bird!

I was at the station in a few minutes with the evidence of my intended crime on the counter across from me.  One of the officers picked up the gun and turned it over a few times. Then chuckled and pointed to something embossed on the gun. The inscription read “cop friendly” – what the hell does that mean?!!!

I was thrown in jail while I guess they were trying to decide if I was sane or not. Seems I must have been talking in my sleep and let the cat out of the bag because the next thing was me being hauled to some psychiatric hospital for an evaluation. Long and short of it was instead of prison, I was remanded in the hospital for observation and treatment. An unknown benefactor of the hospital picked up the tab.

Two months later, after telling the doctors what they wanted to hear, I am let out the front doors of the hospital into a bright day that made it seem all was right with the world and Kim-should-be-certified in North Korea is not trying hard to nuke us all while starving his countrymen, and 121 people are not going to commit suicide back here at home within the next 24hours (that is one person every 13 minutes) and there are no famines, hurricanes, and wildfires trying to make believers of all of us that the end times are actually here.

The sun was shining brightly, and the temperature was just about right. A light breeze blew through the trees and there was a flowery scent in the air that was refreshing. Then the pigeon shat on my head. I looked up at it looking down at me and just like that I decided I wasn’t going anywhere just yet – not until I returned the favor to this specific pigeon I couldn’t tell apart from the thousands in the city. I knew that wasn’t going to happen.

But some things just can’t be explained.

– – – – – – – – – –  The End  – – – – – – – ( 9/15/2017 3:12PM)  – – – – – – – – – – – –

National Suicide Prevention Lifeline: +1-800-273-8255

(Available 24 hours everyday)

Posted in Uncategorized | Tagged , , , , , , , , , | Leave a comment

Olutayo’s Kidney Transplant Fund

Olutayo is my immediate younger brother. Not sure why I haven’t put this up before now since we have had a Facebook page and a GoFundMe page for him for quite a while.

The summary is that his kidneys failed completely (CKD – Chronic Kidney Disease) mid-last year (2016) and he needed a transplant. He was on dialysis for a year and finally had his operation (after we found a suitable donor) about a month ago. The financial and emotional strain on all concerned has been immense. But in all things we give thanks.

A rough estimate of the cost of his treatment so far should be well over  N16 million Naira (the operation is a huge chunk of it, while the 2-3 times weekly dialysis sessions for the year makes up the bulk of the balance). So while we were able to pay for the operation upfront (no negotiation in the matter), it means we have debt to re-pay. In addition, he has to take anti-rejection drugs (so that his body doesn’t reject the transplanted kidney) for as long as he lives and the drugs are quite expensive as well (at current rate about $10,000 per annum).

The link to the Facebook and GoFundMe pages are below. We continue to request for your support in prayers and donations.

https://www.facebook.com/Olutayos-Kidney-Transplant-Fund-1573477076294320/

https://www.gofundme.com/2jq7mgc

Thank you!

Posted in Uncategorized | Tagged , , , , , , , , , | Leave a comment

Is Simple’s system too simple?

Is Simple’s system too Simple?

OK. I will start by owning up to my central role in this fiasco right away.
Let’s start from the beginning. I decided I had had enough of giving Simple Mobile “free money” and decided to transfer my phone line from Simple Mobile to H2o Wireless. Why “free money”? Well, the cheapest pay-as-you-go package on Simple is roughly $28 ($25 plus sales tax) for unlimited talk and text (they added 1GB data to the package a month or two ago). I have had my line since December last year and I make possibly 5 calls a month. I recently “discovered” H2o wireless. One way or the other I discovered BestBuy carries the H2o SIM (I think I might have googled it). I then ended up on the BestBuy website and had an online chat with one of their support people. I told the fellow in explicit details where I was and what I wanted to do. He agreed that I could walk straight into the BestBuy in my city and that they would do the transfer for me on the spot. I finally got a friend to drive me to BestBuy. Sauntered to their “mobile” desk, waited for my turn only for the gentleman to look confused when I asked him about the H2o wireless SIM card. He then called someone else over his phone and finally said they don’t stock them in that shop. They had it in a shop a 100-miles away or so. He apologized after I told him I chatted with someone on their website who said I should just visit the shop. I thanked him for his time and my friend googled the card again and it showed up on the Walmart site (on Google). As Walmart was about 5 minutes away and we were out already, we decided to go there. Same issue again, they didn’t have it at the local store but they also had it at some city some distance away.

I headed back home and decided to order it online. Did I mention that my Simple service was going to expire the following morning? Amazon had it (the H2o Wireless SIM Starter Kit) for $1 but by the time you added shipping it came to $3+ and would take some 10 days or so to get to me. I checked on Walmart and they would ship it to my local store in 5 days at the same cost but fortunately as you will see later, the minimum order quantity is 2 units and the total price from Walmart (fortunately as you will see later, the minimum order quantity is 2 units) for roughly $3 (so basically, I was getting two SIM packs in half the time and for the same amount I would have got 1 unit on Amazon). To be accurate, it was being sold on Amazon by a third-party retailer.
I was pleasantly surprised when I got a notification 3 days later that my package was ready for pickup at the local Walmart Supercenter. The following day, I got another friend to take me to the store in the evening. I wanted to be sure I didn’t make any mistakes with the transfer so I chose to wait till the following day when I could get on a chat with someone from the H2o website to guide me through.

I think here is why I made the snafu. I had the transfer request form open in one window and was chatting with the lady (Missy-H2o) in another browser window. The form had several fields including a “call back number”, “number to transfer field”, “Simple account number”, and “Simple PIN/Password.” I added a third window to my “multitasking” session by launching a chat window with Simple Mobile support to confirm the Account number and password. Back and fort between the 3 sessions, the auto-complete popped up in the transfer form ad I selected it, unfortunately, because I choose the Chrome auto-complete for my email account, Chrome automatically entered all the associated details in the other forms. So while the “call back number” was correct because I typed it in, I somehow missed the fact that Chrome had entered my cousin’s number (also using Simple mobile but in a city some 16 hours away – I had stayed with him briefly in December so I used his address and phone number as contact details for a number of online forms I filled out before getting my own SIM which was how chrome came to associate his number with my email address). To be accurate, it appears H2o sent me a summary of the request immediately but as I used a Yahoo! Address and was extremely busy yesterday, I didn’t see it until 2 days later (I might have been able to rectify the issue if I had seen the mail immediately).

Anyway, I opened the mail today and noticed the error. Got on a chat with Dee-H2o over on the H2o website and after lots of explanation, she claimed both accounts appear to share the same details. To which I insisted the only thing common is the billing address. I had no idea what his Simple account number and PIN were and I am not sure he even had an online Simple account. The only conclusion was someone dropped the ball along the line. Finally Dee-H2o suggested I contact Simple to find out how they managed to transfer the line if the details were incorrect. In the meantime, to transfer the number back to Simple, I had to load the line with $10 H2o credit (which was the cost of the transfer) and then have my cousin request a transfer back to Simple. I asked Dee-H2o (I somehow assume the name belongs to a lady?) why they charge for the transfer when Simple doesn’t: she ignored the question. My conclusion in the meantime was that Simple didn’t verify the data in the transfer request which means one could initiate the transfer of any random number and it would be carried out?! Scary!

“Is there anything else I can help you with today?”

“Yes, what about the transfer of my original line?”

“You can re-initiate that transfer afresh, but you will need a new SIM, because the new SIM your cousin’s line was transferred to is now useless” (once H2o transfers the number back to him). So it was fortunate I got 2 SIM cards from Walmart.

So onward with my Israelite’s journey! I opened a chat up with Simple mobile, pasted my chat session with Dee-H2o into the chat window and asked Ingrid to kindly take time to read it. She came back and said she couldn’t find a record of my cousin’s number in their system. Duh! I told her Simple already transferred it to H2o which was part of the “conversation” I sent to her.

In the meantime, I tried to contact my cousin and couldn’t get through for obvious reasons. I finally got through to him through his fiancé, and he confirmed that his line went off yesterday and he had contacted Simple to complain and they kept insisting someone with access to his account had requested a transfer of the line to Tmobile. He contacted Tmobile and they had no record of the transfer. He immediately yanked his credit card from the Simple account thinking maybe someone was trying to steal his identity.

I got back to the lady and repeatedly told her that the transfer request should have failed unless Simple wasn’t verifying the data included in transfer requests (unless of course it was only the billing address they verified – maybe it’s all about the greens! Lol). I asked that she escalate the issue which she said she would. I also said they should provide feedback to both my cousin and I (which I suspect won’t happen until hell freezes over) and I told her I would make her famous! And that for my $10, I would at least get a good story out of the whole issue for my blog. Thumbs up to Ingrid, she remained polite throughout though I assume she was probably wishing I would go find someone else to bother. I told her that it looks like if I had her number, I could go request a transfer of it to H2o and it would succeed which is scary!

If you have $10 to burn and have a line on the Simple platform, it’s worth a shot. Get a new H2o SIM, then go initiate a transfer of the line from H2o (you can open a free account) and ensure the PIN and account number fields are wrong but put the right line number in the “line to transfer” field, and see if the transfer succeeds. Of course, you will need a $10 top-up on H2o to transfer the line back to Simple and the hassle and probably a new Simple SIM as well.
If they are smart, someone is reviewing my transfer request right now to figure out what went wrong.

So, the question is: “Is Simple’s system too Simple?”

NB: if Simple gets back to me with an explanation (even if it’s something else I did that made the transfer go through I will update this blog entry).

Posted in Uncategorized | Tagged , , , , , , , , , | Leave a comment

Sometimes …

Sometimes I have the strangest dreams.

Like this morning. A diver was strapped between a massive whale and a manatee and airlifted overhead across a piece of land/bridge from the water on one side (where I assumed they had become trapped) to the water on the other side which I believe was the ocean. And there I was looking up as the bundle passed overhead thinking “Wow! he must be very brave.”

Posted in Uncategorized | Tagged , , , , | Leave a comment