Windows 10

Windows 10 has been around for several years now, and we've had a chance to see how Microsoft's reorganization has impacted their development compared to how they built Windows XP and 7. In this article we're going over each major break from tradition and what other developers can gain from what happened.

How to choose a business laptop

If you’re setting up a new business, either working from home or for a storefront, then you’ll almost certainly need to buy a new computer. It’s also likely that you’ll want to get something light and portable instead of buying a desktop, most new businesses in my experience will go with either a laptop or a small box pre-built machine that works very much like a laptop. In this article, we’ll run through some of the things to look out for when buying this new computer, and what the various specifications mean.

Setting up your small business network

If you’re setting up a storefront or other place of business, you’ll also want to get set up for networking and to buy computers. The best things to get will obviously depend on what kind of operation you’ll want to run. An IT services company or a video studio that may need to send and receive raw video footage will have a different setup to a cafe or restaurant. We’ll be exploring a few options but in general for the purposes of this article let’s assume that you’re setting up a restaurant, cafe or other trade that doesn’t have IT as its main focus and that you just need tools that will get the job done. We’ll also assume that you’re set up in Australia so we’re going to focus on Australian providers the most, although this advice is broadly applicable to everyone.

Optimizing MySQL For Extreme Performance

Let’s assume that you’ve got a small MySQL database with the budget to match, and the only concern you really have is to get data in and out of it as quickly as possible. Obviously the first question you’re going to have is “How is that different from normal MySQL?” Simple, in this case I don’t really care too much if the data survives. Here’s a more concrete example, let’s say your MySQL database acts as the back end for a system monitoring several sensors that sample data every second or so, it’s not a large project so there’s no budget for hardware, the sensors are all off the shelf components that eventually trigger back to your API and you need to make do with what hardware you have or you’ll blow the budget. In this situation you want to be able to sample data as quickly as possible, and you need to be sure that the server won’t suddenly bog down (so it has to perform), but you don’t really care if the server loses power and you lose a second or so of data every two or three months, as the sensors are running constantly, and a single second effectively means nothing.

There are plenty of other situations like this, WordPress is another example as it runs with MySQL as its back end. What’s the worst case scenario in a situation where the system loses power? That you might lose a row from one the logs? Compared to potentially more than doubling performance (and loading speed on a website directly relates to conversion percentage, time is literally money) it’s a worthwhile tradeoff.

The trade off ultimately comes down to a question of, what’s the worst thing that can happen if we lose power or have the system fail at the worst time, compared to the day to day benefits from additional speed and cost savings. Obviously I’m not suggesting doing anything extreme on systems that actually handle money or similar cases. I’d suggest keeping your blogging database and your payment system completely separate, one needs 5 minute backups and automatic failover and the other doesn’t.

So now that we’ve worked out our goal and risk tolerance, let’s explore the options…

Avoiding Online Scams

Recently there's been a large surge in the amount of advertising emails we've received requesting we buy their sketchy online services. The purchase rate on online emails is absurdly low and at various points have been quoted as being as low as 0.01%. However given how cheaply each email can be sent, it can still be profitable for a company to send out several million of them.

Our problem isn't just with unsolicited mail, but with the kind of unsolicited mail that's obviously a scam; the kind of email that's so shady looking it's actually a bit insulting to think that there's someone who thinks you might look at it and decide to buy. This article will chronicle the content we receive through our inbox and hopefully showcase how to spot the giveaways between legitimate advertising and a fly-by-night company.

If this encourages these companies to up their game and send better correspondence then that would be good too.

The Best Portable Drive

Despite how much storage you have on your laptops and desktops, you're going to want to buy portable storage at some point for a variety of reasons.

  • You need to install additional applications or development environments and it's too much hassle to dismantle and re-image your development machine. This especially applies to XCode on Mac machines, where each install will be ~15GB and you may want to switch between different versions of XCode. This also applies to keeping Android and Xcode environments running on the same machine.
  • Backups. Things that you want to make absolutely sure that you will never lose. Things like financial records, circuit designs and other company-critical documentation that would close the business if it was lost. Ideally you will have this on cloud storage as well, however it's crucial that any critical backup be stored in at least two places. Additionally, at least one of these places should be on a separate site and on a device that isn't connected to any network or machine. This prevents your backups being erased by something like a SAMBA hack that attacks all of your storage simultaneously.
  • Simply extending your storage. Rather than taking apart and re-imaging a laptop or desktop, it might be more convenient just to get an external drive. This is especially relevant as miniature form factor desktops become more common, as they won't have additional spare drive bays.

Fixing Optus Home Wireless intermittent dropouts

So you've got a Home Wireless internet connection, and it's been working great, but suddenly it's dropping out sometimes and it's not quite got the speed it used to. There's a few bars in the configuration menu and the lights are green, you have reception, so it makes sense that you should also have data.. and you do, sort of. What's going on? This article will tell you how to fix intermittent dropouts and low speed with your Optus Home Wireless internet connection, it also helps if you're getting low signal to noise ratios.

Using Matomo API with WordPress through PHP

Normally when you set up something like Google Analytics, Matomo or other tracking solutions, the normal implementation is to set them up using jQuery tracking. That is, the user browses to your page, downloads and runs the tracking code and the user's browser calls up Matomo or Google Analytics to report that it's been to the page. There's a few problems with this solution. For one thing many browsers can recognize tracking code and simply refuse to run it, this means that many of your customers won't show up in your analytics. This wouldn't be as much of a problem if it was a random section of people, but usually people running an ad-blocker are normally also the subsection of people that are technically inclined, that means that if you're advertising to a technical audience, you're going to find that many of your best customers won't be showing up in your tracking. There are some other reasons why jQuery based tracking is a problem, including the fact that many speed testing sites will get hung up on the tracking code and give you a lower score. Since this affects your ranking, it can cause problems down the line. That being said, this is a double edged sword, PHP is single threaded and if your analytics server is slow it will hurt your ranking the same way as if your user's browser was doing it.

Windows Timer Resolution

First things first, most of my knowledge on this is based on the work of Bruce Dawson and his 2013 article Megawatts Wasted. Bruce is one of my favorite writers with regards to IT stuff for a number of reasons, partly because he has a very deep knowledge of the Windows Kernel and doesn't just take it on faith that it works perfectly because lots of programmers work on it, but also because he wrote his own tool that among other things improves Crysis frame rates by 30% through increasing the frequency of the check to see if a new frame should start being rendered.

That being said this article is a bit out of date even as it comes out, since recent updates to Windows 10 scheduling means that as of the 2020 Windows 10 update the timer now works completely differently. Windows 7 and 8.1 editions still work as normal.. and may well be faster for games at this point. One thing worth questioning is that, knowing that there's a Windows for Workstations out there that has a  low latency performance mode out there, does that suggest that the Windows for Workstations release has the old behavior? I don't have a version of Windows for Workstations, but I'm very keen to find out which version of the behavior the "Low Latency" mode goes with.