The Good Remote Worker: This thing on?

Having worked with teams consisting of 100% remote, 100% in-person, and folks who do a little of both, I can understand why many organizations have a hard time with remote collaboration. This series will cover all the things I learned over the years collaborating remotely. In this first part, I talk about video conferencing. Often the most painful aspect of remote working.

Continue reading...

April 16, 2016  ·  Permalink

Why I love Trump

Ricky Jones for the Courier Journal:

I love Trump, but not for the same reasons David Duke pulls him to his bosom. I love Trump because with every win he exposes the GOP and America for what they are. Trump doesn’t vote for himself – Americans do. Republicans and the country both need to deal with that truth.

March 13, 2016  ·  Source  ·  Permalink

Use a regular expression to match a string up to a given character

Often I run into a string where all I want is to match everything up to a given character. So given the following test string:

This is my string with a pipe | and everything after it is stupid.

Using Ruby as my reference language, I might do something like this in an interactive ruby session (aka: IRB) or on Rubular.com:

str = 'This is my string with a pipe | and everything after it is stupid.'
str.match(/^.*(?=\|)/).first

Which would produce the following in Ruby:

"This is my string with a pipe "

Lets break down the different parts of the expression ^.*(?=\|) and what they're doing:

  • ^ start at the beginning of the string
  • .* match anything from the current position
  • (?=\|) only if followed by a pipe character

The last part of the expression is what's known as a positive look-ahead (?=). Using a look-ahead is like attaching a condition to an existing regular expression. I'm telling my expression to return the match only if it's followed by characters matched by an additional expression.

For a more comprehensive dive into look-around functions, head on over to Regular-Expressions.info. Also feel free to play with my example on Rubular.com.

As always, use regular expressions responsibly.

November 20, 2015  ·  Permalink

Clean up empty upload directories created by Carrierwave

Carrierwave doesn't clean up empty directories when you delete a record with an existing upload. It deletes the file, but not the containing directory. That is a task you can handle with an ActiveRecord callback.

Let say there is a model called 'Post' that you can attach an image to. The code would look like the following:

post.rb

class Post < ActiveRecord::Base
  mount_uploadeder :image, ImageUploader

  after_destroy :delete_empty_upload_directory

  private
    def delete_empty_upload_directory
      FileUtils.rm_rf(Rails.root.join('path', 'to', 'your', 'uploads', self.id.to_s)) if self.image
    end
end

Simple, nice, and easy.

November 11, 2015  ·  Permalink

Screenr is shutting down

In an email from Screenr, a web-based app for recording your screen:

As you might already know, Screenr’s recording capability is based on Java RE (Runtime Environment), which is rapidly becoming antiquated. For example, Google Chrome doesn’t support Java RE anymore. So Screenr can’t run there. And on other browsers, Java support is also limited, causing constant problems for users.

Because we at Screenr pride ourselves on providing a superior customer experience, these issues are simply unacceptable. And there’s no way around them.

Before Droplr implemented screen recording in their app, I used Screenr. It was useful and their free tier allowed some quick and dirty screen recording with minimal friction.

Admitting defeat is hard. But completely ignoring the competitive field for apps like this is the real reason why Screenr is shutting down. I guess blaming Java platform and quitting is easier than adapting your software to use better, newer technology.

October 28, 2015  ·  Permalink

Programming sucks.

Peter Welch via Mashable:

Every programmer occasionally, when nobody's home, turns off the lights, pours a glass of scotch, puts on some light German electronica, and opens up a file on their computer. It's a different file for every programmer. Sometimes they wrote it, sometimes they found it and knew they had to save it. They read over the lines, and weep at their beauty, then the tears turn bitter as they remember the rest of the files and the inevitable collapse of all that is good and true in the world.

The truth of this is both sobering and hilarious.

June 06, 2015  ·  Source  ·  Permalink