What I’ve Learned in Four Months of Aikido

I mentioned previously that one of the reasons I neglected to post here the last few months is possibly because I’ve been getting into other things and just haven’t thought about it. More than that, I think it’s that while I’ve thought a lot about the things I’ve been doing, I don’t really feel like I know enough about them to feel super comfortable speaking publicly about it. That’s probably a stupid reason not to write, but it’s mine.

The main thing that I’ve been obsessed with the last few months is studying Aikido. I try to go four days a week, sometimes three, but not less than that unless something unexpected happens. I’d like to get up to five or six days a week, but I’m trying to moderate myself a little. Anyway — I’m pretty into it.

Before I go on let me put a big disclaimer here that I’ve only been studying for a little less than four months, and so anything I’m about to say is from the perspective of a beginner who hasn’t even taken his first test yet.

Aikido is a Japanese martial art which is primarily defensive. It was first created by a man named Morihei Ueshiba (also known as Ōsensei) starting in the 20s and 30s and was developed into what it is today in the couple of decades after World War II. Instead of trying getting into a position where you can strike an opponent or do a technique you had in mind on them on them, you’re seeing the direction their own energy taking them and working with that. At least that’s how I understand it so far. Like I said: I’m a beginner.

There’s also what the call the “spiritual side” of Aikido. A lot of time in class is spent relating Aikido philosophy of blending with an opponent and not engaging energy head on to other parts of life. I find those parts pretty interesting and giving myself a framework that helps me be a little more disciplined and aware has been nice. If nothing else, getting out of the house and doing something physical with other people a few days a week is a positive development.

The biggest thing for me, so far, has been to do something where in order to succeed I need to focus on the process instead of worrying where I’ll be in the future. I don’t feel like that’s always natural for me, but I’d like to make it that way. If I can just do the best I can every day whether it’s day ten or day ten-thousand, I’ll make progress in the time it’s going to take, and probably more of it too. I think if I could apply that elsewhere it would be really helpful for me. Something one of my teachers has said before is that they’re not just trying to make us better martial artists, they’re trying to make us better people.

Whether or not I’m actually able to use any of what I learn to defend myself physically against a person who might try to harm me (I’m nowhere close to that) anytime soon is sort of the less important part to me if I can become a more focused, disciplined person. Being someone whose able to deal with conflict better and maybe also be a little less hard on themselves when trying something new is a pretty applicable life skill for me. I’d also like to get really good at the techniques, but, like I said, that’s sort of secondary.

So, that’s what I’ve been up to the last few months. Like I said, I’m totally a beginner, and I will be for a long time. Mine probably isn’t the best description of what this whole thing is about, but it’s what I’ve gotten out of it so far.

It’s been a good thing for me.

Also I’ve been told my shoulders are looking pretty buff, so that’s sweet.

Breaking the Blogging Seal

For no particular reason I haven’t kept up blogging the last few months, even though it’s been kind of a huge three months for me. Maybe because it’s been a big three months, I’ve had other things on my mind, and that’s why I haven’t posted. Anyway — I need to stop that momentum and get back to posting. So here it is. I’m breaking the seal. More soon.

Stanley Kubrick Exhibition

Last Sunday I had the opportunity to check out the Stanley Kubrick Exhibition currently at the Contemporary Jewish Museum here in San Francisco. I’m a big Kubrick fan and seeing the props, correspondence, and equipment presented as sort of a journey through his career was really interesting.

If you’re in the area and at all interested in Kubrick’s work, you have until October 30th to go, and you definitely should. In the meantime, you can check out the Flickr album I created with some of the photos I took of the exhibit.

Stanley Kubrick Exhibition//embedr.flickr.com/assets/client-code.js

In Praise of Non-Magical Pointing Devices

Last week I tried playing a game on my Mac for the first time in a long time. About a minute in I realized that a trackpad or Magic Mouse was not going to cut it. I needed something with actual separate buttons that click. The one I landed on, after reading a few positive reviews, was the Razer DeathAdder Chroma. Yes, I agree the name is ridiculous. I choose not to focus on that.

I like it for a few reasons:

  • It’s the number one gaming mouse on Amazon, but doesn’t look too much like a gaming mouse, which is good, because I couldn’t look at one of those and take myself seriously.
  • It only has two side buttons, which is just the right amount for me. I bound them to back and forward in Safari, Xcode, etc.
  • The driver software is fantastic for the tiny bit of tweakiness I want (assigning those side buttons), and also totally Mac compatible. You can even easily set different button configurations for different apps, and it will switch automatically.
  • It feels pretty good in my hand. The buttons feel nice and clicky, too. The Magic Mouse gives me hand cramps.
  • It was only $50.

The things I miss are interial scrolling and gestures. But those suck on the Magic Mouse anyway, and are easily fixed by placing my trackpad on the other side of my keyboard for gestures.

Cultural and Unconscious Biases

This post by eevee is specifically talking about video games, but I think a lot of it is a good characterization of discriminating behaviors, why they persist, and what people who don’t get it (saying “other side” feels wrong), don’t get. This part kind of jumped out at me:

There are, of course, also cultural biases that tip the scales towards people who are white or male or cis or whatever. But even if you don’t buy that, it shouldn’t be a stretch to think that there really are overt cartoon sexists out there in the world who are just not vocal about it. Some of them might be judges or managers or politicians. Some of them might even make video games.

You might think of them as weighted coins that always come up heads. And therein lies the problem.

You have 100 coins. You flip all of them. 60 come up heads. How many are weighted?

10, you might think. And you’d be wrong, because 60 heads is entirely possible, so you can’t actually be sure any of them are weighted! But there’s a much bigger problem: which 10?

I pretty much refuse to believe there is any such thing as a “meritocracy”, because even people with good intentions have unconscious biases. Good intentions (we just want to hire the most qualified candidate) aren’t enough to do the right thing. You need to actively and conscientiously work against unconscious feelings that you may have never even been aware exist. It’s really hard and it takes a lot of practice.

Brent’s Post About Social Anxiety

Brent wrote a post that pretty much describes how I’ve felt my whole life. This part grabbed me:

I hated school even through my couple years in college. And here’s what that kindergartener’s fear turned into: the conviction that most people are likable, but that somehow I’m marked, and people can tell instantly, just by looking, that I’m not likable.

This feeling of being marked, of being obviously unlikable in some fundamental and obvious-to-everyone way, persisted into my early 20s.

The difference for me is that this feeling has continued to persist (I’m 30). There’s a few assumptions I’ve held onto for long enough that I don’t even have to think about them consciously:

  • None of my friends like me as much as I like them.
  • Others have a strong sense there’s something wrong with me.
  • If I ever really needed help, I’d be on my own because no one else deep down really cares what happens to me.

If someone as instantly likable and personable as Brent could have some of those same feelings, then maybe I’m not really all that bad either? I can’t believe I’m actually sharing this with other people.

Functions as Factories

Cocoa at Tumblr:

Factories are a fairly well understood design pattern in software development. The benefits of using factories include:

  1. Abstracting constructors away from clients.
  2. Encapsulating data that clients do not need to know about.
  3. Allowing for more testable code by enforcing the idea of passing objects into initializers instead of referencing singletons directly.

This post will show the power of a few Swift features as well as of first­-class functions.

Dynamically Sized Table View Header or Footer Using Auto Layout

I’m trying to support Dynamic Type everywhere I can in my new app. Auto Layout and self sizing table view cells (buggy as they are) makes that a lot easier for the most part. Still, there’s other places that just setting up constraints and changing the font size of a label isn’t enough. The one I’ve just dealt with is a table view header (UITableView().tableHeaderView) with text in it. If I do nothing but set up my constraints and set the header view, the font size changing will just cause extra space to appear or my text to get cut off.

The solution was to override UIViewController().viewDidLayoutSubviews(), get the proper size of the header view based on it’s constraints, set the frame on the header, and reset it as the table header view.

It took me a little while to figure this out, so here’s what I did:

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()

    // Dynamic sizing for the header view
    if let headerView = tableView.tableHeaderView {
        let height = headerView.systemLayoutSizeFittingSize(UILayoutFittingCompressedSize).height
        var headerFrame = headerView.frame

        // If we don't have this check, viewDidLayoutSubviews() will get
        // repeatedly, causing the app to hang.
        if height != headerFrame.size.height {
            headerFrame.size.height = height
            headerView.frame = headerFrame
            tableView.tableHeaderView = headerView
        }
    }
}