Wednesday, December 22, 2021

QML Quirks - A laundry list of bizzare happenings, bugs, and dodgy incomplete crap

Over the past few years, I've built a fair few UI's using QML (Qt's DSL for writing UI code) - proper ones, including one for a mission-critical / safety-of-life application, and another powering the tool to be used across a large group of non CS types. In other words, things that had to work, and not just be interactive "nice to have" toys (aka research prototypes).

Memorably, I was once asked during an interview whether I would recommend using QML and/or how it compares to using the more battle-tested QWidgets. At the time, I'd only really used it for a bunch of research prototypes (i.e. implementing HCI experiments to be exact), where it presented a great environment for implementing the kinds of dynamic non-traditional interfaces I needed. For that it was great and saved a lot of time. But, admittedly, it did also throw up a bunch of glitches (e.g. randomly sampling garbage from the wrong texture buffers / other applications even, particles not showing when chaining several scenes together but being fine when used in isolation, etc.). At the time, I could only attribute some of these to me perhaps trying to combine a few too many highly experimental techniques where perhaps the framework hadn't been tested so great.

However, knowing what I do now, I would strongly recommend that unless you were building something non-mission critical, and where the thing is loaded with animations / dynamic effects, that you really shouldn't be using it. Sure, you may be able to knock out a prototype quite quickly - but at some point - often at ill-timed moments, you will randomly stumble across one or more intractable bugs / quirks from left field that have you scrambling to rewrite / refactor the whole lot.

 

Disclaimer: Just to be clear - I generally do still like the idea of the QML language, and I think it does many things right. However, there are also many ways in which the "declarative paradigm" is really awkward to work with (*ahem* creating dialogs / temporary items / sequential-flow-based-types / etc.) 

More disconcertingly though, implementation-wise, it is seriously lacking in quality / completeness / stability, etc. in enough ways that mean that I cannot in good conscience recommend any new greenfield projects to start adopting it now.

(Plus, the fact that the embedded scripting / logic programming language it uses is Javascript... blegh!)

[Web Browser UX Proposal] Bookmarks 2.0 - Load / Save "Page Snapshots" Instead of "Bookmarks"

It's been a while since I last posted anything here. Since then, the Blogger editor UX has changed a bit (and I'd say, quite detrimentally in a few key areas) making it a pain to write + post anything here. At some point, I'll likely end up converting this blog to a statically generated format, so I'll have full control over the longevity + setup of it, as that's been a recurring issue with Google properties for a while now.

Speaking of UX issues, here's a proposal for a way to solve one of the bigger issues we have with web browsers currently. Specifically, it aims to improve the usability of bookmarks, reduce the reliance on having to keep so many tabs open for certain reasons, and may also help the Internet Archive in its valiant efforts to keep on top of the endless churn of the web.

Note: While writing this, I've been considered setting up a web browser dev env to tinker with doing this myself (and probably fix several dozen other annoyances in the process) - but that's probably just holiday-mode brain trying to take on too many side projects that will have to get dropped as soon as the daily work-year grind starts up again.

Anyway, just thought I'd post this here to get a bit of visibility onto it.


Sunday, August 30, 2020

Spring is Here - Late August Weekend of Daffodils and Birding

The weather's been a nice and balmy 20-22 C this weekend here this weekend - perfect weather to get out and about to enjoy the daffodils and some bird stalking!


Tuesday, March 31, 2020

Tips for Making a Google Summer of Code Proposal | Developing a Software Project Plan

Today I was contacted by a student asking for help writing a Google Summer of Code proposal. With the deadline fast approaching in the next day or so, it's probably cutting it a bit late to start working on a proposal for this year's GSoC - but as every student will know, it's not a deadline if you're not waiting till the last minute to scramble up something, right ;)

 

While the advice below was written with the particular student's project in mind, I think the general concepts here are applicable to any software project, so I've decided to repost this info here in the hope that it may help others out there build better software in future.

Monday, December 30, 2019

Silvereye Season Highlights 2019

Every November, the Silvereyes come to visit the bottlebrush right outside my window, putting on a show of daring acrobatics, cheerful chirping, and occasional clumsy antics. For the past decade, it's been one of the photographic highlights of the year for me (and a big reason why I got into photography in the first place).

Good Morning!

While this year, I couldn't spend the whole day plonked in front of the window keeping an eye of them, I was lucky that the times I was around (e.g. early morning, before rushing out the door to get to work, and when unwinding after a long day at work) turned out to be the times when some of the most interesting lighting/activities happened anyway ;)

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)