Friday, November 4, 2022

VMWare - Getting copy-paste support working

While doing some work in a VM today, I discovered, much to my chagrin that VMware was not allowing me to copy text from the VM back out into the host machine! As can be imagined, this is a massive pain if you're trying to Google a frustrating error message, or even to extract the error logs to file bug reports.

The method I'm reposting here has been tested to work with "VMware Workstation 16 Player" (16.1.0 build-17198959) on Windows 10. I'm reposting it here mainly so that I can find it again easier the next time this breaks, but also since the original post may end up going away (given that shabby state of the forum it's hosted on).


Original Link (by "pyhoff")



1) Ensure the VM isn't running

2) Locate the "Virtual Machines" folder. It should be under your Home Directory / Documents folder.

3) Navigate to the VM in question

4) Open up the ".vmx" file in a text editor

5) Add whichever of the following defines are missing from that file  (I just added all of them): = "FALSE" = "FALSE" = "FALSE" = "FALSE"

6) Save the file and start the VM again

7) Bi-directional copy and paste should now be working.

Tuesday, September 20, 2022

The Queen's Funeral

The droning sound of the solemn funeral march music, bells tolling, and the glum faces of everyone - the elderly royals in particular - taking part in the arduous funeral procession as it slowly trundled back and forth was quite a sight to behold (especially watching the processing turning corners - wow... that's a thing of beauty). A very very sad moment in time is the most fitting way to describe it.

Friday, September 9, 2022

On QE II's Passing

London Bridge is Down.

This morning, I awoke to news that Queen Elizabeth II had indeed passed away overnight, bringing to a close an incredible era - spanning the first successful ascent of Mount Everest, man stepping foot on the moon, the invention of the Internet, the birth of yours truly, the founding and rise of Blender, and in recent years, COVID.

Late last night, the news broke that the Queen's health had taken a turn for the worst, and that members of the Royal Family were urgently cancelling appointments and rushing to Scotland. If ever there was a clearer sign that the end was in sight, there could be no mistaking what this all meant. (*1)

Just like on the day I learned that my Grandma had died - again on a regular day in September - I can tell you the piece of code / chunk of functionality I was working on when I first heard the news. In the case of my Grandma, it was the Edit Mode curve vertex selection code - specifically, either the select next/prev, select first/last, or select nth operators. That afternoon, I'd been working on trying to get to the bottom of a series of annoying crashes in my initial implementation of those features. From memory, I think I managed to fix at least one of those, though my memory is a bit hazy now - all I remember is that after receiving the phone call, my hands went cold, and I rather hastily proceeded to quickly wrap off the bit I'd been doing, and shut down my computer.

Last night, I'd instead by trying to get working an "inline popup panel UI" for editing a CSG Node Tree (used to avoid needing switching modes / editing contexts) - my initial attempt of putting this UI in a separate window had turned out to be a massive failure, resulting in a mix of random untraceable crashes (i.e. it was deep in the bowels of the C++ / QML engine perhaps, and not inspectable from my  code) and/or more predictable yet still utterly frustrating "polish()" loop errors when the popover panels launched from buttons within that UI would run out of space to be fully displayed without cropping. In the end, I finally resolved to rip out that approach, and all back on putting the whole panel inside a popover panel instead. Doing so would hopefully bypass all the polish() loop and related issues (there was ample window-space to draw in now), at the expense of having a UI formed from nested-popups-upon-popups, and without the ability to reposition + resize those popups (not that the dialog was fully resizeable either for that matter though). In this case though, I did finally manage to get the beast working before clocking out for the night, all the while checking various twitter feeds to check if the inevitable had happened.

While the two events are not really comparable - one was after all the head of state for multiple countries - and regardless of whatever wokey-pokey convictions you may hold about the role of monarchy in the 21st century, I think it's only right and appropriate that we to spend a few moments reflecting on the life and times of one of the world's most loved and respected "grandmas", a stable and ever-present constant pillar in a rapidly changing world.

Thank you for your many decades of service Your Majesty. Rest in Peace.


Saturday, May 21, 2022

Saturday Photowalk - Recent changes around the Arts Centre...

With fine sunny weather today (sandwiched between two days of chilly, showery, wintery weather) it was a great day to get out and about, and away from my desk for a few hours. It ended up being a nice afternoon to take a walk around the Arts Centre for the first time in ages - between the first wave of Omicron, and our very own "Camp Covid" from the rabid "Freedumbs" crowd just around the corner, it's been a while since I've been to this part of town. 


Here are some highlights from the afternoon. Unfortunately, I only had my phone with me today, though things turned out relatively ok in the end I guess...

Friday, April 8, 2022

Getting rtree (0.9.7) and PyInstaller (3.4) to Work Together

This is a quick note on how to get RTree (0.9.7) and PyInstaller (3.4) to play nicely together, so that if you've got a script using RTree (e.g. for example, a script that calls trimesh.proximity.thickness()) that you need to compile into a .exe so that non-technical users can run it as a standalone binary without setting up a Python dev environment first.

These instructions are based on what worked on the project I'm working on, and are only tested with the versions listed on Windows 10. I haven't actually tested this on Linux, since most of the Linux users of this program are already doing a lot more coding work and will have dev environments set up anyway, that it doesn't matter for them.

Hopefully this helps someone else someday. 

Thursday, February 3, 2022

Musings on Typefaces

It was interesting waking up to a discussion about Garamond this morning, as Garamond was my favourite typeface during my teens.
I'd grown up using Times New Roman (and really quite liking it in general - definitely much more than the Sans Serif fonts that were all the rage back then - Arial, Tahoma, and Verdana IIRC). However, being a teenager, I ended up finding it to look a bit too "plain" and "boring". So when I first discovered Garamond, it was a breath of fresh air - like, here's this elegant and fancy looking font that's like an improved version of what I'd liked for years. While others were veering off into simpleton land with Sans Serif fonts, I would have this fancy font to use instead!
That, and it was way better than the butt ugly Computer Modern font that LaTeX uses by default. Ugh, I hate that thing. The normal weight letters are too thin / light-weight, with and have a weird aspect ratio (narrow + tall). Meanwhile, the serifs on the heading / bolded fonts look so heavy + wide + "baroque" (as in, the original sense - i.e. "grotesque").

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.