This idea came to my mind the other day: project management is security engineering. I’ve done both, one way or the other, and I started to see the similarities.
It’s been a while since I written anything. I have a list of things I would like to write about, but somehow I haven’t sat down to think them through.
To my surprise, here I am, sitting down writing about what seems to be a recurring subject: bypassing security checks without even trying. Not because I’m great at bypassing them, but because the checks are bad and I just happen to want to see the situations through.
This time around the subject is traveling light by air.
The best way to approach a situation, that I’ve learned, is making sure you ask the right questions. That’s it. As a manager, you don’t have to have the answers, some answers sure, but not all. That’s why you are a manager, you are the router on a network of really smart people.
You do quality of service, you filter out what content reaches the network from the outside, and you make sure packets (ideas, comments, etc) get properly from one node to the other, or if they are going to the wrong node, you make sure they are redirected. That’s it.
It’s not an easy job though, and you as a manager should be guarded by a wall of good questions to distill the right answer out of the right minds. Sometimes the right mind is yours, but the process is the same.
There are many ways to run a DevOps team. Is there a recipe in this post to run the best ops team ever? Certainly not. This is just the starting point: the basic things you need to look for when everything is on fire and you can’t just double or triple the size of the team.
How the ops team at a startup might start
I wish I was able to start this section by saying “of the 74 ops teams I helped build over the last 20 years…”, I can’t. But I’ve seen a lot of examples of people starting products, some successful, most of them not at all.
Ok, yeah, it sounds like a drastic title, but it is.
Just in case you are wondering if you are reading a baby stealer’s blog, I’m going to invade my own privacy a bit just to explain how it all went down.
Here’s the new fact you’ll know about me after this: I’ve got a newborn son.
If you happen to have a baby through the regular, nature intended way, then chances are you were right there in the delivery room with your significant other and you saw your baby getting into this world and followed him/her every step of the way from that point on.
Somewhere around 5 to 7 years ago I opened a bank account. Around 2 years ago (or was it 3?) I stopped using it because I got a new job and they offered an account in another bank with more benefits. I left some money in the first account, because it had some monthly expenses and I wanted to keep it just in case.
Time went by, I checked the account a year later or so, just to see if I had any debt. There was a bit of money in there, interestingly it had some interest so while I wasn’t making a profit, the account was almost paying for itself. “I should close this account, I’ve got no use for it now”, I said to myself.
Being how I am, time went by and I didn’t get to close the account as soon as I wanted to.
A couple of weeks ago, I tried getting to an ATM with the card for the account to check the balance, in case I might have accumulated some debt. But the card was rejected as invalid.
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.
A month ago I started learning Go, since I can’t learn by doing a ton of simple samples I started implementing a physically based renderer (may be more on this later). While reading about the language features there were a couple that sounded really great. The main one being defer calls.
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: