Wet plate collodion Christmas portrait

posted in me with 0 comments

This was the other awesome part of my weekend. Eadaoin brought me down to Enniskerry in Co. Wicklow on Saturday to see Powerscourt. As we weren’t in any particular rush, we wandered in and out of shops around the village. The village is a tourist trap that attracts the Bohemian style of vendor. The dozen shops on the square house a dozen different artists: there are cluttered antique stores, candle makers, booksellers, potters, painters and photographers in a row one after the other.

Monika Fabijanczyk is housed upstairs in a small gallery-potter-bookseller. On Saturday Monika had an offer of a wet plate collodion portrait with a large-format camera for €55. I regret that I never took any really nice photographs of Caira, Garrett and I together, Eadaoin was on hand and I am notoriously impulsive, so I jumped at the chance to do this. Monika was wonderful. She talked us through the process and even took us into her darkroom to show us the development after the image was snapped.

The final picture is beautiful, ethereal and unique and easily worth the cost. It looks simply gorgeous on felt and will hopefully be mounted in time for Christmas.

Wet plate collodion development

by Mark -

Heroes and stranger things

posted in me with 1 comment

Eadaoin and I with Cmdr. Hadfield in Dundrum, Co. Dublin

Blame my dad, but I find it hard to look up to someone. Hero-worship is anathema to me, because I’ve seen all the nasty parts of our heros up close and personal. We either idolize entertainers, the wealthy, truly deplorable monsters or vainglorious assholes. Sometimes there’s a perfect storm of abomination when we pick out men like Jimmy Savile or Rolf Harris. The heroes of the home, our parents, didn’t fare much better when I was a child. I saw all the droopy bad bits before I saw any of the good ones.

So, look-I just don’t do heroes as a rule. Even astronauts, for all the danger, skill and peril of their work, work for other people. They fly missions planned by someone else in spaceships built by someone else. Every astronaut stands on the shoulders of the efforts of thousand of people. And that, said, fuck it. I look up to *nauts, be they astro-, taiko- or cosmo-. Our destiny as a species, at least in the next few centuries, is out in the solar system. Unless we fuck up in the interim, it isn’t unreasonable to say that that we might have a permanent presence on the Moon or near-Earth asteroids by 2100. These men and women are out there one-by-one pushing back the bounds of human habitation.

I respect these pioneers, one and all. Today I met Commander Chris Hadfield, singer, pilot and retired astronaut. On Friday my friend Emily told Eadaoin and I about a book-signing event scheduled for Sunday in Dundrum. I responded yes plied Eadaoin with chocolates and the promise of cupcakes to bring her aboard. Suddenly, there we were all were in the queue outside of Eason’s bookstore in the Dundrum Shopping Centre.

Years and years ago, before I went to America, Jennifer and I went for a drive around Connemara. Just outside the village of Recess we found a small monument and plaque that reads “★ On this site in 1897 nothing happened. ★” That plaque has stuck with me since. A group of people together, did nothing and memorialized the non-event. It’s a random little inexplicable thing that made the world a stranger place. Droves of people work to make the world a better place; sure aren’t we all taught that as children? “Leave it better than you found it!” Why not stranger? Inexplicable? Scatter around a few big dumb objects for future generations while we run away giggling. I’ve implored Caira to do just this. I do this.

This post is disjoined, but in short, I was very excited to meet Cmdr. Hadfield. I asked him to inscribe the book with *”Mark, always leave the world a stranger place than you found it.” It left him a little nonplussed, so hey, mission accomplished.

by Mark -

Samsung: never again

posted in technology with 0 comments

Dell isn’t the sexiest of computer brands, but there is a bloody good reason that enterprises will buy it above and beyond other brands: Support and parts. I spilled water on my keyboard back in September. The right shift key began to stick right afterward and the keyboard was cruddy to boot, so I ordered a replacement from eBay. When it arrived I discovered that the entire top panel of my laptop is one integrated unit. The keyboard can’t be replaced otherwise, so now I wonder why the fuck it is even sold by vendors as a separate unit. I damaged the panel in learning this: I tried to peel back part of the metal on the panel on the mistaken assumption that it popped off.

Damaged panel on Samsung laptop

From that point on I had to constantly glue down the panel. I found a panel advertised for my laptop on eBay. The seller emailed me, confirmed that it was indeed for the Samsung NP300V3A-S03NL and promptly dispatched the top panel of the Samsung NP300V4A-S03NL… which is a completely different shape and size. I dug deeper into Google and eventually found a German reseller, M.K. Electronic, who had a page with a list of Samsung’s part names for the NP300V3A. My new problem is that nobody in Europe stocked the part. I hit up maybe thirty different parts portals in France, Sweden, German, Belgium, Luxembourg and Spain. Nobody held the part in inventory, would order it until I placed an order in turn, and couldn’t guarantee a delivery date. It took me a week to find a Singapore-based seller through DHgate who claimed inventory for this specific, obscure Samsung component. I had a surprise phone call from Hong Kong thirty minutes later to confirm the exact part I needed.

That was November 28. The panel arrived in good order from a Beijing warehouse this morning. There was a tiny bit of damage on the bottom, and two wires weren’t correctly secured, but its the panel. It works perfectly. See above for the scale of damage on the old panel. Dat glue action, mmm-hmm.

Lesson learned. I don’t think I’ll buy Samsung again given that specific parts have been a bitch to source.

TL:DR: China FTW.

Mark's new ghetto battlestation

by Mark -

Instasort 2.0

posted in code with 0 comments

It’s always nice to return to old scripts-in this case my Instagram image sorter-and apply what I’ve learned in the interim.

#!/usr/bin/env bash
# Sort automatically-uploaded Dropbox photographs and videos into correct 
# folders after removing crud like gifs and screenshots:
# 1. A dated folder (e.g. 1970-01-01 for an image taken on January, 1970) for 
#    non-square (non-Instagram) images.
# 2. My dump folder for square Instagram images.
# Blame Mark (mark@bhalash.com) for this. 

# Debug 
# set -x

uploads_folder=$HOME'/Dropbox/Camera Uploads/'

if [[ $UID == 0 ]]; then
    exit 1
elif [[ ! -d "$uploads_folder" ]] || [[ ! -d "$instagram_folder" ]]; then
    exit 2

function trim_spaces() {
    # Safely remove spaces in the file name.
    new_name=$(echo "$1" | sed -e 's/ /_/g')
    mv "$1" $new_name && echo $new_name

function test_aspect_ratio() {
    # Test whether the aspect ratio of image $1 == $2:1
    x=$(identify -format '%w' $1)
    y=$(identify -format '%h' $1)

    if [[ ! $file =~ \.jpg$ ]]; then
        echo 1
        return 1

    if [[ $x -ge $y ]]; then
        x=$(echo "scale=0; $x * $2" | bc -l)
    elif [[ $y -ge $x ]]; then
        y=$(echo "scale=0; $y * $2" | bc -l)

    if [[ $x -eq $y ]]; then
        echo 0
        echo 1

function make_dated_directory() {
    # Creates a dated folder and moves the image into it. 
    directory_name=$(echo "$1" | cut -c1-10)

    if [[ ! -d $directory_name ]]; then
        mkdir $directory_name

    mv $1 $directory_name

cd "$uploads_folder"
find . -maxdepth 1 -type f -name ".*png" -o -name "*.gif" -exec rm {} \;

for file in $(find . -maxdepth 1 -type f -name "* *.jpg" -o -name "* *.mov"); do
    file=$(trim_spaces "$file")

    if [[ $(test_aspect_ratio $file 1) -eq 0 ]]; then
        mv $file "$instagram_folder"
        make_dated_directory $file

exit 0

by Mark -

Rainbow text HTML element

posted in code with 0 comments

Eadaoin asked for this, as a dare. Not an ID identifier, not a class identifier, but a bona fide <rainbow-text> custom HTML5 element. And here we are, all pretensions of worthiness in this project cast to the wind. I used the rainbow colour chart on Wikipedia for the array.

'use strict';

var rainy = 'rainbow-text';

// A-l-l-l-l-l the colours of the rainbow.
var rainbowColours = [

$(function() {
    var rainbowElement = document.registerElement(rainy, {
        prototype: Object.create(HTMLElement.prototype)

    $(rainy).each(function() {
        var str = $(this).text();
        var newStr = '';

        for (var i = 0; i < str.length; i++) {
            newStr += '<span style="color: ' + rainbowColours[(i >= rainbowColours.length) ? i % rainbowColours.length : i]  + ';">' + str[i] + '</span>';


Except for the element this is no different than any other way to wrap text in rainbow colours.

<rainbow-text>HOLY SHIT RAINBOW TEXT</rainbow-text>


    <span style="color: #FF0000;">H</span>
    <span style="color: #FF7F00;">O</span>
    <span style="color: #FFFF00;">L</span>
    <span style="color: #00FF00;">Y</span>
    <span style="color: #0000FF;"> </span>
    <span style="color: #4B0082;">S</span>
    <span style="color: #8B00FF;">H</span>
    <span style="color: #FF0000;">I</span>
    <span style="color: #FF7F00;">T</span>
    <span style="color: #FFFF00;"> </span>
    <span style="color: #00FF00;">R</span>
    <span style="color: #0000FF;">A</span>
    <span style="color: #4B0082;">I</span>
    <span style="color: #8B00FF;">N</span>
    <span style="color: #FF0000;">B</span>
    <span style="color: #FF7F00;">O</span>
    <span style="color: #FFFF00;">W</span>
    <span style="color: #00FF00;"> </span>
    <span style="color: #0000FF;">T</span>
    <span style="color: #4B0082;">E</span>
    <span style="color: #8B00FF;">X</span>
    <span style="color: #FF0000;">T</span>

by Mark -