All posts by Paul

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.

FocyOverride Gives You Control Of Browser Focus

UPDATE: Since Firefox 57 this add-on no longer works, and because of lack of interest I’ve discontinued it.

You can control the default form focus with this new, premium Firefox add-on. As a long-time KeePass user I often found myself clicking on the same user/e-mail field time and again to begin auto-typing. A few years back I made this to override the default page focus, or lack thereof. Now I’m offering this as a product so you too can take control of Firefox’s form focus.

It can also highlight focused inputs, select input content, and help with voice control by blurring focus so elements can be called out. Upgrades are free for life, and a money-back guarantee is included.

For more information see the product page at PaulRRogers.com/focyoverride.

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.

Buying New Often Borrows From The Future

Trying to save the world by upgrading to more efficient models may actually do the opposite. This appears especially true of electronic equipment whose actual lifespans are in free fall because of the race to get the ever shiner, newer model. When those newly produced products are made from non-renewable resources one is subtracting from what would be available in the future. To be blunt, it’s stealing from children to indulge ourselves.

Honestly, I’m no saint in this regard. From 1992 through 2014 I’ve used eight different desktop computers, six laptops, at least six monitors, and eight cell phones. Sadly about half were thrown away or broken.

While some of the upgrades have proven more efficient in terms of processing the trend among desktops and phones is to draw more power. Case in point, my first desktop had a 240W power supply while my latest needed 700W, largely because of the fancy video adapter. Charging has also become more frequent with smart phones. My Blackberry smartphones often went weeks without a charge. Now it’s rare to find a smart phone guaranteeing more than 24 hours of battery life. Even the move from power-hungry, CRT monitors to flat screens has its disadvantages.

SusteIT’s report concludes that one should prefer to maximize what one already has in use considering the total impact of manufacturing computer equipment. Despite the complexities involved I feel confident recommending that any PC or laptop made within ten years should suffice, with proper care. Beyond that point it should still be usable for casual workloads.

Not every household item is the same of course. Some appliances like outdated refrigerators are better recycled for scrap than kept in service. When to draw the line is not difficult to find out. A few web searches on “life cycle assessment” and the kind of appliance should help. Deciding between repair and replacement is a similar situation with a similar solution.

Maintenance is another factor in maximizing use. Taking care can also benefit resale value when it is time to replace something. Until such times are necessary let’s try to resist the urge to prematurely upgrade. Otherwise the legacy we leave will include overflowing scrapyards and landfills.

Buying new products brings with it a responsibility to future generations, whether or not it’s obvious. Next time you’ve the opportunity please do everyone a favor and seriously consider purchasing used or refurbished instead.

Freebies From Platform Makers Are Destroying Markets

As platform makers like Apple, Google, and Microsoft expand their offerings to include more and more features they often destroy the markets of their developer partners. These companies are natural monopolies as the sole maintainer of their respective platforms; even the relatively open platform of Android is migrating to increasingly proprietary apps and services that Google alone controls. Yet because of their ability to influence through defaults and brand they’re also in a position to swallow whole markets.

Apple’s Ping, Google Wave, and Microsoft’s Windows Phone all show that such expansion efforts are not always a runaway success. Unfortunately there are also examples of platform producers acquiring and pricing others out of markets:
* Apple Siri and Google Now compete with 3rd party voice recognizing assistants like Vlingo
* Google’s purchase of DoubleClick has accelerated the race to the bottom of advertising pricing
* Microsoft Internet Explorer destroyed Netscape’s browser market
* Microsoft Office 365’s bundling unlimited storage for less than $10 per month may prove decimating to competitors like Dropbox

Recent anti-competitive measures are not limited to bundling and acquiring. The move to official application stores has also further tightened the grip of platform developers on users who once depended upon 3rd party providers. Apple prohibits 3rd party stores on it’s devices. Google has also tightened certification requirements to get their increasingly core applications onto hardware. This leaves users with fewer practical choices and developers at the mercy of a relatively small number of platform makers.

Freebies from companies of all sizes seems to be an increasingly significant portion of the software and services used by everyday consumers. Imagine if the same were true of cafeterias in malls, with the largest portion of consumers taking samples from many different food vendors. And not only once but on an ongoing basis. Such a market would be untenable. This is all the more acute when a monopoly does so because they have the most immediate access to users of their platform, and often they can offset loses elsewhere.

Companies should not be forever pigeon-holed into their original business market, that would stifle innovation. However, once a company gains a significant or controlling share of a market I do think it is better for everyone if there were some reasonable limits to their expansion. Perhaps if expanding their platform were justified, for example for accessibility, then the default would have to show alternatives and the internal Application Programming Interfaces (APIs) be exposed for others to utilize.

Requiring customers to buy only on faith is another unrealistic solution. Allowing free products and services has it’s place, but I believe that much like the shareware market of the 1990’s the current freeware and services cannot last. Bitcasa’s recent pricing increase is a sign of things to come as smaller companies are unable to compete.

Issue Tracking Needs Are Specialized

Different companies have different kinds of issues and ways of managing them, so I probably shouldn’t be surprised there are many software and service solutions available. And as an engineer it’s tempting to fall into one of two extremes: build it from scratch or buy something and deal with it.

Do-it-yourself was my preferred approach as a young and ambitious programmer. After all, what could be better than a custom-built solution? However, within five years of making and maintaining such solutions I found myself in the get-it-and-forget-it camp. Another five years later I think I’ve settled somewhere in the middle.

My first experience with issue-management systems was on-line support forums. These were simple message boards requiring a lot of moderation. Shortly thereafter I was exposed to a somewhat custom, Lotus-based solution. This time though, as a support technician handling the problems. Since the solution required Lotus, and only worked within the network, it seemed ripe for replacement with a web-based frontend. Studying web programming made me eager to try my hand at making something better.

Building custom intranet solutions came next with employment at a company branching out into other industries. It was interesting to see how the various needs could be met with custom software. At first simple comment systems were enough for employees to keep track of their customer complaints, notes, and follow-ups. Of course e-mail and IM were also being used heavily to supplement.

In time, however, maintaining so many different systems became burdensome for only two or three developers. Increasingly I also saw patterns in the various needs that also fit some existing solutions.

One of the first to be used in house was Trac, and it worked well for our needs initially. Integration with software repositories was nice. Some add-on’s for things like discussion boards worked well enough. The wiki, its integration, and its export options were my favorite features. At one point I even used the mantra “If it’s not in Trac it doesn’t exist” in a push to unify the disparate repositories of knowledge.

Over time though it’s simplistic reports and lack of built-in, multi-project support were too problematic. Other solutions were tried with varying levels of success and failure. One of the most lasting was Altassian JIRA and it’s wiki offering. Customization options did not appear obvious or immediately better to me at the time. Though, some in management were more familiar and appreciated it’s built-in flexibility.

Experiments along the way pushed the boundaries of such trackers; pressing them into service as the official source of truth, customer complaint tickets, feature tracking, road-mapping, to-do/task management, time tracking, and discussion. Ultimately I’ve come to realize that specialization is needed; even if it takes the form of creative use of, extension software for, or rethinking about existing solutions. And at times it is better to have many, separate solutions than keeping it all in one.

Help Or Perfection

Each of us has our own idea of what is ideal for any given endeavor. That unique perspective also means involving others introduces the risk that the reality won’t exactly match our personal vision. As a recovering perfectionist I often feel getting help and achieving perfection are mutually exclusive. Yet my experience has also been that the results are often fruitful when I step aside and let others do what they do best.

Of course allowing someone with no experience or talent undertake a significant or fundamental part of a project, especially without any supervision, is unwise. Still, any undertaking involving others must find the balance between a learner-friendly environment and encouraging laziness or incompetence.

One key factor is the significance of the project itself. Imagine the construction of a nuclear power plant compared to a painting for a friend as a personal favor. If the power plant were not well constructed it could impact millions of lives for hundreds of years. If the artwork didn’t turn out well then it would only disappoint a friend. I find such comparisons help maintain a healthy perspective when it is tempting to stress over someone’s work.

Remembering my own past work is another tactic that helps overcome an unhealthy obsession with perfection. If I were still working and reworking those same early efforts then I’d never have left preschool. They also demonstrate how far each of us has progressed precisely because we were allowed to make mistakes.

Working alone for long periods is one contributing factor to perfectionism. When making something solely for oneself it can lead to an extreme where the work is never quite good enough.

Sometimes even the learning itself leads to an endless cycle of improvement. In such cases it is helpful to have another, unbiased perspective. Consider the friend who looks over your shoulder to say how good it looks or how great it’s working; despite the flaws that jump out at you. People experienced in mentoring are best for this, assuming they aren’t overly concerned with perfection.

Despite the freedom and independence working solo has brought me over the years perfection is actually closer the more I interact with other skilled professionals. We introverts may be a productive bunch, but there is still much to learn from the more social among us.

‘Easy’ Is Relative

When evaluating someone else’s work I often fall into thinking “it looks so easy”; especially when the concept is simple. Yet when embarking on actually doing something that seems easy myself I’ve found that most often it’s quite a bit more difficult. Occasionally the reverse is true: what appears very challenging turns out to be a breeze.

One deceptively simple example is partially automating pausing and resuming Pandora Radio with a keystroke. While purchasing the Pandora One player/service is a quick and inexpensive solution, I was interested in automating the user-interface myself. (There are also 3rd party clients with hot-keys, but they exclude the advertisements which are how I indirectly support Pandora’s free service.)

Image Search

My first attempt was a Sikuli script to find the Pandora tab in my browser, then the play or pause button, and finally click it. As I tried reusing it on other computers I noticed higher resolutions meant Sikuli needed more time to find the tab. And if the tab was off screen, because I had too many tabs open, then it also failed. Finally the Pandora icon didn’t always appear the same on different browsers and OS’s.

Pandora’s Keyboard Shortcuts

Next I tried using AutoIt to get the Pandora window more reliably. Thankfully Pandora’s player has keyboard shortcuts, so there was no more need for image recognition. Unfortunately I found that using ‘Alt’ in the pause-play shortcut meant that browsers like Internet Explorer thought they should open the file menu. Another problem is that the key Pandora chose (space-bar) is also the default to scroll down; therefore, when the player’s frame is not active my script would only scroll the page instead of resuming or pausing playback.

Blind Mouse

To workaround the space-bar problem I resorted to blindly clicking the mouse where the play/pause button resides. Alt was still opening the file menu, so the mouse position had to carefully aligned to work whether or not the menu was visible.

Since the process was blind I retrained myself to always leave the window at the top. (One could auto-press ‘Home’ to get the browser back to the top.) Even so, the clicking was too quick for the browser to redraw at times. This required adding a small delay before clicking to get the desired result.

Off-screen Trouble

Using virtual desktops meant Pandora wasn’t always on screen. SysInternals Desktops solution was especially troublesome because each desktop was so isolated software didn’t work across them. Switching to VirtuaWin helped; though, after the script was done it left the Pandora window on the current desktop instead of putting it back where I had left it. AutoIt allowed me to minimize the window for the time being. (A better long term solution may be to keep track of the move and put it back on the original ‘desk’.) Minimizing also required it’s own delay or else the automated click may happen after the window is already off screen.

The final, ‘simple’ procedure turned out to be:

  1. Open or raise the Pandora window by title
  2. Wait a moment so the flash player can draw the button
  3. Auto move the mouse to the button’s menu-or-no-menu position
  4. Simulate the click
  5. Wait for the click event to actually play or pause
  6. Minimize the Pandora window

While this won’t work for everyone (AutoIt only works on Windows), and has a lot of room to improve, it does make my life a little easier. The process has also been a lesson in UI automation and the value of seemingly simple things.

Adventures In Self-Hosting: Owncloud Review

After using it as my primary file-sync and backup service for about 10 months I’ve concluded Owncloud still requires an hour or so per month for a tech-oriented person, but it’s worth it. With enough persistence, and tolerance for some lingering quirks, Owncloud could work for you; whether or not you know how to setup a server.

Disclosures by Edward Snowden and limits to Dropbox’s free accounts have made Owncloud an increasingly tempting option. Whether Dropbox, Apple, or any other 3rd-party-cloud claims they cannot read our data the biggest players all still control the software which handles the keys. So if they get curious or a government warrant appears then they can always push an update to read whatever we have not encrypted ourselves. This didn’t particularly concern me as I’ve little to hide from the authorities. But every well-intentioned backdoor has the potential to be exploited by less trustworthy types. Dropbox’s 2G limit (16G with enough referrals) also proved limiting as my collection grew.

So around December last year I began trying to self-host Owncloud with a Raspberry Pi and Owncloud version 5. Since it lacked authentication logging I had to add it manually. Thankfully more recent versions already have this built-in. It worked well enough–if slowly at times–for the first few months.

Once my wife began using the server along with me problems started cropping up: disappearing files, logs complaining about locking, and upgrade trouble. This was around version 6.0.x, and Sqlite seemed to be the culprit as it’s not intended for multiple users. Manually migrating to Postgresql did the trick; things were back to normal. Version 7 should include official support for Sqlite-to-Postgresql migrations.

If you’re working with a lot of different files often then Owncloud feels a bit slower to sync than Dropbox; though, it’s not perfect either. Pauses or network outages also seem slightly more disruptive to Owncloud.

Another caveat is that both Dropbox and Owncloud don’t work very well with Git clones. They’re slow to sync because of the many files involved, conflicts can get messy, and file locking can get in the way. So if you’re working with projects checked out of Git then you’d be wise to keep your clones in a non-synced folder. Checking in often or backup another way should suffice. If not then Gitlab is a popular, self-hosted alternative to keeping local-only clones.

Each major release of Owncloud brings welcome new enhancements, and aside from my Sqlite issues, the upgrades have been relatively painless. I’d definitely recommend it for a business of any size or technical individuals. Perhaps some packaging tools or OS distributions can make the process easy enough for even the most basic user to get their own cloud.

Update: Owncloud’s client now makes selective sync much easier, and it has coped with my careful selection arrangement nicely. Also, there is a alternative known as Seafile which transfers multiple files more quickly than Owncloud while also offering self-hosting.