Category Archives: Editorial

“User-Agent” Headers Holding Back The Web

Every time you visit a website the name and version of your browser is sent to the service. In fact with every requested image, video, and style sheet the same data is sent again and again. This not only wastes bandwidth, it also subtly encourages web makers to rely upon it as a shortcut to make services work consistently across platforms. Later browsers then include more tokens in their “User-Agent” header to maintain compatibility with these fragile services. Over time the header becomes larger and the web more brittle. For example, Internet Explorer 11 identifies itself as “Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko”. Can you tell which part communicates that it is Microsoft’s Internet Explorer?

Of course it’s impractical for every web site/service to test every possible combination of browsers and platforms. So those of us developing sites and services only test the most popular browsers at the moment. Over time this leads to a web which caters to a mix of the most popular browser of the past and present, depending upon the time any given service was last made. As more and more devices leverage HTTP for the Internet-of-things this problem may grow more complex. Web standards and feature detection can help.

With well defined standards and run-time detection of features it’s possible to avoid the trap of ‘sniffing’ the browser from it’s UA headers. And while cutting edge features and services may benefit in the short-term from taking the shortcut of browser detection, they can also leverage vendor-specific prefixes of features in flux. Once standardized the prefixes can be replaced with official and non-prefixed names.

My experience detecting significantly different platforms such as mobile or internet-of-things (IOT) devices do still have some valid uses for the UA header. But ultimately they may be better served by a new, simpler header or more platform-independent designs. Until then Mozilla’s recommendations are a reasonable place to start.

In recent years even the once-dominant Microsoft notes the weaknesses and problems with UA headers. Sadly, my experiments sending an empty or minimal UA header have found too many sites broken to recommend the approach to non-technical users.

How about you? What do you think of UA headers?

Is Ad Blocking A Form Of Looting?

One description of the increase in ad blocking is that it’s a kind of boycott. While that may be the view of blockers the content producers may see it differently. For them advertising pays for their effort to create the content. So when people consume their content without any payment (in the form of attention) then their incentive to produce suffers.

This ‘boycott’ of advertising—while still taking the ad-supported services—appears to have much more in common with looting. Looting often occurs when large numbers of people feel deprived or exploited. Like a kind of vigilante justice one could argue the careless and invasive advertisers have pushed users to this extreme.

Of course a boycott sounds a lot more noble. But if I’m not mistaken that would involve avoiding the entire business, not using their services while dodging payment. Picketing is another feature that can accompany boycotts. Those bothered by ads do have options to express their discontent on social media, forums, and comments; though, admitted not always directly on the site of the business itself.

Alternatives to ad-funding do hold promise: micro payments, donations, and subscriptions. Each has some friction for users to get involved. Perhaps when doing so is easier than installing an ad-blocker things will turn around.

So what do you think? Is ad blocking more like a boycott or looting? Something else entirely?

VirtuaWin Vs. Windows 10 Virtual Desktops

VirtuaWin‘s virtual desktops has long provided the ability to expand your Windows work-space without adding extra physical screens. Now that Windows 10 includes its own virtual desktop/work-space feature I’ve found it both an improvement and a small step backwards. After a few months with both let’s break down how they compare.

Here is a table documenting my findings as of January 2016. (Since Windows 10 and VirtuaWin may evolve in the future I’ll try to keep this up-to-date.)

behavior or capability VirtuaWin Win. 10 Desktops
Boss key to hide other screens Yes No
Compatibility issues with some Intel drivers Yes No
Customize number of screens Yes (up to 20) Yes (100+)
Customize shortcuts Yes No*
Jump-to-screen shortcuts Yes No
Show a window on all screens Yes No
Switching from windows with admin. privileges Yes Requires extra key press
Switching from certain** modal windows No Yes
Vertically aligned screens Yes No
Windows with admin. privileges appear on all screens (bug?) Yes No
Wrap around when switching from first/last screen Yes No
*It’s possible to make alternative shortcuts for Windows 10 desktops using 3rd-party tools like AutoHotKey.
**My LockyWindow product has used a modal window when unlocking to prevent manipulating the underlying KeePass window. VirtuaWin’s switching feature is disrupted by such windows.

While VirtuaWin is more feature packed I personally don’t miss most of the capabilities absent in Windows 10’s desktops. Those most lacking were the jump-to shortcuts and the option to wrap around from the first/last screen. Still, the ability to switch away while administrative windows have focus is much appreciated. Window management in Windows 10 Desktops also feels more user friendly than VirtuaWin’s tray pop-out.

How about you? Do you use virtual desktops? If so which solution works best for you?

Unused Work Does Not Have To Be Discouraging

Soon after being hired my boss told the story of a project he worked on for a significant amount of time; like months. It never saw the light of day. Subconsciously I think I denied that would ever happen to me, at least not for any major work. Four years later I had not yet encountered such hardship. Yet soon enough that all changed.

Worse than seeing my work tossed, I had to make the call to discard a coworker’s serious effort. After a long delay a key component of the work had been lost. So instead I had to redo the entire project from scratch. Ironically enough my effort turned out to be doomed as well.

At the very end of the rewrite, with only one feature left, I discovered the platform vendor’s latest development kit lacked any encryption libraries. (Finding out so late was a rookie mistake on my part.) When they finally produced a suitable kit the platform had changed so much I couldn’t port my rewrite in a timely manner. So with much chagrin I rewrote it again with the suitable kit and all was well–except for my ego.

Despite wasted time and resources one can typically find something good whenever work goes unused. Over the years I’ve been reminded of a few:

  • It is a learning opportunity
  • Helps avoid getting overly attached
  • New ideas often accompany do overs
  • Practice
  • Redos are a chance to develop grit

Of course these rarely add up to match the lost time or money. But if the learning opportunities are maximized it can save a lot more in the future.

It can be especially frustrating for those of us who are technical to accept non-technical reasons for work to be mothballed. For us “business reasons” can feel so abstract and intangible. It’s almost as if it’s arbitrary and frivolous. Still, businesses exist to produce a profit, and even organizations have to make trade-offs when their resources are limited.

Until time travel is sorted out, forecasting client needs or project requirements will almost certainly remain an inexact science. While we wait for our future overlords to return let’s take solace by remembering the good that can be salvaged from the ashes of our abandoned work.

You Can Raise Any Price Except ‘Free’

When prices go up existing customers feel like they got in at the right time. Prospective customers who missed the sale may feel left out, unless there is a hope for sale in the future or price increases are consistent. But there is one price that seems to have more inertia than any other: free.

A while back on This Week In Enterprise Tech one of the hosts made the point that permanently lowering a price is challenging because of the potential for resentment. After all, no customer wants to find out what they just paid good money which they could have saved. Yet they also mentioned that raising the price is typically not a problem. As a consumer I’d say this is true.

Products improvements and inflation have conditioned me to expect most of the products or services I enjoy to increase in price: appliances, movie tickets, food, and so on. (Preferably this is gradual or otherwise feels justified.) So why is it that seeing a product go from free to paid often involves a backlash? Examples include LogMeIn, ZenDesk, and more recently Steam mods. My guess is the mental gap between free and even one dollar is larger than from one dollar to five.

Initially my preference for free products was driven by the desire to save money. Though over time I became fixated on the other benefits as well:

  • Easier sharing with friends and family
  • Feeling secure that I won’t forfeit the purchase when changing platforms
  • Simpler experimentation without having to go back and pay for what works best (such as for evaluation-only trials)

Of course nothing is truly free of cost. This was often clear in the quality of free offerings compared to paid ones. Microsoft Paint was included with Windows for free while PaintShop Pro was a paid product. Ultimately I got more use out of PSP. Doom modding tools were free, still I found myself far more productive with the non-free Klik & Play; albeit making simpler projects.

Even in mobile gaming where ‘free’ now dominates, typically with quality included, the shifting and hiding of costs is increasingly distasteful to me. Producers are tempted to not only make things enjoyable but rather tease players into paying ever more. Sometimes it manifests as pay-to-progress or pay-to-win. And while ‘shareware’ and trial editions have a similar model they are often explicit, one-time payments. Producers are less likely to string players along.

Now that I’m older and more patient paying for quality products and waiting for sales appeals a lot more to me than in past. Being a producer has also changed my perspective on what ‘free’ really means. Yet there’s still that twinge of discomfort when the ‘buy’ button is in the way. Perhaps it’s the feeling of lost opportunity since I could spend the money on something else. But once I’ve paid the bills and saved enough for long-term goals there’s very little reason to hold back. After all, I can’t take it with me.

Browser Support For Custom Schemes Too Troublesome?

Every so often my mobile phone’s browser will spontaneously open an app store. And apparently it’s a known problem with shady ads abusing the prefix (a.k.a. URI scheme) of links. Typically this prefix is the familiar “http:” or “https:”, but when other, recognized values are used it can open software outside the browser.

One of the earliest such schemes I came across was the “mailto:” form. And when a link is activated it often opens one’s e-mail application to send mail to the address indicated. Early on this was quite useful, and some standards were created for interoperability. Nowadays it has expanded to include non-standard schemes for specific services and applications:

  • “steam:” starts the Steam gaming software
  • “itms:” opens iTunes Music
  • “market:” initiates Google Play’s marketplace

Yet rarely have I found a need for these custom schemes to do something meaningful. Often they serve only to get in the way like podcasts only publishing through iTunes, which I don’t have, or the random ads opening Google Play.

Programming As A Privileged Career

Some friends in more traditional careers like farming and manufacturing have opened my eyes to the privilege it is to have a job in software. Looking at the bigger picture reveals that programming for a living depends upon many other roles to enable such an abstract pursuit. Working from the bottom of Maslow’s hierarchy I can imagine these would at least include: food production, waste management, housing, medical care, police, a justice system, electricity production, hardware manufacturing, and transportation services.

One experience in particular stands out as a moment of awakening. During long drive on vacation conversation turned philosophical as my friend shared his perspective on disappearing skill sets maintaining expensive and old, yet very profitable, manufacturing equipment. Since he was experienced and flexible he was able to keep the machines running, but he encountered few as willing or knowledgeable within mechanics and electronics. While I’d like to be as adept at keeping my existing belongs chugging too, doing so in the face of increasingly –maybe unnecessarily– complex things makes repair and maintenance less practical. And sadly few can afford to be the repair experts when we consumers are so quick to replace them with new and shiny.

Farming in North America was a career for 90% of the population as late as the American Revolution. Now it has dwindled to about 1%. A highly specialized society has certainly broadened the choices for careers in the modern age. It has also increased the need for higher levels of education. And in scarce job markets the competition for work means employers can be selective.

Despite the downsides one sometimes faces as a software or services producer, it is still quite a privileged endeavor compared to many others. Next time I’m waiting in line for service I’ll have to remember all this. I’d rather not go back to the job behind the counter, and I certainly don’t want to make it any worse for those who have no choice.

Despite SuperFish, Bundled Software Is Not All Bad

Recent news surrounding Lenovo‘s shipping the insecure adware known as SuperFish has stirred up more hate for bundled software. Yet I’d guess we have all relied upon pre-installed software and enjoyed the benefits of additional bundling. Most devices and PCs come ‘bundled’ with operating system software such as Microsoft Windows or Apple OS X. Other less controversial categories include media software (think DVD or Blue-ray codecs), games, office suites, and security tools.

Samsung is a company known for its bundle-ware. So much so that Korean courts have ordered them to allow customers to remove the software from their phones. On the other hand I’ve found some of their offerings quite useful:

  • Calendar and tasks are solid and Exchange compatible
  • Customized tray is quite convenient
  • Integrated power-saving mode has helped with battery life
  • Samsung Knox allows me to encrypt my phone without rooting
  • Timer and alarm clock apps are both solid and easy to use
  • Voice recorder is solid and advertisement free

Knox was apparently so well received that Google has integrated it into Android. My other, non-Samsung phones have also included a mix of useful, and not-so-useful bundles. A few of the best included the Swype keyboard and a handy automation feature.

Of course not all bundled apps are appreciated: Samsung’s Magazine app is not my first choice, the sketchbook is not the most obvious, and I’m not a big fan of Uber’s ride-sharing app being automatically installed with a recent update. That being said, on the whole the good ones far outweigh the others.

Bundling can have downsides besides annoyance or security bugs. When platform makers have too much power, such as a monopoly, their bundling can be anti-competitive: swallowing up whole markets. Still, from the customers perspective the lower prices, (sometimes) enhanced ease-of-use, and heavy discounts on bundled software are tough to resist. Besides gradually giving more and more money to fewer and fewer companies is a disadvantage few customers probably consider when they’re shopping.

Imagine buying a new PC and not being able to play DVD’s or music without paying extra? That was the case with the original Xbox because of the added cost to license the patents. Today most devices can playback media using common, patented technology because those licenses are already part of a bundle. Likewise most can open a PDF document, a spreadsheet, and update their own hardware drivers without extra effort because of bundled software. So next time you encounter a new device with a desktop full of icons remember there may be some treasure hiding there.

Ad Blocking Robs Everyone

Internet services and web content take time and energy to develop and maintain. Since the Web opened to commercial business and broader public adoption in the 1990’s it has been increasingly funded by advertising. Yet tools which block ads, like Ad Block Plus, undermine this support. Without compensation for their work the people who produce websites and services will have to find another way to get paid or stop producing.

Of course nothing in life is completely free, but the increasingly easy access to the Net make it seem that way. While we consumers pay for access to the network, it’s often advertisers who pay for the content we enjoy. This makes a large volume of work available that might not be accessible. Before commercialization web access was typically only available at large institutions like universities, governments, and large companies. So naturally content was tailored for this audience; research, educational resources, and business records.

As more consumer content (like games, music, and news) came on-line it became more worthwhile for the general public to get involved. But without ads growth was slow. Since then on-line advertising and network technology matured some advertising is yielding to direct purchasing and patronage. It’s happening with movies on Netflix, music on Spotify, and publication with Patreon and Google Contributor. Though, given how modest direct contributions are compared to market of paid and free-with-ads-or-in-app-purchasing it appears most consumers opt for ads over paid subscriptions. In other words, we’re more willing to give up time than cash.

Ads also lower the barrier to entry which makes the web more accessible to those who are unable to contribute directly to producers; whether because of the cost, technological, or regional barriers.

Certain ad blockers and blocker producers claim that they’re only avoiding annoying ads. Yet they still consume the content regardless. So it’s like saying “I only steal from stores when the payment is distasteful”.

AdBlock Plus looks especially hypocritical as they extort payment from advertisers to avoid blocking. Perhaps they’ll also unblock their own advertising

Now I’m no saint either. Before fully understanding the consequences, I used such blockers as a way to avoid annoyances on the web. In fact the act of writing this article has made me rethink my use of RequestPolicy and similar tools to avoid loading unnecessary assets. One could take this view to the extreme and say that disabling plugins like Flash is theft since ads may depend upon it. Accessibility tools likewise may restrict how the web is presented. However, in such cases the intent is significantly different and advertisers often have a way to fall back to self-hosted ads, ads without plugins, or without images. Even so I’ve decided that my blocking of all 3rd-party resources is going too far.

We as consumers can chose to avoid advertising on the Internet, but the only ethical solution is to pay producers ourselves or do without their services. Anything else is theft. Otherwise the decreasing effectiveness of ads will probably lead to less content for all of us.

Poisoning Ourselves With Plastic

It’s easy to overlook just how much plastic one uses day-to-day. But the earth is a closed system that notes every wrapper, foam cup, and throwaway bag on it’s very permanent record. And as the refuse breaks down it works its way back to us through the food chain.

Since the oceans act like a sponge the creatures living there consume the plastic bits left behind. While this isn’t recent news there has been some recent attention. Catalyst ABC’s Plastic Ocean piece explains the situation. Around half way through the video I began to take stock of how I have been unintentionally contributing to the problem myself.

Being ecologically minded I thought I was doing well by shopping with reusable bags, drinking from reusable bottles, and harvesting some tea and coffee grounds for composting. Living in a recycling community also helps reduce the problem. But they don’t accept plastic bags, wax paper, Styrofoam, or complex items like electronic gadgets.

When I began to consider everything I consume it became obvious there is more room to improve. During any given week my non-recyclable consumption breaks down as follows:

  • 4 plastic, single-cup, coffee containers
  • 4 plastic wrappers for tea
  • 3 plastic, vegetable wrappers
  • 2-3 thin, plastic, produce bags
  • 2 plastic, zip bags for nuts
  • 1 wax and cardboard fruit container

Given 52 weeks in a year that makes 754 items that have to go somewhere. One idea is to switch to tea that comes in paper wrappers but even that may not be the optimal considering how the paper is produced. Of course this isn’t the whole picture. There are also holiday gifts, treats offered, and packages purchased at various times throughout the year.

Reuse and recycling can help too. Though ultimately, the best solution is to reduce consumption. Saying ‘no’ to oneself and others can be awkward and occasionally painful. Yet if one wants to enjoy food, especially from the sea, without plastic contamination then the bigger picture must be kept in mind every time temptation arises.