Sunday, August 11, 2019

How (Busy) Software Engineers/Scientists Use Their Computers - A Datapoint

Having spent a few years doing HCI research, I know very well the importance and value that getting data points (any data points at all) about how people set up their workspaces and organise their work/workspaces is - especially for anyone involved in Operating System UX, Personal Information Management (PIM), File Systems, or Web Browser UX work.

Today, I thought I'd make a quick post outlining my personal workflow, in the hopes that this will be a useful datapoint for anyone out there designing these systems (*wink wink* Microsoft ;).  Admittedly, the way I work is probably a bit of an outlier, but I there are many elements here that should be of general value. Hopefully this will be of use to some people out there who study this stuff :)

So, without further ado, here is an overview of my typical working environment.

Monday, July 22, 2019

SOFIA Flying Observatory Visit

It was great getting the chance to tour NASA's SOFIA flying observatory this weekend on the 50th anniversary of the first moon landing!

Monday, April 15, 2019

3 Pieces for Christchurch - March 2019 - #WeAreOne

A month ago today on 15 March 2019, a deadly terrorist attack was unleashed upon two mosques in my hometown, Christchurch NZ. Inspired by and in response to the outpouring of emotion in the wake of this horrific event, I wrote a whole bunch of music during this time - I guess partly as a coping mechanism in the wake of each day's events. From these pieces, I've picked the following three as they fit well together under the general theme of healing for a broken community.

Tuesday, January 8, 2019

Happy New Year 2019 (and a recap of 2018)

It's been a long time since I've posted anything here - May 2018 to be precise (!). Since then, a lot has been happening - so much so that I haven't really had time anymore to put together posts here. Some of these things I can't quite announce here publicly yet, but you'll no doubt find out in due course :) So, without further ado, here are some of my highlights of 2018.

In short, my 2018 was an epic year of travel, new experiences, and hanging out with many good friends old and new.

Saturday, May 5, 2018

Code Quest - Weekly Roundup (Weeks 1-4)

Lo and behold, we're almost a month into the Code Quest already! I had originally intended to write this post after the first 2 weeks (already down from my initial target of maybe a single post per week). But... between making the most of my time here to explore Amsterdam/Europe, the day to day activities in the studio, having to deal with all the other "life crap" (e.g. cooking, laundry, groceries, and some ongoing struggles with our apartment's water heating system, etc.), and finally, a broken laptop this past 1-2 weeks (more on this in a moment), the third fourth week has been and gone, and I still haven't gotten around to putting this together finishing this post!

I'm going to keep this brief though, as I'm still running my laptop off its battery after the adapter started playing up (basically last weekend, it suddenly got somewhat fried, and is now only sporadically charging, and taking nearly a day to do so when it works)... just what I needed when development activity was starting to pick up pace here!

For more up to date info as it happens, I'll be mostly posting short updates to my Twitter feed, since that's a bit easier to update using just my phone. Hopefully I haven't already started getting my dates mixed up - I'd been trying to keep notes to help remember, but it's been a challenge even finding the time to get those done!

Tuesday, April 17, 2018

Shell script to set up Ready-To-Use Blender Git Checkouts on Linux

Recently, I've been setting up quite a few copies/checkouts of Blender Git repositories (approximately 3-4 per machine I'm using - including twice on the same machine after the hard drive failed). Doing this has made me all too aware of all the steps needed to get these things into a nicely working state for development (including how you need to copy out a whole bunch of commands each time).

Today, I can announce that for Linux users, the wait is over! I've successfully put together a script that basically automates the entire procedure listed on the wiki, making it possible to relatively painlessly grab the Blender sources, and then proceed to compile and run them.

It's actually part of a larger repo of automated configuration-setup scripts/tools I've been putting together over the past few weeks to make it easier to get my computing setup deployed onto new machines faster. For the time being, I'm not quite prepared to release the actual repo where all these are housed publicly, as I still haven't managed to fully vet that no private details have managed to leak/leech into the config files contained. Unfortunately, the final release of that may have to wait until I'm back in NZ (as it seems that I ultimately ended up forgetting to transfer some critical files for a few of the programs).

Saturday, April 14, 2018

Knotted - A Short Film Idea (for testing Tools for Animating Hand-Rope/String Interactions)

(This post was split off from my post about a grand vision for the future direction of animation tools, as it was growing a bit too large for that).

For the ultimate test of hand/finger interaction with a length of string, I've dreamed up a little short film, set in a village where everyone (but the main character) is a master knot-tier. In fact, the opening scene is literally a montage of different pairs of hands tying increasingly fancy knots and bows.

The idea is that, we'd produce this short once we have the technology in place to make producing it feasible. That is, we'd have a bunch of awesome new tools that are amazing at helping animators manage such interactions (which are fiendishly hellish now), meaning that doing such shots should be much easier, meaning that we can afford to do quite a few of them to show off a bit :)  Well, at least that's the theory!

Of course, we'd first have to find a solution to that technical hurdle :)  (I'd love to have a chat with some experienced animators about this sometime in the coming months, so get in touch)

Future of Animation Tools - Some WIP Thoughts and Ideas (+ the Role of Pose Sculpting in All This)

As a follow-up on my earlier brief discussion about the general direction for Motion Path editing in Blender, I figured that it's probably time to outline a bit more my longer-term vision for the future of the animation tools (mainly in Blender, but also the wider animation industry at large) to give a bit more context/motivation to my earlier comments.

I had originally intended to release this all a bit later once I had a few more key pieces in place, but, inspired by Raf Anzovin's enlightening blog, Daniel M Lara's Easy Rigging stuff, the exciting developments in the VR-based animation space, and also the 2.8 code quest, I decided to put this out earlier.

In this article, I'm going to try to "throw the ball further" (as Emirates Team NZ would say) and take a more comprehensive view of where we need to going in the medium to long term, as well as what steps we can take now.

(NOTE: I originally started writing this article in NZ, but in between preparing a new laptop for travel, and travelling to/settling in Amsterdam for Code Quest, I've only had time to really work on finishing this in the past day or so).

Tuesday, April 3, 2018

Blender 2.8 Code Quest - Here I come!

Tomorrow marks the start of my next big adventure - travelling quite literally half a world away (with a 12 hour time inversion to boot)!

As most readers of this blog would probably know by now, next week, the Blender 2.8 "Code Quest" begins in Amsterdam. 10+ core developers of Blender will be gathering in the Blender Institute/Animation Studios for several months to get Blender 2.8 ready for public use - finishing off many todo's from the 2.8 project and/or laying the foundations for the next 5-10 years of Blender development!

Early tomorrow morning, I'll be flying out to join the team, spending some 26 hours or so of bone-crunching, butt numbing long haul flying. (Alas, this is one of those times when New Zealand's relative isolation from the rest of the world is a bit of a curse). Sitting here typing this tonight (while wrapping up a few last preparations on the stuff I'll be bringing along), it feels quite surreal to think that soon I'll finally be meeting many good friends and colleagues "in the flesh" for the first time after knowing each other for over a decade, and having spent many years watching the conference/BTS content wanting to visit Blender HQ and hang out with everyone.

Thursday, March 22, 2018

The Hunt for a New Laptop + My New Box Setup Process

I've probably mentioned this before (or maybe it was just in one of my still "in-draft-form" posts), but it's probably well and truly time that I set up a new machine. Actually, it's probably been time to do so for over a year now, but I've managed to get by with an increasingly large bunch of external hard drives and nasty hacks (i.e. command-line args + wrapper scripts) to make Blender 2.8 runnable (due to graphics driver bugs). But, as I'll soon explain, the reason why I haven't just gone out and gotten a new machine is not so much the money/cost aspect, but rather, the time + effort cost involved in hunting down a suitable machine, and then, SETTING IT UP.

Long time readers may recall the series of posts I did a few years back when I set up the current box - first spending weeks/months tweaking Windows 8 into submission, which lead to a 3-4 month unsuccessful "Linux Experiment" (which was nominally a dual-boot setup, that was an minor marathon in itself to set up). This time, I'm not currently hoping to do another Linux experiment (yet!  Until Microsoft's Windows 10 auto-updates drive me up the wall enough to start taking nuclear options...)

Anyway, with the Code Quest looming, matters have become a bit more pressing, as I'm not keen on lugging my current box over. (For one thing, I'd need to also lug a fragile external HD along with it, if I didn't want to wait several months until I could get all my photos off my camera; also, there are those hacks needed to run 2.8 (seriously inconvenient at times), and there's too much other stuff on this box that I don't want to be lugging around everywhere).

Originally, I'd been planning on getting my first desktop tower in years (with all the scope/capacity to put whatever high powered stuff in there, plus ample room for many racks of internal hard drives, a proper "silent" cooling system, and gazillions of top-mounted USB ports) for my main/daily-driver home-office workstation, and then a not-so-critical laptop that could be used on the go. (And, by "not-so-critical", I mean, I don't care soo much about max speed + max storage + max ram + graphics performance, since my tower can serve that role instead... of course that said, it'd still have to satisfy my selection criteria below still!)

Friday, March 9, 2018

Thoughts About Geometry-Editing UX issues - Multi Object Editing, Edit Modes, Selection/Action Split, etc.

Just a little earlier, I spent some time reviewing and commenting on T54242 regarding the design issues behind making Blender be able to have multiple objects in Edit/Sculpt/Paint Modes at the same time. As outlined, there are certainly a few rather prickly issues in that we'd need to resolve to be able to do this.

In this post, I'll go over a few of the key issues we need to contend with here, along with some other general thoughts I've been mulling over for quite a few years now about what IMO makes an effective UI for editing large amounts of geometry (i.e. vertices, control points, etc.)

Wednesday, February 28, 2018

Struggles of a Rust Novice - Annoyances and Stumbling Blocks

Over the past few weekends, I've been spending time investigating more of the Rust language. Along with the web trifecta (HTML, CSS, JS) and OpenFrameworks, this is one of the things I've been meaning to spend some time learning/playing with this year.

It's a funny kind of language, as I've previous noted during my very brief foray into some simple things from last year) - On one hand, a lot of the concepts seem nice/vaguely familiar to stuff I've played with in other languages, making it sometimes feel deceptively easy to use. But then, you go to compile the code, and proceed to spend the next 30-60 minutes trying to find a way to convert various things into the right types that the compiler insists you need. Admittedly, it's quite frustrating work at times (see notes on String handling below), but, it pales in comparison to the blackhole and deranged hell that is web-based dev (i.e. CSS-based Layouts in particular - aaaaaaargh!!! Despite now having "CSS Flow" and "CSS Grid", it seems that CSS Layouts and I still don't get along very much at all). Faced with a choice between the two (and having just done experienced both back-to-back recently), I'd much rather face the Rust compiler anyday.

Anyway, to actually get a proper feel for the language this time, I decided to use this opportunity to bash together a little processing tool that I was going to need for another one of the many projects I'm working on atm:
That is, a tool to take XSPF playlists generated by VLC (and containing a carefully sequenced list of music I've composed/recorded over the past year), extract the filenames (and process them to unpack/extract-out the important identifying bits of metadata I was embedding in the filenames), and then spit all this info out into a more easily consumable format (e.g. JSON).  
Sure, I could've done this all in Python (though it lacks a XML library that just gives me the DOM element tree with no "namespace" tag mangling, etc.), or a mix of VLC + Python (i.e. saving out a m3u list - 1 line per track - then processing that in Python), but this way was going to be more fun (and a good way to throw something a bit meatier/realistic at Rust than the toy-examples I'd been playing with) :)

Hopefully the following post will be enlightening to some people out there - both other newbies stuck and struggling to get their heads around certain things they keep running into, but also for the Rust dev team in their self-professed "ergonomics drive" to lessen the humps that new devs face when learning Rust.