Category Archives: software

Diigo – Software I Use Every Day

Diigo (a “personal knowledge management tool”) is a browser extension[1] that allows one to collect all sorts of information from across the web in a central repository where it can be easily accessed, shared, annotated, searched, and remembered.

I don’t know that I aspire to be a polymath, it is more like I hunger to be one. I consume information in copious amounts and synthesize it together to help me understand the world (and share what I learn). But this presents a great challenge – how can I consume massive amounts of information while not losing what I have learned previously?

The answer is augmentation (along with an acceptance of my finite nature). In the past this might have included a physical filing cabinet, for me it consists of Diigo and a few other primarily digital means.

When one saves a site or article to Diigo, Diigo creates a record associated with that specific page. I then add one or more tags to categorize (create a taxonomy) this record among all my other records.

In addition, if the page includes content I consider to be of important, I highlight it and Diigo saves my highlights as well. It also allows me to add notes to the page. Recently I was reading an article about Thomas Oden and something he said connected with something William Barclay had said, so I added a note about the association.

Sometimes the pages can be summarized in a paragraph or two – in which case I attach a description to the page. I also use the description as a place to remind myself why I cared about this page.

Right now I have 25,361 items in my Diigo. An item is a record which is associated with a specific piece of content (usually a web page). Under many of these items are highlights and notes which help me remember the importance of the content.

I personally pay for their Professional level. It is around $60/yr. ($5/mo.), but I consider it well worth it.

There are some features/enhancements I’d like to see Diigo add in the near future, I’ve outlined my ideas below:

  • Archive.org Integration – Right now Diigo can save a copy of a page if requested, which is great, but I’m wondering if it would make sense for Diigo to integrate with The Wayback Machine and cache every saved page.
  • Implement Hierarchical Taxonomies – Right now tags are a flat taxonomy, that is, no tag is a parent or child to another tag.
  • Separate DB of Trash Links – Right now I tag worthless pages as f-value, so if I come across them again in the future I don’t waste time rereading the material. It would be nice if Diigo maintain a per-user database of trash links and had a small visual reminder when we visited a useless site (e.g., a small trash can on the Diigo button).
  • Acquire / Integrate Zlink’s Better Search Chrome Extension – This nifty little extension lacks transparency about how it handles data, where it is stored, and hasn’t been updated since late 2015, but it offers a number of highly useful features. My favorites are:
    • The ability to vote up or down search results, also to delete search results (thus when one searches for the same term again, one sees customized search results).
    • Customization of search pages with navigation to other sites – e.g., makes it very easy to repeat the same search using another search engine with one click.
  • Expand API – The API currently supports only two methods – retrieve bookmarks and add bookmarks. It needs (at a minimum) the additional abilities of editing and deleting bookmarks.
    • I’d also like to have a way to exclude certain tags / sites from the retrieved bookmarks.
  • Ability to Save Chrome Extension Pages – For whatever reason, Diigo doesn’t seem capable of saving extension pages from Google Chrome’s store of extensions.

 

  1. [1]They also offer mobile apps, but I rarely use.

Local Production Environment Choices for WordPress: DesktopServer

Photo of Man at Computer

DesktopServer

This product is essentially a WAMP / MAMP application that has been extended to include some additional WordPress oriented functionality.

In its free version the customizations that stood out to me are

  • its inclusion of Xdebug,
  • support for Domain Name Mapping,
  • auto-creation of Apache Virtual Hosts,
  • and its auto-install of WP.

I was surprised to note that they list PHP 5.5 as being included but no mention of PHP 7.

When one moves up to their premium product ($100) one receives

  • a trace utility for PHP debugging (which one?),
  • LAN sharing for mobile testing,
  • a few plugins (bypass login, airplane mode, enhanced Coda2 preview, Adobe Dreamweaver),
  • “blueprints for automated WordPress configurations”,
  • the ability to direct deploy to a live server,
  • and the ability to import (from BackupBuddy, Duplicator, BackWP Up, BackUp WordPress, InfiniteWP, ManageWP), export, and archive sites.

I didn’t spend a ton of time with it, as at the time I was looking for something that was virtualized – e.g., using Vagrant or Docker.

I’d want the premium version –  but $100 is quite pricey, imho, especially when much of the product consists of open source components.

Don’t get me wrong, I understand this has had some significant time and effort put into it, but I’ll blog about a few other solutions available that are free and open source and you’ll see how they can stand shoulder to shoulder with DesktopServer.

Setting Up A Development Workstation

What Is This?

I wrote this primarily for myself – sometimes I don’t remember everything I do when setting up a workstation for development purposes…it may be of interest to others.

You’ll note that there are several areas missing from this arena – no build automation, task runners, etc. Maybe I’ll get around to adding them once I settle on some…but in the meantime, this still works for me.

[See bottom of this document for a list of revisions to this document]

Everybody Uses…

Version Control

  • Install Git for Windows for version control, ensure that Windows PATH is selected during the install so that you can use git from the command-line without needing to use Git’s special CLI.
  • I’d recommend also getting yourself a GUI to manage Git. Personally, I prefer that the editor I’m working in provide Git integration, but sometimes this isn’t available – in which case Atlassian’s SourceTree seems to do a good job.

Editor / IDE

IDE stands for Integrated Development Environment. This software offers numerous tools to expedite code development.

Editors on the other hand are much simpler, yet some people prefer them. We’ll look at a few of each of these.

Editors

  • NotePad++ – This is my base editor. The User Interface isn’t amazing, but it works beautifully. Especially awesome when it comes to working with large files.
  • Brackets – An open source project by Adobe, has a number of useful extensions. UI is attractive, I use this one over NotePad++ usually, except for note files (NotePad++ remembers the text you enter even if you don’t save the file) and large files.
  • Visual Studio Code – Another open source option by Microsoft.

IDEs

There are a huge number of options, Wikipedia has a fairly extensive list.

  • JetBrain’s phpStorm – JetBrain makes a number of different IDE’s and unfortunately isn’t the clearest on which IDE one should purchase. phpStorm handles most web-based languages, but lacks a clear emphasis on JavaScript that webStorm has (but which lacks some of the php integration).
    • See Gary Hockin’s Debugging VVV Vagrant Setup with PhpStorm for helpful instructions on integrating one’s VVV setup into PhpStorm for interpreter and xdebug purposes.
      • If you are wondering where your xdebug.so file lives: /usr/lib/php/20151012/xdebug.so
      • And Code Sniffer:
        /usr/local/bin/phpcs
      • And PHPUnit:
        /usr/local/src/composer/vendor/phpunit
      • And Composer:
        /usr/local/src/composer/vendor/
      • And www folders:
        /srv/www/
      • And PHP:
        /usr/bin/php/
  • Microsoft’s Visual Studio – An IDE with a long and venerable history, more recently integrating a number of Xamarin cross-development features into the IDE. The Community Edition is free.
    • WARNING: Depending upon options selected, this installs Hyper-V; if you are running another virtualization technology (Virtual Box) expect to experience BSoD errors. Unfortunately, I know this from personal experience and I am not alone.
    • Supports Visual C++, Visual F#, Python, C#/.NET, Android/iOS.
  • Google’s Android Studio – For the creation of Android apps.

Interacting with Databases

  • You’ll want something that provides a handy way for interacting with databases, in which case I recommend HeidiSQL.
  • If you don’t have a database server currently, you’ll need one. A couple options include MySQL, MariaDB, Microsoft SQL Server, and PostgreSQL.

Virtualization

Image Management

  • You’ll need something to create/edit images with, I recommend paint.net. Despite its connection to a very basic predecessor (Windows Paint), this software can work miracles.
  • JPEGmini – Usually I wouldn’t recommend using lossy means of reducing image data footprint, but JPEGmini manages to offer significant lossy compression without any visible deterioration to the image, unfortunately it only works on jpeg files.
  • FileOptimizer – Offers compression for numerous different file formats in a lossless manner.

File Transfer

  • FileZilla is a good FTP client.
  • However, FTP is a plain-text protocol, so I’d look at using something SSH based like SFTP. In this case I’d recommend WinSCP or built-in functionality in your IDE (phpStorm for example).

Other Tools

  • You’ll also want a copy of ConEmu or another command line interface (CLI). This software is so much better than the default Windows console.
  • A good archive/compression application will make life much easier, and 7-Zip is the perfect application.
  • Hosts File Editor – While it hasn’t been updated since 2011, I find this software extremely handy when I want to make edits to the hosts file. It offers a nice GUI front-end for the hosts file and enables a number of different nifty features not built into the file itself.

Revisions To Document

  • 10/18/16
    • Added location of www pages on Vagrant.
  •  10/16/16
    • Moved VVV under Vagrant.
    • Added link to Louie R.’s article on using Vagrant/VVV.
    • Changed Basics for Developers to Version Control.
    • Added link to VVV Wiki Article about Connecting to MySQL.
    • Added section on database servers.
    • Added link to article on integrating with PhpStorm, location of xdebug.so.
    • Added location of Code Sniffer; PHPUnit, Composer.

jpegMini: One Simple Step to a Faster Website

TLDR;

If you have a website, you should be using jpegMini. It is an amazing tool that decreases the size of (JPEG) image files without decreasing the visual quality of the images.

Why Does the Size of My Image Files Matter?

When someone visits a web page in a browser (ex. Google Chrome or Internet Explorer) the browser downloads all the files associated with that specific page to the local computer. The larger the files, the longer it takes for the download to complete. The web page can’t be fully loaded into the browser until the download is complete.

Most people won’t wait long for a page to load – after a few seconds most will browse to another website that offers the same information faster.

Decreasing the size of your images decreases the amount of data the browser needs to download which makes the page load faster and results in happy people (your viewers).

What Makes jpegMini So Special?

Some of the most popular options for reducing image file size are compressing, resizing, and (automatically) intelligently choosing images. Google has a great article explaining these and other methods of optimizing images.

jpegMini can be used alone or in combination with some or all of the above mentioned options and it will deliver size reduction even after all of the other options are run.

jpegMini uses complex algorithms to reduce the amount of data in the image while maintaining the same visual appearance. Essentially, the algorithms exploit the way our vision works – we don’t see perfectly and thus two similar images can appear identical to us.

Lets take a look at how this works in real life. I downloaded this image of a baby from Pixabay at 1920×1280 pixels. It is 521 KB in size. I run it through jpegMini and the file is now 226 KB – a 55%+ reduction in size! Try comparing the picture I linked to above with the jpegMini optimized file below.[1] Can you tell the difference? I didn’t think so!

Photo of Baby Sitting on Table Optimized by jpegMini

jpegMini is Free / Super Affordable!

You can download jpegMini for free and use it to optimize up to twenty images each day! This is more than enough for most small/medium sites.

If you want to optimize more images on a daily basis or simply express your appreciation for a great product, a license is $20.

There are several other options with jpegMini, most beyond what the average site requires – but these are also reasonably priced.

Do I Have to Be a Super Geek to Use jpegMini?

jpegMini is one of the simplest applications to use ever. Launch the application then drag and drop the file(s) you want optimized onto the application. Wait a few seconds and the files will be optimized and can be uploaded and used just like any other JPEG file on your website.

Conclusion

jpegMini is an awesome application that will help you reduce image size and thus reduce the load time of your website resulting in happy people. The application is easy to use and the price is right – what are you waiting for!

 

  1. [1]This image is smaller than the original image in canvas size. If you click on the image you can see the image at its full size.

The Travail of Canceling SugarSync: A How To.

[Update: 10/28/16 – Some international users of SugarSync have reported issues using the link I included in this post. Thanks to Bill & JN for an updated link that appears to work internationally as well: https://www.sugarsync.com/account/cancel]

I started with SugarSync many hears ago and I’ve been a paying customer since October 2009 and have been a fairly avid supporter of them.

Over the last year or so I’ve found myself moving away from SugarSync and towards Microsoft OneDrive and Dropbox. I decided to cancel SugarSync and assumed I’d be able to login to my account and quickly cancel…if only I were that fortunate!

One can upgrade one’s account via the website, but you can’t cancel it.

A Partial Snapshot of Plan Details in SugarSync
A Partial Snapshot of Plan Details in SugarSync

Okay, slightly annoying. So how do I cancel? There is no contact info. I can find on the main site but there is a “Contact Us” link in the footer of the support page – that seems hopeful…

Nope, just a mailing address and instructions to use the support site from which I found the Contact Us link.

Screenshot of Contact Info on SugarSync

Fine, lets try searching the help desk (okay, I actually did this before looking at the contact info., not sure why I record this out of order). Entering cancel into the search area returns a link to this article: “Canceling a Paid Account.”

Here is where things get really frustrating. Take a look at the screenshot below:

Screenshot of Cancel SugarSync Help Article
Screenshot of Cancel SugarSync Help Article

Notice anything? Let me highlight three items:

  1. The cancellation department is only open from 10 am to 2 pm (4 hrs.) Monday – Friday. What?!
  2. In step 2 one is directed to “Open this article” and provided with a link, this link leads back to the article you were already viewing.
  3. The screenshot with “Chat with Cancellation Department” button is really great, except for the fact that it doesn’t exist outside of those 4 hours each day! It isn’t greyed out, it simply doesn’t exist.

(Okay, let me rephrase that, there is a chat button down at the bottom but clicking on it outside of hours makes it disappear (and nothing else) AND the button is in a different location than where it is shown in their screenshot)

Great. I’ve now let several months go by, I am no longer using SugarSync but every time I remember to cancel it it is outside of the specified hours or I’m busy. Finally, today, I decided to give it another go.

I happened to notice when I was logged out of the site a phone number for sales questions (1-877-442-1693, there appear to be multiple versions of the homepage, the phone number only sometimes displays). The automated menu had an option for billing so I selected it and was soon speaking with a nice man who assured me he would help me. He put me on hold and then sent me an email which he asked me to check. I opened it and to my surprise saw that he was not going to cancel my account, instead he was just directing me back to the same window:

Screenshot of SugarSync Support Email
Screenshot of SugarSync Support Email

I reached a real person who was responding to billing questions but apparently couldn’t cancel my account.

I’ve typed out this email while waiting for SugarSync’s cancellation department to open for its very limited hours.

I finally got into a chat with a cancellation department representative. After all that they gave me a URL to visit to cancel my account: https://davidshq.sugarsync.com/account/cancel. My guess is that this URL will work for anyone just by changing the davidshq to whatever your SugarSync username is.

I’m also guessing that one can use this link 24/7/365 to cancel an account…but you might still want to go through their cancellation department as they could claim that it wasn’t properly cancelled, etc. and you might end up still being billed.

And thus ends the story of my travails canceling SugarSync (I hope).

Now How Do I Use This Old Scanner Again? NAPS2!

I have an old beast for a printer/scanner. It is nine years old in human years, which is like one hundred in technology years, but it gets the job done.

One problem I’ve run into repeatedly over the years is that of scanning software. At some point in the distant past the software that came with the scanner disappeared. Yes, one can still download the drivers off of the manufacturers site – but I’m talking about the software that makes the scanning process easier and more robust. Usually this software is from a third party company and thus the manufacturer’s site doesn’t include it as a download. So what is one to do?

Not Another PDF Scanner 2 ScreenshotYou’d think there must be tons of free software options out there for such a simple and fundamental application – you’d be surprised (at least I was). Over the years I’ve used numerous different applications to scan – some commercial trials (FileCenter being my preferred one, but way too expensive for an occasional scan) and lots of crappy free programs.

Well, no more. There is now an excellent, free, and open source option available called NAPS2 (Not Another PDF Scanner 2).

What makes it so great? I’m glad you asked!

  • File Format Support – It can create PDF, TIFF, JPEG, PNG, and other file types (I find the PDF support especially useful for multi-page documents).
  • Automatic Document Feeder / Duplex Support – ADF means that it can handle multiple pages without requiring user intervention and duplex means it can handle double-sided documents also without user intervention.
  • Simple Scan Management – Rotate pages, straighten images, crop, etc.
  • Optical Character Recognition (OCR) – Supports identifying the text in scanned documents.
  • Powerful – Need to automate your scanning using a command-line interface? How about distribute it via Group Policy? No problem.

WinDirStat: What is Hogging All My Hard Drive?

An older software application, but a freebie and a goodie, is WinDirStat. If you ever find yourself running low on storage space on your hard drive – this application will quickly and intuitively give you a peak into what is consuming all that space.

Before you go out buying a bigger hard drive, using WinDirStat to see if there isn’t (and there probably is) some unneeded files or applications consuming major amounts of disk space.

Warning: You can totally ruin your computer by deleting the wrong files – so don’t go deleting files you aren’t sure about!

WinDirStat Screenshot

Disarming My Smartphone.

The Backstory

(Probably more than you need or want to know…but hey, I’m writing and you are reading – you can skip this section and I’ll never know)

I have a rough time sleeping (I go to see a sleep specialist on Monday and have been through a sleep study previously). I oftentimes can’t sleep through the night (waking up at 2 or 3 in the morning and unable to fall asleep till 5 or 6) and oftentimes struggle with excessive daytime sleepiness (EDS).

I’m in pretty good physical shape at this point – which is pretty amazing, especially considering all that I went through over the last few years with my health…sure there are still aches and pains and various nuisances…but I can live with them – the only one that really still frustrates me is this sleep issue – particularly the EDS.

I use my smartphone as my alarm clock – and I use Sleepbot to monitor my sleep – so I want to have my smartphone near me while I sleep…but this can sometimes be counterproductive. If someone sends me a SMS or FB message in the middle of the night I may hear it. If some stupid app I’ve recently installed and haven’t turned off notifications on (b/c I didn’t think they would have any!) decides the best time to notify me of something is at 2  or 3 am I may be woken.

The Recommendations

So I began searching for an application that would allow me to selectively mute my phone while still maintaining my availability. This would be simple enough if I didn’t need to be available for emergencies pretty much 24/7 (being in the pastorate and IT, where work oftentimes occurs off-schedule and with some urgency).

I did a little search around but didn’t come up with anything great. I find Google’s app store abysmal in its search functionality…even more inferior than its web search (which I use but loathe).[1] So, where does one turn when a google doesn’t turn up the answer? No, not Bing (sorry Microsoft!), Quora. You can see the question and answers here.

The main options offered where (a) CynagoenMOD’s ROM (but this would require placing the stock ROM – essentially the OS of the phone), (b) IFTTT (the programmability is nice, but it lacks, at least easily, all the features I need), (c) Locale (but it is fairly expensive for an app), (d) Tasker (but involves more programming than I was interested in), (e) Agent, (f) Do Not Disturb, and (g) Dindy (this is the app I’ve settled on).

My Choice: Dindy

An Android, open source application that can block phone calls and text messages at night.
An Android, open source application that can block phone calls and text messages at night.

I chose Dindy first because I’m a sucker for open source. If I have to choose between two products with the same featureset and one is open source and the other closed – I’ll go with the open source app almost every time.[2]

The killer feature I was looking for is the ability to let calls through if it is an emergency. In essence, if a phone call is made repeatedly (over a short period of time), it will be allowed through even if the app is set to reject calls. This way if someone really needs to get a hold of me, they can.

A secondary crucial feature is its ability to send text message responses to calls and texts I receive informing the person that I am unavailable and what they should do if it is an absolute emergency (e.g. call several times in a short span of time).

The one bummer is if the phone call comes from a land line you can’t send back a text message – so the person doesn’t know they need to keep calling…but honestly, whenever folks have an emergency (and oftentimes when they don’t :P) they blow up my phone with repeated calls…so I don’t think this will be a huge issue.

There are other features like the ability to whitelist and the ability to create different contexts with different messages – like if I am “away” from the phone, in a meeting, driving, or so on.

But there were two other apps that were close contenders with Dindy, lets talk about what I liked about them (that Dindy doesn’t have ::cough:: hint to developer 😉 ::cough::) and what they lacked that led me to utilize Dindy instead.

Do Not Disturb

An Android app which can selectively block calls, available in free and premium editions.
An Android app which can selectively block calls, available in free and premium editions.

This application comes at a free level, but really you’ll want the premium level. The cost is reasonable for an app. – $2.50. You can try the premium features in the free edition for two weeks for free.

Do Not Disturb lost a few points for not being open source (I don’t hold this against closed source projects, I have no beef with folks making closed source apps…but I trust that open source apps will be around longer, b/c someone else can pick up development if the original developer drops out…whereas closed source projects oftentimes are acquihired or simply shuttered)…

where DND really took a hit was in its lack of multiple modes besides day and night. Dindy provides me with the ability to create an infinite number of contexts – each with their own settings – with DND I’m restricted to two.

That said, DND does offer the ability to disable WiFi and data at night (saves battery) and to automatically (if desired) go mute during meetings (based on my calendar). Pretty sweet features.

Agent

Agent offers several automated "agents" that perform different functions - one being selective call blocking. It is closed source but free.
Agent offers several automated “agents” that perform different functions – one being selective call blocking. It is closed source but free.

The other application – which is quite the slick operator – is called Agent. It does quite a bit more than muting – it also takes action when your battery gets low, automatically remembers where you parked, and automatically goes into mute mode when you are driving (and, of course, all of these are configurable).

It also provides reporting capabilities which tell you what agent has been up to – when it has turned on and off certain functionality. Pretty sweet.

In addition it allows (unlike either DND or Dindy) disabling of auto-sync and of bluetooth (to save battery life).

Where it lost out to Dindy was in its lack of full customizability. It is limited to three contexts (meeting, driving, sleeping) and doesn’t allow for customizing how many calls the individual has to make before they are let through (I have it setup to allow through on the second call – which is what Agent has as the default, but Dindy’s customizability is really nice…and I like having options).

Dear Dindy

So, to recap, here is what I’m hoping Dindy might add in the near future:

  • Integrate with my calendar to allow automatic muting for meetings (bonus points for allowing keyword based filtering of which meetings like DND offers).
  • Include the ability to turn off wifi, data, bluetooth, and data sync as part of “going silent.”
  • Auto detect when I am driving and go silent.
  • Allow me to schedule the days/times I want Dindy to go silent at night (I forgot to mention that Dindy lacks and both DND and Agent offer this feature), so I don’t need to remember to start Dindy’s mute mode manually each night.

Dear DND and Agent

You both have great projects. Should you implement the features I mention that Dindy is currently missing, let me know. 😉

PS Google, Microsoft & WordPress

  • Google: I know you want to move to the new WebP project, but it makes my life difficult when you have your images in WebP format.
  • Microsoft: I am pretty unhappy you aren’t integrating WebP into IE.
  • WordPress: Please add WebP as a default allowed file format for uploading.
  1. [1]I’ve written several times on the past on alternative search engines as well as on my belief that social search engines could provide a way to give much better results.
  2. [2]Though if it is not under active development and the closed source app is, I’ll go with closed source…I’m interested not only in what the app can offer today but also what it will offer in the future.

Free Caller ID for Your Android Smartphone

I hate the phone. I hate phone calls. I hate when I don’t know who is calling me – especially b/c that usually means it is a REALLY important call or that it is a telemarketing call. I’ve been using Contactive for a while now and it is pretty amazing – and the price is nice too (FREE).

Contactive Free Caller ID App for Android Image
The Contactive Android smartphone app provides effective crowdsourced caller ID for free.

Contactive pops up when an incoming call is occurring and shows the name of the person or organization calling, the phone number, and associated social network profiles. It integrates with a number of social networks to ensure that it has the fullest amount of contact info. available about your contacts – so even if someone isn’t in your phone’s address book, if they are your friend on a social network, Contactive can use social network info. to identify them.

Contactive uses a crowdsourced model for building its database of caller IDs. When a call is completed it allows you to choose if the caller ID was correct and if it wasn’t to recommend the correct name. Personally, I love this. There is something so satisfying about typing in the name of an annoying telemarketing company after they call…knowing that now every user of Contactive will never again have to be bothered.

To learn more about Contactive you can visit their website or go to the Google Play page to download the app right now.