Google Drive Access

Grrrr….. Faraday::SSLError: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed

https://github.com/google/google-api-ruby-client/issues/253
Robs-iMac:epic-invite roblacey$ brew update
Error: /usr/local is not writable. You should change the ownership
and permissions of /usr/local back to your user account:
sudo chown -R $(whoami) /usr/local
Robs-iMac:epic-invite roblacey$ brew updatesudo chown -R $(whoami) /usr/local
Robs-iMac:epic-invite roblacey$ sudo chown -R $(whoami) /usr/local
Password:
Robs-iMac:epic-invite roblacey$ brew update
Updated Homebrew from b77a695 to 34f08a9.
Updated 2 taps (homebrew/core, homebrew/services).
==> New Formulae
alot gitversion libngspice openssl@1.1 sslsplit
amqp-cpp gmic libosmium osmfilter svgcleaner
apache-zeppelin gofabric8 libsquish osrm-backend termbox
archi-steam-farm grafana libuninameslist p11-kit terraform-provisioner-ansible
armor gron linkerd pacparser terragrunt
borg hana liquigraph pdftoedn timewarrior
coffeescript hashcat loc piknik tldr
compose2kube hesiod locateme presto treefrog
consul-backinator hg-fast-export luaver pybind11 ttyd
csvtomd hopenpgp-tools metricbeat pyinvoke ttygif
dbhash hostess mfterm questdb twarc
direvent httpdiff micro rancher-cli typescript
dscanner httpstat mikutter rclone urbit
elvish jsonlint minimesos ripgrep vaulted
eventql jumanpp minio-mc rmlint wdc
feedgnuplot jxrlib modd shyaml wego
folly kube-aws mpage snap-telemetry willgit
fsevents-tools lean-cli nats-streaming-server sonar-scanner xcenv
git-remote-hg lego neatvi sql-translator yarn
git-series libbdplus nmh sqldiff zsh-git-prompt
gitless libdivecomputer nvc ssh-audit zstd
==> Updated Formulae
abcm2ps dropbear httping mksh rocksdb
abi-compliance-checker dropbox-uploader hub mkvtoolnix rolldice
abook dspdfviewer hugo mldonkey roswell
ace dtach hunspell mlogger rswift
acmetool dub hydra mlt rtags
acpica duplicity hyper mmix rtv
activemq dvm hyperscan mobile-shell ruby
advancecomp dwarfutils i2p mogenerator ruby-build
afflib dwdiff ibex monetdb runit
afl-fuzz dxpy ice mongo-c rush
agedu dynamodb-local icu4c mongodb rust
aha efl idris mongoose s-search
airspy eigen imagemagick ✔ monit s6
akka ejabberd imapsync monkeysphere saltstack
algernon ekg2 infer mono sane-backends
allegro elasticsearch influxdb moreutils sassc
amap elixir inspircd mosquitto sbcl
amazon-ecs-cli elixirscript internetarchive mozjpeg sbt
ammonite-repl emacs ios-deploy mpc scala
android-ndk emacs-clang-complete-async ios-sim mpd schismtracker
anjuta embulk ios-webkit-debug-proxy mpfr scons
ansible emp ipbt mpg123 scour
ansible-cmdb emscripten iperf3 mpich scriptcs
ansifilter enca ipfs mpop scw
ansiweather epic5 ironcli mpv sdcc
antigen eris irrlicht msitools sdcv
antlr erlang irssi msktutil sdl2
apache-flink esniper isc-dhcp msmtp sdl_image
apache-spark etcd iso-codes mtools selenium-server-standalone
apktool evince ispc mtr ser2net
app-engine-go-32 exercism jack mu serf
app-engine-go-64 exim jansson multimarkdown sf-pwgen
app-engine-java exploitdb jasper multirust sfcgal
app-engine-python fabio jbake mutt sflowtool
appscale-tools fabric jboss-forge mvtools sfml
apr fastd jemalloc mycli shadowsocks-libev
apr-util fdk-aac-encoder jena mypy shairport-sync
aqbanking fdroidserver jenkins mysql ✔ shared-mime-info
arangodb fdupes jenkins-job-builder mysql-sandbox shellcheck
argon2 ffind jetty mysqltuner shellinabox
argus-clients ffmbc jfrog-cli-go nanopb-generator shpotify
argyll-cms ffmpeg ✔ jlog nasm siege
aria2 ffmpegthumbnailer jmxtrans natalie sift
artifactory ffms2 joe ncdu signify-osx
asciidoc fftw jpegoptim ✔ ncmpc sile
asciinema2gif file-roller jq ncmpcpp simple-tiles
asciiquarium filebeat jruby ncrack sjk
asio fio jsdoc3 neo4j skinny
assh fish json-fortran neofetch sleuthkit
at-spi2-atk flake8 json-glib neon slimerjs
at-spi2-core flatbuffers jsoncpp netpbm smali
atk flatcc jsonnet nettle smartmontools
ats2-postiats fleetctl jsonpp newlisp smlnj
aubio flex jsonschema2pojo nexus sngrep
augeas flow kafka nghttp2 socat
aurora-cli flowgrind kapacitor nginx sops
autoconf-archive fluent-bit kawa nickle source-highlight
autoenv flvmeta kerl nifi sourcekitten
autojump fmt kes nim spatialite-gui
avro-c fobis kettle nmap spatialite-tools
awf fontconfig keybase node ✔ spdylay
aws-apigateway-importer fontforge khal node-build spidermonkey
aws-elasticbeanstalk fonttools khard nodeenv spring-loaded
aws-sdk-cpp ford kibana nomad sqlite
aws-shell format-udf kitchen-sync noti sqlite-analyzer
awscli freeipmi knot notmuch sqlmap
azure-cli freeling kobalt nsd ssdb
b2-tools freeradius-server konoha nspr sshguard
babl freetds kore nss sshuttle
bacula-fd freetype ✔ kotlin ntl ssllabs-scan
baobab fstar kpcli nvm sslscan
basex fswatch kubernetes-cli nzbget sslyze
bash fuseki kyua oauth2_proxy storm
bash-git-prompt fwup languagetool ocamlbuild stout
bash-preexec fzf latex2html offlineimap strongswan
bashdb galen latexml ola stunnel
bazel gammaray launch omega subliminal
bdw-gc gammu launch4j oniguruma subnetcalc
bear gauche lbdb ooniprobe supersonic
beecrypt gauge ldapvi open-babel supervisor
bfg gawk ldc open-mpi suricata
bgpq3 gcc ldns open-scene-graph svtplay-dl
bib-tool gcovr le opencc swagger-codegen
bibtexconv gd leaps openconnect swi-prolog
bind gdal ledger opencsg swift
binutils gdb legit opendbx swiftgen
binwalk gdk-pixbuf leiningen openhmd swiftlint
bitrise gdl lensfun openjpeg swig
blackbox gdm leveldb openrtsp syncthing
bmake geckodriver lfe openshift-cli syncthing-inotify
boost gedit libass openssl ✔ sysdig
boost-bcp gegl libatomic_ops openvdb szl
boost-build generate-json-schema libbluray openvpn taglib ✔
boost-python geoserver libbson ophcrack tailor
botan ghc libbtbb orc takt
brew-gem ghex libcddb oscats tarantool
brotli ginac libcdio osh tbb
bsdconv git libcdr osm-pbf tbox
buku git-annex libcec osm2pgrouting tccutil
c-ares git-archive-all libcouchbase osm2pgsql tcpkali
cabal-install git-cola libdap osmosis telegraf
cadaver git-credential-manager libdrawtext osquery terminal-notifier
caddy git-extras libebur128 owfs terraform
caf git-fixup libetonyek oysttyer texinfo
cake git-flow-avh libexosip packer texmath
calabash git-fresh libflowmanager paket tgui
calc git-imerge libfreenect pam_yubico the_platinum_searcher
carina git-lfs libftdi pandoc the_silver_searcher
carthage git-octopus libgaiagraphics pandoc-citeproc thefuck
cask git-secret libgcrypt pandoc-crossref tig
cassandra git-town libgda pango tile38
castxml git-when-merged libgee pangomm tin
cattle gitbucket libgeotiff paperkey tinc
cayley giter8 libgetdata parallel tinyproxy
ccache gitg libgit2 pass tippecanoe
ccextractor gitlab-ci-multi-runner libgit2-glib passenger titan-server
cconv gjs libgraphqlparser passpie tmux
cereal gjstest libgsf pazpar2 tmux-mem-cpu-load
cern-ndiff glade libicns pcap_dnsproxy todolist
certbot glib libiscsi pcb2gcode tomcat
certigo glib-networking libjson-rpc-cpp pce tor
ceylon glibmm libksba ✔ pdal torsocks
cfr-decompiler glide liblastfm pdf2htmlex trafficserver
cgal glm liblwgeom pdnsrec transcrypt
cgdb global libmagic pdsh translate-shell
cgrep globus-toolkit libmicrohttpd peco translate-toolkit
chaiscript glyr libmill peg typesafe-activator
chapel gnatsd libmongoclient percona-server uchardet
charm gnome-builder libmspub percona-toolkit uhd
charm-tools gnome-icon-theme libmtp pgbadger unbound
cheat gnome-themes-standard libnfs pgcli uncrustify
checkstyle gnu-apl libnotify pgroonga unrar
chisel gnu-complexity libosinfo pgrouting upscaledb
chromedriver ✔ gnu-smalltalk libosip pick urweb
citus gnu-tar libpeas picocom uwsgi
cjdns gnu-units libphonenumber pidcat vala
clang-format gnumeric libpng ✔ pillar valabind
clearlooks-phenix gnupg ✔ libpointing pius valgrind
cli53 gnupg2 libprotoident pkg-config ✔ vapoursynth
clib gnuplot libqalculate planck varnish
cliclick gnuradio librasterlite plantuml vault
clipper gnutls libraw platformio vc4asm
clisp go librdkafka plowshare vcdimager
clutter-gst goaccess libreadline-java pmd vdirsyncer
clutter-gtk gobject-introspection libressl pngcrush vegeta
cmake godep libsamplerate poco verilator
cmocka goffice libscrypt pod2man vert.x
coccinelle gollum libsigc++ ponyc vim
cocoapods google-benchmark libsoup poppler vmtouch
codequery googler libspatialite postgis vnstat
cogl gor libspiro postgres-xc voldemort
collectd gosu libssh2 postgresql voltdb
commandbox govendor libstrophe pre-commit voms
conan gpgme libswiften predictionio vowpal-wabbit
concurrencykit gphoto2 libtess2 premake vte3
consul gpm libtiff ✔ primesieve vultr
consul-template gprof2dot libtorrent-rasterbar privoxy wakatime-cli
convox gputils libu2f-host profanity wartremover
coq gqlplus libuv progress watch
corectl gradle libvirt proguard watchman
coturn grails libvisio proj watson
couchdb graphicsmagick libvpx prometheus webkitgtk
cppcheck graphite2 libxml++3 proof-general weboob
cpprestsdk graphviz libxmp protobuf wellington
creduce grib-api libxslt protobuf-c wgetpaste
cromwell gringo libyaml ✔ protobuf-swift whatmp3
cryptopp groonga liquibase psgrep wildfly-as
crystal-lang gsettings-desktop-schemas lldpd pulledpork wimlib
csfml gsl llnode purescript wine
cucumber-cpp gsoap llvm pushpin winetricks
curl gspell lmdb pwntools wireguard-tools
dar gssdp lnav pwsafe wireshark
darcs gssh logentries pyenv with-readline
darkice gst-editing-services logstash pyenv-virtualenv wolfssl
dash gst-libav logtalk pygobject3 wrangler
datetime-fortran gst-plugins-bad luajit pypy wxmac
datomic gst-plugins-base luaradio pyqt5 x264 ✔
davix gst-plugins-good lynis python x265
dbus gst-plugins-ugly m-cli python3 xapian
dc3dd gst-python macosvpn qbs xcproj
dcmtk gst-validate macvim qca xctool
dcraw gstreamer mailhog qemu xmake
ddar gstreamermm mailutils qjackctl xonsh
debianutils gtk+ makepkg qscintilla2 xorriso
deheader gtk+3 mapnik qt5 yadm
deis gtk-gnutella mapserver quantlib yafc
deisctl gtk-vnc mariadb quazip yank
deja-gnu gtkextra mas quilt yara
dependency-check gtkmm matlab2tikz qwt yash
depqbf gtkmm3 mawk qxmpp yaz
devd gtksourceview3 mbedtls radare2 yazpp
devhelp gucharmap mbelib rainbarf yle-dl
devtodo guile mdbtools rakudo-star you-get
dieharder gupnp mdds rancher-compose youtube-dl
diff-pdf gupnp-av mdk rapidjson yubico-piv-tool
diff-so-fancy gupnp-tools mdp rbenv-binstubs z3
digdag gwyddion mdv re2 zbackup
discount gx media-info readline ✔ zebra
distribution gx-go mediaconch reattach-to-user-namespace zenity
ditaa gxml memcached ✔ rebar zero-install
djview4 h2o mercurial redis ✔ zeromq
dmd hadolint meson redpen zile
dnscrypt-wrapper hadoop mesos remarshal zimg
docker harfbuzz metabase remctl znapzend
docker-cloud haskell-stack metaproxy renameutils zookeeper
docker-compose hbase metashell repo zorba
docker-machine hebcal mg reposurgeon zpaq
docker-machine-driver-xhyve heroku mg3a rethinkdb zplug
docker-machine-nfs hh micropython rfcmarkup zsh-autosuggestions
docker-swarm highlight midnight-commander rgxg zsh-completions
dockutil highlighting-kate mighttpd2 rhash zsh-navigation-tools
doctl hive miller rhino zsh-syntax-highlighting
dovecot hledger minio riemann zurl
doxygen homebank mitmproxy riemann-client
dpkg httpie mkdocs rlwrap
==> Renamed Formulae
geode → apache-geode racket → minimal-racket sonar → sonarqube stash-cli → atlassian-cli
==> Deleted Formulae
aeskeyfind curaengine fugu lftp pyqwt sgfutils treeline
aget cuty_capt geany libdbusmenu-qt pyside shiboken txt2man
apt-cacher-ng czmqpp gimp libechonest pyside-tools slony ucspi-tools
automoc4 dircproxy git-stree libmarisa qbzr sonar-runner valkyrie
box2d disco idcomments libnice qwtpolar sqliteman wyrd
bzr-explorer dwarf jing libqglviewer rbenv-readline sqsh yap
caudec elementary jless openlitespeed rcssserver swish-e
cfitsio evas-generic-loaders jsdoc-toolkit orpie rfcdiff tevent
class-dump ezlupdate kjell pgtap rsense tlassemble
coin frescobaldi lastfmlib puddletag samba trang
==> Migrating HOMEBREW_REPOSITORY (please wait)…
==> Migrated HOMEBREW_REPOSITORY to /usr/local/Homebrew!
Homebrew no longer needs to have ownership of /usr/local. If you wish you can
return /usr/local to its default ownership with:
sudo chown root:wheel /usr/local
Robs-iMac:epic-invite roblacey$ sudo chown root:wheel /usr/local
Robs-iMac:epic-invite roblacey$ brew upgrade openssl
==> Upgrading 1 outdated package, with result:
openssl 1.0.2j
==> Upgrading openssl
==> Downloading https://homebrew.bintray.com/bottles/openssl-1.0.2j.sierra.bottle.tar.gz

  1. 100.0%
    ==> Pouring openssl-1.0.2j.sierra.bottle.tar.gz
    ==> Using the sandbox
    ==> Caveats
    A CA file has been bootstrapped using certificates from the SystemRoots
    keychain. To add additional certificates (e.g. the certificates added in
    the System keychain), place .pem files in
    /usr/local/etc/openssl/certs

and run
/usr/local/opt/openssl/bin/c_rehash

This formula is keg-only, which means it was not symlinked into /usr/local.

Apple has deprecated use of OpenSSL in favor of its own TLS and crypto libraries

Generally there are no consequences of this for you. If you build your
own software and it requires this formula, you’ll need to add to your
build variables:

LDFLAGS: -L/usr/local/opt/openssl/lib CPPFLAGS: -I/usr/local/opt/openssl/include PKG_CONFIG_PATH: /usr/local/opt/openssl/lib/pkgconfig

==> Summary
/usr/local/Cellar/openssl/1.0.2j: 1,695 files, 12M

turning off ActiveRecord logging in the console

It’s sometimes quite annoying to have SQL queries clogging up the Rails console when you don’t need to see it. You Can turn it off by setting ActiveRecord’s logger to nil

old_logger = ActiveRecord::Base.logger
ActiveRecord::Base.logger = nil

You can of course turn it back on again.

ActiveRecord::Base.logger = old_logger

since upgrading to macOS Sierra

Of course I need to re-install Command Line Developer Tools without XCode, same after every upgrade.

Robs-MBP:themadkatter rl$ git pull orgin master
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
Robs-MBP:themadkatter rl$ xcode-select --install
xcode-select: note: install requested for command line developer tools

Itty Bitty City

Found this rather nice Ardunio kit, which integrates nicely with LEGO compatible components.

https://comingsoon-tech.com/itty-bitty-city-by-microdunio-build-smart-legos

Hooking into ActiveRecord logging

Quick and dirty hook to log long SQL queries and their caller.

ActiveSupport::Notifications.subscribe 'sql.active_record' do |name, start, finish, id, payload|
  time = (finish - start) * 1000
  if payload[:sql] && time > 500
    time = (time * 1000).to_i / 1000.0
    c = caller.select { |l| l =~ /something_(core|music|artists)/ }[0]
    logger = Logger.new(Rails.root.join('log', 'active_record_slow_queries.log'))
    logger.info("(#{time}s) #{payload[:sql]} - #{c}")
  end
end

Ruby WTF #1

Answers on a postcard.

2.2.0 :004 > %w( dave )
=> ["dave"] 
2.2.0 :005 > %w) dave )
=> ["dave"]

I'm so dizzy

Playing with generating SVGs manually, we’ll with a txt file of the image and HAML and Ruby but still…

It’s only appropriate really to link to YolkFolk at this point.

Comparing plain old Ruby objects

Try Google-ing for <=> it not very helpful. It’s the spaceship method, I can never remember that. So in my case I had a custom classes representing a remote resource and I needed to compare if these objects were similar based on their id. If you compare object == other_object, they won’t be the same because they are different objects in memory. You could write…

class Tentacle
  def ==(other)
    self.id == other.id
  end
end

..but what about >, >=, <, <=, !=, etc. Comparable covers all of this.

class Tentacle
  include Comparable
  def <=>(other)
    self.id <=> other.id
  end
end

…but what if the object you’re comparing against is an instance of another class?

class Tentacle
  def <=>(other)
    return nil unless other.is_a?(self.class)
    self.id <=> other.id
  end
end

And that was the day that was.

Test expiry of a PEM Certificate

Want to test the expiry of PEM Certificate?

Robs-iMac:something roblacey$ openssl x509 -enddate -noout -in config/certificates/ios/production.pem
notAfter=Apr 21 16:55:18 2017 GMT

Nice.

RangeError (2918996727 is out of range for ActiveModel::Type::Integer with limit 4):

If you’re attempting to store an IP as an Integer in MySQL, you’ll find that an Integer just isn’t enough. I hadn’t noticed for a few days and came home to a log file full of

RangeError (2918996727 is out of range for ActiveModel::Type::Integer with limit 4):

Easily fixed.

Database changed
MariaDB [robl]> ALTER TABLE fossa_logs MODIFY ip bigint(20) NULL;
Query OK, 209 rows affected (0.03 sec)             
Records: 209  Duplicates: 0  Warnings: 0