Automating yourself out of a job: planning

DISCLAIMER: This post appeared originally in SpiderOak’s Engineering Blog (CC BY-NC-ND 4.0).

Whenever the word automation appears in conversation, I always remember this story of a build engineer that took the word “automation” to the next level.

There are times where you want to be really needed at your job; at the very least, it gives you a sensation of stability that has nothing to do with whatever your environment is.

This should be just a stage. Stability should come from the environment, and your goal should be to not be needed in as many things as possible, so that you can focus on new things.

Continue reading “Automating yourself out of a job: planning”

Python + PySide + logging = headache

Wait what?

I’ve been working with Python and PySide for quite a while, but only just a couple of months ago as my full-time job. As it has happened to me before, I start to think “well, I really know this thing from head to toes”, and then I realize I don’t.

As a part of the LEAP Client a friend of mine started developing a log viewer for the app. Since we were already using logging, what made most sense was to have a logging.Handler subclass that harvested all the logs and then later on display those in a nice dialog. While the dialog is open, it needs to receive new logs, and for that of course we used the mighty signals.

Continue reading “Python + PySide + logging = headache”

Objective-C my C++ – Blocks

The Objective-C side

A really handy Objective-C feature that came to my attention not so long ago are blocks. Now I’m not going to write much about blocks themselves, for that there are much better docs. But here’s the basic idea:
Blocks are anonymous functions that retain the environment where they are created and abstract functionality. Depending on how that environment is presented, the block can modify it or not. Simple, right? Not exactly, but lets see an example:

Continue reading “Objective-C my C++ – Blocks”