TBG Secret Santa

Another mini-project. A Secret Santa app, Facebook login, address data collection, will then select a suitable Gift Recipient, mark gifts as shipped and reciprocol gifts received.

Hosted on

Mammothfest Facebook Tab / Spotify Playlist

Created just a quick widget, although it did require buying an SSL key in order to host the app through Facebook. The playlist itself was tirelessly compiled by Fox James for the MammothFest 2015 line-up.

<!-- full width 810px -->
<iframe src="" width="810" height="920"></iframe>

<!-- width limited to 560px, width 20px border -->
<iframe src="" width="580" height="920"></iframe>

Just a demo of it in action.
It can be installed via

This really just boils down to using the Spotify embedding as below served via Facebook.

<iframe allowtransparency="true" frameborder="0" height="600" src="" width="520"></iframe>

update embed test

VEVO embedding

Raging Speedhorn PledgeMusic project

Raging Speedhorn are back and looking to do a new album, best way to test if embedding is working I suppose.

The REAL Pixels movie

Petty Annoyance of the day #1

Methods that return different object types given different input. I understand why this does what it does but when you forget the 2nd argument and an Enumerator arrives unexpectedly….

2.1.2 :068 > 'somestring'.gsub(':').class
 => Enumerator 
2.1.2 :069 > 'somestring'.gsub(':','').class
 => String 

Not sure why its Enumerator

2.1.2 :085 > 'string'.gsub(/(s)trin(g)/).each do |blah|
2.1.2 :086 >     puts blah
2.1.2 :087?>   end
2.1.2 :099 > 'string'.gsub('staobasf').map(&:object_id)
 => [] 
2.1.2 :100 > 'string'.gsub('staobasf').map
 => #<Enumerator: #<Enumerator: "string":gsub("staobasf")>:map> 

I am pretty sure I don’t need to know but hey.

SSL Certificate - CSR generation

In order to generate a *.csr and *.key file for your SSL Certificate.

openssl req -new -newkey rsa:2048 -nodes -keyout somedomain.key -out somedomain.csr
Generating a 2048 bit RSA private key
writing new private key to ''
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
Country Name (2 letter code) [AU]:GB
State or Province Name (full name) [Some-State]:East Sussex
Locality Name (eg, city) []:Brighton
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Some Limited Company Limited
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:*
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

DNS / host commands

Want a few simple DNS details for a domain from the command line?

Robs-iMac:~ roblacey$ host -t mx mail is handled by 9 mail is handled by 10

Robs-iMac:~ roblacey$ host -t txt descriptive text "google-site-verification=E4g5ZQVgm9j01RsxbiGISNBaOvtH614IHSF1RGHHGJE"

Robs-iMac:~ roblacey$ host -t a has no A record

Robs-iMac:~ roblacey$ host -t a is an alias for has address

Robs-iMac:~ roblacey$ host -t cname is an alias for

today's challenge ActionView::Template::Error: not opened for reading

  not opened for reading