Save your dSYM files (automatically)
As you start shipping iOS software, you're going to need your dSYM files. They allow you to take crash reports from your users and translate them from hex addresses that mean nothing to you, to handy information you can use to determine where and why your app is crashing. However, dSYM files are specific to the build they came from, so you should keep them organized.
The venerable Matt Drance recently reminded me about this, and it prompted me to write a build script to automate it for me. Right click on your target, add a new Run Script build phase, and in the Script box that pops up, input the following:
STORAGEDIR=~/Development/dSYMStorage/
BUILDDATE=`date +%Y%m%d`
cd ${BUILT_PRODUCTS_DIR}
tar -czf ${STORAGEDIR}/${PRODUCT_NAME}-${BUILDDATE}.tbz ${PRODUCT_NAME}.app ${PRODUCT_NAME}.app.dSYM
I’m Feeling Lucky
The war is apparently on, and everyone's picking sides. The side I come down on isn't hard to guess, especially if you've heard my rants about Google's ridiculous nerdlove slogan, "Don't be evil". I make my living exclusively with Apple products, so I have a rather strong bias. However, I'm going to try to at least feign objectivity for the following:
Apple isn't in the business of jumping into every single market. When they go, they do so after years of design, and they try to make a splash. With very few exceptions, they move into a market and change it's direction, leaving everybody else to play catch up while wondering why nobody did it this way before.
Google seems to want its finger in every pie. Social networking? They're in it. Collaboration tools? They're in it. Mobile OS? They're in it. If it hooks up to the web, or even has the potential to hook up to the web, Google wants a piece.
A few people have asked the question: since Google announced Google TV, will Apple respond with a much needed improvement to it's famous "hobby", AppleTV? I honestly doubt it. Apple seems to see that box as an iTunes interface for your living room, and it's perfectly functional for exactly that purpose. It certainly has the potential to fight it out head to head with Google's new offering, but does Apple see enough profit in that market to make the investment?
On another subject: The writing is clearly on the wall. We're moving from a world of desktop-centric, mouse-based computing to a mobile-centric, touch-based world. It's gonna be a while, and the desktop will never completely go away, just like the GUI didn't completely kill the CLI, but the landslide has already started and we as developers ignore it at our own peril.
I will say right now though, there won't be a Microsoft of the mobile world. The circumstances that led to Microsoft's complete domination of the desktop computer industry for so many years were unique to the time, and the people responsible for the step into the mobile computer industry are all too aware of the pitfalls that come from allowing one company complete control.
So pick a side and jump into the battle. You may choose right and you may choose wrong, but the barriers to entry are pretty small, and you can always choose another horse if yours falls too far behind. As for me, well, I'm feeling lucky.
Announcing Previously for iPad and iPhone!
I'm happy to announce my newest app, Previously. If you're reading a website on your computer, and want to move it quickly and easily to your iPad or iPhone, then Previously is the app for you! Just click the bookmarklet and launch Previously on your mobile device, and not only will it load the web site you were just reading, it will estimate where you were on the page and bring you right to that point.
Previously is available on the App Store for $4.99, which includes both the iPad and iPhone app and the free desktop client.
It’s iPad Preorder Day!
Of course, I'm excited to get one of my very own. I might be out of town the weekend of the 3rd, so I might be a few days late in getting mine delivered, but I'll have it as soon as I can.
And for those who are wondering: yes, an iPad version of Conspire is on the way. Details will be coming soon, but I can say that the plan is that the iPad version will be a full and complete version of Conspire, meaning it should match the Mac version's feature set. Also, you will be able to share a whiteboard between the Mac and the iPad versions.
I can't wait to show you all how it will work. When I first had the idea for Conspire, it was meant to be for the rumored tablet that was supposed to be out "real soon now", a year or two ago. I'm excited that I'll finally be able to do this app the way I always felt it would be best.
iPad Workflow Followup
Well it's been a few weeks and I wanted to put out a quick followup on my previous post. In case you didn't read it, I'm trying to offload some of the more distracting parts of my online life to my iPhone, and eventually the iPad. I've found the easiest things to keep on the iPhone are Twitter, and surprisingly, AIM. They're both pretty low impact for me (I'm not getting 30 @-replies a second like some people, nor am I talking on AIM all day long), so push notifications handle the load just fine.
More difficult is RSS feeds and email. Contracting requires me to read and respond to a lot of email, and I'm finding it easier to just keep it open on my laptop then to keep closing and opening Mail when I need it. Maybe this is one of those things that will get easier with the iPad. RSS feeds, I'm just finding very difficult to read on the small iPhone screen. I'm sure this will get better with the iPad's larger screen, but I'm also finding annoyances with the RSS app I'm using, NetNewsWire. Here's hoping that the iPad version is more like the desktop version.
Anyway, just a quick update. I'm finding myself integrating my iPhone into my work process more with this experiment, and I'm looking forward to doing the same with the iPad. How many days left until I can get one?
The iPad and My Workflow
I've been doing a lot of thinking about the iPad. Just to get this out of the way first, I'm absolutely sold on the device. I think it's going to be a big hit, and I definitely want one on launch day. I've got a few ideas for apps that, with any luck, will be ready on launch day, and I added iPad consulting services to my business website.
My main desire for the device is, as I call it, a "couch computer". I see myself sitting on the couch in the living room, watching tv, and chatting, twittering, browsing, and so on, on the iPad. Right now, my iPhone handles some of that, but I don't find myself using it as much as I feel I could. Most of the time, I'll stand up and walk into the office, where I left my laptop for the night. So, it would be nice to have a larger screened device, to cover the casual computing tasks that Apple designed the iPad for.
But this afternoon, I had an idea. I realized the iPad would fit very well into my work workflow, by offloading many of the distracting apps I run on a daily basis. Specifically, iChat, Tweetie, NetNewsWire, IRC, and email. I decided I can get good versions of these apps on the iPad, set them up with push notifications so I know when people are trying to get in touch with me, set the iPad down next to me on my desk and close the apps on my laptop. They'll be there if I need them on the laptop, but I'll be able to easily limit my interaction with them during the day. And as a bonus, I'll be able to pick it up at the end of the day, bring it into the kitchen to make dinner, sit on the couch to watch 24 or Burn Notice, and not miss a beat.
Of course, there's nothing stopping me from doing all of this on my iPhone right now. It will be a much nicer experience on the iPad of course, but I can definitely do it. So that's my experiment for this week. (Last week's experiment was replacing Safari with Google Chrome. It was nice, but I switched back to Safari because I missed ClickToFlash too much. Another point for the iPad, no unbearably annoying Flash ads!)
I basically have all the apps I need anyway. For RSS feeds, NetNewsWire. No push notifications on that, but I don't really want them on RSS feeds anyway. For Twitter, Tweetie 2. Again, no push notifications, but I have Boxcar set up to handle @-replies and DMs and push me into Tweetie. What a cool app. For IM, Beejive, which handles its own push notifications. I don't do a huge amount of IM communication during the day, so it shouldn't be a big deal. I already have my mail on my iPhone, of course, so all I really need is a decent IRC solution that will send me a push notification when someone mentions me. I'll keep my eyes open for that.
So for the next week, I'm going to try to use those apps on my iPhone only. I'll report back on the success of it on Friday. And if it goes well, I'll keep it going until the iPad shows up, at which point I'll move it all over onto the big(ger) screen.
For reference, here are the iTunes links to the apps I mentioned above:
- NetNewsWire Premium ($4.99)
- Tweetie 2 ($2.99)
- Boxcar ($1.99)
- BeejiveIM ($9.99)
Conspire on MacZOT!
One day only sale, today (Oct 8th), Conspire is on sale on MacZOT.com for a whopping 50% off its regular price of $29. Today only, until midnight Central time, you can get Conspire for $14.50. But act quickly!
Conspire 1.0 Released!
I released Conspire 1.0 today. I'm very excited about this, I think it's a great app and I hope lots of people will find it useful!
If you'd like to have a look, check out the site at http://www.pocketsevens.net/conspire.html. If you just can't wait and want to buy it now now now, the store is at http://store.pocketsevens.net.
C4[3] Roundup
Well, I'm home from my first C4 experience, and it was unbelievable. I want this post to serve as both a reflection on the conference and a guide for next year's first timers. So, here we go.
Code
The conference itself takes place in Chicago, over the course of a weekend. There was a mix of approximately hour long sessions, interspersed with five-minute Blitz talks. Blitz talks were a new thing this year, and I think everyone agrees, they stole the show. They were an unbelievable, runaway hit. Because of the short format, we were able to get a lot of them in, which gave a lot more people the chance to stand up and present some really cool stuff. For me, highlights were Fraser Hess's Cocoa Boutique, Dave Dribin's Testing session, Matt Drance's talk on working with Apple, Patrick Thompson on MacRuby, Jacob Godwin-Jones's Opacity (who gave us all a copy of Opacity Express, which is really cool and an amazingly nice gesture) and Chris Lloyd's Cocotron. As I understand it, videos will be made at some point of all these talks, and I recommend watching every single one. Worth mentioning is the difference of opinion in the room, which couldn't have been more clear than in the recent AppleScript/JSTalk debate that spilled over into the sessions. It was great to have both sides from passionate people. I'm still on my side (that's the "AppleScript is 15 year old legacy cruft and it's time to move on" side, the side that loved when Wolf put AppleScript in the coffin), but I really appreciate the debate and I'm glad it happened. I think I understand the other side more now.
Community
The entire weekend, I felt surrounded by 200 people who were smarter than me, and hoping just a little would rub off. C4 attracts some of the best developers in our community. It was really a privilege to sit with, socialize with and learn from them for a weekend. It's important to talk to as many people as you can, because everyone has something different to offer. I tried my hardest, and I still didn't run into some of the people I wanted to. One piece of advice regarding this: if you want to meet someone, find them and introduce yourself. Everybody at C4 expects it, and was always happy to meet me and have a conversation. Don't be intimidated by someone's reputation (or physical presence, in the case of Craig Hockenberry). Trust me, they're all there for the same reasons. The bars and after-parties are a good place to do this.
Controversy
Now, there was one not so shining moment that I'm sorry to say I was a part of. The surprise speaker this year was Marshall Culpepper, who presented the project he is leading, Appcelerator Titanium. Part of C4 is the Twitter backchannel, which allows attendees to chat about what's going on during the conference, live. During Marshall's talk, a number of us made remarks on the backchannel that were in poor taste, if not downright rude. I don't believe any of us meant to be rude or disrespectful, we were just reacting to the session, but it still came off that way, and that's what really matters. Wolf took us to task on Sunday morning for it in a clearly very difficult and passionate statement before the first session. The actual content isn't really important, but if you have to know what was said, it's all listed under @c4 on twitter. Personally, I'm very embarrassed by my role in all this, and I want to apologize to everyone there, and especially Marshall, for my behavior. Hopefully, this will stay behind us and we'll move on from here.
Canadian Bacon
Oh the food. There was SO MUCH FOOD. This was probably the one thing I wasn't really prepared for. Wolf fed us every few hours it seemed. The hotel food was really good, @violasong picked out a great menu and was prepared for vegetarians and lactose intolerant people as well. On Saturday night, we walked to Gino's East, to experience Chicago-style pizza, which I'll refer to as bread and cheese soup. I got through one slice of Meaty Legend (who screamed hilariously on the backchannel during our feeding frenzy) before I gave up. I must have put on 10 pounds during the trip. So, first timers, be ready. Work out extra hard before you go, because you will be eating, ALL THE TIME.
Wrapup
The best part of C4 is the people. I can't stress that enough. Meet everyone. Talk to everyone. Enjoy it! Talk about anything. At a bar on Saturday night, I talked sports with @gruber, found out that @kickingbear is working on something similar to Conspire (But I'm releasing first Guy!) and talked podcasting with @manton and @danielpunkass. My biggest surprise was that more people know who I am than I thought. @violasong informed me, as I was heading out to catch my shuttle to the airport, that I'm the only Republican she follows on Twitter. Victoria, I wear that as a badge of honor now! Hanging out with @kevinhoctor was as fun as ever. Meeting one of my Conspire beta testers, @eridius, was awesome too, and we had a long, laughter filled conversation on Saturday night.
So keep an eye out for next year's announcement, and be ready to jump when the tickets go on sale, because you don't want to miss C4. With any luck, I'll be there too.
Comment Script for Xcode 4
I've been working in Xcode 4 for a few days now, and I think there's a lot to like about it over Xcode 3. It takes a little getting used to, but overall it's a positive step. There is one problem though: the User Scripts functionality is missing. I never made any custom scripts for it, but one of my favorite built in scripts is a victim; the Un/Comment Selection script.
This drove me just nuts enough to come up with a workaround. I created a Service using Automator, snagged the Perl code from the Xcode 3 script and modified it a bit to work properly without the user script tags (those %%%{PBXSelection}%%% things). Installed it as a service, set the same keyboard shortcut, and it works like a charm. Of course, if it's bugging me it's probably bugging someone else too, so I have to share it.
Download the file here, unzip and drop it into ~/Library/Scripts, then launch Xcode 4 and go to the Xcode menu > Services > Services Preferences. Scroll down to the Text group and find Comment Selection, double click on the blank area on the right, and press ⌘/ to set the shortcut (or set whatever shortcut you want). Back in Xcode, select and comment at will.
There's a possibility that the User Scripts functionality will return before the final release of Xcode 4. If it does, I guess this is moot, but for now I hope it makes your development life a little easier.