Categories
Career Programming

Technical Interview Questions and Time Management

What Makes a Good Technical Interview Question? Three criteria of  a good interview question: Gives a sense of problem-solving and understanding. Explorable and extendable. Deeply understood by the interviewer. Problem Solving and Understanding What does this look like? The problem presented needs to be decomposed into smaller problems in order to be solved. There are […]

Categories
mobile Programming

Further Adventures in Android Development

I suspect one of my limitations as a programmer is that I don’t hack. I don’t beat away at something until it works. I read things, and I reason about it, and I write a lot of tests. This makes me very effective on platforms I’m familiar with, but I worry I’m as a result […]

Categories
Programming

Replacing KIF Tests with XCUI Tests

I thought about doing this in Swift but decided to take this one thing at a time (I haven’t written any Swift yet). My strategy: 1) get tests working and then 2) convert them to Swift. This post focuses on (1). As for what tests to write, I had a full suite of KIF tests […]

Categories
Programming

#ghc15: Natasha Murashev – The Zen Guide to WatchOS

My friend @NatashaTheRobot gave an awesome talk at GHC about WatchOS. I find a lot of tech talks focus on the how, not the why, but she completely inverted it – tying the technical details to the kind of experience you want to create. I’ve been pretty meh on watches (and glasses) because I want fewer […]

Categories
Programming

A Brief Rant about TDD

I’ve been giving this talk about unit testing UI code lately and of course when you talk about testing, TDD (test driven development) keeps coming up. The question ranges from “have you embraced TDD as the One True Way Of Testing, and if not why not because you’re doing it wrong” and “I have heard that […]

Categories
Programming

Over-Engineering Culture, Hacking, and Complexity

I was talking to a fellow escapee of The Conglomerate and we were talking about over-engineering culture. In the sense of “lol things built because it was time for someone to get promoted” and in the sense of complexity. The thing about layers and layers of (debatably necessary) abstractions is that they make things that should […]

Categories
Programming

Refactoring and Legacy Code

The first iOS project I worked on was a big mess that shipped without unit tests. It was a project that had had a number of different directions taken from a product perspective… and the code was like an archeological record of them. Since then I’ve worked on various things, most of which have been greenfield […]

Categories
Programming

iOS: Getting a Thumbnail for a Video

Between various things being deprecated, and the new Photos framework (which looks cool but seemed a bit heavyweight for this purpose) finding this took me a while! When the image picker returns with a video it has a url in info[UIImagePickerControllerMediaURL]. Then we can use AVAsset and AVAssetGenerator to get a thumbnail. // Gets the asset – […]

Categories
Programming

Things You Don’t Learn in Technical Interviews

I spend more time than I thought I would thinking about technical interviews lately, because something I’ve been doing is conducting technical interviews for a few startups including Glowforge (they’re hiring!). Since March I’ve done ~36 interviews. Designing hiring systems is hard because you only have partial data – specifically you don’t know who your […]

Categories
Programming

Unit Testing on iOS

Historically, there hasn’t been a lot of testing done on iOS, and we see the results of that every day—regressions, crashes, consistently reproducible failures. As we build more complex applications, manual testing takes more and more time and automated testing becomes increasingly necessary. The biggest challenge of testing on iOS starts at the UIViewController with […]