Why would Microsoft management agree to develop a project designed to eliminate the very cash cow that made them billionaires? Steve Ballmer explained:
“It was what we used to call at the time ‘Riding the Bear.’ You just had to try to stay on the bear’s back, and the bear would twist and turn and try to throw you off, but we were going to stay on the bear, because the bear was the biggest, the most important… you just had to be with the bear, otherwise you would be under the bear.”
Wednesday, November 27, 2013
It seems like sharing printers to iOS devices should be a no-brainer. Is Apple really not doing this just because of some licensing fees?
I was surprised that David Gelphman didn’t cover this when he was talking about AirPrint.
I encourage you to run such tests in your favourite language. If you are doing work with international text it is vital that you understand what your ‘string’ type is actually doing. Once you’ve run this you should reconsider what your “string” type is actually doing for you. In my opinion they’re all broken.
Friday, November 22, 2013
When performing a large rebase with several commits and many changed files, the rebase process can randomly abort, stating that there are uncommitted changes and rebase cannot continue. However, a “git status” does not report any changes.
The problem has been tracked down to the revisiond daemon of the OS X Versions feature, which detects file changes and seems to somehow alter the file system info of the file, causing a rebase step to fail as it then detects changes.
When using Interface Builder and code, you have IBOutlets. If your project is ARC, the IBOutlets generated are `weak`. This is problematic because if you turn on CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK and CLANG_WARN_OBJC_RECEIVER_WEAK to try and catch bugs, you run into dozens/hundreds/thousands of warnings in your project. While it is nice to have your code as correct as possible, seeing thousands of warnings is enough to greatly sadden pretty much anyone.
The compiler wants you to make a strong reference before each use, which is not really necessary if you know that the owner of the references isn’t going anywhere.
Whenever any one, or combination of, these apps saturates the ADSL upload bandwidth, downloading then becomes very difficult. And that presents a big problem when trying to do things like watch content on iTunes, or have a conversation over Skype.
These apps all try to address the problem, but in collectively (and sometimes individually) ineffective ways[…]
I’ve seen similar problems that are not related to Internet upload bandwidth. For example, whenever I tried to sync my iPhone using Wi-Fi rather than USB, iTunes saturated the local Wi-Fi, making Safari and Mail unusable.
We have less than two weeks to develop an alternative data exchange mechanism, and this is complicated by the impending Thanksgiving holiday.
We considered revising the SDK to incorporate code to access users’ snippet data directly on Dropbox. This is not possible due to Dropbox’s app sandboxing. We considered the Datastore, but its limit of 5MB per account is too small for many users’ TextExpander data, and this is not how it was intended to be used. Dropbox is not a viable choice for the available timeframe.
Our only alternative appears to be providing TextExpander data via x-callback-url. User action will be required to acquire and update snippet data. Each app will have its own copy of the TextExpander data, which will not sync automatically with user updates made in the TextExpander touch app. It’s not ideal, but it is within the App Store Review Guidelines.
I would love to see a supported means of sharing data between apps on iOS. I’d love to see something like AppleScript (only much, much better).
In the absence of that, the only non-hacky way of sharing data is a web service.
A web service is the best solution right now, but it seems tricky. Charging would potentially alienate many of the existing users. And charging developers would limit the apps that synced.
Regardless of the workaround chosen, the result is that TextExpander will be made more difficult for people to use, for no obvious benefit.
Update (2013-11-26): The new SDK using x-callback-url is available.
The object of this report is to provide a summary of the available literature regarding the design and typographical aspects of printed matter. The report attempts “to bridge” the gap between basic research about typography, and the kind of information needed by designers of flight-deck documentation. The report focuses on typographical factors such as typefaces, character height, use of lower- and upper-case characters, line length, and spacing. Some graphical aspects such as layout, color coding, fonts and character contrast are also discussed. In addition, several aspects of cockpit reading conditions such as glare, angular alignment, and paper quality are addressed. Finally, a list of recommendations for the graphical design of flight-deck documentation is provided.
In Mavericks Font Smoothing, I noted that there has been a regression in the quality of text rendering in Safari (and some other apps). I thought this was due to a change in Mavericks. However, I noticed a similar change when updating from Tweetbot 1.3.3 to Tweetbot 1.4, with both versions running on Mavericks:
|Tweetbot 1.3.3||Tweetbot 1.4|
Basil Shkara, developer of the new Bee Mac client for FogBugz, thinks this is due to Tweetbot using layer-backed views. This sounds like a likely explanation. Text rendering has always worked differently in Core Animation layers, for example with subpixel anti-aliasing not being supported. It’s not clear to me why regular anti-aliasing has to use a different algorithm, though. In any event, I would happy to trade animations and super-fast scrolling in order to get better text rendering back.
Thursday, November 21, 2013
Once you do this, Square will send you an e-mail that asks you to enter your debit card info, and you are done. Cash sent. On the receiving side, you also get an e-mail asking for your debit card, and nothing more. There are no bank account numbers involved, how can they do this? The answer deceptively simple: they issue a refund to your debit card for the amount you are sent.
Now, you can use Square Cash directly with a bank account, but only for receiving money, since the two-step ACH verification process is only needed to make withdrawals from an account. A debit card is still required to send cash.
Wednesday, November 20, 2013
f.lux makes your computer screen look like the room you’re in, all the time. When the sun sets, it makes your computer look like your indoor lights. In the morning, it makes things look like sunlight again.
Tell f.lux what kind of lighting you have, and where you live. Then forget about it. f.lux will do the rest, automatically.
In other words, it makes the color temperature cooler (bluer, higher Kelvin) when the sun is high and warmer (yellower, lower K) when it’s dark out. In theory, this is easier on your eyes compared with the normal calibration of always using cool/bright whites; and the warmer colors keep your body from being confused about the time of day, which can help you sleep. There’s also an iOS version, but of course this sort of system-level utility is only possible via jailbreaking. The Kindle, Instapaper, and iBooks apps include a sepia mode, which provides a similar effect. (iBooks only provides this option for certain types of books.)
Great post from Drew Crawford:
This could be, I think, the single biggest API blunder in iOS. (Except maybe iCloud Core Data.) I have debugged issues that were root-caused to this misleading API more than ten times. I have lost more than four weeks to this API. I have no less than six radars open about it.
The documentation lists no fewer than six sample code projects underneath the Notifications-with-blocks API. And five out of six Apple model projects are wrong. Let that sink in.
It’s exacerbated by documentation bugs/omissions, such as that
NSAssert should not be used in blocks. He links to two alternative APIs, FXNotifications (which uses swizzling) and NSNotificationCenter-JNWBlocks (which uses associated objects). Both use weak object references, which means they won’t work on Mac OS X 10.6.
This tool is intended to present an active visual representation of the execution of a virtual CPU. It’s something of a take on valgrind; it emulates a CPU core reading opcodes and does the syscalls and linking and all that itself instead of creating a full system environment like a true emulator would. The idea is that it’s an abstraction atop what a CPU is really doing, allowing you to see what a given flow of ASM code is doing in a visual representation of its effect, rather than worrying about nitty details of things like paging tables and stack frames and so forth that don’t matter to 99% of coders.
Tuesday, November 19, 2013
He applauds the app for allowing him to do his work “frictionlessly.” How does a software developer achieve this level of performance? By first building a quality product and then working deliberately over months and years to address the minor issues that remain.
Monday, November 18, 2013
In this article I’m going to give you a high-level view of what the various blend modes do, and then I’ll dig deeper into the nuts and bolts of the blend modes by explaining some of the math involved, and their interrelationships with each other. I’m not going to “show” you how the blend modes work—I’m going to “explain” how they work. By the time you finish reading this article, you should have a better idea of how to use blend modes and where to begin your “experimentation,” which in turn should reduce the time it takes to achieve the results you’re looking for.
Sunday, November 17, 2013
This sounds like the one I’ve been waiting for, although a 6- or 7-inch version would probably be even better for reading.
Apple says that itty-bitty pixels require greater brightness to look good, and that drains the battery faster. To keep the Mini at 10 hours of juice, Apple had to give it a bigger battery, which makes it 7 percent heavier and slightly thicker than the original Mini (by three tenths of a millimeter, for you caliper-wielding types). You’d notice it, but only if you were holding the original Mini in your other hand for comparison.
Anand Lal Shimpi:
I cannot emphasize this point enough. After three days of extensive use of the Mini (a review unit on loan from Apple), it works and feels exactly like the iPad Air. Everything about it is of equivalent or identical quality: the display, the cameras (front and back), the performance, the battery life.
The Retina mini now features a 44% larger battery (23.8Wh). That’s nearly the same battery capacity as the original iPad (25Wh), but in a chassis with only 1/3 of the volume. This is also the highest capacity battery we’ve ever seen in a tablet of this size. The negligible impact on weight and thickness is pretty impressive.
Though the new iPad mini with Retina display is lighter than the iPad Air, it’s actually more dense. Picking up the iPad Air feels a bit like picking up a movie prop; like the iPhone 5 series, it’s almost impossibly light. The Retina iPad mini definitely feels more solid, like a whole lot of technology got packed into a very small space.
Whether you opt for this or the iPad Air comes down to essentially two factors: size and price. If you want the smallest and lightest iPad around, the mini wins, though not by as much as it used to; it’s around three-quarters of a pound to the iPad Air’s 1 pound. Its small size may be even more of a selling point, especially if you want something that’ll travel easily wherever you go: About the size of a trade paperback, the mini can fit comfortably into a purse or a small bag. And even though the new iPad Air is light enough to be held in one hand, the iPad mini still beats it, well, hands-down in that category. In particular, that makes the mini great for reading books or playing many games.
If the LCD panel has an image retention issue, a faint impression of the checkerboard will still be visible on the solid gray image, usually fading over the next few minutes.
Well, I picked up my Retina iPad Mini tonight, and it failed[…]
Here’s his image-retention test page.
In a ruling (embedded below) issued Thursday morning in New York, US Circuit Judge Denny Chin said the book scanning amounted to fair use because it was “highly transformative” and because it didn’t harm the market for the original work.
It’s not clear to me why being transformative is a relevant legal factor. And it seems obvious that the second part is incorrect, unless you assume that no one would ever try to sell electronic licenses to the content.
Tuesday, November 12, 2013
To summarize, so far it looks like Amazon and Facebook have fairly similar performance review structures as Microsoft much-lambasted system while Google seems to have a performance that seems to trade one set of problems for a different set. As an honorary mention, I’d like to point to the QPR system recently put in place at Yahoo by Marissa Mayer which is also a vitality curve based system.
Update (2013-11-13): Tom Warren:
Microsoft is killing off its controversial stack-ranking system today. While it could be viewed as an internal change that won’t affect consumers directly, it will have a broad effect on current and future Microsoft employees that may just shape the future of the company. For years Microsoft has used a technique, stack ranking, that effectively encourages workers to compete against each other rather than a collaborative Microsoft that CEO Steve Ballmer is trying to push ahead of his retirement.
Monday, November 11, 2013
We’ll get into details in a moment, but a look into past events will help establish the context for what I believe to be a pattern, a cultural problem that starts at the top (and all problems of culture within a company begin at the executive level).
Readers might recall the 2008 MobileMe announcement, incautiously pitched as Exchange For The Rest of Us. When MobileMe crashed, the product team was harshly criticized by the same salesman, Steve Jobs, who touted the product in the first place.
Skipping some trivial examples, we land on the Maps embarrassment. To be sure, it was well handled… after the fact. Punishment was meted out and an honest, constructive apology made. The expression of regret was a welcome departure from Apple’s usual, pugnacious stance. But the same questions linger: What did Apple execs know and when did they know it?
First. Who knew and should have known about iWork’s bugs and undocumented idiosyncrasies? (I’ll add another: Beware the new autocorrect)
Second. Why brag instead of calmly making a case for the long game and telling loyal customers about the dents they will inevitably discover?
Instead, we are left wondering:
Were the execs who touted [these products] ignorant and therefore incompetent, or were they dishonest, knowingly misrepresenting [their] capabilities?
ComScore’s data suggests though that comparatively few iPhone owners actually take the trouble to use Google’s maps rather than Apple’s - in part because Apple’s maps are the default for any driving directions or map-related search on iOS 6 and above.
According to ComScore, in September 2012 - just ahead of the introduction of Apple Maps - there were a total of 81.1m users of Google Maps, out of a total of 103.6m iPhones and Android phones users.
But a year later, its smartphone data says that the total number of Google Maps users is much lower, at 43% of iPhone and Android users - or 58.7m, despite the user base growing to 136.7m.
As with Web browsers in the 90s, the default choice matters a lot. And, unlike with Microsoft and Internet Explorer, Apple doesn’t even let users change the default maps app (nor Web browser). There’s a sort of strategy tax at work here. Apple has decided that it’s more important to hurt Google than to help its own customers.
Compared to the crowd funding experiment I’ve changed a few things. The goal is now to fund the time needed to finish version 2.0 of MailMate. This requires a minimum of 6 months of 2014 and therefore I’ve set the initial fixed goal to $25,000. A fixed goal means that I get nothing if the goal is not reached. Anything beyond $25,000 increases the period I am guaranteed to work full time on MailMate. The exact period depends on daily sales, but a rough estimate is an additional month for every $5,000.
Making email clients is hard, time-consuming, and expensive. Apple’s Mail app hasn’t brought many additions for power users in the past few years, prioritizing consistency with its iOS counterparts over features like keyboard shortcuts, filters, and AppleScript. While that’s reasonable for Apple, there’s a subset of users who would like to see more productivity-driven enhancements in their email client, and I think that MailMate already makes for a great replacement to Mail.app.
Update (2013-11-18): Benny Kjær Nielsen:
Over the weekend the crowd funding campaign reached its primary goal of $25,000 and it has since increased to more than $27,000. Yet again, thanks to everyone who helped make this happen! Development of MailMate is now guaranteed for the first 6 months of 2014. Maybe more if regular daily sales increase. If you never read about the background for this campaign then you can see it here.
Saturday, November 9, 2013
Ruby Under a Microscope gives you a hands-on look at Ruby’s core, using extensive diagrams and thorough explanations to show you how Ruby is implemented (no C skills required). Author Pat Shaughnessy takes a scientific approach, laying out a series of experiments with Ruby code to take you behind the scenes of how programming languages work. You’ll even find information on JRuby and Rubinius (two alternative implementations of Ruby), as well as in-depth explorations of Ruby’s garbage collection algorithm.
Looks like a good book, and it’s currently on sale.
Friday, November 8, 2013
Maybe, at its core, is a construct that allows programmers to move null checks into the type system, so they can be enforced at compile-time. Instead of forgetting to deal with a null check and finding out with an exception at run-time, you forget to deal with a null check and find out with an error at compile-time, before anyone else even sees it! And that’s not just some null checks, that’s all of them!
Wednesday, November 6, 2013
I love frequenting indie bookshops -- the browsing experience of a good bookstore is still far superior to that on Amazon or a Kindle -- but I don't buy paper books anymore. So I usually leave bookstores with a list of 2-3 books I later buy on Amazon...it would be nice if the bookstore gets a cut of that action. If it worked well enough, the physical books in the store would be more like advertisements for the digital copies than salable items and you could change how you stock the store...less overall inventory or a more varied inventory with far less overhead.
I'm sad to let VoodooPad go, but at the same time I'm excited about being able to focus 100% of my energy on Acorn.
My name is Mike Ash, and I’d like to talk to you about our acquisition of VoodooPad and the way I’ve put it to use for many different things over the years. I’m a software engineer here at Plausible Labs. I wear a lot of other hats as well. Plausible Labs is a cooperative, which means that all of us here at Plausible share in the ownership and decision-making of the company. I helped get the ball rolling on VoodooPad, although the decision was made collectively as befits our corporate structure. I’m also going to be the principal engineer working on VoodooPad for the moment, and I’m happy to get my hands dirty.
VoodooPad is a really cool app that I’ve never quite found a use for, but I’m convinced that someday I’ll have a problem for which it’s the perfect toolbox for building the solution.
Given the ever-greater concerns over privacy it does seem short-sighted to allow only contact and calendar syncing via an online service such as iCloud.
My $20 suggestion is that you set up local CardDAV and CalDAV servers for syncing contacts and events respectively. With such servers you can easily sync your contacts and calendar events between your Mac and iOS devices over your wireless network without a lot of bother. In fact, the bother is all in configuring Mac OS X Mavericks Server, which you can purchase from the Mac App Store. Here’s how to perform each configuration.
Even before Minecraft was shown to the public, Markus had made a couple of important decisions that would have a huge influence on the game’s continued development. First, he wanted to document the development openly and in continuous dialogue with players, both his semiprofessional colleagues at TIGSource and any others who might be interested. Markus updated his blog often with information about changes in Minecraft and his thoughts about the game’s future. He invited everyone who played the game to give him comments and suggestions for improvements. In addition to that, he released updates often, in accordance with the Swedish saying “hellre än bra” (meaning someone who prefers spontaneity over perfection). As soon as a new function or bug-fix was in place, he made it available via his site, asking players for help in testing and improving it.
And Gecko was good, and IE was not, and sniffing was reborn, and Gecko was given good web code, and other browsers were not. And the followers of Linux were much sorrowed, because they had built Konqueror, whose engine was KHTML, which they thought was as good as Gecko, but it was not Gecko, and so was not given the good pages, and so Konquerer began to pretend to be “like Gecko” to get the good pages, and called itself Mozilla/5.0 (compatible; Konqueror/3.2; FreeBSD) (KHTML, like Gecko) and there was much confusion.
When you try to run a 16-bit program, the application compatibility layer looks at the program and says, “Gosh, I wonder if I recognize this program.” And maybe the answer is, “Yes, it is InstallShield version 5.0, and I have been taught very specific information about the data files that are used by that version of InstallSheield to the point that I know how to install them without actually invoking InstallShield itself.” In that case, instead of playing a sad sound, the kernel hands the request to the application compatibility engine with the instructions, “You take care of this.”
If you then pop this unreversible hash into some tables of hashes or even sites that just do such things for you these days, you can basically reverse them pretty easily now:curl http://md5.gromweb.com/?md5=098f6bcd4621d373cade4e832627b4f6 | grep "The MD5 hash"
Are there any known forms to which all SQL queries can be reduced? Do any of these eliminate subqueries? Or are there some instances where no equivalent, subquery-free query exists?
This afternoon, that stockpile was finally used for what pretty much everyone suspected it would be used for—launching an all-out patent attack on Google and Android. The smartphone patent wars have been underway for a few years now, and the eight lawsuits filed in federal court today by Rockstar Consortium mean that the conflict just hit DEFCON 1.
I’ve said this multiple times in the past, and I’ll say it again: I don’t like this game. Rockstar looks, smells, and now acts like countless NPE’s that have done more harm than good — namely Lodsys, which has been aggressively harassing Apple’s own ecosystem. It’s extremely disappointing to see Apple facilitate this kind of behavior. At the same time, the missed Nortel auction and dubious Motorola purchase look as awful a strategic blunder as ever for Google. They kept their head in the sand for too long.
This latest lawsuit filed by Rockstar is an escalation of a patent war against Google and Android, not the start of it. Nobody looks good here — not Apple, not Microsoft, but certainly not Google either.
It’s frustrating (to say the least) that we cannot continue to work on Everpix. We were unable to secure sufficient funding in order to properly scale the business, and our endeavors to find a new home for Everpix did not come to pass. At this point, we have no other options but to discontinue the service.
Everpix began as the brainchild of Latour, a 34-year-old French entrepreneur who sold his first company to Apple in 2003. That company, PixelShox Studio, made motion-graphics software that was later renamed Quartz Composer. It became a key part of OS X, powering the operating system’s screen savers and iTunes visualizations, among other applications.
Everpix had acquisition discussions after Disrupt with Facebook and Dropbox, among others, but waved them all away: the founders wanted to create this service on their own terms. They spent the next six months building their product in a public beta before releasing what they considered to be the true Everpix 1.0 this March. A free option let you see all your photos from the past year, or longer if you connected your desktop computer to the Everpix iOS app. For $4.99 a month or $49 a year, the service would let you store an infinite amount of photos.
MacAddict was the first North American magazine focused on the Macintosh to include a CD-ROM with every issue. MacAddict’s discs included shareware and demo programs, but also came with other added features, such as staff videos and previews of content inside the magazine’s hard copy.
Now you might think this wouldn’t be a huge issue. You’d think you could do what you do in iTunes and just select “Reveal in Finder” for the book you are looking at. You’d be wrong. iBooks follows more of the type of storage that iOS uses. i.e. completely unintended to be visual. It doesn’t keep the original files stored in a suitable location with a database storing links and metadata the way iTunes does. Rather there is a folder deep in ~/Library with a hash code name for each book.
The other metadata problem with iBooks is that, unlike Kindle, there is no easy way to export the highlights and notes that you’ve added. The situation is slightly improved now that there’s a Mac version, though, since you can get at the SQLite file in:
Update (2013-11-07): Aaron D’Amico told me that his forthcoming Compendiums app will address the problem of exporting iBooks metadata.
The more interesting question is, of course, what is the difference between the old and new design, which I will simply refer to as “2012” and “2013” here. After opening both versions of the Regular style, my FMX Compare Fonts macro spits out that outlines were changed in 115 glyphs, components were modified in 43 glyphs, metrics were adjusted in 64 glyphs and kerning pairs were added.
Both the spacing and kerning have changed, so if you’re designing a user interface you need to test on a non-Retina display, where text will be wider.
A new storage access framework makes it simple for users to browse and open documents, images, and other files across all of their their preferred document storage providers. A standard, easy-to-use UI lets users browse files and access recents in a consistent way across apps and providers.
Cloud or local storage services can participate in this ecosystem by implementing a new document provider class that encapsulates their services. The provider class includes all of the APIs needed to register the provider with the system and manage browsing, reading, and writing documents in the provider. The document provider can give users access to any remote or local data that can be represented as files — from text, photos, and wallpapers to video, audio, and more.
Seems like a great idea but one that we’ll probably never see built into iOS.