Archive for February 14, 2014

Friday, February 14, 2014

ARM Immediate Value Encoding

Alisdair McDiarmid:

The rotated byte encoding allows the 12-bit value to represent a much more useful set of numbers than just 0–4095.

ARM immediate values can represent any power of 2 from 0 to 31. So you can set, clear, or toggle any bit with one instruction.

More generally, you can specify a byte value at any of the four locations in the word.

SwipeSelection Pro

Jeff Benjamin:

Everyone can benefit from SwipeSelection’s extremely improved cursor management when compared to stock iOS. I apologize in advance to Kyle Howells, developer of SwipeSelection, but this is one of those tweaks that I wish Apple would straight-up steal; it’s just that good.

[…]

The stock method of positioning the cursor while typing in iOS is cumbersome at best, and incredibly frustrating at times. It’s hard to gain the necessary precision using the stock method of editing text, and that’s where SwipeSelection comes in to save the day.

SwipeSelection lets you swipe directly on the iOS keyboard in order to move the cursor. This allows you to place the edit cursor in specific spots with much more precision than before. You can even select text by swiping from the shift key or from the delete key.

I haven’t jailbroken my iPhone, but this is tempting. For all the talk about how a hardware keyboard isn’t necessary and how Apple took the time to get text selection and copy/paste right, the on-screen keyboard remains the most frustrating part of iOS for me.

UTI Type Browser

Jonathan Wight’s uti.schwa.io is a browseable, searchable listing of Uniform Type Identifiers.

Opening Terminal Commands in Editor

When editing a command in Terminal, you can type Control-X, Control-E to open it in your text editor of choice (via Wesley Darlington). When you save your changes and close the document, the command is executed.

I have my editor set to BBEdit via this line in ~/.bash_profile:

export EDITOR="bbedit -w"

Apple’s Secure Coding Guide

Apple (via Jim Manico):

Secure coding is the practice of writing programs that are resistant to attack by malicious or mischievous people or programs. Secure coding helps protect a user’s data from theft or corruption. In addition, an insecure program can provide access for an attacker to take control of a server or a user’s computer, resulting in anything from a denial of service to a single user to the compromise of secrets, loss of service, or damage to the systems of thousands of users.

Secure coding is important for all software; if you write any code that runs on Macintosh computers or on iOS devices, from scripts for your own use to commercial software applications, you should be familiar with the information in this document.

The new version adds “information about non-executable stacks and heaps, address space layout randomization, injection attacks, and cross-site scripting.”

Slow Updater Purchasing Habits

David Smith:

I was a bit surprised at how straightforwardly this analysis came out. It seems clear that the distribution of people who are purchasing your apps follows closely the overall adoption of users. There doesn’t seem to be anything about their speed of update that impacts their purchasing habits.

Now, that doesn’t mean that dropping support for older versions isn’t a good idea. It just means that this particular line of reasoning shouldn’t be your primary justification. If anything this shows the importance of the dramatic speed at which the general population adopts new OS versions.

Lobotomizing Quicken 2007

Avi Drissman (via Nicholas Riley):

But Wealthfront uses Apex Clearing to hold their accounts, and while Apex paid their Intuit tax and offers QFX downloads, guess what? They paid for Windows but not Mac. And so Mac Quicken won’t import their files.

Now, ever since Intuit pulled the INTU.BID stunt with QFX, people have been trying to work around it. If you google around, you’ll find the usual suggestion is to switch out the INTU.BID number for one that works. I tried that, but couldn’t get it to work.

And then I asked myself, why don’t I fix Quicken itself?