Posted
by
Soulskill
on Tuesday May 14, 2013 @09:13PM
from the performance-is-a-luxury dept.

colinneagle sends this quote from an article at NetworkWorld:
"I run a very nifty desktop utility called Rainmeter on my PC that I heartily recommend to anyone who wants to keep an eye on their system. One of its main features is it has skins that can monitor your system activity. Thanks to my numerous meters, I see all CPU, disk, memory and network activity in real time. the C: drive meter. It is a circle split down the middle, with the right half lighting up to indicate a read and the left half lighting up for write activity. The C: drive was flashing a fair amount of activity considering I had nothing loaded save Outlook and Word, plus a few background apps. At the time, I didn't have a Rainmeter skin that lists the top processes by CPU and memory. So instead, I went into the Task Manager, and under Performance selected the Resource Monitor. Under the Processes tab, the culprit showed its face immediately: AppleMobileDeviceService.exe. It was consuming a ridiculous amount of threads and CPU cycles. The only way to turn it off is to go into Windows Services and turn off the service. There's just one problem. I use an iPhone. I can't disable it. But doing so for a little while dropped the CPU meters to nothing. So I now have more motivation to migrate to a new phone beyond just having one with a larger screen. This problem has been known for years. AppleMobileDeviceService.exe has been in iTunes since version 7.3. People complained on the Apple boards more than two years ago that it was consuming up to 50% of CPU cycles, and thus far it's as bad as it always has been. Mind you, Mac users aren't complaining. Just Windows users."

A similar google service on my MacBook causes the keyboard to stutter every few hours and occasionally disables the camera until I reboot. There's a way to disable it, but I haven't bothered yet. However, the process is incredibly similar to this one [apple.com] for disabling applemobiledeviceservice on Windows.

Mac users don't complain because iTunes on Mac doesn't have this problem, or much of any problem that I've noticed. This is either because Apple doesn't know how or care to code for Windows, or because it's a conspiracy to get iPhone and iTunes users to buy Macs because "Windows is slow." In my opinion, it's probably a mixture. Apple just doesn't have as much incentive to provide a good Windows experience, so they don't bother, knowing that this will probably convert a few suckers to Mac.

Similarly, Google services don't seem to screw up Windows or Linux, and Google's MTP support for Mac (MTP is required for Nexus 4) is ridiculously minimal. It's an analogous situation. Vendors for system X don't care about system Y, news at 11.

The solution seems simple. Sell your iPhone to a Mac user, and buy an Android device. Why would you even buy an iPhone for Windows? I use a Mac and I still won't buy one.

- First of all, you can charge your iPhone without having iTunes loaded/loading (see this [superuser.com]).
- Then, many users don't have such problem: be sure you have the latest windows SP, and the latest iTunes.

Not the average use, no, but it does raise a whole lot of accessibility issues for those who have physical issues that prevent their using mice. Both Apple and Microsoft publish a set of user interface guidelines that say the following:
Excerpted from Microsoft UX Guidelines ( http://msdn.microsoft.com/en-us/library/windows/desktop/aa511258.aspx [microsoft.com] ):

To ensure that your program's functionality is easily available to the widest range of users, including those who have disabilities and impairments, all interactive user interface (UI) elements must be keyboard accessible. Generally, this means that the most commonly used UI elements are accessible using a single access key or key combination, whereas less frequently used elements may require additional tab or arrow key navigation. For these users, comprehensiveness is more important than consistency.

Of course this means Microsoft's puppet press has to bash iTunes now. Not that I would run the stupid app, but that's what this is about. Ballmer has his knickers in a twist because he's starting to find out what it felt like to all those other people he was locking out of the dominant platform back in the day when he was king of the hill.

I do not work for Microsoft and as an owner of an iPod, which requires iTunes to transfer music from my computer onto the device, I can tell you that the Windows version of iTunes is probably the shittiest piece of software ever written.

Must be to compete with Microsoft. Their Office for Mac is a piece of junk and often doest adhere to the HID guide of development software. Hell, I cant even cut & paste images dragging and dropping them as in other Apple software. And it is SLOW.And lets not get started about Outlook. I have been trying to take a coworker out of it.

I'm surprised that nobody makes a replacement application. I remember virtually having to buy one for my NJ3 years back because the OEM software was so bad.

If memory serves, older flavors of ipod where more or less equivalent USB mass storage devices, though they required media files to be stored in a specific arrangement and a little database file to be uploaded, so you needed a utility of one sort or another to do transfers(you could drag and drop; but the device wouldn't do anything useful with files added that way).

For the iDevices that Apple actually cares about(ie. not the 'classic') the situation is a bit weirder and more complex: it's strongly resembles TCP-over-USB [theiphonewiki.com]. On top of that, all kinds of behavior [libimobiledevice.org] has been implemented. As the latter link suggests, there has been some work on the matter; but it's a relatively complex beast(which Apple has no particular compunction about changing as it suits them).

Hold down that little Windows key on your keyboard and hit "R". Type in "MSConfig", in the startup section enable/disable whatever you want. I personally like to disable just about anything Adobe, Apple, or Oracle puts in there, unless I actually need to run an Oracle component in the background. Those three companies can't help but attention whore and run on startup and none of there stuff actually needs to run until used. You can probably find a few more things that have no business starting with your machine while you're at it.

You misunderstood the "just click an icon" comment. It was in response to:

The service runs in the background and launches iTunes when the phone is plugged in. It's quite handy.

The comment was actually saying that all the service did was to save you from having to manually launch iTunes; or in other words click an icon. It was not about how to start or stop a service in Windows (which can be done with a single icon anyway using either sc.exe or net.exe).

The iTunes service really isn't that handy a feature, especially if it is causing problems with overuse of resources when it isn't in use. It is also annoying to have the program pop up when you are just plugging in the phone to charge it.

Litigation is somewhat of an issue when dealing with Apple's hardware/software and reverse engineering.

Reverse engineering is legal in the US. Any information gleaned from such activities that doesn't violate a patent, an NDA, or copyright / DMCA can be publicly disclosed with impunity. Reverse engineering for the purposes of interoperability is also well supported by prior case law.

I'm not sure why he mentioned NTFS. I believe the Windows file modified event is sent for any changes on any disk type, even on remote NFS mounts, that are done by a process on the local machine that is using the Windows api to create files. If it is limited to NTFS then Microsoft is completely bonkers.

The iPhone does not show up as a SBP2 device on the USB bus, so therefore Windows cannot format it and will not ask to format it. In fact, if you hook it up to Windows 7, it loads a Microsoft driver that exposes a DCIM folder for you to peruse as a normal disk. On Windows XP, it shows up as a "Scanner or Camera" device, again, without having iTunes installed.

I do not work for Microsoft and as an owner of an iPod, which requires iTunes to transfer music from my computer onto the device, I can tell you that the Windows version of iTunes is probably the shittiest piece of software ever written.

I actually thought that iTunes was just absolutely awful because it was iTunes. And then I got a Mac.

Turns out that iTunes (while it's still a feature-overpacked piece of trash) is really only this terrible on Windows. On OS X, it just sucks because it's crowded and confusing, but it does run pretty well.

(3) The Windows APIs for device arrival notification suck and require polling rather than blocking a thread to wait

Thanks so much for sharing your knowledge. I'll call up our software engineers immediately and let them know that processing a DBT_DEVICEARRIVAL message in the message pump, or using RegisterDeviceNotification() in our service, can't possibly work and we should re-write those sections of code to poll for device change.

You still have not told us where Microsoft recommends polling, as per your claim:

And worse? Some of the documentation specifically says they want it that way! On purpose!

[HAL] it's a nightmare of convoluted and badly-documented objects and methods. I won't go as far as to say whoever decided to go with polling instead of event-driven made a great design choice, but I can understand how, after days and days of pouring over bad documentation, he decided it was either ritualistic suicide or go with the better-documented interface...

Windows device driver development has an entire site devoted to it [microsoft.com]. In there there is architectural guides, tools, development kits, samples, articles, process guidelines and best-practices. I really don't know what you'd expect? Would the source code be better documentation and provide better guidance?

but I can understand how, after days and days of pouring over bad documentation, he decided it was either ritualistic suicide or go with the better-documented interface...

I can't

1. iPhone connects over USB. Which means that Windows already has a bus driver in place which will notity the PnP manager about device arrivals on the USB bus. What one would need to create is probably a Function Driver [microsoft.com]. If iPhone used some standard protocol one could probably do with a built-in driver, but I suspect that some proprietary protocol are at work - so therefore a function driver.

2. The PnP manager will activate and notify the function driver upon device arrival. It will do so through the AddDevice message [microsoft.com].

3. From the looks of it, what the iPhone requires is probably aptly covered by a user mode driver [microsoft.com]. Which flies in the face of your previous assertion that

You can only download matched media, or purchased media. Anyone who rips a significant portion of their library would require match to do this (pay account), and upload it before they could leverage cloud playback on demand.

No it could actually be higher voltage, 5V (or 5.25) compared to 4.8 or something like that.

Nah, it's higher current (AMPs). Both you computer USB port and the iPad USB charger put out 5V. If it's higher than that, it can blow out circuits etc. I've had enough experience to say that the wrong voltage kills

From the USB Wiki, a device (plugged into a computer) may draw a maximum of 5 unit loads (500 mA) from a port in USB 2.0; 6 (900 mA) in USB 3.0. The charger, however, puts out about 2.1 AMPs.