• It's about ethics in web browsing

    I do not have a problem with advertising. I have a problem with loud, grotesque, ugly, distracting, and insulting advertising. A testimonial ad for Backblaze on a tech podcast by a fussy developer who uses Backblaze is great. A loud, obnoxious, misleading, and outright dishonest advertisement for colloidal silver is disgusting.

    I choose to avoid all such advertising. In the cesspool of the internet, one tool I use for this is an ad blocker. I should not have to go to a webpage and see the ugly ads before choosing to close the webpage as the damage is already done. I also don’t wait for someone to steal from me before putting a password on my computer. Pre-emptive is an acceptable policy position.1

    I completely understand if a content generator says he would rather I don’t view his website if I am using an ad blocker. In such a case, I will either choose to turn off the ad blocker, or not view his website. I know of at least two websites that do test for ad blockers and will not display their content if one is detected.2 I respect that. One of those sites, I have white listed. The other I have not.

    Preferring to pay for content and only be exposed to tasteful advertisements is a logical, consistent, and respectful way to live.

    Update: A friend sent me this:

    Sometimes OkCupid runs this ad for free users using adblockers. Only other way to block ads is to sign up for the monthly pro service. There are some “pro” features but you can get by forever with free.

    This is totally fair. I have no idea what the normal ads are on Ok Cupid, so I don’t know if I’d prefer the ads or not, but if I was in the dating world, which hopefully will never, ever, happen again, I’d pay the money.

    Update 2: He sent me a follow up:

    I think the ads on OkCupid were pretty awful, which is probably why I got an adblocker in the first place.

    1. One Twitter user tested my consistency by querying if I watch TV and subscribe to magazines. I do not subscribe and do not have cable, but I do not understand the connection. Who doesn’t use the commercials to grab a drink or snack, or go to the bathroom. I do not think starting to watch a TV show is a contract to sit chained to the couch and watch each ad intently.

    2. Unfortunately, I’ve had Hulu repeatedly tell me I’m using an ad blocker when I’m not. I browse the web with Safari, which has the ad blocker, and watch Hulu with Chrome, which doesn’t.

  • Tile support fail

    I was looking forward to the Tile.

    Sadly, it was dead on arrival. g I went to their website and did all the trouble shooting activities they recommended, and being the “tech guy” in my social circle I tried several other things, all to no avail.

    I sent several requests for help to them on their website.

    They finally replied to me… 16 days later.

    with the exact same information on the website that I’d already done.

    I informed them that this didn’t work.

    Their response was report the same issue, again, in the app?

    This seemed very strange but I thought perhaps there is some extra data that is sent with the in-app report.

    They replied 12 days later with a completely different ticket number and “activation tips”.

    This is ridiculous. I get better service at the DMV.

  • Only 6 months to go

    Do you have any questions about the new baby?

    Boy (age 8): No!

    Are you annoyed about something?

    Boy: I’m annoyed you keep asking.

    I just want to make sure you’re comfortable with everything.

    Boy: I’m not comfortable with anything.

    What aren’t you comfortable with?

    Boy: It’s been three months and we don’t have a name or a room for the baby.

  • Parenting

    Boy (age 9): Dad, can you make me a sandwich?

    I’m not always going to be around to make you sandwiches, tie your shoes, and kill your zombies. You need to learn to do these things on your own.

    Boy: I can tie my shoes and kill zombies. It’s just a sandwich.

  • Does Dr. Google take my insurance?

    A secretary walks up to my nurse and starts complaining about a minor symptom. My nurse gives her excellent advice. The secretary expresses doubt and starts to argue. I interject that the advice is excellent and should be tried. The secretary counters that she had done a Google search.

    Having become accustomed to this response from patients and family alike, the board certified physician and license nurse both shrug and go back to work.

    Expertise is dead.

  • The Tile - Dead on Arrival

    I ordered the Tile, a BTLE internet-enabled device designed to help you find lost items, to attach to my keys so I can avoid the occasional panic on Monday morning when I can’t find them.

    After waiting a ridiculously long time to arrive, it was unresponsive out of the box. I followed all the trouble shooting ideas on their website without success. I emailed support and have gotten no reply.

    Tile: ★☆☆☆☆

  • FTC sues AT&T over throttling "Unlimited" data plans

    I am not a big fan of class action lawsuits in general because it appears that the only ones who really benefit at the lawyers. Maybe I’m wrong because I’m pretty happy about this:

    The Federal Trade Commission (FTC) of the United States today filed a federal court complaint against AT&T, accusing the carrier of misleading its smartphone customers by charging them for unlimited data while reducing their data speeds by up to 90 percent. - MacRumors

    I had one of those “unlimited” plans and AT&T sent rude text messages threatening to throttle me and then eventually did. I was using just over 2 gigabytes a month. I switched to Sprint.

    The FTC alleges that AT&T throttled customers who had used as little as 2GB of data beginning in 2011, and that the throttling is severe, “resulting in speed reductions of 80 to 90 percent for affected users.” AT&T is said to have throttled 3.5 million customers more than 25 million times, violating the FTC Act in the process. - MacRumors

  • Changing blog platform and host

    I like using static text documents to generate my blog. As many others have already said, it gives me control over my product and is easy to maintain and change. For the last several years, I’ve enjoyed using Scriptogram, which both generated the HTML files from the text files stored in Dropbox, and also hosted the generated files. It was even free.

    Unfortunately, it does not seem to be in active development anymore. I probably could have left it alone and waited until the service died, but I got an itching in my brain after listening to the last episode of Core Intuition and decide to take a second crack1 at doing my own file generation and hosting2.

    I’m currently getting my blog ported over to a Github hosted Jekyll site. Of course, I didn’t do the smart thing and wait until everything was finished before switching over the DNS, because stupid and I didn’t actually think anyone read this site3. Unfortunately, at least one person does and I wasted their time today when they tried to report a broken link in their feed reader.

    My apologies. Hopefully the DNS and RSS is finished. No I just need to import my old articles and futz with the CSS. The latter shouldn’t cause any problems, and I hope the former doesn’t flood anyone’s RSS reader with old posts.

    1. +10 nerd points if you get the reference

    2. I failed spectacularly at my last attempt with Octopress.

    3. What analytics?

  • Create a Markdown link with automatic affiliate codes

    I do a podcast with a couple other guys. As we’re recording the show, I like to create the show notes live so that they’re most accurate and save myself time later. We frequently mention products on Amazon, apps on iTunes, and regular old-fashioned links. I created the following macro for myself so that after I’ve navigated to the webpage of the link in Safari, I can automatically create a Markdown-style link in my text editor, including optional Amazon and iTunes affiliate links if appropriate. The affiliate links are added using python scrips from Dr. Drang and Brett Kelly.

    The macro can be triggered by the string mdlink of the hotkey ⇧⌃⌥⌘p.

    Since I write all my show notes in nvALT and my workflow is to find the webpage in Safari, the first part of the macro activates nvALT. The topmost Safari URL is then saved to the clipboard. The clipboard is then parsed by two If statements looking to see if it is an Amazon or iTunes link, and if it is add the affiliate code. Finally, the text for the Markdown link in inserted using the Safari title as the text for the link.

    Macro Text

    My Macros
    mdlink
    Triggered by any of the following:
    The exact case string ‘mdlink’ is typed (then deleted)
    The Hot Key ⌃⌥⇧⌘P is pressed
    Will execute the following actions:
    Activate nvALT
    Set Clipboard to Text
    %SafariURL%
    If All Conditions Met
    The clipboard text contains ‘itunes.apple.com’
    Execute the Following Actions:
    Execute Shell Script

    #!/usr/bin/python
    
    # Via Dr. Drang
    # http://www.leancrew.com/all-this/2013/08/new-apple-affiliate-link-scripts/
    
    from subprocess import check_output
    from sys import stdout
    
    # My affiliate ID.
    myID = '11l4RT'
    
    # Get the URL from the clipboard.
    clipURL = check_output('pbpaste')
    
    # Add my ID and the partnerId parameter to the URL. If there are already
    # queries, add them as additional ones; if not, add them as the only ones.
    if '?' in clipURL:
    itemURL = '%s&at=%s' % (clipURL, myID)
    else:
    itemURL = '%s?at=%s' % (clipURL, myID)
    
    # Write it out
    stdout.write(itemURL) Save trimmed to Clipboard.  
    

    If All Conditions Met
    The clipboard text contains ‘amazon.com’
    Execute the Following Actions:
    Execute Shell Script

    #!/usr/bin/env python
    
    # (c) 2012 Brett Kelly.
    # Licensed under the MIT license
    # http://www.opensource.org/licenses/mit-license.php
    # http://nerdgap.com/amazon-affiliate-links-with-textexpander/
    # Some edits from the original to get to to work in KM - ML
    
    import re
    import sys
    from urlparse import urlparse
    from subprocess import check_output
    
    ## PUT YOUR AFFILIATE CODE HERE
    affcode = 'violeneces-20'
    
    rawurl = check_output('pbpaste')
    
    ## Get the base url without all of the query string malarky
    baseurl = rawurl.split('?')[0] 
    
    try:
    parts = urlparse(baseurl)
    except Exception:
    sys.stdout.write(rawurl)
    raise SystemExit
    
    ## Make sure it's actually an Amazon URL
    amazonre = re.compile('[www\.]{0,1}amazon\.')
    
    if not amazonre.search(parts.netloc):
    # Not an amazon URL, return whatever was passed initially
    sys.stdout.write(rawurl)
    raise SystemExit
    
    # Format the simpler URL and append the affiliate code
    goodurl = "%s://%s%s?tag=%s" % (parts.scheme,parts.netloc,parts.path,affcode)
    
    # Write formatted URL to STDOUT
    sys.stdout.write(goodurl)
    

    Save trimmed to Clipboard.
    Insert Text by Pasting
    [%SafariTitle%](%CurrentClipboard%)

    Macro Image

    Macro Image

    Download the macro.

  • Keyboard Maestro macro screenshots

    I create a lot of macros with KM and I like to share them both on this blog as well as in the KM forums1. Taking screenshots of the macro is an important part of this sharing and has been very useful to me as I have learned to use KM from my betters in the community. Previously, I would use the standard screen shot functions of OS X, but with very long macros that did not all fit on one screen there was no elegant solution.

    I believe it was in 6.0 that Peter added the ability to copy a macro as an image. I failed to pay much attention to this at the time in light of all the other great functionality, but recently put it to use.

    The copy as an image puts the highlighted portion of your macro into the clipboard. By itself, this isn’t very useful because I need an actual image to upload to the blog, and as far as I can tell that functionality is not built in2.

    So I created a macro.

    Macro description

    You can either select individual parts of the macro you want to share, or select nothing and the whole macro will be used.

    Using a hotkey, trigger the Create Screenshot Macro.

    1. Select the copy as image from the menu
    2. Prompt the user for the file name
    3. Save the file to the desktop

    There’s also a copy as text if you want to just share the text of the macro. I prefer to write my own descriptions because I think it’s more useful, but including the text is nice too. See below.

    Macro text

    Create screenshot of KM macro
    Triggered by any of the following:
    The Hot Key ⌃⌥⇧⌘M is pressed
    Will execute the following actions:
    Select Menu Item in Keyboard Maestro
    Select: Edit ⇢ Copy as ⇢ Copy as Image
    Stop macro if menu cannot be selected.
    Prompt for User Input ‘File Name’
    What do you want to call the file?
    Input the following variables:
    File Name
    Finish with the following buttons:
    OK
    Cancel (cancel macro)
    Store button pressed in variable ‘Result Button’.
    Write Clipboard
    To file: ~/Desktop/%Variable%File Name%.jpg
    With format JPEG).

    Macro image

    Download the macro.

    Room for improvement

    I would like the ability to automatically name the jpg with the name of the macro.

    1. If you use KM and aren’t in the forums, you are really missing out.

    2. Is this an oversight, am I missing it, or is this deliberate on Peter’s part because he wants the user to create the macro by themselves?