Category Archives: DIY

Too Much Toolchain Time

Having my “work project” be finishing the code generator and simulator fronted for LARK, and my “play project” be coaxing uClibc and TCC to build for Android (demonstrably possible, it’s just a question of if I’m clever and/or tenacious enough…) is giving me a little too much time working with compiler toolchains to be healthy. It does make me understand how compilers people get their — characteristic — personality traits, though.

Posted in Computers, DIY, General, Navel Gazing, School | Leave a comment

Android Love of the Day: Like Things are Handled Alike

[This post is part of a series on my initial Android impressions.]
I think I’ve covered most of the really problematic things Google needs to get on. Some other issues are either already being fixed – they’re apparently already working on the notification shittyness – or unsolved problems for developers – like the fact that landscape mode is a definite second-class citizen, despite a profusion of landscape keyboard sliders.
And now a change of pace for the end of the week: this post is about something I think the Android designers did right, and certainly did better than many competing platforms.

Mobile platforms are especially guilty of treating otherwise indistinguishable objects as different. For years there has been the ringtone scam, with carriers and third party assholes charging for suitably down-sampled and/or converted music tracks, even when it is often visible that devices internally use .mid or .mp3 tracks for the function. Likewise, a couple of the mobile platforms distinguish between editable and non-editable text, which is absurd.

Android doesn’t pull that shit. Music is any compatible audio file the indexer can find. Ringtones are any native audio file that you point at as a ringtone, with a default /sdcard/Media/Audio/Ringtones directory for things you intend to use that way. Notification sounds are likewise audio files you point at as notification sounds, with a default /sdcard/Media/Audio/Notifications folder.
Text, with the occasionally irritating but entirely understandable exception of certain UI elements, is text. The same (clunky) select/copy mechanism works on all text, and it all goes to the same system-wide clipboard. Because I have a Sense ROM, the mechanism is actually this one(video), which is slightly less clunky than the default, but still inelegant. The important thing is that it’s consistent.

All in all, I like my MT4GS. It has some quirks, many of them in software which can and will likely be fixed with updates or third party extensions as time passes, and it costs a fortune to feed, but it does the vast majority of things I want in a little handheld computer, and it does them more elegantly than the competitors I’ve tried. I may not find Android to be an exciting platform, but it is a solid platform, with multiple, reliable companies backing it, a parent company actively trying to improve it, and enough market penetration to be a first-class citizen for years to come. It even appears the native code situation is improving, which should let me work around many of the things *I* would like to work differently that aren’t concerns for most users.

Posted in Computers, DIY, Electronics, General | Tagged , | Leave a comment

Android Hate of the Day: Missing Basic Functionality

[This post is part of a series on my initial Android impressions.]
Just to be clear, my Android criticism is because I want this shit fixed in the last promising mobile platform standing, not because I hate it. Platform specific comments are based on the default MT4GS Android 2.3.4 with Sense 3.0 ROM, rooted and largely de-bloated. And now for the hate.

Android doesn’t come with a file manager. It doesn’t come with a terminal emulator, or a task manager, or almost any of the things one has come to reasonably expect an operating system to have. This makes it excessively hard to share instructions, since everyone is using interfaces broken in slightly different ways, and means the first few days of using a new device are spent on “Damnit! why won’t it do $Basic_function? Now I have to sort through the crap pile in the app store until I find one that actually works.” (which, come to think of it, is likely the objective.)
The file handler functionality is as good as any desktop platform (I don’t actually know if it is based on XDG like most other *nixes, or some homegrown solution) so it wouldn’t debilitate third party solutions to have sane defaults, and the argument that most users wouldn’t want all of those functions is completely specious… it took me a couple hours to strip most of the unwanted crap off my new phone, and that crap was certainly less useful than the things I’m complaining about being missing.
Also, most of the third party solutions suck. I’ve been using ConnectBot for a shell, which is better than the other free options I’ve tried, but handles the keyboard differently than every other program, and thus has problems with entering symbols like “|” and “>” which are sort of important on the command line. Likewise, after several seriously disappointing alternatives, I’ve settled on ES File Explorer for file management (also a solid [s]ftp/smb client), which is a little quirky about permissions and different file systems, and is nearly unusable in landscape mode (a rant for later), but is generally adequate. I’ve heard there may be some paid alternatives which are significantly better, but the idea of paying for this kind of basic functionality is infuriating – it is basically the same situation of coughing up for a Mac then having to buy one of a dozen Finders from some random dude for $20 before you could use it.

Posted in Computers, DIY, Electronics, General | Tagged , | Leave a comment

Android Hate of the Day: Process Management

[This post is part of a series on my initial Android impressions.]
Just to be clear, my Android criticism is because I want this shit fixed in the last promising mobile platform standing, not because I hate it. Platform specific comments are based on the default MT4GS Android 2.3.4 with Sense 3.0 ROM, rooted and largely de-bloated. And now for the hate.

The task/process model Android uses is total bullshit. Task switching via the launcher is clumsy, and having things popping in and out of memory at random creates performance instability and the worst kind of non-determinism. To make an easy-to-demonstrate example, hit the “Internet” button – is it just bringing the screen back up, or starting over reloading the page you were on? You don’t know unless some form data disappeared, but the page probably does. This is especially significant in a mobile device, where user input is time and energy intensive, and, more importantly, the close button has a strong implication of “get up off my battery” that isn’t necessarily being honored.
This also runs afoul of the “never lie to your user” axiom; there is a difference between running and non-running processes, and trying to ignore that distinction, unlike every other multitasking platform, is going to cause more confusion that it saves.
This is again partially fixable via third party software – I’ve been using Gemini App Manager to hunt down badly behaving processes. Unfortunately, Gemini App Manager is seriously clunky, and between the profusion of RAM-eating background processes endemic to Android (and Sense…), and the number of apps designed with the expectation that they be allowed to sit in the background doing nothing useful, it isn’t really practical to keep an eye on what is running. I haven’t found anything that helps with the lack of a proper task switcher, and the “Recent” list from holding the home button or bringing up the notification screen is not even close to a solution.
This is, in my opinion, the most fundamentally broken thing about Android, and will be the hardest to fix in a sane way, especially without running afoul of someone else’s ridiculous patents. I’ve mentioned before that Google’s recent spate of UI hires gives me hope on this front, especially Matias Duarte who designed good solutions for task switching on a number of other mobile platforms, but for the time being it makes me irritable.

Posted in Computers, DIY, Electronics, General | Tagged , | Leave a comment

iOS is not a Promising Platform (for me)

This is a response to “what about iOS?” questions from my calling Android “the last promising mobile platform standing” in the boilerplate for the posts I’ve been making about problems with Android. I come prepared with a list from my last two rounds of mobile device shopping.

  • The whole Jailbreaking mess is ridiculous. Android rooting is a relitively passive process, and the manufacturers are actually trying to be helpful. Apple is actively trying to lock you out of your device on every update. I’m a firm believer in the “If you can’t open it, you don’t own it” philosophy, and I like owning my computers.
  • Silly domain-specific language. Apple likes to act like their implemenation of Objective-C is a general purpose language (and that the versions for OS X and iOS aren’t mutually incompatible dialects), but when was the last time you saw something in Objective-C that wasn’t for an Apple platform? Even if you can come up with something, the other implementations are all OpenStep compliant – which is to say, incompatible with Apple’s. I will admit that using native code that is a superset of C is arguably better than the “Everything is written in Java and runs through our re-implemented JVM” situation on Android, but at least Google has their NDK now.
  • To write code for iOS, you need a recent Mac, Xcode, and a subscription to Apple’s developer program. To develop for Android, you need a computer. Google has a nice integrated eclipse-based toolchain, but if you want to do it with a text editor, make, and the binaries for whatever platform you are running from the SDK, there are directions for that too. I’d really prefer that the “computer” requirement wasn’t there – being able to try out simple scripts and compile test C programs on Maemo was wonderful, WebOS had it, and I want it on Android… apparently you can hack a toolchain together on Android with tcc and uclibc/dietlibc, and I’ve been trying, but I’m not willing to pay for a broken version.
  • All of the current mobile platforms give an unprecedented amount of access to the platform owner. I don’t trust Apple enough to give them a snitch in my pocket. I’m not entirely comfortable with Google having that kind of access either, but it’s a “choose your poison” situation.
  • No native multitasking. Apple has that weird freeze state background callback mechanism they call multitasking, which works in limited circumstances, but it really isn’t. They also don’t have a platform level clipboard mechanism or any of the other features that make multitasking work. WebOS’s behaviors in that regard were better than Androids, but… yeah.
  • Single source for software. Android has a checkbox to use alternative sources, and doesn’t have byzantine rules on what goes in Google’s market. iOS has “Jailbreak, install a third party manager, and pray the next update doesn’t brick your phone”, coupled with a transparency-free review process for applications that go in their store. That’s an appliance with vendor-provided modules, not a platform.
  • I want a god damn keyboard. Using up half your expensive high-resolution screen for a keyboard large enough to mash your fingers on is retarded, and I’m yet to use a software keyboard that comes close to being as usable as even second-rate hardware keyboards. Apple has a long standing war on buttons, so built in isn’t going to happen, and third party clip on Bluetooth keyboards aren’t a solution.

Honestly, a 4-ish inch iOS device with a physical keyboard hacked such that it would have nothing to do with Apple’s servers (Updates when I ask, Cydia (rebadged dpkg) for package management, etc.) would be a pretty attractive platform – the underlying tech is good, and the userland is more POSIX-like than Android – but Apple won’t let that happen.
As for other platforms, I don’t see any evidence that Windows Phone is going to be any more successful or desirable than the previous incarnations of WinCE and WinMo – they seem to just be copying iOS, stupid omissions and all, on top of a different kernel. HP did their stupid thing to WebOS, and Nokia just killed their own to turn themselves into Microsoft’s mobile hardware division in all but name (which, history tells us, means they should be defunct shortly). So. Last promising platform standing.
Edit: I would make a note about it being tied to iTunes, which I despise in almost every way imaginable, but I once owned and liked a Creative Nomad Jukebox 3 where step one is “Get third party replacement software,” and the situation is much the same with Apple. Also, removable storage counts as a plus for Android, but Apple hasn’t expressed a dogmatic position against it, so the fact that no iDevice has had a microSD or similar slot isn’t a fundamental platform problem, just an issue with their existing hardware.

Posted in Computers, DIY, Electronics, General | Tagged , , | Leave a comment

Android Hate of the Day: Everything is Full of Ads

[This post is part of a series on my initial Android impressions.]
Just to be clear, my Android criticism is because I want this shit fixed in the last promising mobile platform standing, not because I hate it. Platform specific comments are based on the default MT4GS Android 2.3.4 with Sense 3.0 ROM, rooted and largely de-bloated. And now for the hate.

This is somewhat related to the market profiteering, but is a distinct and separate problem. Between internet ads that work because the built in browser is fully featured (yay? Flash), and “ad supported” software, the advertising situation crosses from merely irritating into usability problems. I don’t fundamentally have an issue with ad supported software and services, especially free games, but when 1/3 of the screen is covered with moving, changing, bandwidth-consuming advertisements, it has transitioned from “supporting the developer” to “disrespecting the user,” and that isn’t OK. At least google doesn’t have an Advertising API baked in to the platform like certain other popular mobile platforms.
On a rooted phone, AdFree Android takes care of the bulk of the problem, but misses some things, and is a substantaial hassle just to block enough ads to use your phone. I’m not sure what you would do if you couldn’t or didn’t want to root.

Posted in Computers, DIY, Electronics, General | Tagged , | Leave a comment

Android Hate of the Day: Profiteers

[This post is part of a series on my initial Android impressions.]
Just to be clear, my Android criticism is because I want this shit fixed in the last promising mobile platform standing, not because I hate it. Platform specific comments are based on the default MT4GS Android 2.3.4 with Sense 3.0 ROM, rooted and largely de-bloated. And now for the hate.

Android’s developer community is poison. With Maemo and WebOS, the objective was making and sharing software you wanted to use. With Android, the idea seems to be to extract as much money as possible from suckers. More infuriating, on the other platforms, Free software was available for free as a matter of course. With Android, there are at least three assholes trying to charge $1-5 for dalvik-wrappered versions of every useful bit of F/OSS and other noncommercial licence code (ex. Look how many pay apps are based on the “anything but commercial use” licensed SNES9X codebase). I may not be concerned about casual piracy, but it pisses me off when money changes hands for other people’s work.
Finding a suitable sub-community hasn’t been terribly successful either; XDA-Developers is the best I’ve found, but is full of [l]users, and NookDevs, while promising, seems to be both nook specific and mostly defunct. Furthermore, the native code build system is so broken I’m having trouble DIYing binaries (as opposed to “apps”) more complicated than hello world on my own. Is there an intact community of people who just want to hack that I haven’t found?

Posted in Computers, DIY, Electronics, General | Tagged , | Leave a comment

Expected HTC Dobleshot/MyTouch 4G Slide: Purchased. Time to getting irritated and deciding I needed to root it: Approximately 20 minutes.

Posted on by pappp | Leave a comment

WebOS RIP

I’ve been watching HP’s latest midlife crisis implosion, wherein they are effectively killing the WebOS platform that they bought for $1.2Bn about a year ago, and trying to sell their PC business which is currently the largest in the world, to become an enterprise company, where they are merely one of several big fish. The latter madness is very much akin to the Carly-era “let’s become a Whitebox PC Vendor and sell off our differentiating technology” fail, but the former is something I’m currently interested in. I’ve been chatting about it in news discussions, some of which are publically visible, but wanted to collect thoughts here.

1. HP has done this shit over and over. Apollo in 1989. Convex in 1995. DEC via Compaq in 2002. This may be the most egregious “Buy a distressed asset with good technology, then abandon it” of all time, but the precedent was certainly there.
2. It took Apple (roughly, based on patents and employees) 22 years and two failures (the Newton and one killed internally around ’04) to build a mobile platform that didn’t suck too much for even the reality distortion field to market, and they made a good try at fumbling again at release (remember “No one needs native applications, webapps only“?). Palm was the only other contender with that kind of background, and they designed around Apple’s mistakes (Hello competent multitasking, clipboard, and notifications system!). From a design standpoint, WebOS was the obvious winner.
3. Android, WebOS and Meego are all fundamentally ARM EABI Linux, with a shiny UI coating. iOS’s XNU for ARM and POSIX-y underlayer isn’t that different. WebOS managed the balance perfectly, with official support for optware for the “This is a Linux box” software, and a commercial store for the UI-focused software. Apple kicks and screams and tries to subvert users who want to do anything other than in-band UI-wrappered software through their official store, but there is still a substantial jailbreak/cydia/etc. aftermarket. MeeGo didn’t really have a usable mobile UI layer, restarted too late, and isn’t really worth discussing. Android has technological impediments built in to it to make it as unpleasant as possible to run native binaries, even though the capability is there, which has resulted in a store full of $1.50 pieces of cross-compiled FOSS software with clunky dalvik wrappers over them, and my contempt.
5. I’d like to reiterate that the WebOS development environment was brilliant. The tool-chain was built completely out of open, standard components and languages. No custom JVM substitute to provide lock-in, patent wars, and wasted cycles. No effectively domain specific language (ObjectiveC with weird libraries? Really?). Just a clean interaction model built on top of HTML, CSS, and Javascript, native binaries in C/C++ using STL and OpenGL, and an interface to connect the two.
4. I pretty much agree with this Ars article on how it should have gone down, with an additional “they should have hurried the fuck up” to cap it off.

What I really want in a device is a pocket POSIX workstation with a clean Mobile UI. I’ve ranted about this before. A WebOS device with decent hardware (High-resolution screen, usable keyboard, removable storage) would have been nearly perfect, and the Pre3 was almost it. But it was six months late, lacked removable storage, and has now been cancelled between its European and US release. I’ll probably end up with a HTC Doubleshot (aka. MyTouch 4G Slide) shortly here, as Android is the last platform standing that meets my most basic requirements, and T-mobile and HTC (now with Unlocked Bootloaders!) are the least evil respective sources of service and devices. At least there is a Linux system buried under there somewhere, and now that Matias Duarte has moved to google the Android UI might improve. And hell, maybe I’ll bargin-bin a WebOS device in a couple months as they’re being dumped, just for sport.

Posted in Computers, DIY, Electronics, General, Objects | Tagged , , , | Leave a comment

Humble Indie Bundle, Again

The Humble Inidie Bundle folks have a new set available, labelled #3. (I guess the last one was “Humble Frozenbyte Bundle” and thus not numbered). I liked Crayon Physics when it was an experiment on Maemo, and the collection of puzzle platformers that make up most of the balance look worthwhile. Once again, I’m in for $15.
EDIT: My mistake, the Maemo physics game I was thinking of was a contemporary play-alike called Numpty Physics

Posted in Computers, DIY, Entertainment, General, Objects | 1 Comment