For geeks

$ echo YWNlQHRvbW15YnV0bGVyLm1lCg== | base64 -d

My GPG key: 0xD63239F056A0DFE3

For other humans

Leave a message in the form below.  It’s confidential, and won’t be published.  I promise.

19 thoughts on “Contact

  1. Royce Lithgo

    Your VMware autostart script was an absolute life safer. Thank you so much for this.

    I did initially have an issue with spaces in my folder name – I tried quoting the array string but still had a problem. So i just renamed the path to get rid of the spaces.

    I also added a step in the shutdown sequence to run a batch file on the guest to cleanly shutdown the database running on the guest.

  2. Greg

    Hi Tommy,
    One other requirement ;o)
    A switch on your exifsort for choosing copy or move. I just tried an experiment and then cleared it with rm -rf only to realise too late that yours is a move, not a copy. They were just a few early and rather rubbish photos, so no harm done but I’m glad I checked.


  3. Greg

    Hi Tommy,
    Your exifsort Perl script looks very close to being a lifesaver for me. I have about 1.5TB of photos and it took me far toooooo long to realise that a sensible, predictable date based storage system was far superior to descriptively named folders. My primary photo disk died yesterday and having bought a new disk, I thought it would be a good opportunity to remedy the mess while copying images back from my NAS backup. Unfortunately I have no Perl skills and I’m scared of making novice changes to your code to get the xmp files to be copied in with the various RAW and JPG formats they are associated with. I’d really like them in the same exif based dated directory as the image. I can guess how annoying it is to be asked to help but I’m pretty confident that my consistently incompetent coding skills aren’t up to the task? I’d be happy to contribute to costs and/or a charity of your choice, if you can help?


  4. Richard Duran

    Digging the script to offline a drive. Can the drive be brought back online in a similar fashion?

  5. Eric Daly

    Thank you for your code with exifsort! That’s extremely helpful to me, and I forked it on Github to suit my needs.
    I modified Y/M/D to only be Year/Month (but not day), then reformatted the month to be like “09-September” for readability.
    I modified the –force mode to intelligently overwrite when md5 sums match, but rename if they do not. It’s a dumb algorithm that simply appends “_1” to the end of the filename, but it gets the job done well enough for me.
    Finally, I just added some counters so that you can get an overview report of what happened at the end, and is also useful for when there are no errors but also no input (which used to result in no output). Now it just shows that nothing was moved, renamed, overwritten, or failed.

  6. Valerie

    Love your BS-Generator but “intrinsically” is as “intrinsicly” which is not the correct spelling.



  7. Chris Chalfant

    Mr. Butler,

    I’d like to replicate your Corporate B.S. generator in a lita chatbot gem ( I didn’t see any license or copyright on the generator so I’d like to ask your permission. Would that be ok?


  8. raid3868

    Thank for the “Autostart VMware Virtual Machines at Boot in Linux” script. I very useful for me and i m using now.
    But i cannot make the VM_wait_between to work when i set amount of second it did not work. when os boot
    all my vm start together. Please help tks

    OS = Opensuse 13.1 x64

  9. David Palmer

    I laughed my ass off at your corporate BS generator, that was just sent to me. Awesome! As Chief Engineer for a major Air Force program, I sit through corporate meetings constantly listening to this meaningless dribble about as useful as your generator. I will be sharing this with our engineering team, they will get quite a good laugh!

  10. Wes


    The example showing:
    # Define a subroutine to print the byte size and depth of all files in a
    # directory, designed to be used as a callback function to list_dir()
    sub filesize {
    my ( $selfdir, $subdirs, $files, $depth ) = @_;
    print( “$_ | ” . ( -s $_ ) . ” | $depth levels deep\n” for @$files;
    }# Define a subroutine to print the byte size and depth of all files in a

    …. does not compile due to the ‘print(‘ in the print statement.
    I that line should be:
    print “$_ | ” . ( -s $_ ) . ” | $depth levels deep\n” for @$files;

    Excellent POD anyway! Thanks for that!

    1. atrixnet

      I’m glad the POD was helpful. I put a lot of effort into making sure it was extremely comprehensive and readable. I fixed the typo you mentioned. A bit belated, but it wasn’t a showstopper kind of bug. I appreciate it that you pointed it out.

  11. Richard Carlson

    may I suggest adding the term “going forward” to your Corporate B.S. Generator. The only time one ever hears the term is from corporate talking heads when they want to say “in the future” or “from here on in”, or even “tomorrow” or such.

  12. greg

    On your bullshit generator (which is tremendous, by the way), you’ve left out perhaps one of the most annoying and repulsive pieces of bullshit which is….oh drat! I’ve forgotten. Let me reach out to my friend who will certainly know. I’m sure he’ll reach out to me soon, and I can reach out to you with it.

    (OK, OK…see the pattern? “Reach out” if you do!!! It drives me f****** crazy. Why not just say ‘contact’?)


  13. Thomas Bruno

    If you put in:

    for vm in “${VM_list[@]}”;

    and put quotes around a few of those $vm your autostart vmware virtual machine script will function with virtual machines that have spaces in the names.

  14. Michel Jansen


    I am using File::Util but sometimes, regularly, when i print the contact of the retrieved PDF file to a webclient, the pages are empty.

    my $f = File::Util->new();
    my $data = $f->load_file ( $file );
    print $cgi->header( -type => $mimetype, -attachment => $document);
    print $data;

    What am i doing wrong here. Help will be appreciated very much.

    Kind regards,

    Michel Jansen


Leave a Reply

Your email address will not be published. Required fields are marked *