It was a nice Saturday night. I was trying to deconstruct a navel orange and Charity was messing around on the Xbox.
BZZZZZZZ, said the little metal box that squawks when someone outside pushes our apartment button.
"Hello?", said Charity.
"Hey, this is Dave. I’m looking for Ashley"
"Hey, this is Dave. I’m looking for Ashley. Can you buzz me in?"
"I’m sorry but we don’t know anyone by that name here. You’ve got the wrong door".
We went back to our important business. I had finally gotten the orange started. Thinking about what was to come,
At this point we looked at each other, resolving not to indulge the metal box. Charity broke first and went up to repeat the same charade. I decided I’d just go downstairs to learn more about the situation. As I walked down to the first floor I saw an average height male with an overly-large beard. It was kind-of groomed. That’s a predicate as good as any to filter out the crazy homeless people, so I cracked open the door a few inches.
"Who are you?"
"Hi, I’m Dave. I live in apartment eight."
"Oh ok, well, I can let you in but I want to make sure it’s your apartment, just in case."
He agreed, showed me his apartment key, and as he came in the door and walked past me I got a pretty strong alcohol contact buzz. We started to head up the stairs and then it struck me.
"Wait, if you have a key to your apartment, why don’t you have a key to the outside door? Wouldn’t you have both?"
He looked at me. After enough time passed for the gears to grind a little, he looked up at me and said, “Oh yeah. You’re right!”
I led him back outside the building, stepped backwards back into the foyer, and closed the door. I motioned to him through the glass to find his key and open the door. He guessed right and immediately unlocked the door.
"Thanks man!", he slurred.
"Yeah, no problem."
I often pass Callables to methods which will in turn call them at some point.
This works really well for when you want a return value. However, if you want to pass in some logic that doesn’t return anything, you’re still forced to return *something*, which is often null.
I really hate that. Welp, it turns out there’s a method java.util.concurrent.Executors.callable(Runnable r) that wraps a Runnable in a Callable that will simply return null.
Feeling hungry, I put on my flip flops and started down the stairs to go to the convenience store a block away.
As I walked out of the apartment, a man was approaching me, hailing in some language I could not understand. Bravely, I locked eyes with him and said, almost psychically,
"Yes, what is it, sir?"
A couple of very awkward seconds later as he kept repeating himself over and over, I realized he was talking to his dog behind me. Feeling stupid, I tried to pet the dog as it hurried towards its owner, but the dog avoided me at all costs. Sigh. Glad that experience was behind me, I went on to the store.
Ah, I love this place. I picked up my bag of chips, and some beer, and placed them on the counter.
"When’s them women gonna take their pants off?"
Looking at the front of the line of people to my right, the most recent contributor to my evening dialogue, someone I had not seen come into the store, was looking into my eyes, clearly expecting, possibly demanding a response. I turned to look at the television playing dully in the corner. Oh. Women’s volleyball is on. Of course, it all makes sense now.
"I don’t know, sir."
I paid for my goods and went home.
I have been working on these projects:
- event collection and storage
- distributed search pipeline
- dependency aware task execution pipeline
- relevance ranking engine
- directory synchronization
It’s without a doubt been the most challenging year I’ve had professionally, but also the most rewarding. I took the job in large part due to my realization that these are really smart people and they are doing pretty amazing things.
Before Yammer my workload was pretty straightforward. I was a consultant and helped people build somewhat standard Rails sites and also the occasional Java/Scala server work. Now I’m building systems. That’s pretty exciting and something that I had little experience in. I now skirmish with latency frequently.
It is a humbling experience. I was used to being the guy people went to with questions; no longer the case. When you’re not used to it, all of a sudden being wrong most of the time is a hard pill to swallow. And if you’re a sensitive butterfly like myself, someone giving you the hard truth about why what you’re doing is wrong can choke a fellow up. Those were good lessons to learn and they’ve made me a better engineer.
Yammer has some challenges ahead of it. Our user base is growing full speed and we’re up against some pretty stiff competition. I’ve been learning lately about some of the things coming up in the pipeline, and they are going to change the game.
Amazed at how nice the Sims Freeplay game is on the iPad.