Showing posts with label tutorials. Show all posts
Showing posts with label tutorials. Show all posts

Tuesday, April 28, 2026

Photo Organisation Scheme

Someone recently asked me how I currently structure my photo collection. 

 

The short answer - It's a mix of:

* "Structured" stuff for my "proper camera" stuff from 2010 onwards, 

* A similar system for camera photos too this past year and a bit, alongside / integrated

* Haphazard per-device collections for the rest


While I should try to improve this, I have also been burned before, having lost a good few months of stuff (suspected) from one old camera from a botched reorder that I then backed out from...


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.

Wednesday, February 8, 2017

Quick Tip/Hack: Getting MSBuild to Stop on First Error

One of the most annoying and common problems (as a bit of Googling soon reveals) when compiling a big project with MSBuild (multi-process) is that even if compilation fails on one of the files (due to a syntax error or some other error condition), it will keep compiling the rest of the codebase. This is bad for two reasons:
  1)  You won't be able to link the program in the end anyway. At least in my experience, even if you could link the program (and that's not a given in every case), it doesn't make much (if any) sense to have an unreproducable chimera of old + new code (though exactly which bits they are you probably won't remember a little down the track)

  2)  You'll probably have to recompile all the code again once you fix the error anyway. More often than not, I've mainly had these errors show up when changnig code in a popular header file that large swathes of the program used. So, if a compile error like this showed up, the computer would have already wasted a lot of time/energy compiling a lot of files (many of them unsuccessfully too), work that would have to be redone when you've fixed the error anyway.

After a few false starts, I ended up finding a neat (if somewhat evil) little hack to solve this problem once and for all.


Wednesday, September 28, 2016

QML Tip: Making one ShaderEffect use the output of another ShaderEffect

I've been doing quite a lot of work in QML lately for one of my research projects. Recently, I ran into some problems when trying to use ShaderEffects to actually apply them to "interesting" widgets/elements (i.e. on to anything that's not an Image and/or is more complicated than just a simple Rectangle). This post is just a quick guide to some of the key issues here (and ways around them), since it's not exactly that obvious from the documentation that this is the cause/solution, and no other hits come up about these issues...


Sunday, September 25, 2016

Useful Tip: Changing command line prompt on Windows

I just came across a useful little trick this afternoon for making the Windows command line prompt (i.e. the one you get when running cmd, which shows the current directory) much shorter  (heck, you can set it to anything you like even!), so I thought I'd just note it here so that I can look it up again should I forget in future.

prompt [new_prompt_goes_here]

That's it! Just type this little command, and it will change the prompt that gets displayed.


Sunday, March 20, 2016

Incomplete List of Things to Try for Troubleshooting Blender Cloth/Sims

I was fielding some questions about debugging problems where a cloth sim was passing through an animated character mesh this afternoon. So, I thought I'd just include a list of the common things to check on when a Blender Cloth or Physics sim doesn't collide correctly.

Disclaimer: I'm by no means an expert or too experienced with the particulars of the Blender cloth sim. However, I have played around with these enough and/or come across enough bug reports on this stuff to have a few ideas about common issues that can occur. Hopefully this will be of some use to someone out there :)


Thursday, January 7, 2016

Tip: Matrix-Fu for Solving Rigging Problems

Sometimes when trying to figure out rigging problems (e.g. working out a hack to patch around some weirdness with bone rolls, or maybe coding your own little transform tools), it pays to know a few tricks about matrices. In this post, I'm going to try and provide some "practical" advice about working with matrices, particularly for those found in Blender.

Unlike many other guides about these topics you'll likely encounter, I'm going to do away with most of the formalisms and so forth that usually happens, and just tailor this specifically for Blender, and for the sole purpose of describing the 3D transforms of an object or bone. For many years I've been meaning to write a guide like this, so let's get started!


Friday, September 11, 2015

Joel Spolsky - "You Suck at Excel"

This afternoon, I came across an interesting link (warning 1 hour long) to a talk discussing some really handy tips for making the most of Excel - you know, that thing you may have used to make silly gridded layouts with ions ago...



For me, these are particularly timely/relevant tips, as next week I'll be teaching a lab of undergraduates (actually, two streams in one day) on how to make use of performance modelling techniques to compare different UI designs.

Friday, June 19, 2015

Anim Tip: Pose Libraries are just Actions!

From time to time, I hear questions about people wanting relink Pose Libraries, or manually reorder the poses, and not knowing how/what to do. The answers to these questions are quite simple once you know one simple trick about Pose Libraries:

Pose Libraries are just Actions!  (*)



(*) The fine print:
- The pose data is just stored as keyframes in these Actions
- The "secret sauce" is that Pose Library actions use markers (stored inside the action) to tell Blender which frame each "pose" is stored on. The name of each marker is the name of the pose. These markers are drawn as the taller, "bone" shaped markers.
- If you're going to do anything to these Actions, make sure you keep the markers and keyframes in sync!


Saturday, February 28, 2015

A few tips for working with Word 2013

Over the past few weeks, I've been bunkering down to write up a big chunk of work I've been doing for my thesis studies. To make it a bit easier for dealing with some of the journals that this will eventually get published in, I've been doing this work in Word again, having previous stuck to Latex for 3-4 years (with brief stints with LibreOffice).

While I do still prefer to do large docs in Latex (large docs being more manageable when you can just split them up into a collection of small files which can be accessed quite easily, not to mention the nicer reference management, and safe in the knowledge that your images won't disappear or become randomly detached from their captions after a single keypress), and waver between liking LibreOffice and then dropping it again a few weeks later after running into yet more clunkiness/incompatibilities,  it has to be said that there are some nice things about Word.

This post will cover a few things that you may/may not know about working with Word. Some of these I only really figured out recently, and found that they do improve things quite a bit.


Saturday, September 20, 2014

Canon 7D - Blue-Green Twilight Color Balance - Revisited

In a post last month, I discussed a new tool for fine tuning white balance in-camera: White Balance Shift. Since then, I've been playing around with this setting on a numerous occasions, with mixed results (notably, for the tail end of the sunset on Aug 20). Last week, an opportunity to use this came up, with a crisp clear night and the fickle blue-green twilight that had eluded me up till now...


Finally, I think I've nailed it! The shot above was all in-camera white balance (no tweaks applied, as far as I can remember). The settings for this are as follows:
  • White Balance Mode (aka "Base" WB) = Shade
  • WB Shift = B7, G6
  • Exposure Compensation = -1 1/3
Contrary to my initial belief, it was necessary to bias the WB towards blue (instead of amber) to really draw out those rich bluish-green hues. Otherwise, you just get purple blue, with all the green-bits turned to white or faint orange-yellow. So, there you have it! The recipe for capturing blue-green twilights.

Saturday, August 9, 2014

Canon 7D Tricks I just learned of...

After close to four years of using my Canon 7D (I got it in early September 2010, about 1-2 days before the first quake - I still hadn't properly unboxed my macro lens when the 7.1 struck, which sent that lens-still-securely-boxed-up flying into the trash can into a soft bed of crumpled tissues), today I suddenly came across some features I hadn't known existed. One thing led to another, and now I've just picked up a bunch of new features which look interesting enough that I'll need to spend some time playing with them for sure...


Thursday, July 10, 2014

FAQ/Rant: Learning your way around a new codebase

From time to time, we get emails and forum postings asking about how to get started developing Blender. These almost always follow a similar predictable pattern (no offense to any individuals whose posts actually resembled this almost to the letter):

1) Blender is cool. I want to write some cool new big feature (*A) or fix some bugs (*B).
2) I've experience in C/C++/Python/Java/OpenGL and/or have taken classes in C/C++/OpenGL/matrix math (*D)
3) I'm trying to understand Blender's source code. The source code is so large that I don't know where to start (*A+E) / the "learning curve is too steep" (*A+D+E) / I tried stepping through the code in a debugger and it's too complex/hard to follow (*D+F) / it's weird/confusing (*D+F+G)
4) HEELLLLPPP MEEEEEEEEE!!!!!!!!!!!!!!!!!  PLZ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


Sunday, April 13, 2014

Link Dump - Some common and interesting questions answered

From time to time, some links will come up regarding some interesting questions which you may have always wondered about. Here is a collection of such links I collected a few months back. Enjoy!


Monday, November 18, 2013

Blender Git Migration - Productivity Tips for using Git Gui

As I've written about before, IMO the "Git Gui" frontend is one of the best tools around. Sure, it looks butt ugly - like some nasty 90's relic when run on anything other than Windows (surprisingly!) - but what it lacks it more than makes up for in terms of being 1) flexible and easily extensible, and 2) it very clearly exposes you to the Git tools and workflow as it was meant to be done.


For all the pretty gloss and extra OS integration that all the others offer, you'll find that they fall down miserably on these fronts, and eventually end up just complicating things a bit.

Saturday, October 19, 2013

One Week of Linux

So, it's been just over a week since I switched my laptop over to a dual-boot setup with Windows 8 and Linux Mint 15. (Has it really only been one week?!)



Thursday, October 10, 2013

Linux Dual Booting Adventures - Part 1: Getting the LiveCD Working

Last Wednesday, I finally managed to get the Linux Mint Live CD running on my new laptop, after over a week of failed attempts and a lot of reading online. Moments later, there was a strange wind outside, and the sky looked something like below:


Tuesday, July 9, 2013

Git Tip - Reverting latest bad commit(s), and which have also been pushed already

By and large, working with Git is "not that scary" (TM) once you figure out a safe subset of commands which will let you achieve what you want to do during a typical work session.

However, from time to time, especially when effectively "working blind" via commandline, things go wrong. Really really wrong.

Wednesday, February 20, 2013

Quick Tip - Join/Split Curves

While working with Blender curves the other day, there were two operations which I wanted to perform at the time, but couldn't find any way to do so. In theory, they were quite simple to implement, and pretty darn useful in certain cases; yet, they were nowhere to be found! A few days later, I finally had some time to look into how to implement them...

Tuesday, May 10, 2011

Rigging Tips - Setting up your rig for easy linking into shot files

Following a question from Michael in my previous post about the "Cartoon Guy" rig and seeing how this is quite an often overlooked aspect in quite a few of the otherwise great rigs being released into the community these days, I thought I'd take the time today to discuss how to set up your rigs so that they can be easily linked into shot files by animators for animation, allowing you to keep tweaking them still without having to relink the rigs into the files again.