My response to Steve Jobs' mostly well-written reasons for not allowing Flash on his mobile devices.
Jobs is spot-on that Flash is a closed, proprietary system. It renders video (and other content) in software, not hardware; he claims that all mobile devices decode H.264 in hardware, and can play 10 hours of H.264 video content vs. 5 hours of software-decoded video. I haven't tested his claim, but specialized hardware seems like it ought to do the job better.
The part that really bothers me is where he attacks Adobe's iPhone programming interface: "We know from painful experience that letting a third party layer of software come between the platform and the developer ultimately results in sub-standard apps and hinders the enhancement and progress of the platform."
The "progress of the platform" is nonsense. It is up to the developers to use whatever tools they chose to create the products they desire. It is not relevant to Apple what methods we, the developers, use to create our content.
Furthermore, Steve Jobs has no right to complain that Flash is a closed system when his App Store is even more restrictive. It would be better to have an Open app store and allow developers to use whatever tools we want!
Jobs complains that "[t]he third party may not adopt enhancements from one platform unless they are available on all of their supported platforms. Hence developers only have access to the lowest common denominator set of features. Again, we cannot accept an outcome where developers are blocked from using our innovations and enhancements because they are not available on our competitor’s platforms."
Again, this is better than Apple's practice of changing the APIs out from under developers. Their attitude is one of "We're so very glad that you used our APIs, but we've deprecated them all, so you'll have to rewrite your code, at least to have dynamic OS-testing," but they say it differently (from the article): "We want to continually enhance the platform so developers can create even more amazing, powerful, fun and useful applications. "
This is a terrible methodology, and it's a terrible way to treat programmers.
Showing posts with label Apple. Show all posts
Showing posts with label Apple. Show all posts
20100429
20100127
NSThread
The project I'm working on uses threads. Like a good Cocoa app, the main thread is in charge of the GUI, and the worker threads run in the background so that we don't pinwheel.
In order to know when the thread has finished its work, we registered for notification:
and in the aSel method, use ivars to update an NSTableView's dataSource.
We had a really pesky race condition that, after two days, we realized was caused by aSel running in the same worker thread! It turns out that this is in the documentation, that notifications are served to the same thread that posts them. However, this is a fairly useless implementation decision.
Our workaround is not to register for the notification, but rather to have the thread performSelectorOnMainThread:withObject:waitUntilDone: at the end of its execution. There is still a problem that we'd like to release the thread at that point, but we don't know what will happen if we try that!
In order to know when the thread has finished its work, we registered for notification:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:aSel
name:NSThreadWillExitNotification
object:thread];
and in the aSel method, use ivars to update an NSTableView's dataSource.
We had a really pesky race condition that, after two days, we realized was caused by aSel running in the same worker thread! It turns out that this is in the documentation, that notifications are served to the same thread that posts them. However, this is a fairly useless implementation decision.
Our workaround is not to register for the notification, but rather to have the thread performSelectorOnMainThread:withObject:waitUntilDone: at the end of its execution. There is still a problem that we'd like to release the thread at that point, but we don't know what will happen if we try that!
20100108
Apple, part II
The same day I received the rejection email from Apple, a different Apple recruiter contacted me on LinkedIn and asked me if I would be interested in a job at Apple. I wanted to see where it would go, so I said sure, tell me about the job. He described a position with the security testing team for all Apple products, but only very broadly. When I asked some detailed questions, he couldn't answer them, so he offered to set up a phone call with the team leader.
About 1.5 weeks after being contacted on LinkedIn, I got a call from the team leader. He described the position, and it sounded like something I'd enjoy, so I asked him how to apply for it; should I send a resume, etc. He said he had something like a resume in front of him (which I assume the recruiter copied from LinkedIn), and that I didn't have the experience or background they wanted, unless there was something I'd left off my resume.
I asked him why, if he had already decided that I didn't have the background he wanted, did he call me? He told me that he'd called me because the recruited had asked him to, because the recruiter couldn't answer my questions.
About 1.5 weeks after being contacted on LinkedIn, I got a call from the team leader. He described the position, and it sounded like something I'd enjoy, so I asked him how to apply for it; should I send a resume, etc. He said he had something like a resume in front of him (which I assume the recruiter copied from LinkedIn), and that I didn't have the experience or background they wanted, unless there was something I'd left off my resume.
I asked him why, if he had already decided that I didn't have the background he wanted, did he call me? He told me that he'd called me because the recruited had asked him to, because the recruiter couldn't answer my questions.
20091202
Apple, part I
In June of 2009, I applied to work at Apple. A few weeks later, I got a call from an Apple recruiter, and we scheduled a first-round phone interview. I passed that one, and he called to schedule a second-round phone interview. I passed that one, too, and he called to schedule an in-person third-round interview.
By now it was mid-August. I took a day off of work to interview with 6-7 different Apple engineers, each for 45 minutes. I talked with them, showed them what I knew and what I could do in terms of coding and theory. The group leader told me I'd hear back by the end of the week. I thanked them, and went home.
I made a mistake, in that I didn't immediately send a "thank you" email; I waited a few days to do so.
The week ended, and I hadn't heard anything. I thought perhaps I misheard, and he'd said the end of the following week. Still nothing. No phone call, no email.
The next week, now 2.5 weeks after my interview, I emailed to ask if there was anything I could give them -- references, or further background, or anything -- to help them decide. The following was the entirely of the response I received, without the names:
By now it was mid-August. I took a day off of work to interview with 6-7 different Apple engineers, each for 45 minutes. I talked with them, showed them what I knew and what I could do in terms of coding and theory. The group leader told me I'd hear back by the end of the week. I thanked them, and went home.
I made a mistake, in that I didn't immediately send a "thank you" email; I waited a few days to do so.
The week ended, and I hadn't heard anything. I thought perhaps I misheard, and he'd said the end of the following week. Still nothing. No phone call, no email.
The next week, now 2.5 weeks after my interview, I emailed to ask if there was anything I could give them -- references, or further background, or anything -- to help them decide. The following was the entirely of the response I received, without the names:
Sorry [me]. Unfortunately, the team decided to pass on your candidacy.
[recruiter]
Subscribe to:
Posts (Atom)