Ok, as a long standing Apple user, and Apple Certified... everything (on and off over the years, subject to training budget availability). I know how expensive Apple can be. Being an IT professional, Apple-certified technician, and Apple-certified MacOS expert, it may shock people to know that I'm still running (in November 2019) a 2010 model Macbook Pro. While it was high end in 2010, I've stayed true to my cost-saving heritage (yes you can call me cheap) and I've kept it alive using my skills. Having saved the money most people would have spent upgrading their machine 2-3 times since then, and doing reasonably OK on the investments I put that saved money to, I can afford a new Mac... more than 3 times over. The remainder of which, I will continue to invest.

    Interestingly, I've been working on all the versions of Macs my workplace has purchased since I bought mine in 2010. While I know what's good for my clients, and I make recommendations, order the equipment and set it up over and over again, it doesn't really hit home how far things have changed until you have to buy it all for yourself. Especially when you can't use the purchasing power of a multi-billion dollar organization, and the surprising discounts they can leverage with a "buy macs by the truckload" mentality.

    Buying a new Macbook as an ordinary retail customer:

    Shiny new MacBook Pro 2019, 15" model

    Buying a new MacBook Pro isn't the hard part. But buying the right Mac isn't so easy when it's a "one shot" deal. Let me explain...

    In 2016, Apple drastically shifted its laptop design from an upgrade-friendly model using sockets to connect the hard drive and RAM, to an upgrade-prohibitive method of soldering the hard disk and RAM directly to the logic board (What Apple calls the motherboard in it's laptops). This meant that you could never upgrade newer models in the MacBook range of computers after you've bought it. Apple claims that this improved reliability (no loose sockets after all) and stopped people tinkering with things they shouldn't (providing greater reliability by avoiding damage), it also stopped people installing cheaper components with compatibility issues, (which again, avoided issues). However, it also means that the only time you can upgrade your Mac, is when you're selecting the options at the time of purchase. It also means that Apple is pretty much the only place you can buy these upgrades. With such a monopoly in place, it's easy for them to charge significantly more for a modest upgrade than you would ever see in other brands of computers... and they do.

    Don't need a custom configuration?

    You'll find that there is quite a range of standard MacBook, MacBook Air, and MacBook Pro models that are available everywhere. JB Hi-Fi, Harvey Norman, Bing Lee, Good Guys, Mac1, Kogan, etc, etc. Many of the stores will also match an education discount for students. If you aren't eligible for an education discount (discussed below), non-Apple stores often have clearance sales, end of financial year, or just random 10% off Apple computers sales that are available to anyone. 10% might not sound like much, but that can easily add up to hundreds of dollars.

    If you do need a custom configuration:

    However, when you start wanting to upgrade the RAM, or install a bigger hard disk, or start customizing the configuration, (also called "Custom to Order" or CTO machines) you are almost entirely limited to buying things from Apple directly. This is a real shame, since Apple never has sales, and all the other stores do, so you can't get really high end gear at a discount.

    Saving money on Apple gear:

    Students (and parents of students, please note that if you've got a child in school/university), you can get an education discount. It might well be worth waiting until you have the required student ID, or enrollment form to save money on your Macs instead of buying it beforehand. Unfortunately, no education discounts apply to Apple mobile devices such as iPhones, iPads, or Watches.

    The education discount doesn't just apply to students. It also applies to people who work in any role within for educational institutions, (TAFE, schools, universities, etc)  as long as you have a valid and current ID from that educational institution. I was an IT guy at a university, and I happily claimed my discount when I was buying something.

    Non-Apple/Purchase Discounts:

    Many people will already do this, but look into claiming the purchase as a tax deduction, or salary sacrifice some of your income to buy your equipment. There are limitations on this and hefty fines if you do this poorly, so please seek qualified financial advice before doing these.

    Are all new Macs going to run everything I need?

    Well that depends on what you are going to run. It's a sad fact as of January 2020, that many new low-to-mid level laptops (MacBook Air, MacBook, and MacBook Pro) are still sold with solid state hard disks (SSDs) as small as 256GB & 8GB RAM. Honestly, that's fine for your average web surfing, emailing, and document writing, and streaming videos.... but completely inadequate for much else.

    Entry level iMacs, are sold with a default 1TB, 5400 RPM hard drive. This is, bar none, the cheapest, nastiest type of drive available today. Do NOT accept this drive. It will substantially hinder performance, as it operates at roughly one fifteenth the speed of a modern SSD. It will cripple your machine because doesn't matter how fast your CPU is, if it's constantly waiting for the data to be read from the disk, and be written to the disk. Don't do this to yourself! The number of times people have "just gone out and bought a Mac" only to discover that it's a lemon because they didn't do their due diligence, is far too high.

    In the image above, (Taken from Apple.com.au on 9/1/2020), note the storage and memory section (Memory = RAM). In storage, see that 5400-rpm in the first two models, and "Fusion Drive" in the third. Now look at the upgrade options for each machine. Sometimes it's worth buying a better model to begin with, that comes with better equipment as standard, than upgrade a cheaper model. In this case, the CPU goes from 2 cores, to 4 cores, and then 6 cores respectively, and the RAM (memory) becomes progressively faster, despite all being 8GB in size.

    What advice do I give?

    The best bang-for-buck upgrades in Apple can usually be ranked in this order:

    1. Upgrade any 5400/7200 RPM rotation drive to an SSD of suitable size (not really an optional extra, sacrifice space if you have to, but try to keep it to 512GB or above). "Fusion" drives are generally a normal rotation drive with a small SSD embedded... I'd still recommend switching to a pure SSD if at all possible. At 10-15 times faster, the performance of the whole system is substantially improved when running a dedicated SSD.
    2. Consider upgrading the RAM, for new machines, I strongly urge you to consider a minimum of 16GB. This helps the SSD further, and maximises the potential of multi-core CPUs (which all new Macs have).
    3. Graphics card upgrades. If you do a lot of 3D animation, gaming, even photo/video editing, improving the video card can be a worthwhile and substantial upgrade, and takes some of the workload off the CPU.
    4. From here it becomes a matter of personal needs/preferences:
      1. Consider upgrading the network interface to 10Gb, or adding an external one on the laptops. Wi-Fi is all good and well, but if you're dealing with large files, many files, or constant data traffic, then this will help immensely. While Thunderbolt is an amazing technology, the sad truth is that it has limited compatibility with most storage arrays. Thunderbolt-compatible storage arrays command a hefty premium on top of an already expensive piece of equipment, so a good ethernet connection is a good choice. Large transfers, or 4K movie processing becomes so much easier and more reliable with a wired 10Gb link as opposed to Wi-Fi speeds.
      2. CPU upgrades. Wait, that's the first one, isn't it? Yeah, but you'll find that without the other upgrades, your bottleneck isn't going to be the CPU, it'll more likely be the hard disk, RAM, or video. That said, if you're upgrading from 4 cores to 8 cores, and you like running lots of parallel processes/applications at the same time... then this might be higher up the list. However, not all CPU upgrades are substantial, but can be substantially priced. Make sure you put the money where it will do the most good.

    Just to repeat, if I wasn't clear enough...

    If there's only one hard disk in the machine, avoid rotation drives entirely if you can. Do NOT buy a Mac with a 5400 RPM drive. Think of an Solid State Drive (SSD) of suitable size, then consider doubling it.

    I honestly believe that if you want to use your Mac for a while, and intend to future-proof it to some degree, (Macs are expensive to replace and many are impossible to upgrade) I recommend that an SSD with a minimum size of 512GB should be considered. If you need more space, then you can either upgrade to a 1TB, or more. A cheaper option would be to buy an additional external drive like the Samsung mentioned below. If you're a photographer, videographer, or just use a lot of big apps (Adobe everything, CAD software, Maya, or just handful of modern games) 1TB is probably the starting point. With cameras now getting up to 61 megapixels and beyond, photo and video editing requires high transfer speeds. Consequently, a rotation drive of any speed just doesn't cut it for anything more than backup in 2020 and beyond.

     

    I've ordered a Mac, is it over?

    Unfortunately, no... this is just the beginning. Lets talk about accessories.

    Apple "accessories" which really are essential:

    If you're someone like me who has a computer that predates the "big shift" of Apple (done in 2016), you'll note that the older type A USB devices (used since the 90s) no longer connect to your post-2016 Mac laptop. Similarly, you'll notice the lack of common video sockets like Mini Display port or HDMI. If you're a photography buff, who was used to the convenience of an in-built SD card reader, you'll be disappointed because that's disappeared too. Perhaps more disturbingly to some will be the lack of a RJ-45 network port. Even data transfer ports like FireWire and Thunderbolt 2 are also completely gone. So if you have a lot of pre-2016 cabled peripherals, you're going to be in a bit of a situation.

    Depending on the age and model of your post 2016 Mac laptop, you might have one, two, or four of these new "Thunderbolt 3", or "USB-C" ports and a headphone jack. Wi-Fi and Bluetooth are still available, but with absolutely nothing else. So you're going to need a multi-port dock or hub to connect these things.

    Multi-port dock vs multi-port hub, (a.k.a: "mini-dock" or "travel dock"):

    Docks:

    Docks are not usually considered "portable" accessories. They're designed for people who use their laptop "as a desktop" with external monitors and other peripherals when at home or in the office. Most docks are usually left connected with the usual network, monitor, keyboard, and mouse (at least) on a desk somewhere. Docks effectively allow you to charge the laptop and connect numerous cabled devices through one (occasionally two) convenient socket(s). The most defining characteristic of most docks (that separates them from smaller, more travel friendly hubs) is that they are externally powered. Meaning they plug into a wall socket somehow. This enables the dock to provide the power required for more peripherals and can have anywhere between 7-15 ports, usually some mix of:

    • USB A sockets
    • USB C ports
    • HDMI/Display ports for external monitor(s)
    • Audio Interfaces
    • Card readers (usually SD cards and Micro SD cards, higher end ones offer CFast card support)
    • Ethernet (sometimes gigabit, some even offer 10 gigabit)
    • Even hard disk connections such as e-SATA.

    Basically, at between $250 and $650 Australian, these are the high end, high performance, and high powered options to connect your Mac laptop to a work-desk-like setup. Some are based the 40 gigabit Thunderbolt 3 connection, and some use the decent-yet-slower (and consequently cheaper) models use the 20 gigabit USB-C technology instead.

    Hubs, Travel Docks, and Mini Docks (different names for the same thing):

    Hubs are the most common type of multi-port adaptor. They basically do the same thing as docks, but in a smaller, more transportable package, with less ports than their larger dock alternatives, they get their power from the laptop, or the laptop's charger. Which means peripherals have to share the power coming in that would normally be used by the laptop. Frankly, the vast majority of these hubs are based on the USB-C tech, with a handful of higher-priced models using the faster Thunderbolt 3 to connect everything.

    Hubs/Mini Docks/Travel Docks vary wildly in features, cost, and quality. Some will offer one or two HDMI connections, whereas others will have one or two Display Ports. Some will have gigabit ethernet, while others won't. Some may only have one USB A socket, while some will have three. It's important that you order the right one for your needs. No-name brands can start in as little as $40 but they're typically awful, don't work reliably, or at all.

    Please note that when they discuss "4K", video, it's not necessarily equal. Some will run one monitor at 4K at 30Hz, while others run two 4K monitors at 60Hz. Some even run at 5K, but they're pretty few and far between. So note those details before you get caught out.

    Where not to get accessories?

    It may seem obvious that you can buy accessories for Apple computers from Apple itself. However, it may seem odd that many of the best accessories are not sold by Apple at all. However, don't take my word for it, if you go to the Apple Australia website:

    https://www.apple.com/au/

    You'll see a lot of this...

    I've added perhaps the two most commonly looked at Apple-branded accessories sold by Apple.

    Notice the relatively simple 3 port "multiport adaptor" compared to the docks and hubs above. Considering one port is for your power adaptor to charge the laptop, you're only gaining one USB A port, and one HDMI port. Admittedly, it can run one 4K monitor at 60Hz which is very good, but the port-to-purchase price ratio is appalling. You can buy better hubs for around the same price. Looking at the power adaptor for the 15" MacBook Pro, you'll notice that 87W USB-C power adaptor is a genuine Apple power adaptor, it's something that's absolutely critical to running your laptop, and yet you may have noticed the low review scores. It's not exactly confidence inspiring, nor are these prices indicative of a "cheap and nasty" approach. So it begs the question...

    Why do Apple accessories get such bad reviews? (Note: Apple removed all reviews from their site in November 2019 due to the impact on sales)

    I think there are a number of causes here. I'm going to base them on my personal experience, and from reading some of the hundreds (if not thousands) of reviews that each Apple-offered accessory seems to get. It comes down to three things:

    1. Apple makes no effort whatsoever to prepare customers for significant change, or manage customer expectations. Unsurprisingly, customers get caught out, and this is frustrating, expensive, or both. Hence the negativity
    2. Apple is fantastic at marketing it's products, but terrible at providing key information.
    3. Underlying technology confusion. Same ports, but different technologies.
    4. Quality control, and general gluttonous profiteering.

    1. Apple's failure in preparing customers for change, and manage expectations:

    Apple has a long history of playing things close to the chest. Then in Apple tradition, they have a big conference and announce the new hardware and software, and basically the world is then expected to keep up. Any information before that point is kept "under wraps" with maybe snippets of information being dubiously disseminated on the online rumour mills. So when Apple brought out an all USB-C laptop in 2016, people were in for a rude awakening. Overnight, Apple products needed additional accessories to maintain basic functionality with existing peripherals. Unfortunately, this was quite early in the USB-C days, so many of the needed accessories weren't available, were unreliable, and often surprisingly expensive. Fast forward to 2019, and I still run into people desperately trying to figure out which USB stick will actually work with their 2018 Macbook Pro at the local JB Hi-Fi.

    Back to the power adaptor...

    No one likes change, but the new USB-C power adaptors now have a replaceable cable, which previous power adaptors didn't have. Considering that in older models, the non-replaceable cable was the most common failure point, (meaning you'd need to buy an entire new adaptor to fix the problem) you'd think making it replaceable would elicit cheers of joy. But then Apple increased the price then didn't include the cable. <cue lots of unhappiness here, resulting in a poor 1.5 star rating>. USB-C doesn't have that "safety disconnect" of the previous "MagSafe" connectors. Meaning that unlike older Macs, the new USB-C laptops won't conveniently and safely disconnect if someone trips on the cord. (Think laptop now crashes to floor instead) However, there are now USB-C cables with magnetically attached plugs to overcome this issue. However, Apple does NOT sell these.

    It's true, that Apple sells the "charging cable" for another $29 on top of the $119.. which makes it a very expensive power adaptor ($158) However, it's very important the you pay attention to the language Apple uses to describe the thing. Apple describes their "USB-C charging cable" very specifically. Mostly because it's only specified to run as a charging cable, despite being USB-C terminated, I'm betting the wires in it are too thin for decent data transfer speeds. Funnily enough, people are complaining of flimsy construction, and slow performance when they're trying to use it as a USB-C data cable. So the lesson here is: Buy a higher quality third-party USB-C cable or two, possibly with a magnetic tip.

    2. Apple markets well, but informs poorly:

    It's undeniable that Apple has one of the best marketing teams on the planet. You can see what products look like, you can be really impressed by the prettiness of the screens, you can read about what upgrades will give you at 60% performance boost, and you can be impressed that Apple has compressed it down to a device mere millimetres thick in a svelte, lightweight package. However...

    Apple doesn't say "Hey, this won't work with your laptop unless you buy <insert new-fangled accessory here>. Nor does it say just how much it will cost to bring your existing equipment inline with Apple's latest and greatest offerings. It's true that backwards-compatibility is a key driver of technological development inertia, but Apple didn't even have a transition generation of laptops offering both USB type A and C ports. In short, Apple has a "Keep up (and pay up) or be left behind" mentality. Now I know it's nice to have the best of everything, but most of my systems still run USB A because there simply isn't a USB-C option available for my peripherals. So this is why most people want a dock/hub as shown above.

    Differentiation by making things look very similar.

    Apple has a tendency to put form over easy identification. As such, there can be a variety of different accessories which all look very similar to one another. A good example is power adaptors. Each of these can look very similar, and I cannot tell you how many times one of my clients have bought the wrong one, only to discover that their power-guzzling Macbook Pro that needs an 87W adaptor won't charge on the 61W model intended for MacBook Airs and MacBooks when running. (It will charge slowly when the laptop is completely off, or perhaps in sleep mode) but note the word slowly.

    Ok, so in fairness, Apple has this page to describe how to get the right one here:

    https://support.apple.com/en-us/HT201700

    But many people won't look for this page, and will just walk in and pick one "that looks about right" up off the shelf, not knowing that they're not "all the same" or just order the cheapest one online without seeking advice, not knowing that the lower power models are usually the cheaper ones for a reason. Honestly, even I have a hard time identifying older models because the specs are written in small, light grey text on a white background.. that sometimes gets worn off, grimy enough to obscure reading, or covered in "Test and Tag" stickers. In any case, it's not easy, so.. Please fix this Apple!

    Three different power adaptors

    3. Underlying technology confusion. Same ports, but different technologies.

    Note the similarity of the identical ports, but different logos. Logos will be on the devices, but the text is for this example only, it is never included on the devices in question.

    In the past, Apple has used Mini Display Port sockets for both monitors, and Thunderbolt 2 data connections. The problem was that Mini Display Port sockets on the computer were not compatible with Thunderbolt cables and devices. But Thunderbolt 2 sockets were compatible with display port cables and devices. This one-way relationship caused a lot of confusion, particularly when buying accessories. For Thunderbolt to work, everything in the chain from point A to point B had to be Thunderbolt compatible. However, while many accessories would often physically connect, the Display Port grade accessories broke that compatibility chain, resulting in stuff "not working" and general user unhappiness... and tragically bad reviews.

    Now Apple (well... Intel actually) has done the same thing again by using USB-C ports for both USB-C applications, as well as Thunderbolt 3 connections. Thunderbolt sockets and cables can carry a USB-C signal, but USB-C equipment cannot run Thunderbolt signals.

    Understanding the difference between USB-C and Thunderbolt 3 is something that's not going to be immediately apparent to many. Despite using the same USB-C plug Thunderbolt has some additional underlying technology that makes it faster than USB-C. You can always tell the Thunderbolt accessories by the lightning logo, and if you're online, by the high review ratings...  and price tags..... the USB-C cable from Apple will have comparatively lower ratings and is cheaper.

    Thunderbolt Cable

    4. Quality control, and focus:

    Apple makes computers and mobile devices. However, because of that focus, it doesn't make much in the way of accessories, nor are they particularly good at it. With complaints about Apple accessories ranging from "lack of durability", to "mould/mildew smells" coming from their USB-C charging cables. Many accessories from Apple are, in my honest option (based on 16 years of professional and personal experience) ... sub standard, expensive, and often limiting compared to the competition.

    That's not to say that there aren't some good accessories. The Thunderbolt 3 to Thunderbolt 2 adaptor, the Thunderbolt 2 to Firewire 800, and the old USB A/Thunderbolt 2 to ethernet adaptors worked quite reliably for me. Possibly because they have to meet the stringent requirements set by the various Thunderbolt standards, or run well-established tech... despite being of a slower variety.

    Proof of backwards compatibility...

    A year or so ago, I was tasked with copying data from a G3 iBook from 2002 to a modern MacBook. Connecting via the G3's Firewire 400 port, I managed to bridge the connection by daisy-chaining a Firewire 400 to 800 cable, then using a Firewire 800 to Thunderbolt 2 adaptor, then a Thunderbolt 2 to Thunderbolt 3 adaptor. Sure, it was always going to be as slow as the oldest component <cue nod in the G3's direction> but it actually worked!

    I honestly credit this to the Thunderbolt technologies and standards. If even one USB-C or Display Port cable/adaptor had been used here, the whole thing would not have worked.

    So what accessories should I get, and where should I get them?

    There are many online sites, suggesting what their best "Mac accessories" are, and a quick search online for "Best Mac accessories <insert current year here>" will no doubt bring them up. The interesting thing I find is how few Apple accessories are here. It would seem many people aren't thrilled by them.

    Honestly, your needs will likely differ from my own. However, the things I've found helpful so far are:

    • CALDIGIT Thunderbolt 3 Mini Dock, (Dual HDMI, Dual 4K Displays, USB 3.0, Ethernet): At $229 delivered, it's a high end model. It's expensive because it's Thunderbolt based rather than USB-C. You might not want to go that expensive. There are a number of cheaper alternatives from Satechi, and OWC. I'd recommend you have a look at the Macfixit Australia page for a wide variety of options.
    • SanDisk "Dual Drive USB Type-C": Basically, these are affordably priced USB sticks that can connect to both USB-A and USB-C devices. One end has the USB-A connection, while the other end has the USB-C. So you can use them to transfer data from new to old Macs or vice versa if you want. 16GB models cost me $11.95, 64GB models were $22.50, and 256GB models were $63.95 each. I bought them from eBay with free delivery. I typically get something between 100-120MB/s transfer speeds, so it'll take a little under 3 minutes to fill the 16GB, roughly 12 minutes to fill the 64GB, and roughly an hour to fill the 256GB model.
    • Samsung T5 USB-C external SSD drives: I like to back up some large amounts of data on the go, (photos, videos, sound recordings, and field data). While there are some blindingly fast external drives out there, with 3 gigabytes (not gigabits) per second... they're thousands of dollars for a couple of terabytes. I chose two, somewhat slower Samsung T5 2 terabyte SSD models as a cost/performance compromise. Samsung claims the T5 will transfer roughly 550MB/s (megabytes per second) which is more than enough for my needs. From real world testing, I can fill the 2 terabytes in 93 minutes which calculates to about 360MB/s. However, please note I was transferring lots of little files rather than huge 4K videos as a "less than ideal" scenario. However, these aren't cheap. At roughly $500 Australian (in Jan 2020) for each of the biggest 2TB models, those with more modest data needs might prefer to choose one of the smaller models. This model will drop in price over time, and new models will replace it. So check out what's available for yourself.
    • Third-party USB-C charging cable: I bought a couple, one is a Satechi, reinforced and braided model for $40, The other is the magnetic tipped one, which cost me $26. The magnetically attached tip is really handy! However, it's quite difficult to remove from the socket once it's in... so I just leave it there most of the time. The Satechi has been rock solid and treated pretty poorly as I've travelled from one country to the next. However I regret to report that my magnetically tipped cable stopped charging the laptop.... perhaps I need a better quality one.
    • True 2m Thunderbolt 3 cable: At $112 dollars delivered, for a cable, it's certainly not cheap. Now, the 40Gb/s standard usually only pertains to Thunderbolt 3 cables 50cm long (1.6 feet) or less. However, I'm willing to sacrifice the speed a little for the reach a two metre cable will provide.
    • Apple Thunderbolt 3 to Thunderbolt 2 adaptor: There's simply no way I can skip this for my needs. I transfer data between new (post 2016) and old (pre 2016) Macs on a regular basis. It also forms the chain of adaptors and cables that enables me to directly transfer files from computers nearly 20 years old.

    Where do I buy things? Well that depends. I like eBay as a starting point, but MacFixit (Australia) has a great range of docks, hubs, and upgrade parts (where possible). I've bought things from my local JB Hi-Fi, or local Apple store when I want an immediate solution. However, Harvey Norman, Bing Lee, and other stores often have useful items.

    So in short:

    • Buy standard model Macs from shops with sales. Buy custom build Macs from Apple.
    • You're spending a lot of money on a Mac computer. Get the 3 year extended Apple warranty. Some shops sell their warranties at substantial premiums over the AppleCare ones, (as my in-laws found out recently), so I helped them to register for the AppleCare, and saved them about $300. If you need repairs, and you aren't covered by warranty, Apple charges (last time I checked) $120 inspection fee, $150 per hour of labour, and then huge sums for parts. (New logic board, is likely to be over $600. New screen, can cost between $500, and $1500. All of these costs apply the second your 1 year standard warranty expires, and you'd be surprised how many devices die at around the 13-18 month mark. I look at my purchase as an investment that I intend to leverage for at least 4-5 years. So I'll cover it for as long as possible, and then use my own skills to prolong it as needed.
    • If you want quality, don't buy Apple accessories, you're often better off buying a third-party solution.
    • As always, try before you buy. Shop around, and don't be in a rush to buy a Mac. If you are in a rush, get an SSD hard disk of sufficient size at the very least.

    I really hope that this has helped alleviate some confusion to someone out there. Or at least made you aware of the confusion so you can deal with it later.

    Ham.

     

     


     

    It seems only yesterday, that Adobe's Creative Suite 6 heralded a new age for software companies. The age of the subscription-based license for major industry-standard software. No longer could you buy the software and reasonably expect to use it until your computer finally got replaced, and the new software had to be bought again. In short, you paid for the time you'd be allowed to use the software, not the software itself, and as soon as that time is up, you're done.

    Why companies have adopted the subscription model:

    Software companies think it's great because it nearly eliminates software piracy when you need a valid and current account on their servers. Even though the software might be installed on a user's computer, regular checks with the license server through the Internet is required to maintain functionality. Subscription-based licenses also ensure the software companies get nice, regular income to (in theory) continually improve their products. This leads to faster development cycles and more amazing software.

    What are the benefits for users, and which users benefit most from a subscription model?

    Users, instead of paying hundreds or even thousands of dollars "up-front" for stand-alone licenses that usually work for a specific version of that software, spread their costs over time. The user can pay a monthly amount, and be eligible for all updates as they occur. Very heavy users will benefit most from a time-based license, as they can install it on multiple machines, and update them to the current version. If there's a time saving feature added, professional users will gain more efficiency with minimal delay, further adding value to the subscription license.

    Subscriptions also allow people who want to try the full functioning software for a one-off task for a much more affordable price. However, this assumes they cancel the subscription when they're done.

    Who doesn't benefit from a subscription model?

    However, subscriptions do not suit people who are light ongoing users, or intermittent users who can't justify regularly subscribing and canceling. They're paying for the time, but much of that time is unused. This is a common complaint about Adobe products since the subscription model puts them out of the reach of potential users. It's not just Adobe though...

    What else is on a subscription-based system?

    Microsoft has also followed suit with Office 365, most anti-virus programs have long-used subscription-based licensing arrangements to fund the ongoing battle with those who do evil computery things. Taking it even further, domain licensing, and web hosting along with a whole host of other Cloud-based services, are usually subscription based by their very nature.

    Are subscription so bad?

    Now, I'm not saying that there is no situation in which subscriptions have brought about amazing deals, flexible arrangements, and dulling the pain of initial financial outlays. However, they need to be closely managed and regularly re-assessed. With "direct debits", mortgages, streaming services, mobile and Internet plans, it seems that an ever-increasing amount of products and services are helping themselves to your bank account on a monthly basis, it can seem a lot like "the death of a thousand paper cuts". Sure they might individually be small, but collectively, they add up. With subscriptions, you also lose a degree of freedom, and there is no sympathy if your child gets hit by a car, and the medical bills have drained your savings when those subscription payments are due. So when you really can't afford to lose the ability to work, you just might do so. Some subscriptions allow you to pay for a year in advance, but that brings it back up toward the old standalone prices. That said....

    There is a dark side to subscriptions.

    Let's look a the "app" phenomenon for mobile devices. It's not uncommon to "buy" an app (even when it's free) for your particular mobile device. Despite "purchasing" the app, there might be an underlying subscription attached as well. That's a scary thought, because this is done through "In app, purchases" which again, is a misleading title.

    For example, I was reviewing a Dyson air purifier for ProductReview.com.au in December 2019, and used a sound pressure level (SPL) app on my phone to measure the noise levels at various fan speeds. The app itself was "free" and had a free trial (for a trivial 3 day period only) and from there would charge me $10 per month. Ok, it did tell me, but if I was in the habit of just clicking "next" in a "free" app, to get to the usable bits, I would have been paying for it without knowing.

    Honestly, it's easy to get caught out with this sort of arrangement. If an app has "in app purchases" which really aren't optional extras, and will start being charged automatically on an ongoing bases.. I actually feel that the "free" designation is intentionally misleading. As such, I used the software for my review for just a few hours, cancelled the subscription with prejudice, then deleted the app just to be sure. (Note that deleting the app does NOT necessarily cancel your subscription). I don't care if the software is amazing, this kind of Trojan horse (free app, with ongoing payment plan later) really seems predatory to me, and banks on people's inattention to catch them off guard.

    While it is true that subscriptions may offer flexibility, but they also are an ongoing consideration that requires thought and attention. With so much going on in everyone's life, who wants to think about whether they're still benefiting from each and every subscription they have? (This of course, assumes that they are aware of every subscription) Are people going to do this on a regular basis? Probably not. If you're "old school" and just want to buy something once... you're not alone.

    The "Anti Subscription" movement:

    Now Microsoft Office, and Adobe aren't alone in using subscriptions. With many other programs are now operating on subscription, it can be hard when the industry-standard software subscriptions aren't suited to you and thus ends up being unavailable to you.

    Photographers unite against subscriptions:

    Photographers around the world (particularly those in the hobbyist levels) may not take photos all the time, nor would they make the most of a subscription license even if they had one. So Photographers have been searching for some time now, for viable free or non-subscription alternatives to both Lightroom and Photoshop.

    If you like free, try the GNU Image Manipulation Program (a.k.a: "Gimp") found at:

    https://www.gimp.org

    G.I.M.P. is amazing at simple edits, but is admittedly closer to a very old version of Photoshop. However, the strength here is the free price tag and the fact that it is compatible with Windows, Mac OS, and Linux. So there's a lot of flexibility there.

    However, if you want something commercial-grade with old-school "stand alone" licenses, most of these will work on BOTH Mac and Windows machines:

    • Affinity https://affinity.serif.com/en-gb/photo/ This is an alternative to Lightroom, and I have to say that it works very well.
    • DXO's Photolab https://www.dxo.com/ and DXO's Nik Collection: https://nikcollection.dxo.com The Nik collection is a suite of stand-alone applications and plug-ins that are really useful, easy to use, and have incredible results. I really love DXOs camera+lens profile system, automatically compensating for the combination of both lens issues and camera. The ViewPoint plug-in is incredible for correcting point of view (POV) issues, making parallel lines, parallel and square again. Perfect adjusting architectural and real estate images.
    • If you do HDR there are a few options. Consider trying Photomatix, Aurora HDR, Nik collection again, specifically HDR Efex)
    • Do extreme macro work? Or use focus stacking? Try Zerene Stacker with lifetime licenses, including ALL updates! Zerene, I love you for life, literally! http://zerenesystems.com/cms/stacker
    • Capture One  https://www.captureone.com/en/ Not the cheapest by any means, however please note that this software blows Adobe out of the water for raw processing, and it's what medium and large format shooters (the people who shoot cameras capable of doing 100 megapixels and beyond use. You gotta understand, 150MP cameras requires nothing but the best, and most exacting controls, and efficient code (not always Adobe's strong suit).

    Subscription-free alternatives to Microsoft Office:

    LibreOffice

    Those who know me, have probably heard my spiel about free alternatives to Microsoft Office. I did most of my essays, assignments, lab reports, and data analysis during university degrees using OpenOffice. However, a new and substantially better spin-off from that is "LibreOffice" found at:

    https://www.libreoffice.org/

    The great thing about LibreOffice is that it works on Windows, Mac OS, and Linux. It's free (but you can make a donation if you wish) and it opens up all Microsoft Office files... even some corrupt ones that Microsoft Office can't. It has a robust document recovery feature, and has the equivalents of Word (called Writer), Excel (called Calc), Access (called Base), and PowerPoint (called Impress). It also has a drawing program, and a formula editor as well.

    I heartily recommend that you install this on any computer, even if you already have Microsoft Office on there. It's useful as a backup document editor/creator.

    Pages, Numbers & Keynote (Mac Users Only):

    If you've been considering making the switch from Windows to Mac (perhaps because you already have an iPhone, iPad, iPod, or you have Mac-obsessed friends) or if you have already bought a Mac sometime since 2016, you either have these apps preinstalled on your Mac, or you're entitled to download it from the Apple "App Store" for free. Don't assume you need Office! Try these programs because you have nothing to lose from it.

    Pages is the closest equivalent to Word. It is very pretty, has a ton of pre-made templates, or you can just create a new blank file. It's up to you. If you have kids at school who need to do homework, or you want to make flyers, dash off a recipe, or write your manifesto, this is more than enough for most people. It may not have all the features of Word, but I don't find it lacking at all for general use. If you're looking to do scientific papers... embed a ton of formulas, and use a ton of special characters.. this probably isn't for you. (I'd also argue that Word isn't the best choice either with it's semi-functional "formula editor").

    Numbers is Apple's equivalent of Excel, it works pretty well, and the interface is clean. I found that it doesn't have some of the more exotic formula functions like cubed root, but it's more than enough for everyday folks.

    Keynote is a much, much better alternative to PowerPoint. It honestly is the crown jewel of presentation software. PowerPoint users will know how painful PowerPoint can be, despite it being the global industry standard. Add media, and half the time, it won't work when you're in front of hundreds of people. <Cue frantic request to tech support and make apologies here>. Keynote is light years ahead of PowerPoint. It just works, and does not need additional plugins for every other action you want to do. Simply drag a video file onto your presentation. It puts a little window with the video file there or allows full-screen playback from the outset. It allows you to automatically play, or manually start playing the file. It allows you to choose the start and stop point on the file (keeping your presentation short and relevant), play once, or loop it (if you'd like). It handles the majority of media file formats, and it it does it all seamlessly. Want a sound file? It offers the same thing.. just without the video-related bits. Keynote users can plug their Mac, iPad, and even iPhone these days into the lecture theatre's system, and smugly be confident that their presentation will work flawlessly, and they probably spent 2-3 hours less making the presentation itself... leaving more time for "upstaging PowerPoint users", or just enjoying life in general. So why isn't it the industry standard? Because Apple doesn't make it for Windows. That's it.

    Is there any way to be completely free from subscription software?

    Yes, but it's not going to suit everyone, and it will greatly depend on the type of software you want to use. If you want a completely subscription free software experience.. with absolutely zero requirements for credit card/PayPal/direct deposit information... then you're probably going to need to consider running Linux.

    Linux has a bit of reputation for being a difficult operating system to use, fit for only the nerdiest of computer nerds. However, while it's going to be different from Windows and Mac (less so for Mac, since Mac was based on a similar heritage to Linux) there are versions which are very easy to use, offer compatibility with a huge number of computers, and is free. However, Linux's Achilles heel is that most commercial-grade software isn't compatible. So computer programmers around the world wrote a whole bunch of software, which you can download and install (again for free) from their equivalent of the App store (software manager/software centre).

    Linux comes in a multitude of flavours, (called "distributions") If I had to suggest one, all-rounder, beginner-friendly, highly capable, and well supported distribution, it would be Ubuntu. You can get Ubuntu completely free from:

    https://ubuntu.com/

    If you're going to give it a try, I'd recommend downloading the Desktop version. Now the best part, you can "Try" Ubuntu before you install it onto your computer by effectively running it from a USB stick, an external hard disk, or even a "burned" DVD. Instructions on how to do that can be found here:

    https://tutorials.ubuntu.com/tutorial/try-ubuntu-before-you-install#0

    Want to know something cool. This DVD/USB can run your computer, even if you REMOVE your hard disk... so if you've got an old machine around with a dead drive, pop a Ubuntu DVD/USB into the machine, boot from aforementioned device, and you're now able to browse the web (maybe to order a new hard disk). GIMP, LibreOffice, web browsers, email clients, media players, and thousands of other programs are at available at no charge. However, don't expect anything made by Adobe, Autodesk, Microsoft, and many of the commercial software mentioned above to work. So there's going to be a trade off.

    My final thoughts on subscriptions:

    Honestly, I think subscriptions have a place. However, they're certainly not for everyone. Some software companies offer both subscription-based and stand alone licensing for the same product. Others... not so much.

    Because I am loath to relinquish any control over my finances, I have to use software a lot for me to justify an ongoing payment plan. If I can get the job done without all that hassle, I'll generally choose to do so. However, the harsh reality is that there isn't always a viable alternative, particularly if you want cross-platform (Windows, Mac, Linux) compatibility.

    I can't tell you what is, and isn't appropriate for your situation, preferred operating system, or your routine software use. However, I don't think there's any harm in looking at both the mainstream, industry-standard applications and the alternatives (many offer trials..or are free). At least you've looked at your options and that should help you to make an informed decision from there.

    I hope this helps. Take care, stay safe, and have fun!

    Ham.


    If you're anything like me, you probably think that "talking about the weather" is usually a sign that someone doesn't know how to talk to you, and is trying to find some "safe" ground to build from. Unless you're talking to a meteorologist, gardener, farmer, pilot, permaculture enthusiast, reptile keeper, even some builders, engineers, and painters can all be significantly impacted by the weather.. and can be a topic of great importance and consequently, a sensitive subject like religion and politics to some.

    I've been meaning to build a weather station for... years now. There are some fantastic Raspberry Pi based Projects out there on the web. If you don't know what a Raspberry Pi is, or prefer to look at the alternatives like the various models of Arduino, please see my article:

    Fun with a Raspberry Pi

    The particular project that got me started, can be found here:

    https://projects.raspberrypi.org/en/projects/build-your-own-weather-station

    I really liked the clarity of the instructions, the necessary components, and the tips littered throughout the build. If you are considering it, I'd strongly suggest that you read it thoroughly before you start buying parts, let alone build the station.

    So I bought a standard weather station sensor kit (available from here) shortly after discovering the project back in 2018. But the project would make little progress beyond breadboard prototyping in the rare moments I'd get time to do some work on it, then it would sit around for months as other projects stole me away to do other things. I didn't get to soldering my electronics until October 2019, and finally between January-August 2020, I've been coding up the various bits. Yes I know it has been a low priority.

    Of course, in the mean time, I've started new jobs, built my own 3D printer (from a kit), learned to use aforementioned printer, dealt with family emergencies, built kitchen cabinetry, completely re-built large sections of my workshop, garden, photography setup.... the list goes on....

    Coding the Python Scripts...

    Initially, I coded it from scratch in Python 2.7, but the power was cut to my aging Pi and the SD card was completely corrupted. Since I was still working on it, I hadn't actually backed it up at that point. I got frustrated, and went off to do other things... months went by and I came back. Unfortunately, I could only remember the general gist of my old code, so I decided to redo it from scratch. I upgraded the Pi to a 3B+ model. To save time, I based my code (up to a point) off the code hints in the instructions, but decided to upgrade my Python version to 3.8.5 (the latest at the time of writing).

    Branching out on my own...

    Ok, so there are a few things that you should know about the instructions that I wish I knew back when I was building this the first time.

    1. The code from the examples works... but can have problems if you're running older versions of Python and certain combinations of the multitudes of Python plugins that you can install with the pip command.
    2. The code needs some interesting adjustments when you use different hardware to the specified components. I chose to use a BME680 sensor instead of a BME280.This had a few additional considerations:
      1. When I wrote my own code, I actually used the SPI wiring configuration to talk to the BME680 sensor. However, when I used the example code, I switched it to I2C. This required some not-very-creative rewiring.
      2. When using different connections, please note that different libraries are also needed to be installed into your code (SPI versus I2C).
      3. Also, some of the commands for the new sensor were somewhat different from the suggested code.
      4. Even using the same hardware, wiring choices can make a significant impact. Perhaps my greatest problem was using a 3.3V power source for my wind vane connection instead of the suggested 5V power supply. This greatly changed the expected values and I needed to write my own Python script to not only assign varying voltages to specific bearings, but to manage the inevitable confusion found in using a lower voltage due to rounding errors. Of course, there are ways to code around this, but that goes a little beyond the instructions used here.
    3. The instructions pertaining to MariaDB (a variety of MySQL database) are somewhat dated. You see, I'm from the era where MySQL was an incredibly popular database choice. However, databases like these, once they've stored thousands of weather records over time, can overwhelm the computational power of a Raspberry Pi. A better choice is to use a time-series database like InfluxDB which is lighter on processing, cuts any excess characters where possible, and has the ability to incorporate data retention policies that can delete/reduce stored data as it ages into obscurity/little practical use. Or to put it another way, do you really need every 5 minutely record (that's 288 records per day) of weather 3 years ago? Or would it be better to simply store the minimum, average, maximum temperatures and total rainfall for each day?

    A copy of my (mostly working) code:

    I have included not one, but two variations of my Python code that are closely adapted from the instruction code for your ease of use. Both assume a few things:

    1. You're using the same weather sensor array (vane, rain bucket, and anemometer) as I have, which is the same as the one mentioned in the instructions. (Note I'm not using the BME280 sensor, but the BME680, and my supplied voltage to the weather vane is only 3.3V instead of the recommended 5V. The different voltage to the vane won't actually affect the code here, but will in the voltage divider/wind direction files the instructions talk about.
    2. That you've wired everything as the instructions indicate (excluding my 3.3V variation, also, I chose not to use a soil temperature probe... mostly because they tend to corrode pretty quickly and it's just another cable I have to run from inside to the garden).
    3. You've installed Python 3.5 or higher, along with the requisite modules for the hardware. Most of those are mentioned in the instructions.

    The first version puts the recorded sensor data into a MariaDB (MySQL) style database. The second copy puts recorded data into an InfluxDB database. All bits highlighted in green may need to be adjusted for the sensor you use, the database name, database table/measurement name (depending on the database used) as well as the database username and password.

    Remember: You need to create the database, table (not needed with Influx), database user account, password, and grant privileges before you can connect your Python program and start entering your data. Also, please create your own version of the voltage_divider and wind_direction_byo  Python scripts as indicated in the project instructions. (These weather station programs below won't run alone).

    MariaDB version of WeatherBYO.py code (largely as it is written in the instructions)

    MARIADB/MYSQL weatherBYO.py
                     
      
    from gpiozero import Button
    import math
    import time
    import datetime
    import statistics
    import bme680_sensor
    import wind_direction_byo
    import os
    import mysql.connector
    from mysql.connector import Error



    store_speeds = []
    store_directions = []

    altitude_pressure_offset = 75 # number of hectopascals your readings are too low for a given altitude.

    # Sea level should be 1000 hPa on average.
    # To calculate offset, 120 hPa/mbar per kilometer of altitude.
    # Mine was 627m above sea level, so my offset was (627/1000)*120 = 75.24 hPa. (This is a rough guideline, but should be within a few hPa/mbar)
    # Adjust to fine tune with other local weather stations.
    # Simply add this to your raw sensor readings.


    rain_count = 0 # counts the number of "tips" the bucket has done.
    wind_count = 0 # counts how many half rotations
    radius_cm = 9.0 # radius of the anemometer
    wind_interval = 5 # how often the speed is reported (in seconds)
    cm_in_a_km = 100000.0
    secs_in_an_hour = 3600
    adjustment = 1.18 # Multiplier to compensate for energy lost pushing the anemometer
    interval = 300 # This runs the While true loop every 5 mins
    bucket_size = 0.2794 # The measured rainfall in mm for every tip of the bucket


    # Every half rotation, add 1 to the count)

    def spin():
        global wind_count
        wind_count = wind_count + 1
    #    print ("spin" + str(wind_count))


    # Calculate the wind speed:

    def calculate_speed(time_sec):
        global wind_count
        circumference_cm = (2 * math.pi) * radius_cm
        rotations = wind_count / 2.0

        # Calculation distance traveled by a cup in cm
        dist_km = (circumference_cm * rotations) / cm_in_a_km

        km_per_sec = dist_km / time_sec

        km_per_hour = km_per_sec * secs_in_an_hour

        return km_per_hour * adjustment

    wind_speed_sensor = Button(5)
    wind_speed_sensor.when_pressed = spin

    def reset_wind():
        global wind_count
        wind_count = 0

    def bucket_tipped():
        global rain_count
        rain_count = rain_count + 1

    def reset_rainfall():
        global rain_count
        rain_count = 0

    rain_sensor = Button(6)
    rain_sensor.when_pressed = bucket_tipped

    ##### DATABASE PREP ######

    while True:
        weather_db = mysql.connector.connect(host='localhost', database='weather', user='DATABASEUSER', password='NOTREALPASSWORD')
        
    # Loop to measure wind speed and report at 5 second intervals
        start_time = time.time()
        while time.time() - start_time <= interval:
            wind_start_time = time.time()
            reset_wind()
            #time.sleep(wind_interval)
            while time.time() - wind_start_time <= wind_interval:
                store_directions.append(wind_direction_byo.get_value())
            
            final_speed = calculate_speed(wind_interval)
            store_speeds.append(final_speed)

        wind_dir = wind_direction_byo.get_average(store_directions)
        wind_gust = max(store_speeds)
        wind_speed = statistics.mean(store_speeds)
        rainfall = rain_count * bucket_size
        ambient_temp = bme680_sensor.read_temp()
        pressure = bme680_sensor.read_pressure() + altitude_pressure_offset

        humidity = bme680_sensor.read_humidity()

        now = datetime.datetime.now().replace(microsecond=0)

        mycursor = weather_db.cursor()
        sql = """INSERT INTO table_name (AMBIENT_TEMP, AIR_PRESSURE, HUMIDITY, WIND_DIRECTION, WIND_SPEED, WIND_GUST_SPEED, RAINFALL) VALUES (%s, %s, %s, %s, %s, %s, %s)"""
        recordTuple = (ambient_temp, pressure, humidity, wind_dir, wind_speed, wind_gust, rainfall)
        mycursor.execute(sql, recordTuple)
        weather_db.commit()
    #    print("This entry was successfully inserted into the database.")
        store_speeds = []
        store_directions = []
        reset_rainfall()

                                                                                                                                                             57,1          Top

    InfluxDB version of the WeatherBYO.py code (again, largely as written in the instructions)

    from gpiozero import Button
    import math
    import time
    import datetime
    import statistics
    import bme680_sensor
    import wind_direction_influx #This is the wind_direction python script you need to create. I have named it influx for this particular script.
    import os
    from influxdb import InfluxDBClient


    location = 1 # Outside weather station
    measurement_name = 'sensor_data' #This is effectively the table name for Influx styled databases.
    store_speeds = []
    store_directions = []


    altitude_pressure_offset = 75 # number of hectopascals your readings are too low for a given altitude.

    # Sea level should be 1000 hPa on average.
    # To calculate offset for your altitude the rate of pressure drop is, 120 hPa/mbar per kilometer of altitude.
    # Mine was 627m above sea level, so my offset was (627/1000)*120 = 75.24 hPa. (This is a rough guideline, but should be within a few hPa/mbar)
    # Adjust to fine tune with other local weather stations. Simply add this to your raw sensor readings.



    rain_count = 0 # counts the number of "tips" the bucket has done.
    wind_count = 0 # counts how many half rotations
    radius_cm = 9.0 # radius of the anemometer
    wind_interval = 5 # how often the speed is reported (in seconds)
    cm_in_a_km = 100000.0
    secs_in_an_hour = 3600
    adjustment = 1.18 # Multiplier to compensate for energy lost pushing the anemometer
    interval = 300 # This runs the While true loop every 5 mins
    bucket_size = 0.2794


    weather_db = InfluxDBClient(host='localhost', port=8086, database='INSERT_DATABASE_NAME_HERE', username='INSERT_DATABASE_USERNAME_HERE', password='INSERT_DATABASE_PASSWORD_HERE')


    # Every half rotation, add 1 to the count)

    def spin():
        global wind_count
        wind_count = wind_count + 1
    #    print ("spin" + str(wind_count))


    # Calculate the wind speed:

    def calculate_speed(time_sec):
        global wind_count
        circumference_cm = (2 * math.pi) * radius_cm
        rotations = wind_count / 2.0

        # Calculation distance traveled by a cup in cm
        dist_km = (circumference_cm * rotations) / cm_in_a_km

        km_per_sec = dist_km / time_sec

        km_per_hour = km_per_sec * secs_in_an_hour

        return km_per_hour * adjustment

    wind_speed_sensor = Button(5)
    wind_speed_sensor.when_pressed = spin

    def reset_wind():
        global wind_count
        wind_count = 0

    def bucket_tipped():
        global rain_count
        rain_count = rain_count + 1

    def reset_rainfall():
        global rain_count
        rain_count = 0

    rain_sensor = Button(6)
    rain_sensor.when_pressed = bucket_tipped

    ##### THE LOOP OF DOOM... or just weather data hunting/gathering ####

    while True:
      
    # Loop to measure wind speed and report at 5 minute intervals
        start_time = time.time()
        while time.time() - start_time <= interval:
            wind_start_time = time.time()
            reset_wind()
            #time.sleep(wind_interval)
            while time.time() - wind_start_time <= wind_interval:
                store_directions.append(wind_direction_influx.get_value())
            
            final_speed = calculate_speed(wind_interval)
            store_speeds.append(final_speed)

        wind_dir = wind_direction_influx.get_average(store_directions)
        wind_gust = max(store_speeds)
        wind_speed = statistics.mean(store_speeds)
        rainfall = rain_count * bucket_size
        temp = bme680_sensor.read_temp()
        pressure = bme680_sensor.read_pressure() + altitude_pressure_offset

        humidity = bme680_sensor.read_humidity()
        

        data = [
        {
            "measurement": measurement_name,
                "tags": {
                    "location": location,
                },
                "time": time.ctime(),
                "fields": {
                    "temperature": temp,
                    "rainfall": rainfall,
                    "humidity": humidity,
                    "pressure": pressure,
                    "wind_speed": wind_speed,
                    "wind_gust": wind_gust,
                    "wind_direction": wind_dir
                    }
            }
        ]
        weather_db.write_points(data)
        store_speeds = []
        store_directions = []
        reset_rainfall()

    Once your data is in a database, getting it out without typing SQL queries every time seems important...

    The weather station project instructions suggest some ways you might consider displaying the data in a user-friendly way, but doesn't go into detail for that. Some of the suggestions mentioned include:

    1. Elastic Stack/Kibana... this is a "big data" package that is popular in fortune 500 companies. However, only very old versions of the software are included in the Raspbian repositories. Also, this is far from the most efficient option out there.
    2. Node Red: This is a really interesting tool. Some instructions encourage users to forgo writing a simple Python program and use Node Red to drive recording and displaying of weather data. However, this is far from the easiest system to use, and there are some quirks in here. I used the basic Python code to write data to the database, and then simply used node-red driven database queries to present the data in an attractive web-based dashboard.
    3. Grafana: This is, simply put, a nice easy way to show graphs and gauges of data. However, while this is a very popular choice for projects like these, there are quirks which are difficult to understand, let alone fix, but if you like a very customizable experience, then it's hard to beat Grafana. However, some plugins such as the "wind rose" are far from intuitive to use, and can crash the system.

    I originally looked into the Elastic stack, but it was somewhat problematic for an old Raspberry Pi. So I started using Node Red:

    Using Node Red:

    Node Red goes way beyond merely making pretty graphs. It reminds me of industrial microcontroller programming suites. Insert a "Node" that performs a certain function, then link it to another "Node" which takes the output of the first node, does whatever it needs to do, and spits out an output which may in turn be used by other nodes or just show/store the data somehow, or instigate some sort of electronic response.

    I'm not going to describe installing Node Red, there are plenty of sites that tell you how to do that. (Not least of all on the Node Red site). Once you've got it installed and running, you can simply use a web browser to go into the configuration interface. (If you're using your Pi directly, it'll be "localhost:1880"), or if you're doing it remotely, it'll be the <IP address of your Pi>:1880. So if your Pi is running with the IP address 192.168.1.100, the interface will be at the following URL:

    http://192.168.1.100:1880

    Welcome to the Node Red Interface....

    Chances are, you'll need to add a few extra "palettes" to include the charts and gauges you'll need, and the "dash board" which may not be there by default. Again, there are pages and YouTube videos telling you how to do that.

    Note that the left-most node is a timestamp. You can configure it to trigger the flows at regular intervals, or click the square button on the left of the timestamp node to trigger the flows manually. Without a time stamp, you won't run any flows.

     

    This is the flow I use to make a pretty Node Red dashboard. Note how the timestamp triggers multiple streams. Each is an SQL query, which ultimately, creates a chart.

    Node Red is extremely  powerful. However, when it comes to creating charts, it is very specific when it comes to data formatting the data for those charts. I haven't found a nice way to create multiple charts with a single command, or adjust them to show different time periods like:

    • Last hour,
    • Last day,
    • Last week,
    • Last month,
    • Last year.... or beyond.

    So many beginners will likely have a flow like mine, multiple SQL queries (the pale orange nodes), with current readings, 24 hour and weekly histories for each variable (temperature, humidity, rainfall, etc). Naturally every query is linked to the same database (orange node), then formatted using Javascript Object Notation (JSON) in yellow "Change" nodes, then graphed in the respective blue chart.

    I'm an absolute beginner when it comes to Javascript and JSON. This challenged me for quite some time while I was trying to find a working example for the charts.

    For those not familiar with JSON, the yellow Change node has the following JSON code. Note that CREATED and AMBIENT_TEMP are two column names in my MySQL database, you'll need to adjust them whatever you've called the columns in your database table:

    Node Red Gauges are also a little hard to follow without an example. Unlike charts, they do not need a yellow "Change" node like the charts mentioned immediately above, but instead need you to configure the Gauge node directly. Note the "Value format" field. Again, I'm using the AMBIENT_TEMP column from my database.

    Yes, that's:

    {{msg.payload[0].AMBIENT_TEMP}}

    In short, from the database, there will be a "message payload 0" (the first and only payload of data coming out, which starts with the counter 0). Show the value in the column, "AMBIENT_TEMP". Obviously, you need to rename it that for whatever column name is coming out of your SQL query.

    Remember: A gauge can show ONLY 1 value, so if you want the latest reading, you need to sort your SQL query in descending order by time, and then limit it to 1 record in your SQL query. That gets done further "up stream" in my pale orange function.

    Here is an example of my SQL query in the function node, which returns the most recent record (hopefully current reading if the Python script hasn't crashed, fallen over, ended up in a well):

    msg.topic = "SELECT AMBIENT_TEMP FROM WEATHER_MEASUREMENT ORDER BY CREATED DESC LIMIT 1;"
    return msg;

    Note that "WEATHER_MEASUREMENT" is the name of my MySQL database table. If you have a different name, you'll need to adjust the query accordingly. The ORDER BY CREATED DESC arranges all records in descending chronological order (newest first) based on the column "CREATED" which stores the date and time each record was added to the database. LIMIT 1 just tells to return the single newest record for the gauge.

    When you configure the charts, you'll need to assign each chart to an appropriate dashboard, and group so you put them in the right place.

     

    Here is my "Dashboard" of somewhat current readings. In case you're wondering, Warren is Wren's dad, and he loves to talk about the weather when he calls. I created this page so I can just pull it up on the fly. I can't share this with him online... because if I did, that would significantly reduce the amount we have to talk about. Hehehe. Please note that the sensor is inside at this point, so wind and rain is subject to the playfulness of felines, rather than actual weather conditions. However, I really like the circular "compass style" gauge here for wind direction.
    Here's some basic historical graphs. I generally keep the 24 hour, weekly, monthly, and yearly pages separated for easy reading. The wind direction graph is a little jarring to say the least, but it does show the bearing over time.

    Problems with Node Red:

    I've already suggested that it's quite cumbersome to use as far as adjusting records based on varying time periods/scales. In fact, there really isn't a nice way that I've found to do that. Also, for the weekly and even worse, monthly and beyond scales, the thousands of data points take nearly 10 seconds to load at the weekly level, most of a minute for monthly, and the yearly. (test data).. crashed my Pi. So there are definite down sides with MariaDB and Node Red. I'm sure it can be made more efficient, but I haven't bothered so far.

    Also, lets say that you want to plot three lines (min, mean, and max temperature) for each day on a single graph. This is possible using Node Red, but it is anything but trivial to do. I haven't found a nice way to do this, so I actually started looking to other options to overcome this limitation.

    I've also had problems with MySQL connections dropping occasionally, sometimes my Python program runs perfectly for days, then arbitrarily collapses. So I come back to find that no records have been added since that collapse. I haven't found any good reasons from the logs to suggest what the problem is. I suspect there may be some hardware issues like thermal regulation that may be at work here.

    Am I still running this system... yes... because it works pretty well.. as long as I don't want to dredge up too much data.

    Using InfluxDB and Grafana:

    This is a much newer, and very popular way to do things. The hardest part in Influx is getting the Python to talk to it (included above). InfluxDB is a "Time Series based Database" which incorporates some amazingly efficient code (good for a Pi) and has the ability to drop old data when it isn't much use anymore. Grafana is built to connect to a data source (MySQL/Influx/cloud sources/even sensor data directly) and create a dashboard of web-accessible gauges, graphs, and customise colour thresholds so you can easily see if there's a problem.

    Time series databases like Influx may confuse old-school database users because there's no "create table" function. You simply add data to the database and it creates the table as needed. Influx calls the resulting "table" a "measurement". Columns can be split into two categories. Tags, which are indexed for easy searching, and Fields which just hold non-indexed values. If you're using Grafana, you'll want all of your values (temp, humidity, rainfall etc) as fields, and the only searchable "Tag" are the time/location. Note that Influx creates a time column by default to any record. It's a "time series" database after all.

    Specify your sources, and do NOT use "Default" in Grafana queries if you even think you're going to add/change to another database.

    For every query that you'll use to create a graph or gauge, I strongly advise you to select the database in question. As soon as I installed Grafana, I connected the MariaDB and went to work using my data to create a pretty dashboard. When I later installed and configured InfluxDB, I changed the default database because I got tired of having to switch the database over. However, that broke the entire dashboard connected to MariaDB.

    Grafana queries also add a lot of features by default that may seem quite extraneous to a simple SQL query coder like myself. At first, I wondered why the "Group by: time($_interval)"  was there by default, and simply removed it. That was a mistake since this function groups data into (usually averages) using the records over a few seconds, minutes, or even days/months/years. If you remove this function, the graph will just show every data point (bumps in a graph). Bear in mind the viewed time range (say last hour, day, 3 months, etc) will still work.

     

    Here you can see the Grafana layout based on the MySQL data. That upward spike in Temperature and Humidity, and also the downward spike in Air pressure all occurred at the same time where a certain feline decided to start playing, chewing and clawing the sensor......You may also notice a couple of straight sections in the Temp/Humidity/Pressure graphs... those are the times the python script/database connection failed on me.
    Another layout but this time running off the newer, more streamlined InfluxDB system.
    Here we have three lines on our line graph. Sorry, just started collecting data a few days ago... so not many data points. This is something I didn't find a way to do on Node Red.

     

    Things I really like about Grafana...

    Grafana truly is far easier (in most cases) to use when creating graphs from data. It's a specialist graphing program that doesn't have a lot of other features that just aren't needed like Node Red does. The ability to generate graphs of differing time periods/scales using the same SQL queries is amazing. However, please note that the gauges will average out the data over the entire selected time period, so if you think of "charts = history, and gauges = current" Think again! Of course, you could change your SQL queries for the gauges to limit them strictly to the latest result (see my above SQL query in the Node Red section, or use the menu in Grafana to do the same thing) to overcome that tendency. However, I actually find it interesting for the gauges to work this way. It actually grew on me...

    The performance when generating graphs, even with large datasets is substantially better using Grafana than the Node Red dashboard. There's very little lag, even using MariaDB. However, Influx has the edge in terms of performance and data visualisation.

    Grafana gets even more efficient using Influx, which of course has better long term data management. However, the main reason I like Grafana is the intuitive way to create multiple line/series graphs. Simply create a query for each line/series and you're set!

     

    Things I don't like about Grafana...

    There's only a few niggling things, firstly, that there is no "Compass" style gauge like Node Red does. For wind direction, I haven't found a good option. Grafana has a plugin called "Wind Rose" which I've personally found to be difficult to configure, and suffers from several bugs.

    The default query is a little interesting to adjust. You'll see the query as a series of boxes in rows, and some rows have + symbols. Where you click inside each box matters. For instance, the select section will usually be followed by a box that says "field(    )". Clicking inside the parentheses will provide a drop down list of the fields in your database measurement/table. Note: Tags are not included as an option if you're using InfluxDB. Clicking anywhere else will merely offer you a drop down list of "remove". This took me a little time to get used to. Also, every query will have a Group by: "time($_interval)" bit that seems to cause problems if you don't get it exactly right, as you need to have some form of aggregation (Mean, Max, Min, Mode, etc) in the select statement in order to use the group by function. More often than not, I'll remove the group-by function entirely if I want sheer raw data, and watch as my graph/gauge starts to work again.

     

    Things I've learned along the way:

    1. Make time to do, and complete a project like this. It's ok to do the soldering one day, and coding the next. But if you go months between "sessions", you'll have a hard time remembering what you're up to, or even how you did something previously.
    2. Cats like sleeping on electronics, playing and occasionally ripping out sensors when they get caught in the cords.
    3. There's always more than one way to do something. However, instructions of all stripes may not work for your particular situation, and may be out of date. It's not unusual for there to be a better way to do things. So do your research.
    4. Newer Raspberry Pies have better handling for sudden power outages than older models.... which leads me to...
    5. BACKUP YOUR SCRIPTS/DATA/SYSTEM IMAGES!
    6. Some rudimentary parts like Pi "Prototyping Hats" may not be clearly labelled. Take the time to test each connection with a multimeter to figure out where everything needs to be connected.

    Finishing up....

    I just need to tend to the basic hardware now.

    1. Design and 3D print a case to protect the Raspberry Pi itself, since mine will be inside, waterproofing isn't necessary. However, since I have a soldered hat with my circuitry on it, a standard Pi case won't work.
    2. Design and 3D print a sensor shield for my BME680 sensor (temp, pressure, humidity sensor)... replace cat-mangled sensor with new one.
    3. Attach new sensor shield to existing sensor array, run the wiring and check it.
    4. Attach all sensors to their final site, connect the wiring to the Raspberry Pi indoors.
    5. Boot the thing up and see how it goes.

     

    February 2021 update..

    I've designed and printed the case for the Pi. If you're interested, please see my "Thingy" (uploaded to Thingiverse) found at:

    https://www.thingiverse.com/thing:4776051

    Here is my Pi case in the design phase
    Here is my Pi case in the design phase

     

    While the case is printing, I wired RJ12 and RJ45 sockets I'll integrate with the case so I can use the cables that came with the weather sensor kit.
    I recorded which prototyping cables needed to go where, (shown here) and then later replaced these connections by soldering the BME680 sensor to some CAT-6a networking cable I had laying about. I later use hot glue to coat the connectors so I can protect them from corrosion. Naturally I had to make sure the small square sensor in the middle of the circuit board was not covered.
    My Pi Box, hot off the printer. This is a 32 hour print on 0.1mm resolution. Aside from some stringing (easily sanded off) and some loose fibres, (easily brushed off) it cleaned up very nicely.
    ...But the next pic here is a "let's pretend I'm not shamelessly holding it against a nice blandly photogenic wall

     

    And to show how the sockets look after carefully placing and shaping them.. mounting the extension cords for the power and HDMI ports, connecting the Krone-styled RJ12 and RJ45 ports, and checking all the Pi sockets line up with the holes in the plate.

     

    I still need to finish the sensor shield, install the sensor, mount the sensor array to my intended spot, and of course, mount this box to the right spot in the garage. Then all that remains is cabling it all up. If all goes well, it should be running by next week.

     

    I'll attach images of those steps (and I've uploaded my designs to Thingiverse, should you want to print your own version) when I do those. But for now, I have other things to do..... <cue groan here>

     

    March 2021 Update:

    I was somewhat "on the way" to designing my own sensor shield, but then I found this on Thingiverse:

    https://www.thingiverse.com/thing:1067700

    I downed my partially completed Fusion360 models, and skipped straight to slicing and printing. I spent the better part of a week printing the parts out of PETG, and then sprayed the parts with UV resistant white paint. The project was clearly designed by an imperial-loving American, so I used some imperial thread, wing nuts and u-bolt that I bought from my local Bunnings. I was honestly surprised that they were sold in such a convenient location.

    This is the (mostly assembled) shield sitting upside-down on my (partially assembled) barbecue trolley. As always, there are other projects vying for my time. The threaded rod is the "left over" I had from the assembly of the sensor shield.

    So I mounted the shield onto the existing weather station kit (anemometer, wind vane, rain guage) etc. Installed the temperature, humidity, and pressure sensor (the BME680) into the shield.... and got ready to mount the sensor array onto the garage....

    ... and found that I needed to build a mount that would enable the array to be mounted around the guttering on the roof. Sigh.

    I managed to scrounge a scrap piece of kitchen bench from my other projects. Painted it in several layers of UV resistant white paint, bored the mounting holes into the wood, and strapped the entire sensor array to the garage.

    Remember: Take note of which way your wind vane base is pointing. Otherwise your bearings will be wrong. There are little N, E, S, W markings on mine. However, other kits just have a little N marking the north point. Use a compass (or the compass app on your phone in a pinch) to ensure correct alignment. Also, because the wind vane is weighted on mine, I needed to ensure the vertical mounting post is actually vertical. A lop-sided mount will favour a particular direction in weak (or no) wind and skew readings.

    So what does it look like?

    I know I took a photo of it somewhere, but I have since lost it. I'll take another when it isn't raining outside. Stay tuned. I did call this "how NOT to build a weather station", right?

    So all that was left was wall-mounting the Pi box inside the garage where:

    • There was power.
    • The cables to the sensor would reach
    • It would be accessible enough to repair should I need to.
    • Unlikely to be damaged, showered in saw dust, grinder shards, or subjected to other dangers.. like collisions with my bandsaw/drill press trolley as I stow them against the wall.

    In my case, I had a choice: Power and ease of access, or sacrificing those for close proximity to sensors. So I chose the former. Which meant....

    I needed an extension cord for the telephone cables. My Cat 6 cable was more than long enough.. but the after poking the telephone cables under the roof tiles, and along the rafters, I was 1 metre short.

    Unfortunately, the local hardware store did not sell "RJ12 extension cords" so I needed a "joiner" (female to female) connector and two of the shortest RJ12 (telephone) cable I could find. Which was inconveniently, 5 metres each. Which I grabbed and installed.

    Initial in-situ power up and location-based networking woes:

    I turned it on, and the little lights on the Pi fired up as I expected. Great!

    I tried to connect to it... nothing.

    Then I realised.... I am running multiple Wi-Fi access points. The front half of the property runs off one (where I did all my prototyping and testing)... and now that the weather station (and Pi) is in the back, I needed to reconfigure the Pi to connect to the other access point.

    If you've forgotten how to do that, I recommend the raspi-config command... assuming you have root access to your Pi. With network access failing, you can't simply remote into it using SSH. So I had to plug a keyboard and screen in.

    So I did that (yay for easier access for screen/keyboard ports to the Pi) and after a minute of wi-fi configuration and rebooting. I could connect to it... remotely.

    While I'm here....

    I also strongly recommend you set an assigned/static IP address to the weather station so you aren't playing the game called "Which IP address did my router give my Raspberry Pi?" and that's a game that's exactly as fun as it sounds. You can do that in your router, or on the Pi itself. Sometimes I set both, just to be doubly sure.

    Here is some real weather data, involving real wind, humidity, temperature fluctuations, and more. What a long road this has been! There's more if I scrolled down, but this is a screen shot.

    June 2021 Update:

    I was chatting with a friend the other day, and when I told him that the weather station was up and running, his first question was:

    "So it is shared on your web site?"

    Well it wasn't at the time, and it's not for the lack of trying. I've had a few tentative attempts, but the sad fact is that I haven't found a way to safely share it with the general public. All access involves some risk, the turn key options of Grafana (like snap shots) do not update with future information nicely, and the fact that I am running this thing on a Raspberry Pi means that if multiple people browse it all at once, the system may crash with the extra workload.

    Some of my experimental (and code adapted) plugins had some trouble with many of the "turn key" options, so I had to get a little creative and merge several disparate systems in a "let's all play nicely, children!" plaintive plea. It's entirely possible that any updates or service interruption to any part will kill the whole system. That's  not a system I'd like to share with the general public.

    So for these reasons, I've decided not to open it up to the public. Unless I can upload the captured data to an open source weather service.. I'll look into that.

    Another forehead slapping moment...

    Ok, so I've built this thing, and had it running in various prototyping stages for almost a year. The data may not mean much (since it was inside until March) and also, I've tweaked the program several times to adjust for minor differences in sensor readings. Temperature is fine, rainfall is fine, humidity is fine.. but you know what I got horribly, horribly wrong? Air pressure.

    Air pressure, not as conversational as rainfall, temperature, or even wind for that matter... got forgotten about. I connected the sensor, wrote my data harvesting program so it got the raw data, wrote it to the database and moved on to pretty things like graphing my data, and making 3D printed boxes.

    So what was wrong with pressure?

    I was checking my readings against several weather stations, and finding that my pressure levels weren't just wildly different from coastal weather stations as expected, but different from weather stations in my area. How different? Well how does 71 hPa/mbar too low sound.... if there's a pressure difference that high from my place to the nearest weather station (maybe a few kilometres)... For the meteorological mavens out there, that's the difference between a calm sunny day at the beach, and a category 5 hurricane.. so just a bit off.

    I wrote to an Atmospheric Scientist named Dr. Robert Fovell from the University of California, L.A campus (UCLA) whose digital course I had purchased and recently finished. Given that air pressure drops as you gain altitude, it didn't make sense that weather stations both at my elevation of 627m, and at sea level were reading very similar results. So I asked him about it.

    He kindly informed me that weather stations were indexed to sea level, so the readings reflected differences in weather, rather than the effect of elevation between one location and the next. I didn't know that. He also told me a handy formula on how to (roughly) compensate for altitude.

    He stated: "Pressure will drop roughly 120 hPa/mbar per kilomete of altitude". If 1000 hPa is the usual average reading at sea level, it's not hard to calculate the difference.

    So since I'm 627m up, (627m/1000m) x 120 hPa = pressure difference due to altitude.

    That's 0.627 x 120 hPa = 75.24 hPa. My readings by this formula should be 75 or so lower than sea level if I leave it uncalibrated. Adding that difference of 75 to my existing readings, and voila, you have a correct-ish reading.

    So I created a little variable in my Python scripts called "altitude_pressure_offset", assigned it to 71 (because that was actually closer to the other weather stations in my area). Then I simply appended the line of code that got pressure readings from the sensor to add the variable value to any result.

    At the end of the day my problem, was that I completely forgot to account for altitude. Since this is my first weather station, I've never had to consider other stations. So ideas like indexing it to sea level for easy comparisons between the readings of two (or more) weather stations was completely outside of my awareness. Thanks once again to Rob for the help.

    So is it finally over?

    I guess we'll see. I've noted some really strange behaviour between Influx DB and Grafana which sometimes fails to represent the data accurately. However, since I'm using both MariaDB and Influx, I just switch the source of certain gauges/charts over to MariaDB until I get a believable (and hopefully accurate) result. I'm sure I'll be tweaking this system, trying to understand what's going on with Influx for a while. It is probably 99% of where I'd like it to be.

    When the system displays some questionable results, I needed a reference to check my data. So a quick Google search later, I found that another person has setup a similar weather station just a few blocks away, and has been sharing their data for years. <insert image of me doing a self-targeting forehead slap here>.

    Gotta laugh, right?.. even if it's slightly hysterical/manic.

     

    Associated projects, and experiences learned:

    I'm truly amazed at what a $100 computer the size of a credit card, running an SD card as a hard disk can do. Now that I have the code (and some spare sensors) I intend to build a similar setup for my cheese cave, and internal house temperatures (for comparison with the weather station).

    Dedicated display devices:

    I have another Raspberry Pi that I've connected a 7" touch screen to. My original intention with that was to use it as display for the weather station, but I've found that it's a bit small to read from across the room. The touch gestures are a little cumbersome, and there's no nice way to fit a lot of information on a screen that small for "up close" viewing.  I've also found the light leaking from the panel makes it too bright at night time for sleeping, and dimming the screen makes it hard to read. If I were to go down a cost-effective route, I've found that repurposing my ancient iPad or old laptop for this is a good choice, but If you want what I'd consider the "best" experience. I'd strongly consider using a 10" or larger e-ink (probably monochrome) display if I could stretch my budget that far on a spare Pi for a clean, easy to read display.

    However, simply accessing the Graphana/Node Red pages from my phone, tablet, PC, laptop, and even smart TV has worked so well, I don't really feel the need to build a dedicated device at this stage.

     

    Database size...

    One of the things I expressed concerns for in the building process, was that the database, over time would exceed the Pi processing power. I've left the MariaDB collecting readings every 5 minutes, and after roughly 6 months, and nearly 53000 rows, the database takes up a grand total of 12MB. My SD card is 32GB, and has 25GB free. So assuming I decide to keep 10GB for "swap space" (which is insane) I have enough space to record 625 YEARS of data. With InfluxDB running along side, I can expect a solid century at the very least.

    Of course, I don't expect the Pi to last that long, certainly not the SD card. I'd probably expect a few years from the Pi, and maybe a year or two from the SD card if I'm lucky.

    Computational performance is most important when the graphs are being rendered, not when the data is being recorded. Grafana is much more efficient than Node Red. As a month of data being plotted with numerous SQL queries takes over 20 seconds to render. Grafana does all the plots with simplified, often single queries, and so far takes under a second to render all the graphs, even trailing back through the latest 6 months of data.

    Naturally, I expect the data to get harder to manage as it becomes more plentiful.

    Database management and data backup is key:

    Regular backups and "clearing off" data from the Pi will help immensely. I'm likely to do a mysql dump of the data to one of my more powerful systems every year or so to maintain a smooth running system. I can plot the data much more easily from there.

    Conclusion:

    I hope I haven't scared you off. I've learned a lot, used systems and software I've never tried before. I appreciate both the software and hardware expertise it requires to make a working product like this. Even designing and 3D printing my case taught me a lot. So the next time you're looking at a device like this "on the shelf", maybe you too will appreciate the effort it takes, the considerations and prototyping it requires to get a reliable product. I have a lot of respect for industrial designers, electrical & software engineers, and of course, those with the vision to coordinate all of that.

    One of the best things about this, is that I can change anything. Don't like the way something is done, code it! Think a weather site who's nearest station is 20Km away at a different altitude isn't accurate enough for your situation? Add yours to their system. Want to rearrange and easily view your data in pretty graph forms? Pick a way to do that. Doing things for yourself teaches you so much. While the process is frustrating, time consuming, and always has the possibility of failure, the rewards are commensurately great. That said, I can't say that I've saved money on this one. But if I made another, I can use what I've learned, and adapt it to my needs.

    So what's next?

    I'm thinking a cheese cave "weather" station next. Strip it down to temperature, humidity, and maybe air quality. (I don't need wind and rain), perhaps have a couple of sensors to monitor multiple "zones" in the fridge to see how consistent the temperature really is from top to bottom. It will be especially handy when monitoring the affinage (aging) process, which gets more important the longer cheese ages.

    Wow am I getting nerdy!

    Stay safe and have fun!

    Ham.


    Things have changed a lot since the birth of the Internet. With everything moving to cloud services, media streaming, shared calendars, collaborative online workplaces. Web browsers are perhaps the second most heavily used piece of software after the operating system itself. In many cases, web browsers have overtaken office suites. Think about that.

    If you spend one third of your life sleeping, shouldn't you have a comfortable, healthy bed? A good pillow? Yet many people prioritize things like drinking obscene amount of coffee to get them through their weariness, caused by poor bedding situations. Web browsers are like that, we spend so much time on them, but don't realise when a choice we might have made "way back when" is negatively impacting us.

    You dear reader, might not be using the best browser for your needs, and your life might well be impacted by that choice.

    Before you get upset....

    Every Internet-enabled device, whether that's a Windows PC, your iPhone, or your smart TV will come with some sort of pre-packaged web browser. However, whether you're a die-hard Chrome fan, or have simply run with the default browser, the chances are that you have fallen into the trap of using "one tool for every task mentality".

    Browser icons
    Browser choice is almost as divisive as OS preferences, religion and politics. However, I'd like to outline the pros and cons of each.

    How did we get here?

    Brand loyalty, comfort zones, and preferences. Each reason (however well considered) have equally sparked many arguments over which is the best browser. Now I'm going to cut to the chase here and say this categorically:

    No browser is the best in every situation.

    know you have your favourite. I know you've come to know and love whatever browser you choose. I'm not saying that you shouldn't have your preferences. I'm just saying that the more militant browser zealots out there should perhaps step back, take a deep breath, and relax a little. Let me tell you why.

    A browser is just an application, and there are many ways to program one. Differing priorities and ways to design a user interface will appeal to some, and repel others, but which are popular?

    At the time of writing, the browser rankings came in at:

    1. Google Chrome (80% of all Internet browsing).
    2. Mozilla Firefox (7%)
    3. Microsoft Edge/Internet Explorer (5%)
    4. Apple Safari (4%)
    5. Opera at a little over 2%.

    So let's look at some of the big ones, and delve into the pros and cons of each.

     

    Google Chrome:

    When Google Chrome was released, it revolutionised the layout of the browser user interface. It has grown in popularity as mobile devices grew in number. It is popular because it is the default browser on almost every Android powered mobile device. It also has a pretty clean interface that other browsers have since emulated to varying degrees.

    One of the other keys to it's success is that Chrome's compatibility is almost universal, as it runs on Windows, Mac, Linux, Android, IOS. So it runs on almost any computer and mobile device... but you might not know that it also runs on some smart TVs, Bluray players, and streaming devices. 

    The reason that 80% of people use Chrome usually stems from the clean interface, ability to use it on every device, and the fact that it is very fast. Speed is perhaps one of the biggest features to draw people to it.

    Powering Chrome.... it might sleek and fast, but that performance comes at a power cost.

    However, while Chrome might be "nigh on universally compatible" it is also universally resource intensive. In fact, in many situations (on Android OS included), it chews up insane amounts of memory, CPU processing time, and as a consequence, power. This might not matter on desktops, and other devices on mains power. However, the battery life on your mobile devices can be cut significantly, sometimes hours, even if it's running in the background. So it might be worth considering a different browser for battery powered devices. 

    Do you care about security and privacy? If so, you probably shouldn't use Chrome.

    Now I use Chrome some of the time, but I have a love/hate relationship with it. One of my greatest concerns is the long history of security vulnerability... combining this with Google's data harvesting track record, and shameless third-party information sharing, I just can't bring myself to trust it fully. As such, I would not do my Internet Banking on it, or manage anything particularly sensitive on it. I've also worked in several places where security policies exclude all Chrome installations from the internal network, so there are some serious concerns by IT security specialists. 

    However, if all you do is email, chat with your family, and look for tasty recipes/gardening tips, then maybe you don't care. Google might use your data to merely customise the ads you see to something you might actually buy... so some might even see that as a benefit, rather than a drawback. Remember, what you share on social media is another integrated, highly connected means to track and profile your online behaviour... regardless of the browser used.

    Interestingly, there have been more secure variations of Chrome (notably NOT made by Google.... like "SRWare's Iron") which are available on Google Play, or directly downloadable for free from the SRWare site. I humbly encourage Chrome fans to give it a go. You can get it here:

    https://www.srware.net/iron/

     

    Apple Safari:

    Safari has long been the default on all Apple devices. For a long time, it has been considered by many as something you use when there isn't another browser installed. However, Safari has come a long way in the last few years, and offers a similar interface to Chrome, is almost as "snappy", but because it has been optimised for Apple devices, can substantially increase the battery life of Apple Devices in certain circumstances. If I'm browsing heavily, with many tabs open, I can get as much as an extra hour to 90 minutes of battery life on my IOS devices by using Safari over Chrome.

    I use Safari on my Apple mobile devices like the iPad and iPhone. I have never had a problem with it, and strikes a balance between power usage and speed. I like the fact that it's regularly maintained by Apple and you know it's not likely to have any major incompatibility issues with MacOS (Apple computers) or IOS (that runs Apple mobile devices). However, I did find some Java applications to run better on Chrome, so I've used it for that in the past.

    That said, Safari is heavily integrated with iCloud accounts, so if you're particularly security conscious, you might want to adjust the settings a little bit. However, it can also share browsing history between your Apple devices and that may be very handy if you're hopping from one Apple device to another. Cloud integration can be seen as a convenience to some, or a security flaw to others. 

    I feel that Safari has improved enough to be considered as a power-saving alternative, and yes.. it's a little slower than Chrome, which is built first and foremost for speed, with little regard for anything else, but Safari hasn't ever let me down, or had major issues. So it's a steady choice. 

    The down side to Safari is that it is limited to Apple devices. So Windows users have to look elsewhere. I've seen Safari being ported to Windows in the past, but that was back in 2012. 

     

    Mozilla Firefox:

    Firefox has been around for a long time, and when I switched from what was then called "Internet Explorer" (now called Edge), I really liked the speed of it. Firefox is my browser of choice for desktops. It doesn't integrate with iCloud, it doesn't report to Google. However, it can synchronize your bookmarks and browsing history between devices if you wish it to.

    It works on Mac, Linux Windows, Android, IOS, so it is as universally compatible as Google Chrome. I would say it's nearly as fast as Chrome, but goes easier on the battery for my mobile devices, but your mileage may vary.

    That said, you may have to install some plugins to make it work the way you want it to. I tend to run several ad blocking packages... which cleans up my viewing experience and saves me precious download quota. 

    In contrast, Chrome has almost everything but the kitchen sink prebuilt into it by default, all the systems are loaded and ready to go....which is why Chrome loads things quickly, but also sucks down the power. Firefox has a similar appearance because has also emulated a lot of the Chrome interface, but allows you to choose which bits to install and run. I feel it's a little more tailored, it's more secure, and is one of the few truly "non-aligned" browsers out there.

    Firefox and family...

    There are some Firefox-inspired alternatives like "Ice Weasel" that are mostly built for Linux distrubutions, but if I had to recommend a browser for general purposes, Firefox would be a good choice.

    Mozilla has done a great job in maintaining Firefox's compatibility through numerous OS updates over the years. It runs very well, and the worst I've ever had to do is empty out the cache when eBay's CSS stopped working. A situation I've had to do on all of these browsers at some point or another.

     

    Microsoft Edge (Formerly Internet Explorer):

    I suppose it's a running joke that Internet Explorer (Now Edge) has been the browser of choice used by many Windows users... merely to download one of the more popular browsers when Windows has been reinstalled. Somewhat ironically, Microsoft has improved it in several important and security-related ways, yet most people still perceive this browser (and core part of Windows) as inferior in one way or another.

    As a part of Windows, Explorer/Edge does a lot more than merely decoding web pages in your everyday browsing activity. It is actually a means to read all web-related files, it also forms numerous interfaces, and integrates several web technologies into Windows itself. You can remove it, but what's left of Windows.... will be be interesting. If you get bored, look it up. Linus Tech Tips has done it to varying degrees over the years and has videos about this on YouTube.

    While I still have reservations about the security of Microsoft products in general, and I detest the house-of-cards structure of their updates. (You need to install all the previous updates to get to the current version, rather than the modular, skip 50 updates and just plug in the latest option of other alternatives) it's a completely serviceable web browser.

    I'm not going to lie, Windows can certainly suck the power down without any help from Edge, and so I feel it's a little unfair to blame the browser. Windows is often installed with numerous third party applications (some manage your WiFi/ethernet adaptors and their resulting power usage with varying degrees of success) that happen to correspond with increased browsing activity caused by Edge. It's not always easy to separate the browser from the rest of the running apps. With Apple, there's the "Apps currently using significant power" feature which is a big help toward this goal. Windows doesn't seem to have an equivalent that I'm aware of. However, task manager may give some circumstantial/suggestive insight.

    "Historically Quirky"

    As a web administrator, I feel that I'd be remiss if I didn't mention the "Quirks" with Internet Explorer/Edge. For many years, web pages have had to include a second version of the code especially for Internet Explorer/Edge users. Microsoft didn't fully comply with the standards of the Internet (despite being on the board that made these decisions), and so the browser interpreted the code a little differently to the others. Things that would work fine for every other browser fell apart, or had unexpected behaviour. So a lot of web developers, even to this day detest this browser based on the conditioned negative experiences Microsoft's "unnecessarily independent" streak engendered.

    The different code interpretation was officially called "quirks mode", and in days gone by... had to be tested extensively before letting any site to "go live". Now that Edge/Explorer has lost much of the market share, it isn't the concern it was.

    So what conclusions should you draw here?

    I'm not saying that you need or should change. I'm saying that you should consider using the best app for the situation. Using one browser in all circumstances may offer consistency and possibly useful integration options. However, this may be at the expense of battery life, security, performance, and dare I say it, reliability.

    I just want you to broaden your horizons, and try others, so you know that the browser you use is indeed the best for your needs.

    Take care and happy browsing!

    Ham.


    © 2022 WaywardHam.net. All Rights Reserved.