Sunday, February 17
Lots of people have asked for my impressions, so I thought I'd post a more sober (literally) look at life with my little MacBook Air. With no cussing!
• It feels really nice, like a pebble. A large, smooth pebble, from a stream. This shape speaks to me, like the MOTOPEBL did, except that was a crappy phone and not a really nice computer.
• It is super-solid. It feels way more structurally solid than any laptop I've ever owned. I don't know if this like a synesthetic illusion because it is so beautiful, or because it has curved surfaces (== less flex!), or because it's just so darn light that there's not a lot of mass to flex.
• The prominent feet and rigity make the machine seem wobbly on anything but a 100% level surface. The antique wood tables at Zoka are not that perfect, so every time I type the machine rocks like a shopping cart at K-mart. Mushier feet, maybe? I dunno, you guys are the geniuses, you figure it out. But, seriously, wobbling things make me nuts. I'm going to start stuffing napkins under the corners of the machine, and that's not good advertising. [UPDATE: John Siracusa provided a great suggestion for this: the MacBook Air should have only three feet; three points always form a plane.]
• I love how the port door on the right opens and closes; it's a very solid-feeling mechanism, and very natural. Also, I feel like I'm in Star Trek (the new one).
• I don't run on battery much, but I've noticed it seems to take a billion years to charge it if it gets discharged, at least the first couple times. Odd.
• I got the 64GB SSD. It seems pretty awesome, but I can't fit my (legal) iTunes collection on it, even without movies, after I put my iPhoto collection on it and my source code and just a couple apps (Acorn, Twitterific, Zuma, iWork so far, MarsEdit coming).
• I'm moving over my old stuff as I need it. Copying stuff over AirPort is super-slow, but the ethernet adaptor is pretty decent. I tried to copy World of Warcraft from a friend's PowerBook (I have a legal copy, don't worry) and it was scheduled to take five hours, since she doesn't have 802.11n, even. Using the ethernet adaptor it was, like, five minutes. No surprises here, but the take-away message is, ethernet adaptor is a good idea.
• I don't try to access CDs or DVDs from my machine -- my previous machine didn't even have a working drive -- so I don't really care that it doesn't have one built-in. The external one is a thing of beauty and I almost want to buy it just
because, but it doesn't work with other machines so that kind of stinks.
• The screen is so very, very bright compared to the (1st-gen) MacBook Pro. Games look much better. It's not something you realize you want until you get it -- you think increases in resolution or color depth are cool, but when you get a brightness upgrade this dramatic you realize AH! THIS is what I really wanted! Who needs
more pixels when each of my pixels now shines so very, very brightly? ("I've seen things, you people wouldn't believe...")
• I think the machine's smallness is tearing up my neck. I'm sitting 8-10 hours a day working on this thing, and I end up looking DOWN at it more than my 15" MacBook Pro. I've had neck cramps since I got it, but I'm still adjusting, and I'm also in crunch mode with Delicious Library 2.
• It compiled Delicious Library 2 from scratch in 1'59". The 2.33GHz MacBookPro takes 2'04". SSD's LOVE compilations.
• SSD's love context switching, as well. Having an SSD is a lot like having 64GB of RAM in your machine. Sure, I'm going to lose in a Photoshop filter race with your machine, but I'm going to crush you switching between the 15 applications I have open right now. Again, it's not a surprise to say that if video editing or cutting-edge video games is your primary purpose, you'll probably find the MacBook Pro faster. But if you're writing software or just snurfing the web and running lots of apps, this machine is faster.
• Bizarrely, it still has a sudden motion sensor in it. Think about that for a minute.
• More bizarrely, if I drop the Air a foot (onto a soft, fluffy pillow on my bed -- I'm not an idiot) the sudden motion sensor will still shut down the SSD (tell it to park its heads?) and stop processing for a second. I think that's pretty funny. Hey, hardware guys: "SSD stands for SOLID-STATE DISK."
• I admit there could still be problems I don't know about with dropping SSDs, and I'm just being snide. I'm sorry, hardware guys. Still friends? Buy you a drink? Hug it out?
• I like using the "pinch" gesture. That's the only one I've really used. So far, it works great in Finder (icon mode) and iPhoto and Safari (just feels bizarre there, honestly) and two places Delicious Library 2 (shhh!). It's the right solution.
• The "swipe" gesture should have been mapped to "start scrolling and then after I stop the swipe keep scrolling slower and slower until you stop naturally or I stop you" like scrolling works on the iPhone. The Air team didn't ask me, but they should have. This would have been trivial to add to Cocoa (we added it experimentally once to DL2, may put it back). Sure I could file a RADAR bug on this, but isn't it more fun to complain on my blog like a prima donna? (Yes. Yes it is.)
• Jonathan Ive should design a laptop bag as beautiful as the Air, that just can contain the machine, a power cord, and a Wireless Mighty Mouse. I'd be in heaven. Nobody seems to have addressed the "I want a small, slim bag that can still hold a power cord without having a giant wart in the side" market. Like, duh, bag designers, STOW THE POWER CORD ABOVE OR BELOW THE LAPTOP, not STICKING OUT THE SIDE WHERE IT CREATES A TENT AND LOOKS UGLY AND BANGS MY KNEE.
• The Air runs World of Warcraft pretty damn well. Sure, I don't have, uh, specular water reflective anti-aliased spectroscopic quadrophonic roto-tilling turned on. But, you know, I can, like, heal things and run around and pick liferoot and run around some more. (PHEAR MY HEALING, EVIL-DOERS OF AZEROTH!)
• The Air's main performance limitation is heat, and mainly from the GPU. When it starts doing graphical things, it gets hot. When it gets hot, it starts venting out the bottom-back. If there's not enough clear vents (like, if you are in bed, and it's resting in your lap so the bottom vents are perfectly pressed into the fluffy down comforter) then it underclocks the GPU and you go into slide-show mode. This will happen in Zuma if you try hard enough, or if you're watching Hulu.com, even, but it's pretty easy to get it in World of Warcraft. Throwing off your comforter and getting nakeder with your Air is the only solution at this point, and also, it feels... so deliciously wrong.
• Note to hardware guys: don't put vents there, bokay? Laptops are for bed. Don't put vents right where the laptop touches my leg. (Aw, come on back, hardware guys! I still love you! Look, sometimes I just get a little angry, and when I've been drinking, well, you know my temper...)
• On the other hand, if this baby is plugged in and sitting on a flat surface, I can play Teh WoWz all day and it's great. (Not great for shipping DL2, so I don't do it, but I
could. It's nice to know it's there, like a beautiful ex who still wants to have sex with you.)
--
This isn't a machine for everyone, nor should it be. Just as there should be
three types of spaghetti sauce, you and I should not HAVE to agree on what we want in a machine. The machine should, instead, be designed to agree with us.
I admit my last post was a bit over-the-top; my point was supposed to be: "Look, this machine may not be for you, personally, but please acknowledge that there are people for whom it is perfect." For instance, Gabe told me he wants a new MacBook Pro, and I didn't try to push the Air on him (...much). He's an artist and a gamer. He wants pixels, and lots of them, and FAST. The MacBook Pro is going to run his Windows games faster than pretty much every laptop.
I
will try to steer him towards the biggest MacBook Pro that has the LED backlight, because it's just SO DARN PRETTY. And if anyone offered a 128GB SSD, I'd be recommending that to all my friends who have cash to burn. Because it's the future, baby, and it's beautiful.
-W
Labels: mac community
Saturday, February 9
Mr. Rentczchxh has posted my talk from C4, and if you would enjoy watching a talk without paying, you can watch it. It's on hype, and how I generate it, but it also touches on other topics concerning having your own software company, like making good software, bundling, getting into stores, having sex with cylons, &c.
Watch it!Or don't.Labels: advice, business, code, interface design, mac community
Tuesday, January 15
I thought of a lot of titles for this post, but, really, the first one that came to me seems the best.
I've read nothing but whining about the MacBook Air on Mac news sites since it came out this morning. Honestly, I just want to shake these people. Not, like, shake some sense into them, but shake them like you're not supposed to shake a baby.
The criticism all basically goes like this: "It's not like a MacBook Pro!"
No, really? Seriously? I mean, they introduced this new product, and it doesn't have the same specs as the MacBook Pro? God, that is bizarre. I wonder why they gave it a new name, and continue to sell the MacBook Pro, then, if it's not going to be exactly the same. I mean, that hardly makes sense, does it?
Ok, fine, there are some people who want, like, an extra battery Pack. But let's admit amongst ourselves that the overwhelming majority of people out there have never pulled the battery out of their existing laptops, and didn't even know or care that it comes out. In fact, if something goes wrong with their battery, this majority -- whom we'll call "NORMAL PEOPLE" for convenience -- will just take the damn machine to the store and get it fixed, whether it's user-serviceable or not. Because we don't want to hassle with it.
And there are people out there who do video editing on their MacBooks and want FireWire. Great! I respect your choice! You should buy a MacBook! It's an awesome machine! If you want to do that! Which I don't!
I've read journalists complain that you can't get at the hard drive in the MacBook Air. What? I have no fucking idea where the hard drive is in my MacBook Pro, and even if you drew me a damn diagram with labels and numbers and gave me a replacement drive I wouldn't open my machine even in exchange for a year with Zooey Deschanel. Ok, yes I would, but you get my point. I'm sorry, Zooey, I didn't mean it, baby.
Some journalists get so close to the truth it hurts, yet miss the large print. "OMG! The unit is all sealed and self-contained like the iPod!"
Yes... the iPod. That huge failure. Also, the iPhone. Stunning disappointment that it was. I mean, jeebus, why would Apple make ANOTHER device incredibly simple? Clearly the market has spoken, and it wants tons of ports and screws and geegaws and flippers... no, wait, no it doesn't.
You guys are TECHNOLOGY JOURNALISTS. You are GEAR HEADS. There is no shame in this, but, come on, recognize that what you think is cool is NOT what my mom thinks is cool, or what an executive thinks is cool, or what a lawyer who just wants to write a deposition on her laptop thinks is cool.
I'm a programmer. I just want a machine I can write software on. Once, I loved gadgets, too, but now I really just want a gadget that (a) works, and (b) is beautiful and easy-to-use. Sure, my iPhone doesn't have as many raw features as my lawyer's Blackberry + RAZR combined (she carries both). But I understand my iPhone, and I don't have to learn it, because it's learned me. I can take a photo in three seconds, and so can she (we tested) even though she'd never seen an iPhone before.
I'm not the freak, here. In this one instance. I'm with the majority. All software developers should be hailing the advent of the computer-as-appliance, because it means we'll be reaching into markets that are afraid of self-service machines.
I can't take apart my Kitchenaid blender. If they come out with a new motor, I'm screwed. It's not upgradeable! And when the motor blows (as it DID... grrr), I have to send it back. I can't take apart my car. When Lotus came out with a bolt-on supercharger, I had to (gasp) take it to the dealer to have it put in. Somehow I survived.
I don't buy a laptop because I want to replace its drive in a year. I buy it because it seems great and meets my needs today. If my needs magically morph over the coming year, I guess I'll sell it on eBay. Or pay Apple to throw in a different drive, or something. Honestly, I think we need to admit that just because machines get faster every year, doesn't mean that the majority of people need faster machines.
In two weeks I'll be writing Delicious Library 2 on a MacBook Air, every day. Because it's simple and beautiful, and I crave those things.
And all you haters can... well, buy one in six months, when you realize how nice it is.
--
Update 2/4/2008: My MacBook Air with 2GB of RAM and 1.8 GHz cores and the SSD compiles Delicious Library 2 from scratch in 1:59.4. My MacBook Pro with 3GB of RAM and 2.3GHz cores and an HD compile it in... 2:04.3.
MacBook Air FTW.
Labels: business, interface design, mac community
Saturday, December 22
Oh...
You feel your brain's been locked up tight
Writing good code at only at night
Waiting for a job
To challenge you
You're cracking your knuckles, trying to code my way
But that don't mean I'll hire you right away
Laddy, Laddy, Laddy
(Lady, Lady, Lady?)
Yo yo...
Your mouth's saying hire me
Oh woe...
But my brain's saying let's see C
If you wanna work for me, laddy
There's a price you pay
I'm a stickler for design
You gotta write code the right way
If you want an ADA
I can make your wish come true
You gotta make a big impression
I gotta like what you do
I'm a stickler for design, laddy
Gotta write code the right way, money
I'm a stickler for design, laddy
Add, add, add, and then cut out
The iPhone's coming and AAPL's so not low
One more release of Library to go
Waiting for someone
Who impresses me
Fingers racing at the speed of light
And not just because I'm in a Twitter fight
Laddy, Laddy, Laddy
(Lady, Lady, Lady?)
Yo yo...
I only have one engineer to go
Oh woe...
But I'm still going to hire slow
If you wanna work for me
And then Apple someday
I'm a stickler for design
You gotta write code the right way
If you want to get low pay
I can make your wish come true
Send me sample code, laddy
And maybe I'll hire you
I'm a stickler for design, laddy
Gotta write code the right way, money
I'm a stickler for design, laddy
Send, send, send your sample out
Labels: business, humor?, mac community
Tuesday, December 18
It's been a crazy couple of weeks for me...
First off, Lucas Newman is leaving Delicious Monster -- as of January 1 he will be an iPhone engineer. This is an amazing opportunity for him, one I would never ask a friend to pass up. We remain buddies, although I'm running around Zoka these last couple weeks telling every girl I see that Lucas was secretly super-hot for her and is leaving now, which I think is starting to annoy him. Although, honestly, they'll probably all end up throwing themselves at him and he'll end up on top, again.
For those keeping score at home, this makes Mike Matas, Scott Maier, Tim Omernick, Drew Hamlin, and Lucas Newman that Apple has hired out of my employ. Yes, in fact, 100% of Delicious Monster's ex-employees are now working for Apple! You'd almost think Apple would start to pay me to train people for them. Oh, well. It's every kid's dream to work there, I can't say I blame them. Heck, I might work for Apple myself if they ever asked. And, like, wanted to give me EIGHTY ZILLION DOLLARS.
Also, seriously, if you want to work for Apple, you MIGHT want to, you know... GET TO KNOW ME.
--
Mike Lee is staying at Delicious Monster -- for now... DUM DUM DUM! You have to figure he's playing the various Apple teams off each other -- when you work at Delicious Monster, you don't jump for the girl that asks you to dance. Mike's all: "CoreAudio? Don't waste my time, sweetheart." "OS X Server? I'm sorry, you're not even getting an interview." "Ali Ozer and Scott Forstall got into a fistfight over me at lunch today? Now, see, these guys understand what kind of ball we are playing."
--
I realized tonight that I had yet another problem with CoreData, and it was a doozy, and not something where I could just put a hack on it. In fact, it was indicative of a fundamental architecture mismatch that I've been struggling with since I started this project.
So, this is a little vague, but I thought it might be important to document the process. Basically, when I bang up against a wall, I start looking bigger and bigger and bigger. Like, imagine I'm having trouble with a crumbling wall in an aqueduct -- my programmers brain does this: "Ok, why did I build this wall?" To keep the water in. "Why do I have water?" Because you need that to turn the water-wheel. "Is there some other way to turn it?" Not easily. "Why must it turn?" To power the grinder. "What needs grinding?" Corn. "Is there some other way to grind it?"
I'll get to truly huge things, where I start asking if the world even needs an app that catalogs books and DVDs and now boardgames when we could all be under five feet of water in a few years. Then it's time to take a nap and wake up and start again.
But my point is, you HAVE to question all the basic assumptions that led you to where you are, or you end up spending all your time
writing the wrong code. I have always said that if you give me a perfectly spec'ed out program (one with a spec that can actually work, that I'm not going to have to modify as I go along), I can write that program for you in days. Always. The problem with coding is (a) fighting with frameworks, and (b) trying to figure out how the program should look, work, and interact even as we code it.
So we end up spending a lot of times fixing bugs in code that we really shouldn't have written in the first place -- code that doesn't really help the user, that just makes the app more complex, that is for a feature that never should have been put in, or is interacting with the user incorrectly and we're just putting spackle on a wall that's crumbling.
So here I am, tonight, running into my 1,000th bug with the fundamental mis-architecture in CoreData, which is that interacts with the UI layer and the disk layer / undo layer all using the same mechanism. They all rely on -didChangeValueForKey:, which is a huge mistake, because it means that, as a programmer, I can't sneak any data in -- I can't change a value without it creating an undo event.
Consider if, for example, I had a clock and its hands were CoreData objects. As they move forward through time, their position updates, so I'd tell them to update. And each time I did, an undo event would get pushed -- so the user actually could undo time.
This is obviously a contrived example, but it also points to the fundamental problem -- CoreData objects can't mix undoable and non-undoable changes.
So I've been struggling for three years now, trying to bend and hack and cajole CoreData's undo architecture into allowing me to do some actions synchronously and some asynchronously. (For instance, obviously, once the program has downloaded a cover from Amazon in a background thread, you don't want to UNDO the download -- it's not actually a state change, it's just a cache change -- yet, by default we end up with an undo event on the stack, in the MIDDLE of whatever the user is actually doing in the foreground.)
Fight fight gnash gnash complain complain. Tonight I hit on it. I needed to step back. Why isn't this working? Because undo wasn't designed this way in CoreData.
Well, I have undo in Delicious Library 1. It's not "magic" like with CoreData, but it works. In fact, now that I am thinking about it -- I've spent months and hundreds of lines of code trying to get CoreData's "magic" undo to work, when, in fact, there are really only FOUR actions that are ever undone:
1) Add a book -- undo to delete it
2) Delete a book -- undo to add it back
3) Change a property on a book, like its title or author -- undo to change it back
4) Make a loan -- undo to return the book
5) Return a book -- undo to re-make the loan
That's... about it. SO WHY HAVE I SPENT ALL THIS TIME TRYING TO GET COREDATA'S MAGIC SYSTEM TO WORK?
There's only five damn methods, at the top level, that need to participate in undo. It's pretty obvious I should be managing my OWN undoManager, turn off the one in CoreData, and just use CoreData for what it is EXTREMELY good at, which is minimal change tracking and fetching and storing data VERY VERY quickly.
Suddenly all these issues I've been having disappear. I don't have strange extra undo events on my stack when I fault in an object, because although CoreData might think my object changed, it's not driving the undo manager any more -- and when it goes to save, it's going to quickly discover there's no real substantive changes and just discard the whole event.
I don't have to try to work around some undo events by turning undo on and off, which required me to flush CoreData's transactions queue by hand, which was extremely sketchy because if you do it in some circumstances (eg, the middle of inserting a new object) the object will be corrupted.
--
I haven't started this yet -- I'll try it tomorrow. It's nice -- it'll pick up a bunch of the remaining issues I'm having in DL2, and should give us a good solid beta. The important thing here is, I was just too married to part of the code. I was so into using CoreData's magic undo that I kept going farther and farther to make it work, when I really needed to say, "Ok, this doesn't work in this situation, I'm doing my own undo in 40 lines of code."
Labels: code, mac community, stories
Thursday, October 18
We've got it! We got our SDK! Well, I mean, we don't HAVE it yet, but we have a promise, and a promise that times nicely with my being done with Delicious Library 2 and looking for something to do before I start on v3.
So what are we going to do with it? Sure, we're going to port Peggle (from PopCap), the BEST GAME EVER, and I hope there's a native version of Xeno Tactics (please write me if you know who can make this happen).
BUT WHAT ELSE! We need to take advantage of the incredible and unique features of the iPhone... So, I'm going to try something new in the comments, here, and encourage people to brainstorm with me, either with new ideas or refining previous ideas to make them more possible / more fun.
Let's look at the perfect storm of features the iPhone has brewing:
- Always on. No other handheld consumer device is always on. Laptops go to sleep, as do DS Lites. Always on means that if we write social software, our iPhone can find other iPhones to talk to
for us based on some criteria, and then notify us as it finds matches. Welcome to the REAL social, bitches.
- Always with their masters. Nobody who owns an iPhone will venture more than 20 feet from it.
- Pretty damn popular. Sure, there is an order of magnitude more DSes, but iPhone is growing at a crazy rate. I see several every day at the café that I actually did NOT buy!
- A cool variety of inputs, including acceleration detectors and a touch screen.
- Really good resolution. Fairly fast graphics for certain subsets of drawing, but not something that'll run Quake 3 at a billion FPS.
- Great networking, including Bluetooth, WiFi, and Edge. (Bono to be included in the next version.)
- Doesn't require a cartridge per app, like Gameboys or Sony PSPs. All apps are resident in the iPhone at once, and multitask, so having a few casual, silly apps is much more likely. (Eg, you don't have to scream to everyone in the café, "Hey, let's all put in our social networking cartridge so we can break the ice!)
- Is not butt-ugly like Zune.
Idea 1) "My Pokémons, Let Me Show Them To You."
Imagine carrying all your Pokémon (or Magic, or whatever) cards around on your phone, and you can show 'em off CoverFlow-style, baby. If some other iPhone-wielding fool wants to step to your deck, you press a button for a WiFi connection (or bluetooth, even) and get to use your fingers to point to cards you want and throw them out on the playfield - it gives card battles a real tactile interaction.
How do your cards get in to the phone? Well, if you want to use existing cards, you scan them in with the iPhone's camera, and recognize the photo (compared to a database of cards) and add that physical card to the user's virtual collection.
Finally, you can trade virtual cards to people around you. For extra style points, you could list a bunch of cards you want and cards you don't want, and other iPhone users running the same client would just get notified that a potential trade is in their area. I imagine Gabe at the opera (yes, I like to imagine him going to the opera, ok?) and suddenly his phone starts buzzing and someone wants to buy one of his chimpochocs. "Honey, shhhh!"
Idea 2) "My zombie beats your werewolf. Or mates with him."
Like with the Zombie mini-game on facebook, all iPhone users could have zombie (or mutant, or zombie-hunter, or whatever) avatars, and whenever two iPhones get too close, they start to battle. It'd be super-funny if they did this on their own, so you could just be walking along and you and another dude's phones would suddenly go batshit making fighting and gurgling noises.
You'd win persistent points, which would be tracked by a central database on some website, so you could see who trumps who. Each time you fight someone who is stronger than you, and you lose, you wouldn't get points but you'd get some of their "DNA" on you, which your creature could incorporate to become stronger. But, there'd be diminishing returns for fighting the same person over and over -- essentially you get zero points for attacking a creature with the similar DNA, so you want to find diverse creatures. You'd be much better off wandering around downtown and fighting strangers, because then you'll get a lot more possible mutations for your creature, and a lot more points for victories you make.
Idea 3) "Screw Pokémon, We Make Our Own Collectible Card Game"
Like idea #1, but rather than screw with licensing, we make up a new game that's like Magic meets Pokémon meets all those other game Richard Garfield wrote or inspired. BUT, and here's the cool part, we just make up the base system, NOT all the cards.
Like, we say, "Oh, in this game there is POWER, and POWER can be fed each round into ABILITIES or SPELLS or ATTACKS, and the order in which these things happen is this and this and this."
THEN, we let people invent their own cards (in a high-level language we invent), most of which will contain exceptions to the rules or things which change the rules, because that's what's actually fun about these games. There would be some ground rules for developing cards -- eg, you'd have to win some matches to earn the points to do it, and your total card strength would be limited by how many points you are willing to spend. And you'd have to incorporate "flaws" with abilities or affects, too, so nobody could just say, "This card is free to play and requires no power and stops time and all your hit points go away."
Even so, obviously some cards would be unbalancing. So: there's a central repository for card ideas, and before ANYONE can play a card (in matches which count towards points) it has to be digitally signed by the repository. The community views new cards and votes on which ones should go "into production", (and which ones should be retired) and those cards are made available... BUT, you can't just buy 'em directly. There's a random element to getting cards, as there should be... one cool thing we could do would be to finally do what Garfield wanted, and have it so you win cards in battle. Like, the loser of a battle could decide if she wanted to allow the winner to pick her best card and get a two new cards randomly from the repository, OR just let the winner get a single new card from the repository herself, OR vote for a single card from the winner's hand to be banned from play. (This wouldn't immediately ban it, but at some point really unfair cards would get too many votes and leave circulation.)
Players would also be able to create "testing decks" -- they could use any number of any cards, legal or not legal, BUT matches with those decks look different and don't give any points or ranking. And, like, the iPhone takes away some of the graphic glitz, so it's clear you're just beta-testing your deck, you're not REALLY playing.
Idea 4) "Gnip-gnop"
If you go to the kind of parties I do, about twenty people at any gathering have iPhones. What if you made some fast, silly gams (drinking games, maybe?) involving the phones? For example, take something as simple as a ball bouncing between people -- you'd see it coming towards your screen, and you'd have to flick it away, and you could flick it towards other players, and they'd have to keep it going...
Or, imagine an iPhone game where you do that old sliding-picture-puzzle thing, where each iPhone's screen shows a section of a larger picture, and then everybody has to move around and stand next to each other such that the puzzle is solved.
You could do this with teams -- maybe have it so there's a message, and each iPhone shows a different letter, and you have to re-arrange the iPhones to figure out the message first.
Or you could show pictures on everyone's iPhone, but only two of them are similar, and those two people have to race to touch their iPhones together before a timer expires... I wonder if bluetooth signal strength is detectable on the iPhone, or WiFi signal strength -- whether one could actually tell if two phones are in very close proximity vs. 10 feet apart.
Idea 5) "Flash Mob Friends"
Not necessarily a game... imagine tying in to the iPhone extension that can tell where your iPhone is based on the cell towers around it, and using that as a way to gather groups. You could have a tiny app that simply has a button for what kind of group you would like to hang with, and others in your group would be notified if they are in a similar mood.
For instance, if I'm hungry, I could have a group of friends I sometimes eat with. So I press "Dinner Friends" and I go to Saluté, and everyone in that group can see where I am and that I am, in fact, actively getting dinner and would like company. They can IM me or just show up.
This is a lot like what I do right now for dinner, actually, except right now it's more aggressive -- I have to page like 20 people with "Hey, getting dinner, what up?" and they have to actively turn me down "OH, sorry, just ate." I think it'd be easier on everyone if it were more passive, "Hey, everyone, getting dinner, if you are hungry and available then ping me, otherwise cool." And without the urgency of a page -- just a status you could check, like in Twitter or iChat.
Labels: mac community, random ideas
Thursday, October 11
I own an Apple TV. (Yah, I'm the one.) I turned it on when I first got it, thought it looked really pretty, then turned it off and never touched it again.
BUT! I think Apple TV will be an amazing device, and a massive success for Apple... after they make a few changes.
Why did I turn mine off? Well, because in my TV room I also have a Mac mini hooked up to a 2TB drive. The Mac mini runs Front Row, just like the Apple TV, so it could be looked as a more-expensive version of the same device.
However, the mini also runs iTunes, so I can buy new shows on the same system on which I'm watching TV. With the Apple TV, I have to have my laptop downstairs and turned on, and buy and download a new movie on the laptop before I switch over to my Apple TV to watch it. Clunky! (The situation is worse if you have a Mac Pro with your media on it -- what are you going to do, run upstairs to the computer room every time you want to buy a song or show?)
And because the mini has a huge drive hooked up to it, it also acts as a content server to the rest of my house, so I can have a unified home for all my music and TV shows and movies, whether ripped or bought from iTunes -- it's my "Windows Home Server" without the Windows. Unlike with the Apple TV, which can't have an external disk, I never have to bring a second system into the equation, so the mini ends up being
cheaper than the Apple TV, because the Apple TV
requires a separate computer.
And now I don't even have to bother storing my movies on my laptop, which is great, because my drive is already pretty damn full of porn. Uh, I mean builds of Delicious Library 2. In fact, nowadays if I want to buy a new movie and I'm not downstairs, I remotely access my mini from my laptop using Apple Remote Desktop and buy it from the version of iTunes running on the mini, so it's right on my server where I want it. Again, possible because the mini is running a full OS, not just Front Row.
Note that a lot of the movies and TV shows I want to watch aren't from iTunes -- but since the mini is an open system, I can download
Perian, an open source QuickTime add-on, and play movies AVI, FLV, MKV, DivX, and a billion other gibberish words. Hell, I don't even know what an FLV is. But, the point is, some of the content I want to play is in these formats, and Apple doesn't support them in QuickTime natively, so I can't play them on my Apple TV, since it's a closed system.
If a friend brings over a DVD, I just pop it in the mini and we watch it. The DVD player under OS X has a much nicer interface (and remote!) than any other player I've had, so I put my super-expensive multi-region player into cold storage. The Apple TV doesn't have a DVD drive, and you can't hook one up, since it ignores external USB devices.
For my personal DVDs, I can rip them using
Handbrake and store them in my Movies folder, and Front Row magically finds them! No more pawing through stacks of DVDs! I finally have a DVD jukebox, the ultimate geek dream. The Apple TV doesn't allow me to install any third-party software. Heck, I can't even rip my CDs on the Apple TV, since it doesn't run iTunes and doesn't have a CD drive.
--
To sum up: Apple TV doesn't allow developers to get at its UNIX underpinnings. It doesn't allow for modifications of its system software. It doesn't allow people to hook up an external disk or a DVD drive. It's a completely closed system. And, as of right now, it's pretty much a failure.
Apple took a guess as to what features the market would want, and because Apple didn't allow for third parties to tweak and optimize what their system does, their guess had to be perfect the first time. It wasn't, and the Apple TV stays off in my house.
There appears to be a battle being fought inside Apple, on whether Apple will be a company that provides solutions or provides tools. iTunes and Front Row are solutions -- really great solutions, sure. They are very friendly and they solve very specific problems beautifully. But they aren't particularly extensible by themselves. We can't make new functionality with them. (Note that if we have access to the underlying machine, as we do with the Mac mini, we are given the tools to modify these solutions -- we can make Front Row play MKV files by adding QuickTime components, even though it was written before MKV existed. We can make iTunes play WMVs.)
Having a system be open, having it able to freely accept peripherals and new programs, turns it into a tool
as well as a solution. Each customer can decide what she wants the system to be, and developers can create new solutions -- and if those solve compelling problems, the entire system will be that much more successful. And, at the end of this cycle, the makers of the original tool can integrate these third-party solutions, so the tool grows for everyone.
The amazing thing about the Mac mini vs. the Apple TV is it perfectly encapsulates the debate between providing solutions or tools to your customers. They are very similar boxes, from a raw-capability point of view, but one was closed and the other open. The Apple TV is a solution, and right now it's desperately searching for people who have the problem it solves.
With the Mac mini, Apple provided us with a mix of solutions (iTunes, Front Row, etc) and tools (expandability, compilers, access to UNIX, access to plug-in directories). And, as a set-top box, the mini is incredible. Now, obviously, I have no idea what the mini's sales numbers are, and Apple hasn't really pushed the mini as a set-top box, and it does cost more than the Apple TV, blah blah blah... but it's clear to me that if the Apple TV did what the mini does, the Apple TV would be a GREAT set-top box and home server. It would own the Microsoft Home Server so hard that Ballmer would wake up with a sore back.
--
Why doesn't Apple just fix their solutions themselves, you say? If we all want MKV movies so much, why doesn't Apple just include support for it?
Well, first off, they probably should, in this particular example. But Apple only has so many engineers on QuickTime, and besides it may not be particularly popular to add support for bizarro file formats from other companies, especially when Apple is pushing MPEG-4 (aka QuickTime) as the One True Wrapper.
Second off, third parties can afford to sometimes make very limited or kind of half-baked solutions to dip a toe into the water, and if those are popular they can be fixed up later. Open Source projects don't make headlines in the NY Times when they push a major release that has some bugs, so we collectively get to invent a TON of different things let the market figure out which ones are pursuing. Consider the original CoverFlow, which was originally just a (really cool) demo by a third-party, in search of a problem to solve. Now Apple's bought it and put it into everything it ships except for iPod socks.
Apple can't anticipate every change that is coming, or which changes will end up being popular. No, I don't think they should give up trying to do so, but I
do think they should share the burden. For instance, I've never seen an "FLV" file. Let's pretend for a minute that Apple did spend a bunch of time writing an FLV component for QuickTime, instead of speeding up h.264 encoding or something. And then, it turned out basically nobody used FLV, and Apple wasted their time and lost other neat functionality because of it.
Now, the nice thing about FLV support being add in Perian is that Apple essentially has a bunch of suckers (I use the term lovingly) taking all the risk for them. If nobody cares about third-party movie formats -- well, Apple didn't spend any time on it. Shrug! If EVERYBODY cares about them -- well, there they are! Go download 'em! In fact, hey, these are open source -- Apple could just start bundling with them. No effort spent on Apple's part, but their marketshare just got a lot bigger.
This is the beauty of open systems. Apple has a ton of very talented designers and very smart engineers. But they shouldn't have to be the ONLY smart people in the world, who must anticipate everything every customer might ever need. It's asking too much.
--
This whole post is ironic because Apple pays its AppleScript evangelists to say exactly what I'm saying, but back to us developers: Add scriptability to your apps! You can't anticipate everything the customer will want, but you can make your app into a tool! Allow other vendors to tie into your system and everyone wins!
--
I expect Apple will rev the Apple TV soon. One thing they could announce is that you can now rent movies over the internet, or maybe they'll announce you can access the iTunes store from directly inside Front Row. Either of these would be nice, sure. But they'd just be more pre-made solutions -- maybe they'd be popular enough to make the Apple TV a decent success, maybe not. But we would never know what Apple TV
could be.
What I want Apple to announce is that they are merging the Apple TV with the Mac mini, and making it a hybrid closed/open system - a machine that boots into Front Row but can be used as a standard computer if you press some magic keys. A turn-key solution that can be opened up by advanced users and developers. The first mainstream consumer device that is infinitely hackable.
The world is waiting for such a product. Apple's the company to do it.
Set me free inside an Apple TV, see what I do for you.
Labels: business, mac community
Wednesday, September 19
Back when we had commies to worry about, someone came up with the concept of "engage and contain": eg, rather than avoid them as we'd been doing, we should trade and talk and travel there, and by doing so be able to contain their evil.
Similar ideas exist today on China and Iran (And, honestly, people -- do we really worry about being attacked by Iran? Really? Is this even on our RADAR?) Google is infamous recently for installing government-censored Google in China, with what I think were the purest of intentions -- the idea that more knowledge naturally makes the country more democratic.
But even Google executives have recently said they think they've made a mistake, because by getting too close to the Chinese government, they've had to make compromise after compromise, until finally Google finds themselves an accomplice to evil instead of an adversary to it.
--
So it is with iTunes. Apple has engaged two of the most cock-thirsty and money-grubbing conglomerates in the United States -- the movie and record industries -- in what we all wanted to believe was an attempt to engage and contain them. And, initially, we all agreed Apple was doing good: they had, for the first time, made legal downloads more compelling than stealing music. For a single data point, I've personally bought 915 songs from the iTunes music store, and hundreds of TV episodes and dozens of movies. I own six iPods and have bought 18 iPhones to give away.
And we all took heart when Steve published that letter saying how much he hated DRM, and how he'd drop it if the labels would, and even if the rumors are correct and EMI was already planning to drop DRM and Steve just rushed in and took credit, it was still a bold stance for him to take; a challenge to the rest of the industry. And I immediately upgraded all the tunes I could to iTunes Plus, and bought a bunch more albums. And it was good.
--
But recently, well... the generous view would be that Apple's screwing up, and the non-generous view would be that they are just plain getting greedy.
No, I'm not talking about the iPhone price reduction. Honestly, I was happy to see the price go down, even though I could have personally saved $3,000 if I'd waited to buy the 15 phone I bought before the reduction. I mean, c'est la vie, it's technology, baby.
But why is the iPhone locked to a single carrier, so I can't travel internationally with it? There's really only one viable reason: Apple wanted a share of the carrier's profits, which meant giving AT&T an exclusive deal. Which meant, we get screwed so Apple can make more money. It's that simple.
And the iPhone is a closed system, like the iPods before it, so third parties can only develop software for it if they are EXTREMELY close to Apple. This is an incredibly frightening trend. As Apple gets more and more of its revenue from non-Mac devices, they are also getting more and more of their revenue from devices that simply exclude third parties.
I know Steve Jobs; he's actually amazingly like my old business partner Mike Matas. They both love closed systems, for a simple reason -- they both know they're smarter than anyone else on the planet, and they don't need anyone else mucking up their systems. Steve would rather have no third parties for Mac OS X if he could get away with it -- Apple, of course, would do a much better job on
anything, but since customers
insist on Photoshop and Office and other apps, he puts up with them. (Well, except, now Apple has their own office suite.) Steve knows that on a computer, having a broad spectrum of apps is more important that having them all be Apple-perfect.
But on iPods, Airports, Apple TVs, and now iPhones, Apple wants every app perfect. Which is nice,
in theory. In practice, it means innovation only happens at Apple's pace. The marketplace of ideas is much smaller, and the devices are much poorer because of it. (Example: Why can't I stream music from my iPhone or iPod touch to my Airport Express?)
There
are some third parties making money from the iPod -- hardware accessory makers. But even then, Apple is trying to charge them a "Made for iPod" sticker tax... for adding no value. And since Apple controls the stores in which iPods are sold, they have a pretty effective stick to use against those who don't comply - you won't be where the players are. But with the latest iPods Apple's gone a step further, and disabled some docking stations that don't have a special chip in them provided by Apple; forcing customers to use only Apple-approved accessories. Apple's emulating the most pernicious qualities of Nintendo and the Microsoft XBox -- you pay us a tax or you don't work with our systems.
But Apple's "approval" just comes from Apple getting a cut. It's a measure of greed, not quality. We're not talking about THX-certification here, we're talking about extortion. This kind of lock-in seems very appealing for the company doing the locking early on, but it always, ALWAYS ends up biting the company in the butt. Ask IBM with their ubiquitous 970 servers and their extortionist service contracts. Oh, wait, those don't exist any more.
Consumers suffer from this. We suffer from increased prices and decreased competition and innovation. We suffer so Apple can make a few more bucks, when Apple is clearly not hurting for money. The core of Apple users has supported Apple for years -- we were there when Apple was hurting, we stuck with it, we nursed her back to health. It's our money she has now, and she's turning on us now that she's rich off it.
Then we come to ringtones. Every phone I've owned in the last ten years has allowed to make my own ringtones. I could upload MP3s all I wanted. Many had little tune editors built into the phone.
But since Apple is so close to the record companies, and they are already so grumpy with Apple, Apple did a deal that benefits record companies and Apple. Not artists, certainly not consumers. In order to use a 15-second snippet of some random song, I now must buy it not once, but TWICE. The amazing thing is that I must buy it THREE times if I own the song on CD -- I have to buy a DRM'ed version from the Apple Store, then buy the the ringtone, on TOP of the CD I already bought.
Oh, but wait, most artists haven't given permission for their songs to be used as ringtones. The vast majority of my collection simply can't be put on my iPhone as a ringtone. I could, if I wanted, manually press play on those songs whenever I see a friend calling, but that single "if" statement it'd require for the phone to do it -- well, that's simply Not Allowed.
Not that, uh, we have to pay attention to what the record companies think is Not Allowed, because we have
already licensed the song for playback on any device if we bought a CD -- we are allowed to play it on our iPhone already. Just not in response to someone calling us. The record companies have MADE UP some new, retroactive copyright and Apple is enforcing it for them. The result is, a million customers don't get to do something cool with their iPhones.
Because of greed.
Honestly, I can see Apple saying, "Well, you see, the record companies would have been upset with us if we hadn't charged anything for ringtones." Yah, well, that's the price you get for engaging. The price for owning the distribution of the content and the hardware and the software is that you end up making compromises in the hardware and software in order to protect the content.
These are EXACTLY the compromises Sony has been making for years -- and because Sony's music and movie arms have been telling the Sony hardware arm to never do anything new or interesting without building in a ton of customer-unfriendly restrictions, Sony is now completely in the toilet. They have gone from an incredibly respected brand to a complete joke. Every time they introduce some new, crippled standard the industry kind of looks away in embarrassment, like Sony is the oafish guy at the party who is parked in front of the meatballs tray eating directly from the dish.
Now we see that iPod owners who upgrade to a newer iPod must re-buy the games they've already bought, because the new iPods are incompatible with the old. No credit given for having already bought an identical game. Imagine upgrading to a new computer, and having to buy a brand new copy of Windows Vista for it... Oh, wait, Microsoft does that, don't they? MICROSOFT does.
--
What should Steve do? Well, for starters, give up on trying to control everything. It's only going to keep hurting Apple, more and more, to control content and hardware and software. It's going to make them into the kind of mega-monopoly that we always, ALWAYS end up hating. Absolute power corrupts absolutely. 100% of the time.
Apple should license FairPlay, or allow iPods to play PlaysForSure (ha! I love that doublespeak) music. Either one. Basically, Apple should allow other music stores to sell DRM'ed music that works on iPods and iPhones.
Why? It's simple -- then Apple could tell record companies "go fug yourself" if they don't like Apple's terms, but Apple would still have a full range of music to play on its iPods. Remember, Apple makes all its money selling the hardware, not the songs. All Apple needs to do is to make sure there is a broad range of content available for iPods, it doesn't have to sell
all that content itself.
And, in fact, it hurts Apple to sell all the content itself, because it makes Apple a focus for battles between the record industry and consumers. If there were a range of stores selling iPod-compatible music, with a range of different DRM rights, then the market could decide what terms it liked best.
The iTunes store could be the white knight -- it would only sign deals with record companies willing to "give" consumers the same rights they've had for years with CDs; eg, we can do whatever we want with our music as long as we don't broadcast it or give it to others. Other music stores could sell restrictive DRM'ed music, and, well, if the record companies are right, people would go to those other stores, and we consumers would all get what we deserve.
But if I'm right, then those other stores would be soundly ignored, and the record companies would come crawling back to Apple with their tails between their collective legs (where their balls should be, but aren't) and agree to reasonable terms.
Sure, we've seen some of this with Apple's negotiations with NBC, but unfortunately this one is all-or-nothing for Apple, because there's no
alternate method for NBC's content to get onto iPods. Apple
needs to be able to say, "Look, NBC, you want to be dumb-asses and try to sell people crap they don't want, fine -- we're still going to sell iPods that'll play your programs, we just won't sell your programs on the nicest internet store in the world. Your loss, suckers, call us when you change your mind."
Second, Apple should announce that it's going to write frameworks so third parties can write applications for iPods and iPhones. No, it won't be easy. But, seriously, there's no excuse. I mean, with the iPhone they could hide behind AT&T wanting assurances people won't use their phones off-network, or behind consumers wanting their iPhones to never crash. Which are both reasonable points, I admit. And, for the record, I've never written a line of code for the iPhone, although one of my employees has (in his spare time). I don't like to screw with undocumented APIs, life's too short.
But with the iPod Touch, what's Apple's excuse for locking up the platform? Why can't I write programs for this device? Who might it hurt? Why is Steve announcing that he's playing cat-and-mouse with developers who intend to do so? Is Apple so far removed from its customers that even when the latter overwhelming votes for extending a device (by downloading iPhone programs in the hundreds of thousands), Apple's response is, "No, you can't do that. We know what you want, you don't. You want AJAX apps, you just don't know it yet."
That sure reminds me of the old, crappy Apple. The one that almost went bankrupt because of its hubris.
I don't write programs for Apple because I worship Apple. I write programs for them because they have the best development environment. But I've always said that I will move from the platform the day Apple starts acting like a monopoly -- trying to make money by using its marketing position to extort money from users, instead of innovating so quickly that users willing throw money at Apple.
Sure, Apple's still doing a ton of innovating. I love Leopard. I love iPhone (x19). I love my iPods (x6). And I love the engineers at Apple and all my friends throughout the company.
But Apple has to always remember that simply making money CANNOT be its point of existence. The point of any company should be to make customers
want to give it money, NOT to get money from customers. It's a subtle distinction that is the difference between good and evil.
Labels: business, mac community
Friday, August 17
I've decided it is time to get a new arch-nemesis. Sure, I have an old one, but, honestly, he's not really doing the job -- I picked him up in the heady '90s, and while initially he was very active, recently he's pretty much dropped out of sight. Frankly, this just makes me look bad.
I called up the The Guild of Calamitous Intent ("the recognized leader in organized havoc") and asked to be assigned a new nemesis, and after going through like a billion phone options ("...press 3 if you have forgotten the name of your nemesis...") I got to talk to some evil dude for like two hours before I could convince him that even though I technically
had a nemesis he had gone inactive and I wanted a new one.
There are a bunch of boring forms, then you wait a while, and then, finally, you get a package in the mail. So, today, it finally arrived, and I'm pleased to announce that, in fact, the Guild has exceeded my hopes: I've been assigned
Cabel Sasser!
The guild lists these qualifications for his arch-nemesis status:
- Goes to the same events as I do, but gives better presentations than me,
- Wins enough design awards to give me a run for my money,
- Funnier blog,
- Singing talent much more impressive than my nice shirts,
- He has the exclusive license to sell katamari t-shirts in the U.S. I don't know if I'd like to sell them or not, but, you know, it'd be nice to have the option. Nobody even asked me.
- Apparently *cough* as talented with the ladies *cough* if you get my drift. Like, in bed. If you can see where I'm going. Sex. (-Wink!-)
All-in-all, I couldn't have asked for a better choice! Hopefully Cabel's already received his welcome packet and is preparing nefarious deeds against me as I type this -- I know I am!
Labels: humor?, mac community
Thursday, August 2
I know you're all chomping at the bit or champing at the bitte or biting and chomping or some such for me to post some more code, but, honestly, I'm not allowed to post Objective-C 2.0 code here (I asked) and I don't really use Objective-C 1.stinky any more, so... tough it out a little while longer. I've got something great in the cooker, just waiting for Leopard's release and my ungagging.
Meanwhile, in the spirit of stock market crooks everywhere, I thought I'd post some Apple news that I'm privy to that has nothing to do with me wanting to buy more stock at a falsely deflated price.
1) Apple has decided that cell phones "are for losers" and won't make any more after Thursday. I have it first-hand that they've called their suppliers and told them, "good luck, suckers."
2) Apple is also completely abandoning their computer business, in a bizarre turn. My friends on the inside said, "Look, Steve gets bored easily."
3) Basically, Apple is going to fold into itself and die. So, please, please, SELL SELL SELL that stock. Come on, be good little sheep, daddy needs a new Tesla. Seriously, you can trust me, because there's NO POSSIBLE WAY I could profit from Apple's stock price going down, unless I were to something incredibly complicated like buy it when it's low and then sell it when it bounces back again.
Labels: business, humor?, mac community
Friday, July 6
Writing a
good SDK so that third-parties (like me!) can write apps for the iPhone will be hard for Apple. I understand this. They've only just barely started writing their internal application frameworks for this beautiful little device, and we developers are demanding that they clean those frameworks up for general use, make them totally secure (so we don't accidentally or maliciously crash, infect, or slow down people's phones), AND keep them from sucking up too much of the iPhone's precious RAM.
Not easy tasks, any of them. I'm willing to wait.
What I'm
not willing to do is starting programming in AJAX, as Steve so gleefully announced we should do at the (non-nondisclosured) WWDC keynote this year. What you might not have heard, if you only saw the video online, were the moans of the developers in the room when he announced this "no-SDK" SDK... if this AJAX thing was just a trial balloon, as some have theorized, then Steve should have had Jimmy Page up there, because it flew like a lead zeppelin.
Now, to be fair, even if the iPhone never gets a decent SDK for outside developers, I'll still love the little guy. The iPhone does what it does very well -- it's a wonderful phone and organizer, beautiful and fast. This is like bitching because my Lotus doesn't have an SDK... well, it's a car. It accomplishes its car-related duties very well. It'd be fun to be able to hack my ride, but I'm not shedding any tears about it as I bomb along the road at 135 MPH.
But Apple has tried to tell us developers we can immediately make and (presumably) sell web-based applications for the iPhone, while ignoring that none of us are set up to run apps off of giant web servers (whose power and bandwidth must scale based on the number of customers we'd have), nor to program in JavaScript, nor to do the recurring online billing we'd have to do to pay for these servers (and store our customer's data). To strain my analogy, this is like Lotus telling us: "Hey, you can mod out your car by, uh, putting different songs on the CD player." It's like: (a) no duh, and (b) not really.
This is only the beginning of the problems with the AJAX / web browser approach:
- Not very many companies on
any platform are successful at selling web applications. Sure, there are some high-profile exceptions, but they are high-profile
because they are exceptions. Google, for instance, gives their web apps away. What does that tell us? It tells me I don't want to compete in this space. I mean, sure, I could write a web site that sells, like, wine on the net, but that's not really an iPhone app, is it? It's a web store that looks good on an iPhone, at most. I don't want to write web stores, I stopped doing that in 2001, when the web collapsed the first time. I want to write apps.
- The iPhone really isn't a good match with any kind of subscription-based websites anyways, since it doesn't remember passwords or autofill forms, so my supposed paying customers would have to laboriously type in their names and passwords EACH AND EVERY TIME they used my putative for-pay site. Yah, that's gonna fly. After two days I have stopped using my iPhone to access even
free sites that require a name and password (like my bank, or calorie-count.com), just because I can't stand typing when there's no auto-correction (it can't auto-correct your e-mail address!) and I can't remember my passwords from day-to-day anyways.
- It would be kind of horrible UI for my AJAX iPhone app to always have a useless (in the context of my app) URL bar at the top of the screen and back and forward buttons at the bottom -- I can't customize what controls the user sees from inside Safari. I can't help but notice none of Apple's built-in iPhone apps have extraneous widgets taking up 1/6th of the screen. I feel like maybe there should be a UI guideline against burning up a bunch of the screen on widgets that are worse than useless, except maybe not because it is SO DAMN OBVIOUS THAT RUNNING AN APPLICATION INSIDE A BROWSER IS AN INFERIOR USER EXPERIENCE.
- My AJAX iPhone app wouldn't get its own launch icon on the iPhone's home screen, no matter how cool it was or how much users loved it -- I'd have to train my users to bookmark my page, and then open it by going to iSafari and pulling up the bookmark, which doesn't even have an icon, EVERY TIME. Awful, awful user experience.
- I became a Mac developer so I could program in Cocoa, not because I have some inherent love for objects with a big Apple on them. If I wanted to program in a crappy language just so I could get more customers, I'd switch to Windows, not stinking JavaScript. Cocoa has EIGHTEEN YEARS of design and evolution behind it from some of the brightest people in the business. It's famous for being fast, concise, and powerful. JavaScript was thrown together by some dudes a couple years ago to make web pages kind of, like, do shit and stuff. It's famous for being slow, hard to read, hard to program, and incompatible across different platforms.
- I don't trust any "SDK" made by a company that won't use it themselves. Where are all of Apple's AJAX apps for the iPhone? Anyone? (*chirp*) The iPhone apps are not written in JavaScript -- or at least no JavaScript I know. Show me the secret JavaScript commands to get at all that CoreAnimation goodness you guys use, and to get at the Bluetooth and 802.11 and multitouch and local storage, and then maybe... well, no, actually, I still don't want to write code in JavaScript.
This is why I've never tried to program for any of the many, many systems Microsoft has tried to foist off on us over the years (Direct-stuff, Active-thing, C-sharp, .Net, Live-whatever) -- because they don't fucking use their own stuff. They write demo apps in them, sure, and tell *us* that their frameworks are going to be the basis of the next generation of wonderful applications, but in the end Microsoft's OSes and their Office apps are just a bazillion lines of old C code, and the programmers who got duped into using Microsoft's new untested frameworks realize that, surprisingly, untested frameworks never work.
Us programming in AJAX while Apple programs in real OS X is basically a case of Apple not eating its own dogfood, except that JavaScript isn't dogfood, it's dog shit.
- Pretty much all the cool stuff I'd want to write for an iPhone can't be written inside the straightjacket of AJAX:
+ I want my customers to be able to scan in barcodes with the iPhone's camera... nope.
+ I want them to be able to wirelessly send these newly-scanned items to the base computer... nope.
+ I want them to be able to scroll through a page full of beautiful renderings of all their books... well, ok, I
could (and will) do this by publishing to a web page, but that requires the user to have a web server somewhere, AND wait for her books to download over EDGE, instead of having them locally.
+ I'd like them to be able to re-sort their libraries with CoreAnimation effects, delete books with a flick, etc. Nope nope nope.
+ I'd like for two people who have iPhones to be able to click a button and have the iPhones quickly wirelessly compare their likes and dislikes, and pop up the resulting matches. "Hey, you both love these films... here's some recommendations Bob has for Sally based on your shared likes, and here's some recommendations Sally has for Bob".... nooooooope.
--
Apple's got a decision to make: it can try to fix all the myriad problems with developers actually trying to deploy non-free applications using AJAX, OR it can say, "Look, this isn't going to be easy, but we're smarter than hell, and we're going to make a secure, tight, mini-Cocoa for the iPhone -- this is our chance to start fresh and do everything right. No NSCells, everything animated, resolution-independent from the start, no CF stacks under and NS stacks, always garbage-collected, all database-driven..."
[There is a third rail, that I've suggested to some at Apple: allow advanced users to specify, in iTunes, that they want their iPhone in "hacker" mode, and thus open to unsecured apps, and then just let the community play around willy-nilly and see what we come up with. Apple could then take our best ideas and put them in mainstream iPhones, akin to what they did with CoverFlow, or iTunes, or iMovie. These crazy iPhone users would forgo support, obviously, but re-securing the phone would be as easy as re-installing the original firmware.]
If you look at it from another perspective, this is a "crisortunity" -- it's Apple's chance to write a new, tighter Cocoa, that has a HUGE built-in market (eg, all iPhone users) to attract developers to it. And, then, eventually Apple could port this back to Macs, and in a few more years it could gently replace the old, kind of bloated Cocoa we have now, as Cocoa is doing with Carbon as we speak.
As I said, the iPhone is a great device. I'm not going to start some crusade about the SDK; I'll love the iPhone even if it never has a real SDK, but I'll also be keeping an eye out for a device from another company that lets *me* be creative, and not just Apple's chosen few engineers.
So what's it going to be? JavaScript on steroids? Or a secure, small, robust Cocoa-light? Either one is going to take time, but only one is going to have me programming for the iPhone at the end.
Labels: mac community
Sunday, July 1
So, after trying for two years, I finally was able to bid enough at the
Child's Play Charity Auction that I got a guest appearance in
Penny Arcade, which is of course my favorite comic (barring the return of Sam and/or Max to strip form).
Being that I am a giant whore for publicity, this is the crowing achievement of my life. Well, this an getting an iPhone. Really, it's been My Week.
I. Have. Made. It.
The irony is that Tycho and Gabe wrote today's strip(s) before they knew they'd actually be standing in line with me -- originally the local Apple Store had a list of business customers who could have some iPhones set aside for them, and I offered Gabe one of mine allotment when he put out the call to his Blue Blaze Irregulars. Corporate put the kibosh on that plan, so we all just merrily waited in line like everyone else, except everyone else didn't have a big jug of gin and tonic, nor
the world's worst photo of them on the front page of their local newspapers the next day. (On the plus side, I was later interviewed by a really hot newslady from Channel 7.)
Hopefully, Steve has a sense of humor -- otherwise, I guess I'll be applying for a job at Penny Arcade in a few months when Apple crushes me out of existence. I figure, they'll owe me.
-W
Labels: humor?, mac community
Wednesday, June 27
Ignore those
pretenders, who are simply grasping at fame and acclaim with their assertions that they've got the scoop. You know who has the real contacts, the real info, the real dirt -- and that who's name isn't Suzy-Loo.
It's me... is what I'm getting at.
Look, I talked to Apple's top, TOP brass at WWDC, and while, you know, they couldn't come right out and SAY what's happening with Leopard, well, let's just say they said ENOUGH. Enough so I could piece together this very detailed roadmap of Leopard's development:
July:- A handful of new features will be added -- ones that didn't make it the WWDC beta, but were clearly needed. Not many! (It's too close to release.)
- Bugs will be squashed -- 'regression' bugs will be given special priority.
- Performance will continue to be improved.
- Special emphasis will be placed on not introducing any new bugs at this stage.
- If a build seems particularly solid, we may see an interim beta released for developers.
August:- Only a couple of new features will be added -- ones that didn't make it in July, but are absolutely needed. The number will be extremely limited.
- More bugs will be fixed -- most attention will be given to things that used to work in Tiger, but don't any more.
- Even more performance tuning!
- "No new bugs" will be the goal.
- Depending on conditions, Apple may release a beta just to developers, to test against.
September:- The smallest possible number of new features will be added -- only ones that didn't make it in August, but are totally necessary. These will require special approval!
- Bugs fixing will be at a feverish pace -- especially bugs introduced in Leopard!
- The system will see speedups throughout, BUT...
- It will be unacceptable to introduce any regressions at this point.
- Developers may get a beta during September, if the build seems very solid, and Apple wants to verify it.
October:- Leopard!
- Unless it's delayed, in which case my sources say it'll come out later.
--
Hopefully I don't get my friends at Apple in trouble with this incredibly detailed peek inside their software process! Hopefully if I've revealed too much, my friends at Apple Legal will send me a cease and desist and I'll get even MORE PUBLICITY FOR MY SITE.
Labels: humor?, mac community
Friday, June 8
Just in case anyone is wondering (especially people, say, at Apple), I got my entire interview with
wired.com cleared with Apple PR before sending it off. (And, no, they didn't ask for any changes.)
In general, talking about the features of their unreleased OS would be a violation of my NDA(s) with Apple, but in this case Apple had already put up public web pages about the CoreAnimation features I mentioned, so legally speaking that creates an exception to my NDA.
But there may be other terms in the Leopard prerelease that I didn't notice, and, as you might imagine, I wanted to make EXTRA SURE I didn't step on anyone's toes, so I got explicit sign-off on my interview from the mother ship. Nobody can call me Jonathan Schwartz. (Interesting fact: Jonathan gave me my first contract when I formed The Omni Group, 16 years ago.)
--
I actually tried to get an exception for my blog, as well, so I could write a pimp-my-code article on how cool Objective-C 2.0 is. Sadly, no dice, so you'll have to wait until October. Not that I'm saying it's cool. Or not. I'm not saying one way or another. I offer no opinion at this time.
Labels: business, mac community
Friday, June 1
While many people believe that Adobe products are DRM-free, did you know that they, in fact, have a
"poison tip?"It's true... when you buy an Adobe product, be it Illustrator or the entire Creative Suite, Adobe brazenly stores important personal information about you
right on your hard disk. If you don't believe me, look on your machine at
file:///Library/Application%20Support/Adobe/Adobe%20Registration%20Database ... you'll see entries like this:
EPIC_ORG=Delicious Monster Software, LLC
EPIC_NAME=Wil ShipleyI was shocked! Shocked! They didn't even bother to try to disguise it!
I talked to a lawyer from EFF about this, and his comment was, "We feel it is a huge invasion of a consumer's privacy for Adobe to take personal information the user has entered and store it locally on that user's machine, in a file only accessible to the user, right beside all the user's other personal files, where it is protected by passwords and firewalls."
I couldn't agree more, so I called an Adobe PR person, who spoke to me ONLY on the condition that, "if [she] answered my questions I would get off the phone and let [her] do real work."
I put it to her directly: "Are you saying that I am limited to using Adobe products on my machines, and if I illegally give post my copy of CS3 on the internet,
I might be sharing my first and last name with the world in addition to violating copyright law and being liable for $50,000 in damages? Because I find this simply unacceptable."
The Adobe flak, in typical PR-speak, tried to spin the story this way: "Well... yah. I mean, uh, duh?"
--
I will be following this story closely in the following days... I've already heard a rumor that in order to pirate DRM-free iTunes Plus tracks I might have to downsample them to MP3 files, but I simply can't believe Apple would engage in such clearly immoral shenanigans. I mean, making it every-so-slightly difficult to pirate DRM-free music kind of defeats the WHOLE PURPOSE of dropping DRM in the first place, doesn't it?
DOESN'T IT?
Labels: humor?, mac community
Monday, May 28
More than any machine, the original iMac can be said to have single-handedly turned Apple's fortunes around -- making once-'beleaguered' Apple Computer simple, cool, and fun again. Besides bringing Apple much-needed mindshare, the iMac brought in scads of cash for Apple before the iPod was even a glimmer in Ives' eyes.
Thus, it would shock many to hear that Apple is, in fact, planning to retire the iMac this year.
Of course, they're not. That would be stupid. Still, I bet I could get a ton of other rumor sites to pick this up as "news" if I kept going with it.
Labels: humor?, mac community
Sunday, May 20
Today I got mail from a young, impressionable lad that read thusly:
Hey Will,
I've been reading your blog for about a year now, and I thought you would be the best person to answer this question.
I'm coming to the point in my life when I need to decide what it is I want to do (I'm 16). I've been programming for 4 years on mac and for 6 years in general, and I'm looking into computer science as a major, but I just don't know what it is! I've read the pamphlets, course outlines, etc, but they don't just answer it, what the fuck is computer science? Is it math, physics, programming? I honestly can't get a straight answer.
I've seen people parade their knowledge of O(N*log(2)) or whatever, but I just don't see how its relevant to programming. Everywhere I go I get mixed signals about what I will actually be learning during Comp Sci (for instance, my high school 'computer science' course consisted of Microsoft BASIC, and boolean logic, the fuck?).
I guess what I'm trying to ask is what you learned during you comp sci days, and what you actually gained out of it and continue to apply to this day (if anything).
Well, young lad, I think this is an excellent question, mainly because you asked it of me, and that means I get to go blah blah blah some more, which is my nigh-favorite activity.
--
First off, high school computer classes are, in my experience, a joke. In my day I literally got an 'A' for showing up -- the teacher knew I could program circles around him so he didn't even bother assigning me problems, I would just go to class (sometimes) and do whatever I wanted for an hour, and every quarter I'd get an 'A'. I'm disappointed with this teacher for not trying to challenge me more, but, hey, free period, so I didn't complain. (Now that I think back on it, a lot of my high school teachers gave up on me this way -- "Here, have a free 'A', in return you must not bug me for the rest of the quarter.")
--
There are myriad reasons why nobody can answer what kind of science is "computer science" -- prominent amongst them is that it is its own science, so it's not math or physics or programming, per se. Also, most people don't
know, since unlike math or physics, computer science is not something most people experience every day in their normal lives. You drop an apple, you see physics in action. Tip a waiter, you're doing math. But what the hell is computer science? (To be fair, I think most people think majoring in math would mean, "like, learning 2+2 and shit.")
Another reason is that "computer science" programs vary INCREDIBLY from school to school. At a Real University(TM) you're going to be studying actual science and engineering principles in the context of designing and programming systems; at one of those technical institutes you see advertised on late-night TV you're going to be taking a class in "Advanced Java Programming" where you learn how to print "hello" over and over.
--
I went to the University of Washington, which was, at the time, ranked one of the top schools in the nation by some ranking organization. I honestly have no idea who does those ranking, or what kind of criteria they use. There were distinct advantages and disadvantages to going to a big school.
Let me first say some good things: I got to study under some amazing professors at the UW. Dr. Jean-Loup Baer was our department chair (which is a catchy rhyme if you sing it) and taught a course on machine language that I still remember. (I wrote a "Connect-Four" program in VAX assembly that won... some of the time.) I did my honors thesis for Dr. Hank Levy, who literally wrote the book on assembly that we used for Dr. Baer's class.
Dr. Ed Lazowska was pretty famous in the community and taught a bitching course on operating systems which explained the fundamental functions of and probl