   end
 
   def find_executable(program) when is_binary(program) do
-    # Notice we don't use unicode for conversion
-    # because the OS is expecting and returning raw bytes
-    case :os.find_executable(:binary.bin_to_list(program)) do
+    case :os.find_executable(List.from_char_data!(program)) do
       false -> nil
-      other -> :binary.list_to_bin(other)
+      other -> String.from_char_data!(other)
     end
   end
 

  """
  @spec put_env(binary, binary) :: :ok
  def put_env(varname, value) when is_binary(varname) and is_binary(value) do
   :os.putenv :binary.bin_to_list(varname), List.from_char_data!(value)
   :ok
  end


  end

  def cmd(command) when is_binary(command) do
    String.from_char_data! :os.cmd(List.from_char_data!(command))
  end

  @doc """
