SSA Swag

A classmate from my high school must have found my Facebook and put me back on my high school alumni list because a month ago I got an e-mail that the president of my high school was doing a swing down the West Coast. Since one of the meetups was only two blocks from where my girlfriend works, I decided to drag my unemployed ass to see what’s what.

(I managed to sneak in with jeans and sneakers, both of which violated the dress code of the building the meetup was in as well as would have earned me enough disciplinary reports to get detention in my high school — but part of being voluntarily unemployed is not giving a shit.)Continue reading about a small kid in a small, but too big prep school after the jump

Don’t die without a few scars

I’ve used my break time to start repairing the decades of neglect I’ve heaped on my body by being the stereotypical 90 lb weakling. Being an introvert, that means runs and DVD workouts. And, after many false starts and almost-but-not-enough’s, I finally completed a full cycle of P90X3.

My reward for that was going to be buying and going through P90X2, but after my weight dropped to a level not seen since college — on a scrawny person like me, that’s not exactly a good thing1 — I decided I should probably stick to a simpler workout that might build a little muscle on my skin and bones. So instead, I decided to reward myself with new workout clothing and shoes:

Don't die without a few scars

Don’t die without a few scars
San Francisco, California

Sony DSC-RX1
1/80 sec @ f/4, iso 1600, 35mm

I took this photo right before Kenpo X, a workout notorious for being too easy.

Continue reading about my crummy fashion sense after the jump

Notes from: Transitions: Making sense of Life’s Changes by William Bridges

Prefaces

William Bridges wrote the first edition in 1971 and is an ex-literature teacher.

The difference between change and Transition

  • change is situational (new job, move, birth, death); transition is psychological
  • first are events, but latter has inner reorientation and self-redefinition
  • modern society focuses on change, but if the change doesn’t “take” it won’t work

Other societies had rituals (“rites of passage”) to help individuals manage transitions at specific times.Continue reading

Breadbags

Guest blogger, Charlotte Allen, of the LA Times, berates people for mocking Republican Joni Ernst’s irrelevant, stupid, and obviously-fake anecdote:

You see, growing up, I had only one good pair of shoes. So on rainy school days, my mom would slip plastic bread bags over them to keep them dry.

But I was never embarrassed. Because the school bus would be filled with rows and rows of young Iowans with bread bags slipped over their feet.

People are not mocking her because they’re rich coastal snobs1 and she’s some rural salt-of-the earth. They’re mocking her because everyone who used bread bags on cold, wet days back in the 70’s and 80’s knows you put them on the inside of your shoes to protect your socks, not the outside to where they would cause you to slip on snow and wouldn’t last ten yards on asphalt.

Also people of that generation know only a few would be so rich (and stupid) enough to wear nice shoes on a school day.2 This was back when shoes and clothing were expensive, and Gore-tex was still patented and only in expensive ski jackets.3

Finally, this trick is also not related to the income or urban/rural divide, since I grew up in the richest (by far) suburb in a large midwestern city, and we kept old bread bags for this very reason.

The fact that these two sentences are littered with at least three major errors shows that Joni Ernst never actually never did the bread bag trick. The fact that this right wing nut job disguised as a “guest blogger” in the LA Times is defending such obvious stupidity shows that neither did she.

In the case of Charlotte Allen, by being born in the 40’s she is too old to know about bread bags in shoes.4 In the case of Joni Ernst? Either she was too rich then;5 or she is too stupid to have corrected her too-young speechwriter.6


  1. OTOH, the blogger, Charlotte Allen, brags about how she writes for periodicals based in New York, Los Angeles, and Washington, DC and went to school in Stanford , Harvard, and USC. Speaking of rich, costal snobs? The hypocrisy… IT BURNS! 
  2. Exception: When I went to private school, we were required to wear leather shoes in school. In that case, people often wore docksiders or penny loafers which some others would call “nice shoes.” If you were worried that they’d fall victim to salt and water before you outgrew them (unlikely as you were going through puberty and wore these shoes all day every weekday), you would buy a pair of galoshes to cover them up or wear boots and switch them before class started. 
  3. Now tell me you wore 80’s ski jackets taped to the outside of your shoes and then we’re getting somewhere! 
  4. Plastic bread bags were popularized in the 70’s 
  5. We can eliminate her coming from a warm weather state since she grew up in Iowa. 
  6. Clothing got cheaper, better, and (in cold weather areas) lined in Gore-tex. 

Fair winds and godspeed, me hearties

Avast ye landlubbers!

It be Talk Like A Pirate Day, an’ in (dis)honor of me fav’rite day o the year, I be givin’ meself the black mark, an’ be walkin’ th’ plank off th’ ship o’ the Wikimedia Foundation a fortnight hence, on the 3rd of October.

Th’ scurvy dog Jared demands a parrrrrrrrlay of a photo of each of me sprogs after I shanghai ‘em onto the Foundation. In keeping with that grand pirate tradition (and because I suspect the scallywag hornswoggl’d me cloak of invisibility), I’ll appease thee with a last glimpse of me visage on the crew page before I visit Davy Jones’ Locker. Now maybe ye won’t be confus’d betwix’t me an’ me powder monkey, Howie.

I’ll leave ye buccaneers t’ fight over me booty1 an’ give no quarter as ye guide the Wikimedia Foundation t’ safe haven. Aye, she be a leaky old hulk, but take the light and liver of any a’ addled bilge-sucking blaggard that try an’ scuttle her!

In the meantime, you c’n read about me plunders on th’ seven seas on me blog. Here be the UarrrrrrrrL: http://terrychay.com/.

So let’s raise the Jolly Roger and drink some grog!

Arrrrrrrrrrrrr!

the dread pirate terry

Pirate to English translation: I’m leaving the Wikimedia Foundation. My last day is Friday, October 3. A more official email will follow with background on the logistics surrounding my departure. (I also finally posted a staff photo.) Arrrrrr.

(Dread Pirate) Terry Chay (WMF)

~~

terry chay  최태리
PHPirate
Wikimedia Foundation
“Imagin’ a world in which ev’ry single lad and lass c’n smartly plunder in the sum of all intellectual booty. That’s our commitment.

i: http://terrychay.com/
w: http://meta.wikimedia.org/wiki/User:Tychay


  1. All me vested WMF options. I be addin’ a treasure map to the Wiki, but it be revert’d. 

Ergo chair buying advice

A friend asks:

I’m in the market for an office chair. Does anyone use a backless “saddle stool” or anything else that’s more ergonomic?

I can’t comment on backless models, because I’m apparently an “OG Normcore” circa. 1980’s, and not into fads that didn’t survive that wonderful decade.

  1. If your a person who actually uses your brain, you’ll probably be sitting down, not standing. And if so, you’ll be spending a lot of your time there. A chair is a big deal!
  2. People are probably going to recommend the one they use.
  3. Good ergo chairs can run $1k+ and can last decades—mine is 14 years old and counting.
  4. It’s really a personal preference.

Granted, I’m know that the standing desk religious nuts claim old Benjamin as one of their own, but before you plunk 10 down, you might want to try them out before buying. In San Francisco, there are vendors for all of the top brands accessible.

The top three are:

  • Herman Miller: Invented the category with the Aeron. The Latest models are the Embody and Mirra.
  • Steelcase: The world’s largest office furniture company followed Herman Miller with the Leap. The notable ones are the Think and the Gesture. Steelcase chairs are known to be highly complex and highly customizeable (You’ll need to read the user manual to get the sitting right).
  • Humanscale: The dark horse of the elite ergonomic office chair world. Famous for the Freedom, and now the Diffrient chairs.

FYI, As I mentioned two years ago, at home I use a Humanscale Freedom that I purchased from their first store in San Jose in 2000. When I got the cushions on my chair replaced from visiting the downtown SF Humanscale offices in 2011, Marie got a Humanscale Diffrient World Chair in custom colors—another benefit of visiting the store: more color options than the website.

DSC_8400 - Version 2

Some things have changed, but a lot is still the same

Learning to curse

I forgot how much I hate the fickleness of writing software!

I finally gave up on Swift (for now). It’s a easy to pick up language because it resembles more a modern scripting language than a compiled one, and frees you up from historical artifacts like Smalltalk, C pointers, and reference counting. Plus you get awesome things like playgrounds:

Sure, it takes a little bit of chucking random “?”’s and “!”’s in your code before you get the hang of optionals, and I’d fear the performance of a basic structure like a b-tree written in Swift, but it interoperates with C and Objective-C so I don’t have to worry.

Or so I thought. Because of strong typing and the lack of built-in overloads, poorly documented character-based1 functions, here is how I inject a a random letter into a string:

let randomletter = "\(String(UnicodeScalar(65 + Int(arc4random_uniform(26)))))"

And then you find it doesn’t always release variables when you use optionals. create some optional simple objects, add them to an array reset everything and see what your NSLog() (e.g. println())) prints in your deinit:

e.g. BNRItem.swift:

import Cocoa
import Foundation

class BNRItem: NSObject, Printable {
    var itemName:String
    init(itemName name:String)
    {
        self.itemName = name
        super.init()
    }
    deinit {
        println("Destroyed \(self)")
    }
    class func randomItem() -> BNRItem
    {
        let randomAdjectiveList = ["Fluffy", "Rusty", "Shiny"]
        let randomNounList = ["Bear", "Spork", "Mac"]

        let adjectiveIndex = Int(arc4random_uniform(UInt32(randomAdjectiveList.count))) //arc4random() overflows Swift int
        let nounIndex = Int(arc4random_uniform(UInt32(randomNounList.count)))

        let randomName = "\(randomAdjectiveList[adjectiveIndex]) \(randomNounList[nounIndex])"
        return BNRItem(itemName: randomName);
    }
   override var description:String {
        return "\(itemName)"
    }

and main.swift:

import Foundation

var items = BNRItem[]()

var backpack:BNRItem? = BNRItem(itemName: "Backpack")
items.append(backpack!)
var calculator:BNRItem? = BNRItem(itemName: "Calculator")
items.append(calculator!)
backpack = nil
calculator = nil
items.append(BNRItem.randomItem())
items.append(BNRItem.randomItem())

for item in items {
    println(item)
}

// Destroy the mutable array object
println("Setting items to nil…")
items = []

creates 4 items, deletes three. Hello, memory leaks!

Then there are issues when you call C functions like CoreGraphics from Swift. My personal favorite is depending on if I restart Xcode before compiling, one of my apps compiles file or throws an error:

SetAppThreadPriority: setpriority failed with error 45

Great!

That’s not to say I won’t use it for the future. It’s just too frustrating for me to programming model (Cocoa Touch) in a language that I’m rusty at (Objective-C) in a new IDE (Xcode), translate to a language I don’t know (Swift), and not know if my errors are my own stupidity, or just the compiler is buggy.

Yes, someday Swift, and Swift playgrounds for learning the language, and perhaps even a mix of Swift and Objective-C in a iOS project, but I’m putting the language down for now until I learn Cocoa Touch.


  1. as opposed to string based functions 

Learning to smile

Learning to smile

I’ve been a manager for 2.5 years and I’ve been too long away from programming. There is something just so wonderful about being able to work again in a world where there is a right and a wrong.1

I decided to start to finally2 teach myself iOS development today for: first, because I’ve never done it before and second, because it’s an opportunity to learn a new language and re-learn an old one3 I haven’t done for over a decade.

We’ll see how it goes. I’m not optimistic.


  1. …and getting the feedback to know which is which! 
  2. This does not count. 
  3. If you call writing a median-based BPM counter for Mac OS X, “learning.” I think the jury is still out since Xcode, memory management, and the user-interface are so different now.