I'm almost 6 months into my AppCode experiment. It's going great, thanks for asking.
The AppCode editor highlights nicely, even large files color in fast, and it never turns my code into gibberish/Russian like Xcode often does for no reason.
Each file shows up in its own tab. Cmd-click to open a file, it opens in a NEW TAB, or switches to the existing tab of that file. AppCode doesn't replace my current tab's contents with a different file so I lose my place and can't get back. If nothing else, this sells AppCode to me. Xcode tabs are maliciously useless, you can get multiple tabs to the same file, but when you close one they all close. Insane.
Code generation is sweet. I can type the properties in my .h, then Cmd-N, synthesize/ivars, pick the ivars, and it makes the @synthesize lines. initWith and other generators work as advertised, too. Less typing, less mistakes. I've set up a ton of "Live Templates" which are clippings.
The refactoring tools actually work. Extract method and you get a usable method, not half-finished gibberish which Xcode always did to me.
The documentation popup works perfectly. Which is why it's then distressing that it opens Xcode to display full documentation and I want to die. I need to wire up Ingredients, because AppCode doesn't work with Services, since it's not a real Mac app. This is incredibly irritating.
The debugger is OK. It's spread out into a bunch of ugly little sub-tab tabs, you have to click on teeny little icons and drag things around until you get a layout that's usable. Typical Java UI bullshit, but once you get it set up LLDB runs fine.
AppCode basically never crashes. NEVER. It just keeps on running. Imagine using Xcode all day and never crashing. Leaving Xcode running overnight, and you come back and it's still working. Ha. As if. AppCode has no problem with that. It may be a giant bloated Java memory-consuming pig, but it's a rock-solid pig that doesn't fall over drunk every five minutes.
Now, be aware that almost every appearance setting in AppCode is wrong. This thing's made by dorky Java people, with absolutely no style at all, no idea that things could look Mac-native. The standard keybindings are stupid. So you're going to spend a good hour or two with a new install making it look and work right. I still hate the little tabs spread around the borders, popping up with yellow Windows-like hover messages.
JetBrains should hire a user interface designer to redesign the layout of every part, but keep the engineers who made it work reliably. Then they'd have a killer product.
I still have four reasons to see Xcode, but every time I do it's like being punched in the gut.
- Documentation.
- Interface Builder. This is very depressing, I want IB built into AppCode. Having to turn on or off various sidebars and dick around every time I want to draw some UI discourages me from doing UI.
- Core Data. I try not to use Core Data, but there's times when people pay me and I do it and I feel so ashamed. So really being flagellated by Xcode is kind of fitting.
- Adding "by reference" folders, not groups. I use reference folders for images and data files, drop my stuff in and it syncs to the app and I don't have to manage each add/remove of files. But AppCode has no idea these exist, so I have to open the project in Xcode. There's a bug for it: OC-3827, go ahead and vote it up.
I would like to think that someday Apple will release an Xcode 5.0 that doesn't suck, but until then, AppCode's replaced it almost entirely.
Related: Texts from Xcode
Do you like old-school computer RPGs? Do you play tabletop RPGs? Do you have an iPhone®?
Perilar is my turn-based RPG for the iPhone, in the style of classic computer RPGs. Full version is $4.99, Lite version (limited to level 10) is free!
Ze Frank is back. Just go watch this. [transcript]
During the otherwise incredibly shitty year of 2006, every weekday morning I would wake up and there'd be another 5-minute episode of The Show With Ze Frank. Watch the whole series, but especially the Ugly MySpace episode flipped it from "funny videoblog about the news and little songs" into "HOLY SHIT, Ze's actually got a point about creativity and I should get off my ass and publish stuff again."
Let's start this shit up.
Do you like old-school computer RPGs? Do you play tabletop RPGs? Do you have an iPhone®?
Perilar is my turn-based RPG for the iPhone, in the style of classic computer RPGs. Full version is $4.99, Lite version (limited to level 10) is free!
Long ago, there was a series of black and white independent comics with a ridiculous title: "Teenage Mutant Ninja Turtles". The title and characters were funny, a parody of the X-Men, but the story was a grim, bloody tale of revenge and death and honor. You can read TMNT #1 online.

Shortly after the comic's release, indie publisher Palladium Books released the Teenage Mutant Ninja Turtles & Other Strangeness RPG, which was based on the first few issues of Mirage Comics TMNT with the direct help and new art from Eastman & Laird. The RPG had the same mix of humor with bushido, blood and death and honor, and a "Bio-Energy" system for making your own mutant characters from any animal. Fantastic game, great supplements including many in a post-apocalypse world, still sold as After the Bomb even though they don't have the license for the original game.
Then the good times ended. Eastman & Laird sold the rights to a Saturday morning cartoon, which eventually led to the movies. This was a dumbed-down, soft, weak pablum story for infants aged 3-12, nobody died (even though they're murderous ninjas with swords), shouting "Radical! Pizza! Skating! Dude!" I can't blame Eastman & Laird, they got paid well. I blame Hollywood.
The only analogy for how awful this was, is Star Wars. Star Wars and The Empire Strikes Back are entirely watchable by adults, have adult sensibilities, and are PG because people die; we see smoking corpses and chopped-off limbs. Then Lucas realized all the money was in marketing to children, and Hollywood distribution wanted movies for children, so he made that Return movie which was 15 minutes of Star Wars and a bunch of muppets, and two movies and a cartoon series of The Ewok Adventure and the "prequels" aimed at babies.
So today every little Gen-Whine brat raised on the shitty pablum version of TMNT is whining about Michael Bay's TMNT movie, and all I can say is:
HAHAHAHAHAHA! SUFFER, FOOLS, AS I HAVE SUFFERED!
Watch as your childhood favorites become dumbed down even further. Fuck you. Fuck all of you for buying cute crappy versions of TMNT. You get the Michael Bay you deserve.
Do you like old-school computer RPGs? Do you play tabletop RPGs? Do you have an iPhone®?
Perilar is my turn-based RPG for the iPhone, in the style of classic computer RPGs. Full version is $4.99, Lite version (limited to level 10) is free!
RealMac's Clear to-do app is out.
Clear is lovely, the animation and even the sounds are perfect.
Most of the gestures are nice by themselves, but overloaded to the point you don't know what will happen—is it going to add an item or go up when you pull down? Depends. So it actually takes longer to use than a less-gesture-friendly app.
The list items are useless, they hold maybe 20 chars, no notes, no due dates, no priority. Completely vapid. Ironically the tips & tricks "list" has detail text, you just can't do the same.
Apple's Reminders (which can be managed from Siri!) and Cultured Code's Things (see my long discussion 2.5 years ago, nothing has changed since) are less pretty but far more functional. Clear is a lovely tech demo, for $0.99, but is in no sense a usable to-do app.
Do you like old-school computer RPGs? Do you play tabletop RPGs? Do you have an iPhone®?
Perilar is my turn-based RPG for the iPhone, in the style of classic computer RPGs. Full version is $4.99, Lite version (limited to level 10) is free!
Hello, people of Twitter 2012! I am from the #AppleFuture of 2024! It is nothing like 1984!
Apple fans live in perfect glass arcologies for a 30% flat tax. Feist and Dylan play from iPod Hifis all day.
Xcode works great, it never needs rebooting! The cable into my eyesocket doesn't itch much all the time.
In the Redmond Wastelands, gangs of subhumans use MS Office and communicate only thru XBox Live Arcade (NAMBLA).
The Googleplex is "open", but every surface is covered in ads, and you are never allowed to leave.
Cannibalistic Linux Underground Dwellers (CLUDs) lurk beneath the cities, lecturing captives on free software.
Samsung operates a series of cheap plastic arcologies filled with smog. Nothing works, but it looks familiar.
The Talk Show broadcasts 24/7, but it's mostly what cheese @gruber likes. He was never the same after the war.
I must now return to the #AppleFuture! Prepare yourselves! Keep watching the skies!
Do you like old-school computer RPGs? Do you play tabletop RPGs? Do you have an iPhone®?
Perilar is my turn-based RPG for the iPhone, in the style of classic computer RPGs. Full version is $4.99, Lite version (limited to level 10) is free!
Over on my new Mark Rolls Dice RPG blog, I have posted about Hasbro Announces Dungeons & Dragons Fifth Edition.
(I won't normally repost links, but this is a new site)
Do you like old-school computer RPGs? Do you play tabletop RPGs? Do you have an iPhone®?
Perilar is my turn-based RPG for the iPhone, in the style of classic computer RPGs. Full version is $4.99, Lite version (limited to level 10) is free!
After not using Xcode 4 for a week, my head was clear and I was feeling optimistic. When I relaunched Xcode 4 to try to write a little toy app, it was like being held down and gang-raped by angry, horny baboons. I am displeased, Apple. So I decided to have a go at JetBrains AppCode again, the Java-based Objective-C IDE. Sure, it's by ugly Java dorks who make ugly Java apps, but it cannot be worse than being violated by baboons, right?
Download. Very slowly (my ISP or their servers?). The demo videos are in Flash, so I couldn't watch them on my iPad while I waited. Appalling. Who the fuck uses Flash video in the 21st century? I don't even have Flash on my Air anymore.
Set up, open a recently-created Xcode project. Works. Files are auto-sorted (yay), folders first, but language bundles are hidden, so XIB and strings files just seem to float at the top. Whatever, beats the manual file arranging in Xcode.
All the appearance defaults are awful, but fixable in preferences:
- change color scheme: Solarized Light, change text background to white, caret row (current line) to no background
- increase font size to Menlo 13
- turn off code folding
- turn on soft wraps
- turn on line numbers
- turn off that insanely stupid "Allow placement of caret after end of line" thing JetBrains likes which makes me want to stab them in their stupid faces.
- change code formatter to use tabs, 4 spaces per indent, and put newline between method/function and first curly brace, as the One True Brace Style directs. No, I don't wanna hear about it, fuck you.
- KeyMap, add Opt-Up to Page Up, etc., add Cmd-Up to Move Caret to Text Start, etc. Ctrl-D to Main Menu/Edit/Delete. Why can't these dumbass Java people get Mac keyboard keys right? I used to be a Java & Linux guy, and I still got them right whenever AWT didn't cock-block me.
Start writing code. Learn that completion key is Ctrl-Space instead of Ctrl-. I'll be using that a LOT. F1 brings up docs, and it works. Hey, already you're doing better than Xcode!
The editor tabs work correctly (though they have the x on the right, instead of the left where Apple puts them). Double-click a file, and it opens in a new tab. A new, UNIQUE tab. Hit Ctrl-Cmd-Up to edit counterpart, and it just magically opens the .h/.m file.
FUCK YEAH, EDITOR TABS THAT WORK.
For this, I already love you and forgive you for a lot of shit, JetBrains.
No code completion for the dealloc method (no, I'm not using ARC today). Add dealloc to "Live Templates", in Objective-C context:
- (void)dealloc
{
[super dealloc];
}
And to use it, just type dealloc[TAB]. I'd prefer if it was a code completion, but still nice.
The Property List Editor Misadventure
Need to edit a property list? AppCode only thinks it's text. Even if you convince it it's XML, an XML editor for plists is a shit solution. And Xcode 4 doesn't ship with Property List Editor.app!
Sane Option: Buy PlistEdit Pro, $30 to nice developer Brian Webster. But that's blowjob money. Cheap Bastard Option: Dig PLE.app out of Xcode 3.2.6. Problem: I don't have any old Xcodes in my backups, so I would have to install it on Snow Leopard, and my original white MacBook runs too old a version of SL for Xcode, all others have Lion.MAD SCIENCE TIME!
Igor! Open the Xcode 3.26 dmg, and the hidden "Packages" folder! Use Tim Doug's unpkg! Drop in "DeveloperTools.pkg"! Copy Applications/Utilities/Property List Editor.app to ~/Applications where THOSE MEDDLING FOOLS at Apple won't bother it! Igor! Copy these obsolete libraries from Library/PrivateFrameworks to ~/Library/Frameworks: (NO, IGOR, WE ARE NOT PLAYING GOD! WE ARE GODS!)
- DevToolsCore.framework
- DevToolsCParsing.framework
- DevToolsFoundation.framework
- DevToolsSupport.framework
- JavaKit.framework
- PlistEdit.framework
Throw the switch, Igor! Throw the motherfucking switch! Property List Editor lives! AGAIN! MUAHAHAHAHAHA!
So anywway. In AppCode's preferences, under External Tools, add an item, name it "plistedit", give it a group like "Mac Tools", program: open, parameters: -a "Property List Editor" --args $FilePath$, working directory: $FileDir$
Now I can right-click on a plist file, Mac Tools, plistedit, and BAM, I'm editing plists like an old-timer. Fuck me. Totally would've been easier to just buy PlistEdit Pro. And at some point, this entire edifice of obsolete frameworks that I have constructed will come crashing down.
Back to Work
Opening a XIB file pauses for a long time… then opens Xcode. Well, fine, can't build Rome in a day. Hopefully they'll replace that someday. I miss standalone Interface Builder.
To build and run or debug on a device, you'll have to edit the configuration dropdown, but it found my device, and built and launched the app just fine. Turn on "Stop running session", so it'll kill the old debugger when you start a new one. I haven't really used the debugger yet, but it has GDB and LLDB, so it might be OK.
AppCode supports Lion full-screen. It does mostly play nice like a Mac app, not a Java app.
I was extremely dubious when I first heard of JetCidr (the original name). The first beta was laughable and unusable. But it's now actually… not bad. Maybe better than Xcode as long as you're just editing code. The lack of a property list editor and Interface Builder are crippling, so they need to get on those fast.
AppCode is on sale for $69 until 2012Jan02, then goes back up to $99. I'll have to decide on the 2nd if it's a keeper, but it sucks less than the baboons.
Do you like old-school computer RPGs? Do you play tabletop RPGs? Do you have an iPhone®?
Perilar is my turn-based RPG for the iPhone, in the style of classic computer RPGs. Full version is $4.99, Lite version (limited to level 10) is free!
Another day, another very silly ex-Microsoft person says "apps are dead", "app developers … are mostly irrelevant", "mobile's old, dead, and boring". This isn't even correct enough to be wrong, it's just nonsense.
App store markets have exploded, see Distimo's 2011 mobile app store report:
A new mobile platform isn't even viable until it has a decent stable of basic apps (email, Twitter, Facebook, some camera/photo editing tools, book readers, task lists, etc.), games (at least Lights Off and Angry Fucking Birds), and maybe media apps (Rdio, Spotify, Netflix, JustinTV, etc.). And past that, it's all about who has the most good apps, the most good games.
Right now, and for the forseeable future, that's iOS. Android's store is mostly junk, often outright frauds or viruses, but it's on the chart. Everybody else is in the gutter, under 50,000, with nearly flat growth.
When you ask people what they do with their phones, they talk about apps. Not "Oh, I like to look at my contacts list, because those are the people I care about, and then I call them like some Hallmark fucking special painted by Thomas Kincaid". BORING. SO last century. Small talk now consists of "check out these awesome apps I found!"
You can't be on every app store, you don't have time, and you can't afford it. Unless you're Angry Birds, which relies on massive scale, payola from platform owners and carriers, and cheap eastern European codemonkeys to port to the shit platforms.
You can try making cross-platform web apps. Developing for HTML5/JS/CSS is incredibly hard to get even half-right, the experience is totally awful, and every platform still needs tweaking to work. And then how do you make money? Advertising? Ugh. Facebook's doing the worst of both worlds, making a web app with a native wrapper to handle system notifications for their iOS app… and it's the worst thing ever.
Compare that to a beautiful native app, like the new Path, which is fun and the little (+) button pops out SNIKKT! like Wolverine's claws, the clock moves down the page to show you where you are (which gets in the way after a while, but it's a thing no web app would even try to do), and the thing is fast and obvious and it works.
So what you end up with is you ship on the best platform: iOS. If you have time and money, you maybe target the also-ran Android (Path did, but their Android app is a seriously sub-par experience). This costs a lot, because us iOS devs are not cheap; even Android devs aren't as cheap as you'd think. Charlie's estimate of $100K-250K for an app is ridiculously low. That's a year of one or maybe two devs. For that you get a 1.0, if you're lucky. You don't get multiple platforms, you don't get cloud servers, you don't get anything fancy. Developing on the gutter platforms like Symbian, Blackberry, or Windows Phone 7 won't even pay the bills. You're throwing money away for no ROI.
Apple's managed to stay out of carrier-run marketing and carrier-fucked-up phones, but the reason it sells so well is the App Store. The iPhone 4S runs every iPhone app. The year-old 4 runs almost all of them, and the current OS. Even the 2-year-old 3GS runs 80-90% of the apps, and the current OS. The iPad 1 and 2 run almost all iPhone apps, and all the iPad apps, and a lot of the apps are universal. So if you make an iPhone app, you reach millions of happy customers, who will then spend every waking moment playing with your app and telling their friends about it.
Android handset makers have been stupid enough to let the carriers screw up their devices, the carrier marketing is abysmal, and the OS on any given phone is fragmented and often 2 or 3 versions obsolete, but you can make an "Android app" and reach millions of customers. Their customer satisfaction levels are low, and they don't pay for software, but they'll download free stuff and you can advertise at them.
This is why Windows Phone 7 is screwed. It needs apps. And to get apps, it has to compete for developer time and money with platforms that make money, either directly or by advertising. It has nothing to do with the carrier system. It has nothing to do with marketing. You have to convince developers to: Install Windows (which they won't do), learn the Windows dev tools (which they won't do), and then release on the Windows store, where it won't make any money, because there's no customers.
We must never forget the fond memories of last September, when Microsoft gave themselves a parade, claiming:
RIP Windows Phone 7 RIP U-Haul
OS Platform
☠ Buries the Competition ☠
Burma Shave
Do you like old-school computer RPGs? Do you play tabletop RPGs? Do you have an iPhone®?
Perilar is my turn-based RPG for the iPhone, in the style of classic computer RPGs. Full version is $4.99, Lite version (limited to level 10) is free!
I started programming with BASIC in 1980, 6502 assembly and LOGO soon after, Pascal and Action! in ’85. So I had high-level languages and the lowest-level, but none were suited to building large programs where efficiency mattered.
Then in '86 I learned C (from Stephen Kochan's Programming in C). Even with what were then very primitive tools, it made all other tools obsolete. It took me a couple years to learn proper memory management: for a long time, I just made big-enough arrays of structs, didn't use malloc. Took a long time to learn the right way to write programs, not just imitating BASIC and assembly. But C is just high-level enough that you can make a structured program, and still low-level enough that you can write efficient code, device drivers, graphics and sound, networking, and so on.
By '93 I got corrupted by Perl, Python, Java, and spent a decade away from C with high-level languages, doing server software, where efficiency mattered less. These languages have two or three well-padded layers between you and the machine, and they're comfortable. They're slower, in some cases much slower, but the worst part is that you can't even touch the hardware, you can't drop down to a lower level—unless you write native extensions in C, and there's a horrible set of compatibility APIs then. Java's JNI and Python extensions make you write so much wrapper code that you lose any advantage of doing C.
When I got Mac OS X, I had to learn Objective-C, and that meant re-learning C. And I re-realized how great C was. C's greatest virtue is that it hides most of the variations between hardware, but is still right above the machine level. The truth of what a computer is, is a CPU manipulating numbers in registers and memory addresses. There's nothing else in C, it provides libraries to handle those numbers as if they were strings or whatever, but you can read their source and see exactly how they work. No magic, no black boxes. Yes, it's low-level, and managing memory requires discipline and good habits, but these are good traits to cultivate anyway.
In iOS and Mac OS X, I think of apps as a collection of small programs. Each part (a view controller, say) has an Obj-C setup and teardown, limited interaction with other parts, and internal guts. You can go a long way with Obj-C, but if you write the internal guts in it, your performance will suffer, and it's tedious to box and unbox everything in object wrappers. It's much faster and more natural to write that in C. It's sweet that Obj-C just fades seamlessly into C, unlike Java JNI.
I suppose I wouldn't use C to build an entire program, unless it was just a little command-line tool. But C's survived from 1972 to present, and will be essential to understanding a computer for decades to come.
As for C++, the answer is just "No." C++ is symptomatic of everything that's wrong with programming, the glorification of complexity for no gain. The only good part about C++ is C, and you can just use C instead.
See also: Brent Simmons and Daniel Jailkut’s arguments for and against C.
Do you like old-school computer RPGs? Do you play tabletop RPGs? Do you have an iPhone®?
Perilar is my turn-based RPG for the iPhone, in the style of classic computer RPGs. Full version is $4.99, Lite version (limited to level 10) is free!
Bye, Steve, we'll miss you more than anyone.
I didn't grow up an Apple or Mac user. I liked them, in UI computer labs and at work, but most of the time I could've had one was the very confused post-Jobs era, random-number Quadras priced twice as high as competition. But NeXT excited me, though I also couldn't afford one. And when Steve came back and brought NeXTstep into Apple, that was the turning point.
In 2005, I got so frustrated with my big Linux box not mixing sound that I bought a cheap Mac mini, as a Unix workstation that Just Fucking Worked. From there on I've bought nothing but Macs, quit accepting shitty Linux or Windows workstations at work, and eventually switched to iOS development.
Now I'm accused of being a "Perfectionist Mac Elitist". I take that as a compliment. Accepting shitty hardware and software wasn't good enough for Steve, and it's not good enough for me. The Mac developer community is full of others like this. Shitty stuff gets criticized and ground down until it's awesome or goes away. These are not impossible standards. Everyone should try to make everything they do the best they possibly can.
I never met Steve, but I've seen him on the WWDC stage 3 times. He was (usually) as excited about the new things as we were. A couple of times you'd catch him sorta flattening when it was a lame or tedious thing, not up to his standards. Only once I recall we rebelled, shouted back at him, when he told us the "sweet solution" to iPhone development was HTML/JS. Train people to be perfectionists, and they won't accept anything but perfection.
I didn't feel like going out to a real Apple Store to mourn in public, so I made one in Minecraft:
Do you like old-school computer RPGs? Do you play tabletop RPGs? Do you have an iPhone®?
Perilar is my turn-based RPG for the iPhone, in the style of classic computer RPGs. Full version is $4.99, Lite version (limited to level 10) is free!






Verzeichnis








