I awoke to an email from Microsoft in telling me my Xbox gamertag could be used on my Windows 8 computer and through no fault of theirs this got me thinking about closed ecosystems (aka walled gardens).
The walled garden is an age old proposition by an organization: give up lots of control and they will make sure your life is better. In technology the proposed value to the user is security and a curated experience at the cost of choice and (many times) the ability to customize the environment and various other freedoms.
What I ended up considering this morning is the difference in the Xbox closed ecosystem and the iOS closed ecosystem and more specifically how it reflects on Microsoft.
I am not (I believe) an exuberant fan of Apple but I am a long time despiser of Microsoft. So those are my biases. But I’m on my 3rd iPhone and I’ve owned now about 4 Xboxes (6 if you count the previous generation), so I am a user of both.
Both pieces of hardware participate in a closed ecosystem and I suffer them differently. Now I will also admit up front that gaming consoles have distinct idiosyncrasies due to the content industry but I would also argue the carrier industry was also a cluster at least until the first iPhone came along if not still.
What I’m tying to get at (6 paragraphs in) is that these two companies have very different approaches to the ecosystem. Microsoft tries to extort maximum value. I pay $60 per year to them and in exchange I get increasing ads on my screens, I get updates that increasingly distract from the experience and I get no choice in the matter. Can I leave the ecosystem? Yes and no. I could hack the hardware. The games I own would continue I work but I wouldn’t be able to play online which is, to a large degree, why I own it (and pay $60 per year). And on top of that they limit by choice by choking the content producers at the other end. They force Bing down my throat. In short Microsoft does what it’s always done: it uses its position of power to first further it’s agenda and secondly benefit me. This is the totalitarian dictatorship of closed ecosystem. This is the cautionary tale.
On the other hand my iPhones have updates with clearly defined features. Each iteration of the hardware and the device move the experience forward and (in my opinion) put the user first. Do they make decisions contrary to my desires? Yes they do. CarrierIQ and lately the advertiser tracking have smacked them in the face. But I would argue that Apple has (mostly) successfully fought against carrier stupidity to the benefit of the user. Not always. FaceTime over 3G and mobile hotspot features were unfortunate concessions. They have kept apps out of the App Store capriciously and arguably maliciously. But at the end of the day I submit to their ecosystem because the benefits largely outweigh the costs. I’ve also jailbroken my devices as soon as the option is available, the only consequence of which is possible impacts to my product warranty (which is again unfortunate but less significant than in the Microsoft case).
In either case neither company fully delivers on the promise of a closed ecosystem but where Apple tries to put the user first Microsoft makes a compelling example of the dangers of a walled garden mismanaged by selfishness.
With all the talk of MD5 and SHA-1 collision attacks it got me wondering the other morning: would storing two different hashes of the same data result in a more secure environment rather than just moving on to the next new hash algorithm?It’s not an easy case to make, but suspend disbelief for me.
The case I’m addressing is one of hashes as signatures, such as software delivery. The collision risk here is that an attacker breaks into a popular source of software (let’s say gnu.org) and replaces the good files with compromised files that share the same size/hash. When a user downloads the file and compares the hashes they find a match and proceed to trust the software. But what if instead of just providing the result of a single hash (let’s say MD5) the provider supplied both SHA-1 and MD5 hashes of the file. Now an attacker has to compose a file that collides on both algorithms. As a general method (regardless of algorithms) this seems like it would mitigate attacks and give longer life to hash implementations.
Consider Debian for a moment. The Debian package lists include a MD5 hash of the package file. If/when they decide to switch to SHA-256 (a reasonable choice right now), it would require a lot of retooling. Since they have to keep the MD5 hashes anyway for backwards compatibility, why not retool to support both hashes. Now an attacker who compromises a package has (what I would imagine to be) an exponentially more difficult task.
My coworker, Will, brought up an interesting question. In the case where the data is secret such as storing the hash of a password, does computing multiple hashes of the secret data provide an opportunity for an attacker to glean information about the secret data? Storing two hashes of a password would slightly decrease the efficacy of brute-force attacks, but also increase the efficacy of attack via rainbow tables. If there’s a potential for information leakage the medicine may be worse than the disease.
My grandmother, Carolina, or Iaia as we called her passed away today of natural causes after 94 years of life.Â
She lived and died with grace and dignity and was an example to me and so many other people for how to live a life of adversity and persevere without losing your sense of humor or humility. She played a role in every stage of my life and I am very thankful for the lessons she taught me with her words and with her actions. I am glad to have spent three days earlier this week by her side.
She will be missed by more people than I can list here, but is survived by her daughter Cristina, her son Rodolfo (Yiye), her grandchildren Gaby, Veronica, Roger, and Pablo, and six great-grandchildren including my two girls, Alexis and Anna (whose middle name is Caroline after Iaia).
June 16, 1914 – March 12, 2009
I’d like to resume writing occasionally, so the first one will be brief. Trying to debug a DNS problem tonight, I realized my BIND9 configuration file (named.conf) had accumulated too much cruft over the years. Unfortunately, the C/C++ comment style made it difficult to grep the useful bits. cpp to the rescue:
janus:/var/cache/bind/master# wc -l master-zones.conf
janus:/var/cache/bind/master# cpp master-zones.confÂ | wc -l
This cleans up the file nicely. Of course, you’ll have to add the useful comments back in.
Here’s a note I just submitted to the Loudoun County Sheriff’s Office. I think a few of the people who pay attention might have something to say about this.
On Wednesday, August 6th, I was driving home on Countryside Blvd. when I encountered what I can only describe as a checkpoint at the intersection with Carrollton Rd. Both directions of Countryside were blocked and all vehicles were being detained, as far as I can tell, without cause. I was asked by an officer to show my driver’s license and upon quick inspection was waved along.
Given the media attention that was received seemingly similar activities in D.C., I was wondering if you could provide some information as to what occurred that day and why. I’m worried this may have been a violation of mine and other citizens’ civil liberties, but would like to reserve judgement until I have more information.
I appreciate your time and considerate attention to this inquiry.
It didn’t occur to me to question the basis for asking for ID and it didn’t really anger me until after I left the checkpoint. I went back out with a camera to document what was going on. To their credit, the police didn’t seem to mind me taking pictures. At 6:45pm, just as I was about to drive through the roadblock again and this time refuse to show ID, they all simultaneously and unceremoniously packed up and went home.
Not even sure what to make of it. Someone’s already suggested I’m overreacting, and that may be so, but I nevertheless was left with an uneasy feeling. Some pictures below.
Update: I received a quick and helpful response from the Sheriff’s Office with this information:
Mr. Averbuj, for several years the Loudoun Sheriff’s Office have conducted Driver’s License Checkpoints throughout the county as a continuing crackdown on unlicensed drivers. We have conducted three such checkpoints this Summer.Â The location for the checkpoints are selected based on deputies who report a number of unlicensed drivers during their daily traffic stops.
During the checkpoint on Wednesday nine motorists were cited with driving withoutÂ a license and two for driving on a suspended license. Those were among the 42 citations issued during the 3 hour checkpoint.
I found a page on the very recent overruling of similar roadblocks in South Carolina, and the SCOTUS decisions that govern such activity.
One of my favorite features in Leopard is the “Save to Web Receipts”. Judging by the posts on the web I’m not sure whether this is a new feature or not. Either way, I really like it… except… Saving important web pages (receipts, confirmations, reservations, etc) is something I’ve been doing for a long time now without this feature, it was just a pain. In fact I did it on Windows for years before even switching to Mac, except all by hand. The function in OSX saves me the trouble of naming the file and choosing the directory which is great, except I don’t like the way it does either.
The first problem is that in general the date of the receipt is the most importat sorting factor, and having it in the “date modified” column is mildly dangerous, like if I make changes or notes on it for example. The second problem is at work when I’m saving receipts it doesn’t help me get them to the unified receipts folder at home.
I decided to solve both problems today and luck you, I’ll share. Reading the web the way this was implemented changed at some point. It used to be an Automator script but apparently that was rather limiting (which is pretty bad if you’re Apple and your own Automator doesn’t cut it). So they re-implemented in Python. This is a shame because having opened up Automator for the first time it looks really cool and relatively user friendly, unlike what you’re about to repeat below.
- In Finder, go to /Library/PDF Services/
- Duplicate the “Save PDF to Web Receipts Folder” and rename it to something else but keep the .pdfworkflow extension, in my case, “Save to DropBox Receipts.pdfworkflow”
- Right-click and select “Show Package Contents”
- Naviage into the “Contents” folder
- Delete the “Resources” folder
- Open “Info.plist” in a text editor and rename the “CFBundleName” string to something helpful, probably something that strongly resembles the filename you created in Step 2, then save and close that file
- Open the “tool” file in a text editor
- If you want to change the target folder:
- around line 24 you’ll see something the line that sets the value of destDirectory to “~/Documents/Web Receipts/”, change that.
- If you want to add a date at the beginning of the filename
- at the top of the file (around like 9) insert a new line with:
from datetime import date
- around the previously mentioned line 24 add:
title = "%s - %s" % (date.today(), title)
- at the top of the file (around like 9) insert a new line with:
- Save and exit
That will end up giving you filed names like “2008-04-13 – American Express Online.pdf” saved in the directory of you’re choosing. To test just go to any app, bring up the print dialog and confirm that your new entry shows up. Also, if you have any problems, just trash the duplicate you created and edited.
EDIT (2008/08/26) – Fixed the missing close parenthesis at the end of item 9.2 pointed out by James. Thanks!
You’ve probably seen or heard of the unconventional “You Suck at Photoshop” tutorials. Maybe you weren’t offended, maybe you even like them. Maybe you want to track new releases via RSS. I was just like you a few minutes ago. I checked the MyDamnChannel.com website and couldn’t within my attention span find a feed that was just for YSaP videos. I’d seen them on YouTube so my first instinct was to go to YouTube and build an RSS feed from a search. Oops you can’t (at least not a very specific one).
Then I remember: Wait, I work with a search engine that does this EVERY DAY. Truveo makes this trivial. I went to Truveo.com and searched for:
“You Suck at Photoshop” channel:youtube
This returned the right set plus other spoofs and knock-offs. It needs to be restricted to the official user that posts them:
“You Suck at Photoshop” channel:youtube author:mydamnchannel
Perfect! Now click the “most recent” button to get the newest episodes first, and towards the bottom left hand corner you’ll see the traditional RSS icon. Copy and paste that link into your RSS reader and you’re done! (Click the thumbnail for a larger view of the page I’m referring to.)
Alexis Victoria born 2/20 around 3:15pm at 7 lb 5 oz and 19.5 inches long. Pictures later tonight. Mom and baby are healthy, happy, and hungry!
Update (2/21, 9:30am): Pictures of Alexis are now available.
Scott Adams blogged about the new Dilbert comic widget which is great and I’m pleased with. The problem is (assuming United Media cares about not pre-releasing comics) that the comics are named predictably in sequence and are available on the server ahead of time. For example here is the comic for Sunday February 3. Oops! Now I don’t have to wait. I imagine they’ll solve this problem pretty quickly when they find out. While I’m on the subject of people who have solved this differently, Penny Arcade has an interesting system where http://www.penny-arcade.com/comic/ always points to the latest comic and there are absolute paths to get to a specific date. They have a particularly odd problem where the absolte URL doesn’t work, but /comic/ does. I get bitten by that problem fairly frequently since their RSS points to the absolute location. Another comic strip solves this problem in a decidedly low-tech way. Something Positive names each comic strip (image) with a descriptive title of the strip. Also, he releases comics unpredictably, and near as I can tell, maintains no buffer unlike Dilbert.
Back on the Dilbert side, interestingly at 400 it loops back to 2005, althought comic 1 is Jan 1 2007. It makes me curious about how the numbering sequence progresses, but invariably it will be deterministic. The easy way to solve this problem is to put something on the server side that prevents images from being served before their publish date. The wrong way to try to fix this is to try authenticating the widget (which, by the way, is now possible with FMSv3, but that’s for another day).
Update (Jan 23, 12pm): Just checked this today and the hole has been fixed. Now the actual gif seems to be an hash of some data, although apparently not the comic strip itself. Good turn around time!