How to Create a Bootable USB Drive Using Command Line

I use this technique all the time so I just stole the instructions for myself here.

  1. Insert the USB drive.
  2. Open a command prompt as administrator and type diskpart
  3. Type list disk Note the number of the USB drive.
  4. Type select disk <x> Where <x> is the disk number.
  5. Type clean << disk will be wiped out!
  6. Type create part pri
  7. Type select part 1
  8. Type format fs=fat32 quick  (or fs=ntfs if needed)
  9. Type active
  10. Type exit
  11. Now copy contents of bootable CD-ROM or other image to the drive.

I’ve used this for multiple Linux CDs as well as Windows 10 installer and more.

How To Show Thumbnail Images in Advanced Typepad Template Excerpts

If you use advanced templates with Typepad, you might not be getting optimized images in your excerpt listings. In my case, the main index page was using “thumbnails” that were sized via CSS but in fact were the full size images. This slowed down the page load time for sure.

In the Typepad settings there is a way to enable thumbnails in excerpts, but this only works for built-in templates and themes. If you use an advance template, you may have to enable this behavior yourself.

First look at this code, it is the excerpt code from my advanced template, it shows the image and the content.

<div class="entry-body">
    <img src="<$MTEntryPhotoURL$>" class="excerpt-image" alt="Article Excerpt Image"/>
</div><!-- .entry-body -->

The main thing to notice is the img src “<$MTEntryPhotoURL$>”. This is replaced with the URL path to the image. This is also the problem, because the link goes to the full size, original image.

After much searching I found this page which explains about Typepad’s ImageLink object. Two things are most interesting here: the 4 different sizing renders (pi, wi, hi, si), and the Valid Sizing Specifications grid.

Pay attention to that grid, because it defines all the sizes and rendering Typepad can do for you.

In my case I wanted the thumbnail to be 250 pixels wide using the “wi” scaling. To apply this sizing to the image in my advanced template, I made one small edit to the above code:

<div class="entry-body">
    <img src="<$MTEntryPhotoURL spec="250wi"$>" class="excerpt-image" alt="Article Excerpt Image"/>
</div><!-- .entry-body -->

Notice the bit added to the MTEntryPhotoURL tag: spec="250wi".This should be obvious what it does, it sets the “specification” (spec) of the image loader. You must use the options available in the grid or the image won’t show up.

When done correctly, Typepad should load the 250px image instead of the original image.

If you look at the URL of the image now, you will actually see the “250wi” appended to the end of the URL.

For reference, here is a copy of the sizing grid:

  pi wi hi si
MediaFire Discontinues Desktop Sync

Mediafire Discontinues Desktop Sync

I don’t know who is in charge over at MediaFire, but the last couple days have seen some scary messages. Firs this:

Mediafire Desktop Sync

Then a few days later I started getting a more “official” notice.

Mediafire shutdown notice

On July 30th, 2016, MediaFire will stop supporting desktop syncing through MediaFire Desktop.

I took a quick look online and it seemed that MediaFire had already swept their website for any mention of the desktop tool. No blogs about it, no notices, nothing.

I emailed support about it and got this response:


Thank you for contacting Mediafire. Currently we are in the process of deprecating Mediafire Desktop and will no longer be supporting Desktop and the software will no longer work after July 30. At this time we do not have an alternative for syncing your files. We are in the process of updating our website to improve many of its core features.

We appreciate you choosing MediaFire.

So it would appear they have no plans for desktop sync. This makes no sense to me whatsoever. Their sync tool functioned perfectly well enough, it had the screenshot tool and everything. I could share files, get my direct download links from the Explorer context menu, etc. Then this!

Well this simply won’t due. With no information about an upcoming better tool, or even 3rd party tools, I immediately removed their sync software from all my devices and signed up for Office365 for Business.

Bye bye Mediafire, you will not make me try to manage all my files through a browser interface where it takes 8 seconds to get a folder listing and I can’t press a letter like “T” to quickly go down to files starting with “T”, and every other trick desktop browsing brings me. I’m not going to edit files with your online editors, nor download them to edit and have to re-upload again.

This is a horrible decision on their part and I don’t see the logic in it. Either they are planning something secret and won’t tell people, or they really think people want cloud-only, browser-based file storage. I know I don’t!

That’s a shame.

When you readers decide to switch to Office365 too, you’ll get 1TB of storage, plus all the MS Office apps, cloud features, and ability to share with other users. Click here to take a look.

Scheduled Task Batch File Isn’t Working

There are a couple things to keep in mind when you use the Task Scheduler in Windows to run a batch file. Actually there are only two that get batch files working for me on most occasions.

Proper File Permissions

The first thing is that the batch file itself must have proper file permissions for the user you connect with inside Task Scheduler.

Here is an example.

This is a test batch file I created in a folder on a secondary hard drive where I keep some scripts. When I go in to security settings of the file, you can see my user does not have full permission, even though I’m the user who created the file!

This is because the file is created on a 2nd hard drive which is outside my user folder.

Default security on second hard drive

If I simply copy the test batch file from that drive onto my Desktop (which is in my user folder) and change nothing else, the permissions change to this:

default permissions in user folder

Now it makes sense why Task Scheduler would not be able to start the batch file. If I run the task as ZACK\Zack but don’t have full control for that user on the batch file, it won’t run.

Often times people don’t realize this permission issue because they can easily double-click the batch file and run it manually and don’t know why Task Scheduler can’t. Or people will run the task as full administrator instead of as a user. This sometimes fixes it because the admin will naturally have full control anyway.

Set the Start in Field

If your script makes any kind of assumption as to what folder it is running in, be sure to fill in this field. Often people resort to this fix first before checking permission. There is a difference between the script not starting and the script not working. If the script doesn’t start, it could be permissions. If the script doesn’t work right, it could be the “Start In” field is not set.

I’m sure there are others reasons that could prevent a batch file from running via Task Scheduler, but these two issues cover most of the reasons.

The Best Web Hosting for a Business

There are a million articles on the Internet about who is the best webhost, or who is the best web host for “some specific purpose here“.

This is not an article about the best “free” host or the best “cheap” host or the best host for web developers. This is about the best host for a small business.

Some of the subtle differences between these different types are as follows:

  • A free webhost might be fine for throw-away projects or quick tests of things but a serious business does not want to be on one of these. They usually leave their marketing on your site, show popup ads to your visitors, and tend to be very slow with saturated servers.
  • Some free hosts are directed toward writers and bloggers, such as Tumblr, Hubpages, Squidoo, and many others. A business is not generally looking to do blogging, so these types of free services are not the best choice. Some free hosts are perfectly good candidates, such as Wix, Moonfruit, and Weebly, but you are still limited in some ways and will soon need to upgrade to paid features anyway.
  • Web developers typically want “bare” servers with no software, and with full control. Hosts like these offer VPS servers and require the most know-how to configure and set up. They may also choose so-called “cloud VPS” servers which are even more controllable, to the point of completely deleting and creating new servers on the fly. Sites like Digital Ocean, VULTR, and Linode host these types of virtual servers.

The last category I simply call a business host. They are not free and limited, but they are also not 100% in your control with zero limitations and require a lot of know-how.

A business host is the middle-man hosting company. These are typically in the “shared server” category or VPS category and give the owner some kind of control panel to manage the server.

Some benefits of a good business host include:

  • Upgraded, fast, SSD hard drives. This allows the server to process files a bit quicker, often improving performance.
  • Automatic backups by the hosting company. Usually daily, weekly, or some other arrangement.
  • A control panel. The most well-known is cPanel which provides dozens of utilities for managing your server from backups to email to FTP to installing software.
  • Built-in spam and virus scanning, as well as additional security measures.
  • A free domain name with purchase. If you are starting a new website, they will often have a free domain along with the package.
  • Often these hosts advertise as having unlimited bandwidth and storage and so forth. Surprisingly, as you go up in server cost, you actually get more and more limitations. Nevertheless, they will prevent excessive overuse, even though it says unlimited.
  • They often come with Google Ad credits, sometimes hundreds of dollars worth! A perfect way to test advertising once your website is built and see if you can drive some traffic to the business.
  • Your account will come with the ability to host multiple websites and subdomains. You won’t be stuck with just “” but you can also host “” or “ all on the same account.

The list could go on and on but you get the point. These business-class hosting companies offer servers in the middle between free and limited and bare bones developer servers.

For a non-programmer and developer they will give you just enough power and hand-holding to where you could get a site set up without having to hire someone. The tech support of the host can also you help you.

This leads me to my recommendation for the best business-class host. I currently use InMotion Hosting for all my clients.

I’ve gone through a few hosts on my road to InMotion but for the past 5 years they have been quite solid. They have all the features I mentioned above, including SSD drives, 24/7 support, backups, control panel, $250 ad credits, free domain, one-click software installs, host multiple websites, and much more.

InMotion offers VPS servers and other packages but specifically I’m talking about their Business Hosting plans called Launch, Power, and Pro. These are the types of accounts I’ve been talking about. For just around $8 to $16 a month they are quite affordable for any business to maintain.

If you start with the lowest plan you can click to upgrade when you’re ready and climb all the way up the ladder of server power.

I used to promote a few other hosts but have since stopped simply because quality and support have dwindled. I won’t mention names but they are quite well known. I’m not out the bash them but I definitely choose InMotion over all of them at this time.

If you really do want something free and fast, try Wix, Weebly, Moonfruit or some other. If you are a developer, stick with Digital Ocean, VULTR, Linode, Ramnode, or even Amazon EC2 or Microsoft Azure.

If you are an everyday business wanting more than free and limited, and less than an empty, bare server, give InMotion Hosting a look. You will see InMotion promoted on this site, not because they are random ad links, but because I specifically chose them to promote because I use them and support them.

I hope that helps you!

How to Monitor a Folder for Changes in Linux in Real Time

This is a handy little command I found recently.

I was testing something on my CentOS server and needed to look at a particular folder to wait for a file to appear. I quickly tired of typing ll over and over to see if the folder changed.

After a little web searching I was almost giving up until I found watch. This command simply runs any command you like, at a set interval, and updates the screen each time.

For the purposes of this post, I simply needed to run watch -d ‘ls -l’.

The -d switch tells watch to highlight changes between the previous screen and the new one. This was amazing as it highlighted the very file that I was waiting for to appear.

You can set the time limit with the -n switch but without it the default is 2 second intervals.

As with most commands, read up about it by typing man watch or do some web searching. Watch is limited to showing you one page of data, so it may not be appropriate for commands that spit out a lot of stuff.

Hope that helps!

A Day in the Life of Small Business IT

8am – Look at scheduled tasks

I have many repetitive tasks scheduled on the calendar in my business email. On a typical Monday morning usually a handful of tasks have become due. Most of these tasks don’t take much time and are related to maintenance chores, housekeeping, backups, etc. I usually tackle these tasks first. Here are some tasks listed this morning:

  • Backups from our cloud server are automatically downloaded to my workstation over the weekend. I simply need to move them to the proper archive location. I do this with a batch script. In the future I really need to send these backups to another cloud service like an Amazon S3 bucket instead of our local network.
  • Report last month’s office bandwidth. This information is only for myself, to look for patterns. If bandwidth use changes dramatically I might look look in to why that is. I record this data from the router into a simple spreadsheet.
  • Backup email newsletter list. There is no way to automate this so usually every two weeks or so I go in to our company newsletter service and backup/download our entire subscriber list.
  • The company let a particular domain expire, so I had previously set a scheduled task for today to remove all references to it from our server and hosting accounts. This also includes DNS entries, archived backups, saved passwords, links in various places, etc.
    (Note: when doing this, it led me down a rabbit trail of cleaning up some other unneeded password entries and server data. Rabbit trails happen often!)
  • Copy collected newsletter emails into newsletter service. This particular marketing channel doesn’t have automation, so I take any new emails and add them to our newsletter service manually. I need to fix this and automate this marketing channel at some point.
    (Note: went on another rabbit trail, updating some company information in our newsletter service, the welcome email, and added a registration form to a new Facebook group the boss created last week. Rabbit trails are fun! This trail took over 30 minutes.)
  • Do some quick maintenance on one of the ecommerce stores. Just some product housekeeping here.

At this point it is getting later in the morning so I begin looking in to my various email accounts, to clean them out and handle any quick tasks, and mark any longer tasks to get done soon.

I always go on some rabbit trails when clearing emails for the morning. In this case I read a couple interesting white papers, followed some headlines, and did quick tasks as needed.

Back to scheduled tasks:

  • Today is the day I update the network diagram. This is a flowchart of all the main computers and network devices in the building. This I schedule for every 3 months. There are usually few changes to the network so this tends to be a quick task to review. I use Edraw Max for the diagram.
  • Today is also my 3 month scheduled firewall audit. I’ve got a report that I update and list any changes made to the firewall settings. This allows me to keep watch, as the router itself doesn’t have a reporting or notification feature for any settings changed or allow for comparison to previous settings etc. This time I recorded a recent change to our WAN IP, all else was unchanged.
  • Gather sales data from both ecommerce stores. Even though these stores are hosted services and have their own internal reporting features, I find it’s best to download our sales data and import it to my own database. I have to do this manually, there is no automation. This personal database allows me to do SQL queries on the data in ways I can’t do with the hosted carts because I don’t have access to their database directly.
    (Rabbit trail here as I needed to adjust Excel’s encoding for a data import operation with CSVs and Russian text. Then I had to adjust my database for UTF8 as well as some columns were locked in Latin1. Hate bugs!)

At this point, my flow through scheduled reminders starts to slow down as office life picks up. People have requests for me, fix something, email issue, customer service etc.

I have a computer on the bench next to me which is getting an overhaul, so I turn my attention to that, fixing things, managing programs, doing updates, cleaning it up.

After a while, it’s lunch time already and I haven’t got a chance to work on any “big” projects, but am mostly caught up on everything from the weekend. Now it’s time for a lunch break!

After lunch I’ve got a few more tasks to complete. Since it is the 1st of the month, I download all our website analytics reports and get them into my own spreadsheets. Mostly this is Google Analytics on a custom dashboard, but also AddThis and server reports from cPanel. Doing this for all our domains takes about 20 minutes but today I needed to add reports for a new domain, so all the reports and files had to be set up, including the auto-email of my Google Analytics Dashboard.

While doing that, I cleared out some more email until my entire email client was clean. I use Thunderbird, so basically this means there are no unread messages across any accounts and folders.

Due to running two ecommerce stores, it also falls on me to edit products sometimes, and this includes photography and Photoshop! Yes, the IT nerd has to take pictures. I grab our old D5100, turn on the flashes and get to work on a few new products. When the shoot is done, I import with Bridge and edit the keepers in Photoshop. The final photos are copied to our network folder and the boss is notified of the new shots available.

Was this a “typical” day? I think so, but it is not “every” day. Sometimes I’ll work on a single project all day, with a lot of catching up to do the next day. Sometimes there is a big upgrade or service change. Sometimes we hook up to a new marketing channel and need to sort out all the details, graphics, adcopy and so forth.

All in all, small business IT is quick-paced and varies a lot in what you actually do. And there is a lot of weird stuff you need to do sometimes! My duties cross over from computer maintenance to web development to data intelligence and reporting to photography and digital editing to vector design to programming.

4:30pm – Time to clock out!

Convert Network Solutions CSV Product Exports to WooCommerce CSV Imports

This post will eventually detail everything you need to do to export Network Solutions products into WooCommerce formats for importing.

I wanted to start this post now even though it’s unfinished, so I can collect some feedback if this sort of thing is something more people are needing. There are no automated tools out there right now but I am working on automation in the form of PHP web scripts that will help convert the product exports from Network Solutions into CSV files that can be imported into WooCommerce.

So far I have scripts to help me parse out "simple" products, as well as "variable" products and their "variations". The way Network Solutions handles these data types is far different then how WooCommerce does, and they require a LOT of work to convert. I have something like 15 pages of notes on converting the various types, and 3 PHP scripts to parse the CSVs for some more advanced data manipulation, including the use of Network Solutions’ XML export as well.

Using my scripts you can automate the import of ALL your product images into Woo, as well as automate the creation of the Woo attribute and attribute_data columns for variable products and variations.

Using my notes and a spreadsheet program like Microsoft Excel you can rename columns, remove those you don’t need, recreate a proper product category structure in Woo styling, handle hidden or disabled products, create shipping classes from Netsol extra handling charges, and much more.

At this time these scripts and tools are not refined enough for the general public, but I can do this on a consulting basis if you would like to hire me to do this for your business. Feel free to contact me about converting your Netsol products to Woo imports.

In time I may release a more comprehensive automated scripting tool to do this for you.


More to come…

Please let me know if you are interested in these converting tools.

Fix Yahoo Mail Missing Contact List

I’ve seen some posts online from people who claim to be missing their Yahoo mailing list tool. For some strange reason, Yahoo Mail collapses the contact list area, preventing you from creating a contact list, or group, or mailing list, or whatever you want to call it.

When you have a list created, it does show up, but if you don’t already have a list, the text box that lets you create a new one is gone. This is the case in Firefox, Chrome and Opera as well.


The solution is simple! Go into your contacts, and select ONE contact. You should now see the “Assign to Lists” button, click that and create your list.

assign list

Quick Way to Find PHP’s Temp Folder

If you want to know what folder (in Linux), that PHP is using for temps, you can always check the php.ini. However, the setting for temp folder is often commented out, leaving the “system default” as the folder of choice. But what is that?

One way is to just type “df” at the command line, chances are good you’ll see the symlink path to temp in here. In fact most of the time it’ll just be “/tmp/” anyway. But here is one more trick.

Create a php file and just put this code in it:

    $temp_file = tempnam(sys_get_temp_dir(), 'Tux');
    echo $temp_file;

Run that on your server and it should give you a pathname to the created temp file. You’ll know for sure what PHP is using.