Test and Debug Websites in Internet Explorer 11 on a Mac Using VirtualBox and Serveo

As of this posting, the global usage of IE 11 stands at 2.5% according to caniuse.com. If that percentage is still too high for you to ignore, then you’ll need to test your website in IE 11.

Many developers use Macs for web development. Though you can test websites in Chrome, Firefox and Safari on a Mac, you can’t install and therefore test IE 11 on a Mac. You can get a separate Windows machine for testing IE 11 but that’s a hassle and overkill. Here are some steps to test and debug websites in IE 11 on a Mac using VirtualBox and Serveo.

1. Set Up VirtualBox

  1. Go to https://www.virtualbox.org/wiki/Downloads and download VirtualBox for OS X hosts (Macs) and install it.
  2. Get Windows 8 Virtual Machine
    Go to https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/ and download a precompiled VirtualBox for Windows 8 with IE 11

2. Open Website in Local Browser

On your Mac, open your website on your local web server in any local browser (e.g. Chrome, Firefox, or Safari) and not the URL. It may be localhost or localhost:8080 or localhost:3000, etc.

3. Set Up Tunnel Using Serveo

  1. Open Terminal
  2. Run the command ssh -R 80:localhost:3000 serveo.net using the correct local URL and port number
  3. You will see a response saying “Forwarding http traffic from https://abc.serveo.net” where abc may be different
  4. For more information, go to http://serveo.net. You can also use ngrok but Serveo is easier with nothing to install.

4. View Website in IE 11

  1. Run the virtual machine you just downloaded by double-clicking on it. Open IE 11 and enter the Serveo forwarding URL, e.g. https://abc.serveo.net
  2. Make changes to website files
  3. Reload IE 11 in VirtualBox to see the changes

Remove DRM From eBooks (Kindle) and Convert to PDF

Having to read an ebook, e.g. a Kindle book, in a special app, e.g. the Kindle app, can be annoying, especially when you want to copy and paste lots of text. Also, sharing your book can’t easily be done. To fix this these issues, you can remove the DRM (digital rights management) copyright protection from the ebook and then convert the decrypted file to PDF.

Remove DRM from Kindle (azw) file

One program I’ve tried that works is Epubor Ultimate. The version I used was This initially didn’t work with the version of the Kindle for PC version I had installed but the customer support people at Epubor gave me a link to install an older version of Kindle for  PC (1.24.53) and that worked. I had to delete the Kindle book (azw) folder and then in the Kindle for PC program, redownload the ebook. Then, in Epubor Ultimate, I was able to remove DRM from the file.

Convert Kindle ebook (azw) to PDF

In Epubor Ultimate, I was able to easily convert the decrypted azw file to PDF. Now, I can read the ebook anywhere and easily copy and paste text.

How to Price Work in Other Countries

I occasionally use Upwork (formerly eLance) to hire contract workers in other countries to work on some projects. Considering that I live in the San Francisco Bay Area, which happens to be one of the most expensive places to live, I have to constantly remind myself to price my projects according to the economy and cost-of-living where I hire workers overseas. Here’s an example cost analysis.

US Cost
Let’s say that, based on the type of work you need done, a fair US wage would be $10 per hour. Let’s also say that you expect the work should be done in no more than 17.5 hours. Therefore, the total project cost in the US would be $175.

Target Country
Let’s say you hire someone in Egypt to do the work. You’ll need a way to fairly and reasonably convert wages in the US to wages in Egypt. One way to do this is by comparing each countries GPD per capita, which is an estimate of the average salary in a particular country.

GDP Per Capita
According to the World Bank, as of July 6, 2018, the GDP per capitas of the US and Egypt are:

  • 2018 US GDP per capita = ~ $60,000
  • 2018 Egypt GDP per capita = ~ $3,000


In other words, the average annual salary in the US and Egypt are $60k and $3K, respectively.

Continue reading How to Price Work in Other Countries

How to Get Rid of Acne

Do the following before going to sleep at night:

1. Salycilic Acid 
Wash and clean your entire face using salycilic acid.
Clearasil Rapid Rescue Deep Treatment Wash 6.78oz – $6.00

2. Skin Moisturizer
Apply skin moisturizer to your entire face. This is necessary because the next step using benzoyl peroxide will make your skin red and very dry. The moisturizer will help prevent redness and dryness and will only slightly limit the effectiveness of the benzoyl peroxide.
Up&up Daily Moisturizing Lotion – $2.00

3. Benzoyl Peroxide (BP) 10%
Apply a thin layer of 10% benzoyl peroxide (BP) to entire face. Don’t go out in the sun with BP without sunscreen as sunlight hitting the BP could darken your skin. Don’t get BP on your eyes and hair. BP has a bleaching side effect and can cause dark fabric, e.g. towels and clothes, to appear bleached. BP is considered the best OTC (over the counter) acne medicine.
Max. Strength 10% Benzoyl Peroxide Gel Acne Medication – 1oz – Up&Up – $3.50

4. Sleep
Put a pillow cover, ideally one that is benzoyl peroxide resistant, over your pillow.

Continue reading How to Get Rid of Acne

Console.log Displays Incorrect JavaScript Object Values

When you’re debugging some JavaScript in a browser, you might get confused to find that when you dump an object’s value to the console, you get unexpected results. Consider the sample code below.

See the Pen Test JSON Dump by Abdullah Yahya (@javanigus) on CodePen.

Here’s what you see in the Chrome console.

The first console.log statement is showing the final value of the object as opposed to the value at the time the console.log statement was called. That’s because console.log is displaying a reference to the object, not the copy of the object at the time the console.log statement was called. To solve this, always stringify (serialize) the object which makes a deep copy (deep clone) of it before consoling it out. To see a prettified display of the object, parse the stringified object. This is what’s done in the 2nd console.log statement which shows the expected value of the object.

Car Tire Specifications

When you buy new car tires, you’ll either go online and enter your car’s year, make, model, and trim or give that information to someone at a store. Unfortunately, the tire specifications you get in response will not necessarily be correct. For the past 13 years, I’ve been buying car tires for my 2003 Honda Accord DX and the tire specs I’d be given are

This information was taken from tires.costco.com and from the tire specialist’s computer at a Costco Tire Center. It says that my tire size is P215/60R17. The tire specs in the driver side door, however, says this:

It says that my tire size should be P205/65R15. While it may be okay to go with a slightly different size, it’s probably better to go with the manufacturer’s recommendation.

Continue reading Car Tire Specifications

Nasal Decongestant: Sudafed vs Sudafed PE

If you have nasal congestion, which could also cause coughing, then one of the best medicines to take is Sudafed. However, be careful which one you get.

Sudafed (behind the counter)

This kind of Sudafed has the active ingredient Pseudeophedrine which can be used to illegally make methamphetamine (meth / “speed”). As such, it can only be gotten behind the counter, i.e. by talking to a pharmacist at Walgreens. You can get 4 hour Sudafed and 12 hour Sudafed. If you are impatient and can’t wait 12 hours to take the 12-hour version, then just buy the 4-hour version. Psychologically, taking medicine more often may make you feel better. One doctor told me that this version of Sudafed (Pseudeophedrine) is better than the kind below (Sudafed PE). Also, you can get a cheaper generic brand like Wal-Phed since all that really matters is the active ingredient, not the brand.

Sudafed PE (over the counter / off the shelf)

This kind of Sudafed can be gotten over the counter / off a shelf because its active ingredient is phenylephrine which can’t be used to make illegal drugs. That’s why it has the PE acronym in the name.

When to Change Your Car’s Tires

Tread Depth

In the US, car tire tread depth is measured in 32nds of an inch. New tires typically come with 10/32” or 11/32” tread depths, and some truck, SUV and winter tires may have deeper tread depths than other models. A tire is legally worn-out if the tread depth is 2/32nds.  Therefore, a typical tire that starts with 10/32″ of original tread depth has only 8/32″ of usable tread depth. A tire that started with 10/32″ of original tread depth and has worn off 4/32″ (down to 6/32″ of remaining tread depth) is 50% worn. Though 2/32nds of tread depth is the legal minimum, you should change your tires when they reach 4/32nds of tread depth. At tread depths less than 4/32nds, you may experience hydroplaning when driving in the rain and lose control of your vehicle.

Tread Depth Gauge

There are manual and digital tread depth gauges. I’d go with a manual one so you don’t have to worry about replacing a battery.

Battery Charger / Power Supply (Voltage, Amperage) Requirements for Phones, Laptops, Etc

When looking to buy a battery charger or power adapter for a device such as a phone or laptop, you may be unsure whether the one you buy will be sufficient or even blow up your device. Here are basic guidelines to keep in mind.

    The input voltage from the outlet to the charger should match or be very close. In the US, this is 110 volts. Unless you are buying a charger in a foreign country where the voltage is different, e.g. 220 V, this should not be a problem.
    Like the input voltage, the output voltage of your charger should match or be very close to that of the device you are plugging it in to. The input voltage requirements of a device can usually be found on the device itself. At the bottom of my Lenovo Yoga 910 laptop, it says “Input 20 V, 2.25 A”. Therefore, this particular device needs a charger that outputs 20 V.
    The output amps from the charger should be equal to or greater than the input amp requirements of the device you plug it in to. My Lenovo Yoga laptop has an amp input requirement of 2.25 A.

    • A charger with lower amps may charge a device but slower. Or, it may not charge it at all and the power supply may just turn off as it would not be able to adequately supply the load (laptop).
    • A charger with higher amps may charge a device faster than it would with a charger with amps equal to the value specified for the device. A device will not blow up if the chargers amp output exceeds the amp value specified for the device. The device will just accept however many amps it can handle.
    Power (wattage) is calculated as V (Voltage) x I (amperage). P = V*I. Therefore, for my Lenovo laptop, the minimum power requirements to power it is 20 V * 2.25 A = 45 W (watts). Therefore, it can take any charger that puts out 45 W or more as long as the output voltage is 20 V.
  • Input and output voltages should always match
  • Power supply amperage should be equal to or greater than the amps required by the load

Kitchen Remodel Project

  1. Preparation and Dust Management
    Covered floors with plastic. Put up plastic walls.
  2. Demolition
    Removed existing kitchen cabinets, wall, popcorn ceiling
  3. Wall Removal
    Removed a load-bearing wall by building two temporary walls, and installing a 10’ long 6”x12” special engineered wood beam and two 4”x6” posts. This opens the kitchen up to the dining room.
  4. Custom-Built Pony (Short) Wall
    Created two short walls by a post where a kitchen island was to be located.
  5. Plumbing
    Moved a copper sink drain and a cast iron toilet drain. Replaced outdated parts (copper and cast iron) with ABS. Small soffits were created as necessary. A hole was dug in the cement foundation to cut a cast iron drain pipe. The pipe was cut and capped off and the hole was refilled with cement.
  6. Electrical
    Since I removed a wall, I moved all wiring, outlets and switches to the short pony wall and rerouted some wiring between ceiling joists.
  7. Lighting
    The old light box with fluorescent tubes were replaced with 4 recessed lights.
  8. Popcorn Ceiling Removal
    The outdated popcorn ceiling was removed and retextured with an orange peel finish.
  9. Painting
    Walls and ceiling were repainted.
  10. Kitchen Floor
    The old vinyl sheet floor was removed and replaced with durable ceramic tile.
  11. New Cabinets
    I installed new kitchen cabinets
  12. New Countertops
    I installed quartz countertops
  13. Backsplash
    I installed a backsplash
  14. Debris Disposal
    I hauled all construction debris away for dumping at the San Leandro / Davis St. Transfer (Dump) Station.
Continue reading Kitchen Remodel Project