Okay, after telling many people I wasn't going to organize a trip to the Mothership on the Sunday before WWDC, I may have had a change of heart. Scott Knaster, who did most of the hard leg work on arranging the buses last year, has offered to take the same role this year, and a lot of people have expressed interest, so we're thinking about running the bus trip again this year.
If you're interested in taking the bus trip down to One Infinite Loop, go here and fill out the short form. This will help us gauge how many buses we'll need to arrange.
If anybody's interested in sponsoring all or part of the trip, do let me know.
Saturday, April 16, 2011
Tuesday, April 12, 2011
MacBook Air 11" as Dev Machine
I just got back home from Seattle, where I went to attend and speak at Voices that Matter. The VTM folks put on a great conference, as always, and I'll have more to say about that in future blog posts. But, I wanted to quickly address a question I've been asked numerous times this weekend both over Twitter and in real life. That question was "how productive were you able to be with just an 11" MacBook Air?"
If you follow me on Twitter, you know that after years of using Apple's biggest and most powerful laptops (17" MacBooks and 17" PowerBooks before that), I bought Apple's smallest, least powerful one. This weekend, I decided to experiment by traveling very light. Besides the MacBook Air, my computer bag had an iPad2, a Clear 4G+, the various cables and power cords for those devices, and a mechanical pencil, nothing more. My entire bag weighed 6 pounds, which was quite a change from the monstrosity I usually have with me when I travel to conferences. With a larger computer comes a larger bag with more room for storage that inevitably gets filled with things I might maybe possibly need.
So, how'd it work out?
Absolutely perfectly. Despite being considerably less powerful, the 11" MacBook Air rarely feels slow thanks to the SSD. Certain things take noticeably longer (compiling large applications), but the vast majority of day-to-day tasks feel downright snappy.
The screen is small, but it's a pretty high pixel density, so it's not quite as confining as you might expect. With a few changes to my coding habits, which included going from Menlo-10 to Menlo-9 as my coding font, and committing the Xcode key commands to to hide and show panes to memory, I quickly settled into a workflow that worked really, really well for me.
There may have been a very slight hit to productivity, but it wasn't bad, and it was more than offset by the fact that I could use the laptop anywhere, even sitting in coach. My 17" MacBook Pro is basically unusable in coach if the person in front of me reclines their seat. And the person in front of me always reclines their seat. I got a solid 4 or 5 hours of coding in yesterday that I wouldn't have gotten with my bigger laptop.
So, yeah. It worked out great.
A couple of times this weekend, I was also asked a related question, which is "could you use it as your main development machine?".
The answer to that is "I could, but probably wouldn't want to". However, that's because of factors that probably don't impact most developers. The nature of several of our clients (sorry I can't be more specific than that) means that a lot of our mockups and images come to us as very, very, very large Photoshop files with lots of layers. I regularly have to deal with Photoshop files that are a gigabyte in size or larger.
If it weren't for that, and my occasional dabbling in 3D graphics programming, I definitely could use this machine full time. In fact, an 11" MacBook Air with a 27" Apple display, would be a very capable iPhone dev machine for most developers, though I would definitely buy the "ultimate configuration" if you are looking at getting one.
If you follow me on Twitter, you know that after years of using Apple's biggest and most powerful laptops (17" MacBooks and 17" PowerBooks before that), I bought Apple's smallest, least powerful one. This weekend, I decided to experiment by traveling very light. Besides the MacBook Air, my computer bag had an iPad2, a Clear 4G+, the various cables and power cords for those devices, and a mechanical pencil, nothing more. My entire bag weighed 6 pounds, which was quite a change from the monstrosity I usually have with me when I travel to conferences. With a larger computer comes a larger bag with more room for storage that inevitably gets filled with things I might maybe possibly need.
So, how'd it work out?
Absolutely perfectly. Despite being considerably less powerful, the 11" MacBook Air rarely feels slow thanks to the SSD. Certain things take noticeably longer (compiling large applications), but the vast majority of day-to-day tasks feel downright snappy.
The screen is small, but it's a pretty high pixel density, so it's not quite as confining as you might expect. With a few changes to my coding habits, which included going from Menlo-10 to Menlo-9 as my coding font, and committing the Xcode key commands to to hide and show panes to memory, I quickly settled into a workflow that worked really, really well for me.
There may have been a very slight hit to productivity, but it wasn't bad, and it was more than offset by the fact that I could use the laptop anywhere, even sitting in coach. My 17" MacBook Pro is basically unusable in coach if the person in front of me reclines their seat. And the person in front of me always reclines their seat. I got a solid 4 or 5 hours of coding in yesterday that I wouldn't have gotten with my bigger laptop.
So, yeah. It worked out great.
A couple of times this weekend, I was also asked a related question, which is "could you use it as your main development machine?".
The answer to that is "I could, but probably wouldn't want to". However, that's because of factors that probably don't impact most developers. The nature of several of our clients (sorry I can't be more specific than that) means that a lot of our mockups and images come to us as very, very, very large Photoshop files with lots of layers. I regularly have to deal with Photoshop files that are a gigabyte in size or larger.
If it weren't for that, and my occasional dabbling in 3D graphics programming, I definitely could use this machine full time. In fact, an 11" MacBook Air with a 27" Apple display, would be a very capable iPhone dev machine for most developers, though I would definitely buy the "ultimate configuration" if you are looking at getting one.
Tuesday, April 5, 2011
Blender 2.57 Objective-C Export Script
A few days ago, the Blender Foundation put out the first release candidate of Blender 2.5. This release unexpectedly broke compatibility with most existing 2.5 python scripts, including my Objective-C header Export Script.
Which was great timing, since I needed to use the script today. I could've just gone back to an older version of Blender, but decided instead to re-write the script to work. I just added to GitHub, the new 2.57 compatible version of the export script. This version is back to being an add-on that you can add through the User Preferences.
I've also added a few options that you can select when exporting (they're on the left side of the file selection screen, underneath the volumes and recently visited locations). You can see the new options in the following screen grab:

The first option lets you specify whether modifiers are applied before exporting the mesh. If you uncheck this, the script will strip the modifiers before exporting, otherwise, it will apply them to the mesh before exporting.
The second option will rotate the object 90° along the X axis, which converts the object from Blender's Z-up coordinate space to OpenGL's Y-up coordinate space. I've made this the default, but I could foresee situations where people would want to skip the conversion.
The final option will move the export the object using its world space coordinates rather than exporting it using object space coordinates. This option will, for example, preserve relative distance between multiple objects exported from the same file into different headers. Or, to put it another way, objects exported will normally have use their coordinates as they relate to the object's origin, regardless of where the object is in the Blender scene. If this is checked, the vertex coordinates will be exported relative to the scene's origin.
NB: There was a problem with the triangulation code in the version posted earlier. If you're having problems, pull again from GitHub.
Which was great timing, since I needed to use the script today. I could've just gone back to an older version of Blender, but decided instead to re-write the script to work. I just added to GitHub, the new 2.57 compatible version of the export script. This version is back to being an add-on that you can add through the User Preferences.
I've also added a few options that you can select when exporting (they're on the left side of the file selection screen, underneath the volumes and recently visited locations). You can see the new options in the following screen grab:

The first option lets you specify whether modifiers are applied before exporting the mesh. If you uncheck this, the script will strip the modifiers before exporting, otherwise, it will apply them to the mesh before exporting.
The second option will rotate the object 90° along the X axis, which converts the object from Blender's Z-up coordinate space to OpenGL's Y-up coordinate space. I've made this the default, but I could foresee situations where people would want to skip the conversion.
The final option will move the export the object using its world space coordinates rather than exporting it using object space coordinates. This option will, for example, preserve relative distance between multiple objects exported from the same file into different headers. Or, to put it another way, objects exported will normally have use their coordinates as they relate to the object's origin, regardless of where the object is in the Blender scene. If this is checked, the vertex coordinates will be exported relative to the scene's origin.
NB: There was a problem with the triangulation code in the version posted earlier. If you're having problems, pull again from GitHub.
App Store Review Times by Shiny Development
Dave Verwer of Shiny Development has created a web bot that trolls Twitter for tweets about App Store review times and maintains a running average of both iOS and Mac review times. The results are continuously available at this website. The more people who contribute, the better the data will be, so if you want to contribute, just tweet your review time using the #iosreviewtime or #macreviewtime hash tags like the example tweet.
Sunday, April 3, 2011
Voices that Matter Seattle
This is just a reminder that Voices that Matter Seattle is this coming weekend. I'll be presenting on iOS Multitasking on Sunday morning. I'm really looking forward to it. It looks like there's still space available if you're free this weekend.
Tuesday, March 29, 2011
Briefs is Dead, Long Live the Briefs
Rob, one of my MartianCraft partners-in-crime, decided to throw in the towel last night on Briefs.app. After a solid year of fighting with Apple's app review team, implementing changes that were suggested might clear the path for getting Briefs.app on the App Store, and trying to just get a straight answer from Apple about what the real problem was, he's finally decided it's just not worth the hassle any more.
There were several lights at the end of the tunnel over the course of the year, each one a bigger and faster freight train. Despite the changes to the license agreement that seemed to imply Apple was going to become more reasonable on this subject, they continued to insist that Briefs allowed users to download and run executable code and is dangerous.
I don't like that answer, but if that was the answer, they should have manned up and told him that a year ago rather than stringing him along, giving him false hope, and enticing him to invest more time he doesn't have on a fruitless endeavor.
This was no way to treat a third party dev, and Rob has been way too nice about the whole damn situation.
There were several lights at the end of the tunnel over the course of the year, each one a bigger and faster freight train. Despite the changes to the license agreement that seemed to imply Apple was going to become more reasonable on this subject, they continued to insist that Briefs allowed users to download and run executable code and is dangerous.
I don't like that answer, but if that was the answer, they should have manned up and told him that a year ago rather than stringing him along, giving him false hope, and enticing him to invest more time he doesn't have on a fruitless endeavor.
This was no way to treat a third party dev, and Rob has been way too nice about the whole damn situation.
Monday, March 28, 2011
On WWDC Now Being "Broken"
Over at TUAW, fellow author Erica Sadun opines that WWDC is broken because it sold out fast. And she's right. It's so horribly broken that more people want to attend than they've got room for. Th… wait, what? Where I come from, that's called "success", and it usually indicates that you're doing something right. It's not usually a big red flag that you need to make a complete about face in your approach.
But that's exactly what Erica is suggesting Apple do.
I used to work in the Enterprise software world and know all about these large conferences that Erica is referencing. I was a developer at PeopleSoft (now part of Oracle), and I've been to (and have even spoken at) mega Enterprise conferences like the old PeopleSoft conferences (20k attendees at its peak) and OracleWorld (which is now, I guess, called Oracle OpenWorld because Oracle is so… open).
Making WWDC more like these giant, soulless, "enterprise" conferences is not the answer. Scaling WWDC to 10k, 20k or 40k is fixing the problem by shooting the golden goose. Trying to scale up WWDC like that would utterly destroy everything that is wonderful about it.
WWDC is community. WWDC is actually being able to talk with the engineers who wrote the software you're having problems using. WWDC is a chance to get on a first name basis with people in our community, including (if you're lucky) some of the awesome people who make the APIs we use to make our living. It's a time for learning, absolutely, but it's also for making friendships, making business connections, and looking for future employees/employers/subcontractors. The current size of WWDC is part of what makes it great and is part of why so many people want to attend. In fact, the past few years, it's bordered on being too big, with lab slots becoming harder to get and many sessions having long lines and being standing room only.
What WWDC is, is not what giant corporate conferences like OracleWorld are. If anything, they're the polar opposite. Which is not to knock what those big conferences are - they serve a particular market, and they serve it well, but we are not their market and our needs cannot be met by adopting their model. Conferences like Oracle World are places where groups of people from the same large company or government entity go together, hang out together, and then leave together. They're places that people go because their employer is paying for them to go and has instructed them to go. They're places where people wander through large convention halls picking up swag they don't really want while being sold on the merits of various products their employers don't really need. They're vendor fair as much as a place to learn. In fact, they're usually more like one big fucking advertisement that your company pays for you to attend.
They are not events (by and large) that people save up and do without in order to attend. They're not events that people make sacrifices in order to find a way to go.
But that's exactly what WWDC is. WWDC is a conference that people want to go to even if they have to pay money out of their own pocket. It's something people look forward to attending and talk about having attended for months afterwards. It's a conference where a great many people pay their own way to attend and are thrilled to do so.
Monstrous mega-conferences don't develop community. That's simply not what they're there for. Forty thousand people isn't a community: It's a city. Forty thousand people is so far beyond anybody's monkeysphere as to make the concept of "community" meaningless. Wandering around conferences like OpenWorld no more engenders a sense of community than does walking through Times Square.
I don't want WWDC to become that. You don't want WWDC to become that. I honestly don't even think Erica really wants WWDC to become that. I think what she wants is a perfectly egalitarian world where everybody gets what they want. But that only exists in fiction. In real life, everything involves tradeoffs, and the tradeoffs with her suggested solution would be disastrous for our community.
Scarcity always increases value. Apple could have chosen to jack up the WWDC ticket price until they stopped selling out, but they didn't do that. In fact, the price hasn't increased in years. Yes, they did get rid of the early-bird pricing and group rates, but the base ticket price for WWDC has remained unchanged for quite some time (8 years maybe? Anyone know?). Apple could gouge us and many of us would pay the inflated price happily. But they don't do that. In fact, they charge us less than the early bird prices at big mega-conferences like Oracle OpenWorld, Tech Ed, and PDC, despite the fact that WWDC has no sponsors or advertisers and no vendor floor.
The simple fact of the matter is that any mechanism that Apple might implement to "level the playing field" for tickets would result in somebody feeling like they didn't get a fair chance to purchase. The more complex the scheme and the more advance notice Apple were to give, the more opportunities there would be for people to game the system and create true inequity in the process.
What Apple did do was put WWDC tickets on sale without advance notice and sold them on a first come, first served basis. That's not perfect, but it is about as close to a level playing field as you can get. Yes, some people were on planes, and some people were sleeping (including people in Silicon Valley, it should be noted), and some just weren't paying attention to the Internet when the tickets went on sale. But those tickets were available for over ten hours and everybody should have known they were going to sell out quickly. Yes, people got left out, and it sucks. That's the nature of scarcity.
This is not an artificial scarcity, however. WWDC tickets are like money, you can't just solve the scarcity by printing more tickets. Every additional ticket reduces the value of the conference to the rest of the attendees. Letting everybody have what they want means nobody gets what they really want, or need.
I'll take scarcity and a once-a-year scramble to buy tickets before they sell out over a soulless commodity conference like OpenWorld any day, thank you.
But that's exactly what Erica is suggesting Apple do.
I used to work in the Enterprise software world and know all about these large conferences that Erica is referencing. I was a developer at PeopleSoft (now part of Oracle), and I've been to (and have even spoken at) mega Enterprise conferences like the old PeopleSoft conferences (20k attendees at its peak) and OracleWorld (which is now, I guess, called Oracle OpenWorld because Oracle is so… open).
Making WWDC more like these giant, soulless, "enterprise" conferences is not the answer. Scaling WWDC to 10k, 20k or 40k is fixing the problem by shooting the golden goose. Trying to scale up WWDC like that would utterly destroy everything that is wonderful about it.
WWDC is community. WWDC is actually being able to talk with the engineers who wrote the software you're having problems using. WWDC is a chance to get on a first name basis with people in our community, including (if you're lucky) some of the awesome people who make the APIs we use to make our living. It's a time for learning, absolutely, but it's also for making friendships, making business connections, and looking for future employees/employers/subcontractors. The current size of WWDC is part of what makes it great and is part of why so many people want to attend. In fact, the past few years, it's bordered on being too big, with lab slots becoming harder to get and many sessions having long lines and being standing room only.
What WWDC is, is not what giant corporate conferences like OracleWorld are. If anything, they're the polar opposite. Which is not to knock what those big conferences are - they serve a particular market, and they serve it well, but we are not their market and our needs cannot be met by adopting their model. Conferences like Oracle World are places where groups of people from the same large company or government entity go together, hang out together, and then leave together. They're places that people go because their employer is paying for them to go and has instructed them to go. They're places where people wander through large convention halls picking up swag they don't really want while being sold on the merits of various products their employers don't really need. They're vendor fair as much as a place to learn. In fact, they're usually more like one big fucking advertisement that your company pays for you to attend.
They are not events (by and large) that people save up and do without in order to attend. They're not events that people make sacrifices in order to find a way to go.
But that's exactly what WWDC is. WWDC is a conference that people want to go to even if they have to pay money out of their own pocket. It's something people look forward to attending and talk about having attended for months afterwards. It's a conference where a great many people pay their own way to attend and are thrilled to do so.
Monstrous mega-conferences don't develop community. That's simply not what they're there for. Forty thousand people isn't a community: It's a city. Forty thousand people is so far beyond anybody's monkeysphere as to make the concept of "community" meaningless. Wandering around conferences like OpenWorld no more engenders a sense of community than does walking through Times Square.
I don't want WWDC to become that. You don't want WWDC to become that. I honestly don't even think Erica really wants WWDC to become that. I think what she wants is a perfectly egalitarian world where everybody gets what they want. But that only exists in fiction. In real life, everything involves tradeoffs, and the tradeoffs with her suggested solution would be disastrous for our community.
Scarcity always increases value. Apple could have chosen to jack up the WWDC ticket price until they stopped selling out, but they didn't do that. In fact, the price hasn't increased in years. Yes, they did get rid of the early-bird pricing and group rates, but the base ticket price for WWDC has remained unchanged for quite some time (8 years maybe? Anyone know?). Apple could gouge us and many of us would pay the inflated price happily. But they don't do that. In fact, they charge us less than the early bird prices at big mega-conferences like Oracle OpenWorld, Tech Ed, and PDC, despite the fact that WWDC has no sponsors or advertisers and no vendor floor.
The simple fact of the matter is that any mechanism that Apple might implement to "level the playing field" for tickets would result in somebody feeling like they didn't get a fair chance to purchase. The more complex the scheme and the more advance notice Apple were to give, the more opportunities there would be for people to game the system and create true inequity in the process.
What Apple did do was put WWDC tickets on sale without advance notice and sold them on a first come, first served basis. That's not perfect, but it is about as close to a level playing field as you can get. Yes, some people were on planes, and some people were sleeping (including people in Silicon Valley, it should be noted), and some just weren't paying attention to the Internet when the tickets went on sale. But those tickets were available for over ten hours and everybody should have known they were going to sell out quickly. Yes, people got left out, and it sucks. That's the nature of scarcity.
This is not an artificial scarcity, however. WWDC tickets are like money, you can't just solve the scarcity by printing more tickets. Every additional ticket reduces the value of the conference to the rest of the attendees. Letting everybody have what they want means nobody gets what they really want, or need.
I'll take scarcity and a once-a-year scramble to buy tickets before they sell out over a soulless commodity conference like OpenWorld any day, thank you.
Subscribe to:
Posts (Atom)