Friday, 19 June 2015

The Quest for Imperfection, or In Search of Wabi-Sabi

My background is in software, specifically web development. I used to do both front and back end stuff, as well as sysadmin things. I worked with graphic designers a lot, some amazingly skilled people from whom I learned the importance of getting things exactly right, visually. Exactly right. Every pixel has to be perfect, every aspect of a design thought through carefully and then polished to perfection. I'm eternally grateful for the things I learned from those people. Programming and systems admin adds a different dimension to the art of "Doing Stuff Right", that of every case being accounted for and every exception or problem caught before it happens. Beauty takes many forms, both in terms of visual design and in software too.

This focus on detail, on perfection, has carried over into my current work in the physical realm. Making stuff that is machine-perfect isn't so hard. Especially when using machines (although I don't have as many machines as I'd like, and where is that 3D printer I want?). Near-perfect radiused curves or dead-square edges are do-able by hand, and ultra-high mirror finishes leave exactly nowhere to hide on the finishing front. A single tiny scratch will show up on a mirrored ring like a beacon, a slightly mis-soldered joint will be visible from metres away. That's fine, and I'm getting much better at it. I like that I don't consider something finished until it's as perfect as I can make it.

What I find hard, perhaps ironically, is wonkiness. Imperfection. It's partly due to my background via commercial design, partly due to my experience in programming - and I'm sure it's partly due to me just being rather uptight about getting things "right" (I don't see this as being too terrible a character flaw, if I'm honest..) I'm not saying everything I make is perfect, not at all - but it's what I aim for a lot of the time - everything smooth and square and tidy and "right."

Japan has the idea of wabi-sabi, the concept of beauty in imperfection. It's a very hard concept to translate into words, yet strangely it's very obvious when you see it. "wabi-sabi nurtures all that is authentic by acknowledging three simple realities: nothing lasts, nothing is finished, and nothing is perfect."[1]

So I'm trying to be more wonky. This is the kind of thing I mean.

This was formed by hand from modelling clay, then cast in pure silver. At first glance I'm not 100% happy with some of the textures on the surface, nor with the not-mirror-smooth interior, but making myself uncomfortable is part of the point of this. Without stepping outside where I'm comfortable, how will I ever progress?

But then, it turns out that the more I see it, the more I touch it's soft organic curves and see how the light reflects and scatters off it's slightly orange-peel-like surface, the more I like it. It's human, relaxing: it has a gentle, quiet serenity.

"if an object or expression can bring about, within us, a sense of serene melancholy and a spiritual longing, then that object could be said to be wabi-sabi." [2]

It looks a bit lumpy and perhaps a bit sharp and pointy in bits but it's polished to feel soft and gentle. It's comfortable to wear, it's everything that machine-perfect is not - not that machine-perfect is bad, but there's more ways to beauty than perfect accuracy.

Another aspect to wonkiness that I'm trying to explore is that of lack of control. Making things the outcome of which is determined by factors other than me. With the clay-to-silver ring it's my fingers forming the clay, me (consciously or otherwise) guiding the shape. So I tried to find a way to take some of that control away.

Obviously just throwing a load of precious metal into a vice or a crucible or whatever isn't going to work, so I tried to set up a system where I could allow randomness to be present, but still having someone attractive come out the other side. With some heavy copper wire wrapped at intervals in fine silver wire, I let the blowtorch do the work, let the silver flow where it would. Obviously I still have some control over the output - I can choose where to apply heat or where not to, but it's a start at least.

With this technique, I made some bangles, seeing as I have a new bangle-mandrel (hey, I still need some machined help, right?). Here's how they came out:

Again, like the ring before - the result is soft, unique, unpredictable. No two bangles are identical and never can be even if I wanted them to be, yet they all share common features. Just like nature, like trees or waves, clouds or even people.

I've noticed that I keep using the word soft. Metal isn't soft. Even polished metal isn't soft. It's solid, hard stuff. Why, then, do I keep going back to that word? It's because of the feeling these pieces evoke - machines are hard, people are soft. Emotionally, hard things are bad things, but soft things are nice. Nobody ever said "I can't wait to curl up in my lovely hard bed", and that's the kind of softness I think of when I look at these things.

Have I found wabi-sabi? Do I even understand it to be able to know if I have? I don't know. I do know I've made some beautiful things using techniques and styles I haven't used before, and I've learned some things along the way, and for now at least, I think that's enough to be going on with.

Yeah, I guess this was a bit of a pretentious post. But I make jewellery. Some people even call it art (not me, but I am flattered when people say that about my work). I can be pretentious occasionally, surely?

Find imperfect stuff to buy on my Etsy store, or get in touch for a personal piece - no extra charge for custom work, as ever.

Friday, 5 June 2015

Raspberry Pi and Dotstar LED Jukebox

A little while ago I made a media centre for some friends, which had hardware audio playback controls. Much as I love giving people things, I was a bit jealous because it was pretty cool thing (even if I do say so myself). When the opportunity came up to make one for our upcoming wedding, I jumped at the chance, and added a few features extra to the original design. A little time scouring the internet for parts and then, time to assemble:

First up, out with the ironing board (soldering iron is an iron, right?). The dotstar LEDs run at 5v and the Pi's GPIO outputs at 3.3v, so we need a level shifter/bus buffer to bump the volts up a bit.

Terrible messy circuit "diagram", but it worked. You can see the LED layout down at the bottom, there are six pins on each one - power, ground, clock in, data in, clock out, data out. This means they can be chained and addressed individually by software. They're pretty smart little things. Dotstars are new and a little more flexible than NeoPixels.

OK, bit of swearing and fixing some bad solder joints later and the leds are working. Time to make something to mount them in.

Wood wood wood, it's better than bad it's good. Picked up a lovely bit of tulip from my local sawmill. This will be my first try at a mitre cornered box.

Holes in the front for the switches to poke out through.

Cutouts in the back of the front piece for the switch bodies to sit in. The wood is pretty thick but I wanted it to be a nice hefty box with some weight to it.

Glued and taped up. Fingers crossed!

Shaping a piece of perspex to go inside the box. This will be edge-lit by the led strip. It's not blue, it's clear, but the protective covering is still on. Sanding perspex is unpleasant.

Phew! Box came out OK. The back piece has cutouts for power, power switch, HDMI and audio out, and the RAVE BUTTON. I had at this point made a bit of an error. The base and the back panel were glued into place and when the top is also glued on, I won't be able to access the inside. Bad planning, but I was excited about how well the box corners had come out. Time to think of a bodge elegantly engineered solution.

Meanwhile, gluing up the piece for the lid. The piece of wood I bought wasn't quite the right size so I need to join two bits together. More clamps required.

Access solution. Cut a flap in the bottom, hinge it and hold it in place with some bits of copper. Messy, but at least it's not visible. Kicking myself for this one.

The gap between the base and the front is deliberate, however, to provide a little bit of air circulation otherwise the box would be pretty well sealed.

Audio and HDMI port replicators glued into place. The Pi gets proper mountings, which is quite exciting - normally, I just bodge these things in. I have never ever bought a single one of these little brass mount thingys, but I have hundreds of them in my random computer screws drawer.

Hot glue to fix down various bits. You can see some of the jumper cables attached to the Pi's GPIO pins, they're getting attached to the switches.

Installing the switches.

Bits and pieces installed, time to glue on the perspex. A nice layer of epoxy and 24 hours under clamps. Need more clamps.

Sanding the overhang down on the perspex was an absolute pig of a job. But it's lovely and flush now.

This was a really fun job. Gluing the leds to the inside edge of the perspex. Very satisfying.

Last shot of the interior before gluing the top on. In the end I added a usb soundcard (black thing, roughly frame centre) that I had lying around to slightly improve the sound quality. Under the hdmi cable you can see the level shifter and power distribution board. 5V goes to the Pi, the LEDs and the hard disk separately. The external power block is a 4A switched mode supply, which is just about enough to handle the theoretical max power draw of everything. The LEDs can pull almost 2A if they're all on full power but that almost never happens.

Last glue job. Top piece to perspex. Followed by lots of sanding, and then six or seven coats of satin finish poly varnish. Still need more clamps.

I also had to cut down the switches so they'll fit the lovely machined solid aluminium knobs I had to go on there.

Knobs on. Awwww yeah. They've got a great knobfeel, nice and heavy but still good and positive. Very satisfying. Each knob triggers a playlist in Kodi, and if you turn on more than one knob, it creates a playlist made of a mixture of all active playlists. I've put my code for controlling dotstar leds with a raspberry pi on another post.

Powering up, it does a little rainbow chase around the lights to let you know it's working.

Playing. The left-most switch is on, hence the fixed-colour led above it. During playback the LEDs phase gradually through the spectrum.

Mmmmm, yeah. So pleased with these corners. It's only right up close that you can notice the grain doesn't quite wrap perfectly around the corner.

Rear panel. Power switch, power socket, hdmi socket (covered), audio out, rave button.

View from the top. That tulip is so pretty.

Here are the lights in action. No audio because every time I post audio to YouTube I get told off for copyright infringement even when I'm super careful to find copyright-free music tracks. Just imagine some music you like is playing. Click through to YouTube for lovely HDness.

Obligatory link to my store, where you can't buy things like this but you can buy other lovely shiny stuff.

Dotstar LEDs with Raspberry Pi - the Python bit

In this post, I showed how I made my Raspberry Pi jukebox. Here's how it is controlled.

At it's core, it's just a python script which waits for interrupts from the Pi's GPIO pins. That's the easy bit (although it would be a lot easier if there wasn't two different ways to number GPIO pins - I mean really...)

I do know that just making a bunch of functions isn't particularly pythonic and I should probably do something with classes and objects and stuff, but I had a really immovable deadline on this project so I just stuck with what I knew (which mostly comes from php, years ago).

Adafruit provide a library to let you access the Dotstar leds, but it's pretty basic. That's cool, it was fun learning how to figure stuff out. I ended up using a couple of modules to generate colour gradients and to shift between various colourspaces.

A nifty thing happened when I wanted to flash random, but bright colours as part of rave mode. Taking random RGB values was getting very pastel colours most of the time, which wasn't quite what I was looking for. A friend on Facebook suggested using HSV, so I could set saturation/value to a high value (70-100%) and then take a random hue. Worked wonderfully, but I couldn't ever get a decent video of it in action to show the difference.

I used threading (for the first time in python, yay!) to run a background thread that polls Kodi to see if it's playing, because Kodi can be controlled by means other than the buttons, so we need to know if it's playing to decide whether to put the lights on or not.

Some leds are "fixed" - they're the ones over the switches - and will remain a single colour while the rest of the strip phases colours. That lets you know which switch is on.

Ravemode is still my favourite bit. That was good fun to come up with.

Code is long so it's after the jump. I know it could be tidier, and a bit smarter, but I was on a deadline. I shall return to fiddle with it later on. There's more I'd like this box to do, but for now it just needs to play music.