September 27, 2014
David Owens My Swift Dilemma:
"The v1.0 release of Swift has come and gone, and v1.1 is right around the corner. My thoughts so far can be summed up as this: the hype of Swift is over for me - I want my ObjC 3.0 language. I’ll keep trucking along in Swift for the projects I can, but at the end of the day, I’m, on the whole, fairly disappointed in the language.
"The truth of the matter is that I really, really, wanted to like Swift. Much of the Objective-C syntax is clunky, bolted on, and downright infuriating at times (I’m looking at you block syntax). However, the power and flexibility the language provided in its relatively minuscule ruleset should not be overlooked.
"But it is."
My thoughts on Swift are still evolving. I have gut feelings, but I can't trust them until I sepnd more time using Swift.
September 20, 2014
Whoosh is an OS X app for sending out emails via Amazon SES.
If you're not familiar with SES, it's a simple service and API from Amazon that makes sending out mass emails (like newsletters) to thousands of folks super easy. I've been using it for a couple of years from a custom Python script I wrote, but it looks like Woosh would have been a better solution.
Why use SES over anything else? It's amazingly cheap, and it was well worth my time to switch from Campaign Monitor to it.
September 15, 2014
Since 2003 I've shipped at least eleven apps including major updates. VoodooPad 1-5, Acorn 1-4, FlySketch, and a little failed project called FlyGesture. Occasionally someone, usually an aspiring indie dev, will ask me how I do it and my standard answer is "lots of practice". While it might sound like a funny quip, there's more truth in there than not. I notice if I haven't released an update in a while, the harder it is to ship. I got out of practice. But it's OK, I've been here before and I know what to do. It's been working so far.
So yes, shipping software really does get easier with practice, and especially time. It's an experience thing. You fail, you learn, you hopefully improve.
However much time I've been doing this for, and no matter how much practice I put into it, there's one thing that always sneaks up and pulls the rug right from under me. It's usually between major releases, but not always. It's a period of time where I'm pretty lost, and I don't know what to do. I have feature lists, I have open bugs to fix, and I have an outline of where the app is going. But I feel mentally incapacitated, like I'm getting nothing done.
I call this "The Wilderness".
I hear it talked about occasionally, though I don't think people really know what's going on. And I've seen it happen to other devs as well, from the hardly known to the super famous and successful. I've seen devs fall into it, never to return.
And this is the dumbest thing, isn't it? If you've shipped an app and you want to continue, then that means you've had some measure of success. You aren't complaining, but… shouldn't things be better than this?
I have a few theories as to why this happens.
Maybe you've been making foundational changes to your app. You've been spending time cleaning up your code, rewriting those hacks you've been wanting to fix for years now. Or you're targeting a new SDK and there's all these deprecated methods to replace. So while important change is happening, you don't seem to be moving forward. You look up and all of a sudden notice this has been going on for weeks and you've been standing still all this time, and now you're standing still for no reason at all. And you're lost in the wilderness.
Maybe you have to ignore your app for a little while to work on other things, like your website or documentation. Again, while you're doing good things and even creating something from nothing, a voice in the back of your mind is constantly yelling at you that you're losing ground. But you're not! You've got documentation and web stuff to show for hours and days of work and this mental conflict arrises and you look up and you're standing in quicksand, drowning, surrounded by the wilderness. And you're asking yourself "what the hell is wrong with me?" as you slowly sink and you're too afraid to move.
Maybe it's none of the above, and your brain is just tired and wants a rest for a while. It's a brain, not a machine, and it has needs other than typing, and you find yourself wanting to do yard work at odd hours of the day. Or your mind instinctively knows that you are going to be mentally sprinting over the next couple of months, so is it cool with you if we just chill out for a while, like a big lump of dough? Oh, that's not cool? Too bad, and say hello to my cold, dark, desert of a friend I call the wilderness. You see, I'm your brain and I'm not giving you a choice on this because we've been here before and I know what's up and you're trying to kill me. So we're going to do nothing on app X for a while and you can call it forced meditation if it makes you feel better.
I like this last wilderness theory the most, probably because it seemingly takes the choice away from me.
So those are the possible reasons, but what can you do to keep from getting lost?
Here's the thing- I don't think you can keep it from happening. It just does. Your little indie brain breaks and you're left there holding the pieces trying to figure out what to do about it. But there's hope.
Ten years ago I wrote the following as a footnote to VoodooPad 2.0's post-mortem:
"I climbed the Grand Teton once with a good friend of mine. It was probably one of the hardest and most rewarding things I've ever done. While I didn't feel it at the same magnitude, on the inside finishing VoodooPad 2 reminded me alot of that trip."
And in this quote lies the seeds for how to escape the wilderness.
One foot in front of the other. Push, maintain, breath, keep looking up, and know that even when you get to the top it's not really over because you still have to come down again. You can walk for miles and maybe months in the wilderness. Just keep on going.
The trick is knowing that you aren't the first to be here, and this won't be the last time. So you take care of your mental wounds and slowly create momentum again, then one day you look up and you're making the stuff you love, fixing bugs, writing release notes, and shipping.
September 14, 2014
Caryn Vainio: Don’t Be Afraid of a Pencil:
"What I want them to understand — for everyone to understand — is that sketching is one of the most critical skills I think you could learn if you work in any environment that requires you to build something, whether that’s a physical product or a piece of software. And you should learn to stop being afraid of a pencil and a piece of blank paper, because sketching is fast, visible, collaborative communication, and it doesn’t matter how well you can draw."
A long while ago while working for Mizzou's IT department, I was attempting to write an SQL query for a perl script or java servlet, or something or another that was going out to the web probably. I don't remember exactly what the query was for, but it had something to do with dates. The reasons don't matter, but what did is that I was stuck because I didn't understand SQL. But I knew someone who did.
His name is Mike Hess, and he was our DBA. He knew SQL in ways that mere mortals didn't, and lucky for me he was sitting about 20 feet away. So I quickly walked on over to him and explained my problem. I'll never forget what he did next, as it literally changed the way I programmed for the rest of my life.
He pulled out a little yellow pad of paper and a pencil and looked up to the ceiling for a second, and started sketching out a little date line with some points on it.
I was immediately annoyed. I was young and stupid and I just wanted an answer.
He handed me the piece of paper and I went back to my desk. I stared at what he had drawn, and I didn't get it. I was slightly upset and super annoyed and I had to go back and ask him to explain (at least I wasn't so stupid that I was unwilling to ask for help when I didn't understand).
Mike smiled and explained what he had drawn with the date line and points, and then it hit me like a ton of bricks.
I understood exactly what the SQL query needed to look like. Programming could be visual. Solving problems could be visual. I love sketching. I love programming. Why had it taken me this long to realize this?
Ever since then, a pad of paper and a pencil has been my number one debugging tool.
September 10, 2014
Most of the fine writers and editors at Macworld have been let go today. The website will live on, but the print magazine is going away.
I owe my success in part to reviews of VoodooPad and Acorn that they were kind enough to publish, and Acorn even won an Eddy from them in 2009.
It's a sad day, but everyone I knew there are bright, intelligent folks and will surely be doing great things in the future.
August 16, 2014
Last Thursday was one of the bi-monthly Cocoa developer meetups (aka, Xcoders). And as usual we take over a large section of Cyclops, consume food and beverages, and chat.
And of course, at some point someone mentions that a recruiter at Apple contacted them about a team in Cupertino that needs some good developers. And hey, why not interview with them?
This happens fairly frequently.
There are lots of developers in this area, which might be unsurprising because we've got Microsoft, Amazon, Adobe, Google, various game companies, etc. But there's also a very large group of Cocoa developers in the area, though I'm not sure why exactly. Maybe it's because we have long dark winters and as long as it's miserable outside- well, you might as well learn this Cocoa stuff. Maybe it's the fresh air, or the mountains, or something else that I'm not thinking of.
So when Apple says "Hey, we've got a job down in Cupertino", the usual response is "Uh, that's great. I'm going to stay here thank you very much". And then Apple says "But, this is Apple. We're changing the world." and the developer responds "Yea, but have you seen housing and rent prices down there? And it's pretty awesome in Seattle- you couldn't pay me enough to move. Besides, Seattle is the fastest growing big city in the country, why don't you open up an office here?".
Yea, why doesn't Apple open an office in Seattle?
I know the usual responses: secrecy, being face to face is important, it is against Apple's DNA. But you know what? Apple needs quality developers in a bad way, so I think it's time for that special DNA to evolve.
Hire a manager, and open an Apple developer office in Seattle. There are plenty of places across the country where Apple has offices for historical reasons or acquisitions. Why not have a remote office on purpose this time?
Then you could quietly steal the best and brightest from MS, Adobe, and wherever. And you just solved a big part of your hiring problem.
* Flying Meat is doing awesome btw. So I'm not looking to join Apple. I just look around at all the talented people in the area, and I think Apple should do something about it.
August 11, 2014
GrandArmy: Redesigning an American Institution
"The United States Postal Service is one of America’s great infrastructure achievements. In addition to being a technical marvel, it is also a storied and hallowed institution. From the Pony Express to the first letters sent by air-mail, few things are so uniquely American.
"Plagued by budget woes in the modern era - the USPS sought to modernize its image, and more importantly, streamline the retail experience with clear signage, way-finding and packaging.
"To this end, GrandArmy developed a total re-design of the USPS in-store experience. A robust three-bar layout system was applied to all materials, from menu-boards to hang tags to welcome signs to kiosks and so on. This system holds together a huge variety of collateral. Ancillary materials include emotive creed posters, window clings, a mobile app, and shipping box design."
Looks awesome. (via Dezeen)
August 11, 2014
This month's issue of objc.io is on Testing. I haven't read it yet, but I'm willing to bet it's awesome.
And I'm a little late on this one, but last month I contributed to their Back to the Mac issue, writing about adding plugin support to your OS X app.