<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description>This is my blog about work stuff.

See this post for discussion of what this blog is about and what I do.

I am sometimes (rarely these days) available for consulting work, and always happy to discuss it even if I’m currently very busy. Email me or find me on @fields at twitter or app.net if you need something.

My main focus at the moment is acting as Chief Technologist of Morningside Analytics. We make beautiful maps of the internet, and do segmentation and authority analysis of blogs and social media. </description><title>Adam Fields (work stuff)</title><generator>Tumblr (3.0; @workstuff)</generator><link>http://workstuff.tumblr.com/</link><item><title>Some tips on getting started with Vagrant and Chef</title><description>&lt;p&gt;We have recently switched from a manually configured development environment to a nearly fully automated one using &lt;a href="http://www.vagrantup.com" target="_blank"&gt;Vagrant&lt;/a&gt;, &lt;a href="http://www.opscode.com/chef/" target="_blank"&gt;Chef&lt;/a&gt;, and a few other tools. With this transition, we&amp;#8217;ve moved to an environment where data on the dev boxes is considered disposable and only what&amp;#8217;s checked into the SCM is &amp;#8220;real&amp;#8221;. This is where we&amp;#8217;ve always wanted to be, but without the ability to easily rebuild the dev environment from scratch, it&amp;#8217;s hard to internalize this behavior pattern. Cruft builds up in the dev boxes, and it starts to slowly drift out of sync unless a lot of manual intervention is applied. Rebuilding the VM is not something you&amp;#8217;ll want to do (or have to do) very frequently, but it&amp;#8217;s a good feeling to know that you can with very little pain, if it&amp;#8217;s needed. This still doesn&amp;#8217;t completely eliminate development cruft, but the hope is that it can significantly cut down on it. If you&amp;#8217;re worried about running vagrant destroy, that&amp;#8217;s a hint that you might have done something wrong.&lt;/p&gt;
&lt;p&gt;This post covers our ruby dev environment on Mac hosts. For other platforms it will be slightly different, but the principles are the same - use vagrant to manage your underlying machine configuration, automate as much of the rest as you can, and keep all important data resident off your dev boxes, checked into scm or using another redundant remote mechanism. As someone who&amp;#8217;s been doing unix system administration as a sideline to development for about 20 years, I&amp;#8217;m really impressed at the extent to which the automation tools have improved in the past few years. I did not have any direct experience with configuring chef when I started this, though I&amp;#8217;ve been familiar with the concepts and have used other automated configuration and deployment mechanisms.&lt;/p&gt;
&lt;p&gt;&lt;a title="View 'Vagrant Configuration Layout' on Flickr.com" href="http://www.flickr.com/photos/35468143183@N01/8758453396" target="_blank"&gt;&lt;img style="display: block; margin-left: auto; margin-right: auto;" src="http://farm4.staticflickr.com/3721/8758453396_2dfb443509.jpg" alt="Vagrant Configuration Layout" width="500" height="327" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The configuration took a few days of solid effort to get up and working to the point where it was usable, and then a few more days to work out the kinks and figure out our preferences. While working through it, it was pretty easy to identify what the next step was given what wasn&amp;#8217;t working. Work your way clockwise around the diagram - get vagrant up and running, then do base installs, then work on getting your source tree in place, then get it working, then import dev data.  Instead of distributing ssh keys to the individual VMs, we use agent forwarding to allow each VM to use the keys from its host. The final config consists of only a handful of files. Depending on the complexity of your environment, you may need some additional scripts:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;The Vagrantfile which determines the vagrant and chef configuration.&lt;/li&gt;
&lt;li&gt;A Cheffile which specifies to &lt;a href="https://github.com/applicationsonline/librarian-chef" target="_blank"&gt;librarian-chef&lt;/a&gt; which cookbooks to get.&lt;/li&gt;
&lt;li&gt;A custom shell script which populates ssh config files, sets up user and database permissions, and performs project checkouts with the appropriate rvm environment.&lt;/li&gt;
&lt;li&gt;A shell script to run on the host to add the host&amp;#8217;s ssh keys to ssh-agent (probably automated by launchd).&lt;/li&gt;
&lt;li&gt;A custom /etc/hosts file to insert into the VM config.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;These files are checked into SCM, so bringing up a new dev box is only a few steps (all but the last step only ever need to be done once per machine):&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: Arial;"&gt;Install virtualbox: &lt;/span&gt;&lt;a style="font-family: Arial;" href="https://www.virtualbox.org/wiki/Downloads" target="_blank"&gt;&lt;a href="https://www.virtualbox.org/wiki/Downloads" target="_blank"&gt;https://www.virtualbox.org/wiki/Downloads&lt;/a&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: Arial;"&gt;Install vagrant: &lt;/span&gt;&lt;a style="font-family: Arial;" href="http://downloads.vagrantup.com/" target="_blank"&gt;&lt;a href="http://downloads.vagrantup.com" target="_blank"&gt;http://downloads.vagrantup.com&lt;/a&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Make sure your key is on the server for the dev config checkout.&lt;/li&gt;
&lt;li&gt;Check out the dev config repository.&lt;/li&gt;
&lt;li&gt;Run the ssh-add script to bring your keys into the ssh-agent.&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: Arial;"&gt;Install librarian-chef using any local ruby (&lt;span style="font-family: Arial;"&gt;gem install librarian-chef)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: Arial;"&gt;&lt;span style="font-family: Arial;"&gt;Install the &lt;a href="https://github.com/jimmycuadra/vagrant-librarian-chef" target="_blank"&gt;librarian chef vagrant plugin&lt;/a&gt;, so vagrant will automatically fetch your cookbooks (vagrant plugin install vagrant-librarian-chef)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: Arial;"&gt;&lt;span style="font-family: Arial;"&gt;Set up any local path location and config variable overrides in &lt;!--?xml version="1.0" encoding="UTF-8" standalone="no"?--&gt; &lt;span style="font-family: Arial;"&gt;~/.vagrant.d/Vagrantfile (optional)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: Arial;"&gt;&lt;span style="font-family: Arial;"&gt;&lt;span style="font-family: Arial;"&gt;Bring up your dev environment with vagrant up.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;We use vagrant synced folders to mount selected folders in the host&amp;#8217;s Dropbox folder and the separate project tree where checkouts are placed, to share these files between the VM and the host, both for letting developers use their own Mac-native environment to edit files in the source tree and for importing data via dropbox (Rather than checking them into scm, our database test packs are distributed via dropbox, and the provisioning script looks for them there to do the initial import.). Chef handles getting the proper ruby versions installed, and then bundler ensures that the gems needed for each project are present. We have used bundle package and checked in our vendor/cache folder, which greatly reduces the amount of time it takes to install gems.&lt;/p&gt;
&lt;p&gt;With this configuration, the VM has its own copies of the databases and its own source trees. The databases and local configuration files (with some critical exceptions that are always overwritten at provisioning time) are wiped out in the case of a vagrant destroy, but otherwise preserved. The source trees are always synced with the host, so they will survive the destruction of the VM, but they can of course be manually wiped if needed.&lt;/p&gt;
&lt;p&gt;Some random notes:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;There was some complexity in having the provisioning shell scripts running as the vagrant user (instead of the default, which is root), with access to the ssh keys via the ssh-agent forwarding. The best solution I found was to make a separate script file, then call it with sudo -u from the provisioner. All of the configuration that needs to be done as the vagrant user (rvm setup, bundler installs, scm checkouts, environment config etc…) goes into that script.&lt;/li&gt;
&lt;li&gt;The default VM runs with very little RAM and only one CPU, which makes compiling (especially new rubies under rvm) extremely slow. You&amp;#8217;ll want to bump this up.&lt;/li&gt;
&lt;li&gt;There&amp;#8217;s a balancing act between what should be configured by chef and what&amp;#8217;s easier to just do with shell commands. Most of the simple configuration settings and individual packages are easier to do with the command line.&lt;/li&gt;
&lt;li&gt;There seems to be an intermittent issue where a suspended VM will be unable to pick up a DHCP ip address upon resuming, which causes it to hang indefinitely. An interim solution (found in &lt;a href="http://java.dzone.com/articles/virtualbox-workaround-saving" target="_blank"&gt;this post&lt;/a&gt;) to this seems to be to execute &lt;em&gt;VBoxManage guestcontrol &amp;lt;vagrant machine id&amp;gt; exec &amp;#8220;/usr/bin/sudo&amp;#8221; &amp;#8212;username vagrant &amp;#8212;password vagrant &amp;#8212;verbose &amp;#8212;wait-stdout dhclient&lt;/em&gt; from the host.&lt;/li&gt;
&lt;li&gt;I find it odd that there&amp;#8217;s no way to specify local Vagrantfile changes that take precedence over the project files. This means you either have to design your Vagrant config in such a way that you&amp;#8217;re setting variables which can be overridden locally, or people have to edit the project Vagrantfile directly (and risk accidentally checking in their customizations). This seems likely to cause problems as different developers are going to want to use machines with different amounts of memory. We&amp;#8217;ve temporarily worked around this by using global config variables and only setting them if they&amp;#8217;re not already set.&lt;/li&gt;
&lt;li&gt;Vagrant uses its own config file for controlling chef commands in a way that differs from chef&amp;#8217;s own syntax, meaning that chef configs can&amp;#8217;t be reused outside vagrant. I haven&amp;#8217;t yet found if there&amp;#8217;s a way to import generic reusable chef configs directly.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Our Vagrantfile (with some custom config removed) looks like this:&lt;/p&gt;
&lt;script type="text/javascript" src="https://gist.github.com/fields/5613110.js"&gt;&lt;/script&gt;&lt;p&gt;Setting this process up has definitely been some work, but I think it&amp;#8217;s worth it once everybody gets set up. There are a lot of moving parts, and a lot of individual edge case problems to solve. But the nice thing about this is that once you do solve each one, those changes can be globally applied to everyone with little extra efforts. We&amp;#8217;ve worked our way through a number of issues in a very short time - I&amp;#8217;d love feedback on this from experienced vagrant users.&lt;/p&gt;</description><link>http://workstuff.tumblr.com/post/50911984233</link><guid>http://workstuff.tumblr.com/post/50911984233</guid><pubDate>Mon, 20 May 2013 11:44:45 -0400</pubDate><category>devops</category><category>vagrant</category><category>chef</category><category>development</category><category>automation</category></item><item><title>Why I'm not buying Bitcoins</title><description>&lt;p&gt;I&amp;#8217;m not an economist, but Bitcoin seems pretty scary to me right now. It seems attractive as a decentralized currency, but there are a few properties that are worrisome.&lt;/p&gt;
&lt;p&gt;The value (exchange rate) has increased in the past few months past the point of &amp;#8220;convenience money&amp;#8221; for most. At an exchange rate of somewhere between $10 and $30, there are a large number of people who will buy some without fear that they&amp;#8217;ll lose their money, and more importantly, at that level, you have a large number of buyers who bought in early enough to sell at slightly higher rates and still make a comfortable profit. Buying at $30 and selling at $170 (where we are now) is not a bad run by any measure. People are buying in now, but there&amp;#8217;s a limited number of bitcoins in circulation and mining can&amp;#8217;t keep up with the demand, so people must be selling. Who&amp;#8217;s selling? - it&amp;#8217;s the people who bought in earlier and are now taking profit on their earlier purchases. Flash forward a bit and imagine that the exchange rate has reached $500. If you want to buy then, you&amp;#8217;ll be doing so from someone who bought in earlier and is looking to make a profit. That would be the people who are selling now plus the people who are buying in now. &lt;strong&gt;Now flip it around and say you want to sell at $500. Who&amp;#8217;s buying?&lt;/strong&gt; At that point, maybe the media frenzy has died down, or maybe there&amp;#8217;s a fresh influx of people who think it&amp;#8217;s going to go to $5000. Maybe it will. With no central clearinghouse, there&amp;#8217;s no guarantee of being able to sell at any given price, and it doesn&amp;#8217;t seem to me like this scenario is set up for long term success. At somewhere in this range and above, you&amp;#8217;re talking real money for a lot of people, and the casual speculators will disappear.&lt;/p&gt;
&lt;p&gt;Now, let&amp;#8217;s look at the transaction rate. MtGox is the largest exchange, by an order of magnitude. As of the time of this writing, over the past 30 days, they have done &lt;a href="http://bitcoincharts.com" target="_blank"&gt;2172994 transactions&lt;/a&gt;, which is about .83 transactions per second. For a global currency whose market cap is measured at over a billion dollars, this is an astonishingly low number of transactions. (Let&amp;#8217;s put that in perspective a bit - so far just today, Google stock was traded 1,990,139 times. &lt;strong&gt;Google&amp;#8217;s stock price is determined by roughly 30 times as many transactions as all of Bitcoin&amp;#8217;s.&lt;/strong&gt;) Demand is high for now, but liquidity is low, and when it comes time for a lot of people to want to extract some value, there simply aren&amp;#8217;t going to be a lot of interested buyers. Most of the previous buyers will have gotten in at near or above the current trading price and so will be waiting for it to continue to rise, a high enough entry price will chase away new buyers who can&amp;#8217;t afford to lose their investment, and any dips will keep away the marginally interested people who were only showing up because of the media attention.&lt;/p&gt;
&lt;p&gt;I expect the exchange rate to continue to rise for a while, but there&amp;#8217;s really no way to know how high it will go, and I think eventually the trap will close on everyone all at once. &lt;/p&gt;
&lt;p&gt;I&amp;#8217;d love to hear arguments why I&amp;#8217;m wrong about this, but I think the time to buy in has already passed.&lt;/p&gt;</description><link>http://workstuff.tumblr.com/post/47470011736</link><guid>http://workstuff.tumblr.com/post/47470011736</guid><pubDate>Mon, 08 Apr 2013 14:28:19 -0400</pubDate><category>bitcoin</category><category>currency</category></item><item><title>How I do project planning (and why OmniPlan doesn't help)</title><description>&lt;p&gt;I do a lot of medium-term software development project planning (typically 6-18 months). Here are the steps I use for doing project scope estimating (which is a distinctly different thing from tracking progress against the initial plan). After figuring out what rough timeframe the project should be targeted for, we:&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;Figure out what the tasks are and break them up into logical groupings.&lt;/li&gt;
&lt;li&gt;Chain dependencies for tasks that cannot be done simultaneously.&lt;/li&gt;
&lt;li&gt;Estimate how long they&amp;#8217;ll take if one developer does them, setting the amount of effort. This is usually done on the scale of days per task, and any task that takes less than a day should be grouped into a larger bunch that can be estimated on the scale of days. We&amp;#8217;re not micromanaging here, just trying to get a sense of the effort involved.&lt;/li&gt;
&lt;li&gt;Fix the effort for all tasks, then add developers (with assigned salaries or hourly rates) to each bundle of tasks to bring the total time in under the deadline.&lt;/li&gt;
&lt;li&gt;Be very aware that this is just an estimate, that adding developers to tasks doesn&amp;#8217;t tend to strictly reduce the time by the number of developers assigned, and that a certain amount of padding is also needed for communication and integration. And do it anyway, because a wrong plan to measure against is better than no plan.&lt;/li&gt;
&lt;li&gt;Resolve allocation conflicts.&lt;/li&gt;
&lt;li&gt;Rationalize by hand any inconsistencies that don&amp;#8217;t make sense (see step 6), and re-examine the long-term project timeframes (figure out if some tasks should be bumped to subsequent phases).&lt;/li&gt;
&lt;li&gt;Answer the single most important question in project estimation - &amp;#8220;given a time range, &lt;strong&gt;how much is this project or sub-task grouping going to cost me?&lt;/strong&gt;&amp;#8221;. This answer is critical - it determines the proposed budget for the project, and helps determine if a part of the project is worth doing.&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;I generally love OmniGroup software and I throw money at them at every opportunity I get, but OmniPlan has been extremely frustrating for this process. It is a great tool for steps 1-3, and it has turned out to be completely useless for steps 4-8. In both major revisions, my every attempt to do steps 4-7 has ended in frustration and a tangle of incoherent and incomprehensible unresolvable conflicts with no useful information about how to fix them. Theoretically, it should be possible to assign a bunch of developers to a group representing a class (senior developers, system administrators, etc…), assign the class to a task, and then get a free developer from the pool actually assigned to do the task. In practice, this has resulted in the necessity to assign far more developers in the group than should be necessary, with each developer only assigned to less than 20% of their capacity. The problem seemed to center around they way tasks were assigned to developers within a group, resulting in some of them being overloaded and dragging the schedules for everyone else forward, but trying to figure out what actually messed this up was an exercise in futility, and every time we&amp;#8217;ve just given up and ended up estimating by hand.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Step 8 - budgeting cross-referenced by timeframe and task grouping - should be straightforward, but seems to be simply not possible. All I want to do is select a time range and then get a burn rate for the tasks included in that time based on their assigned resources. There&amp;#8217;s a total task cost listed, but no way to tally it for just a specific time range without adding rollup tasks, which complicates the earlier tasks even more. For software I&amp;#8217;ve paid hundreds of dollars for (and by far their most expensive), this is a disappointment. Numerous rounds back and forth with support yielded no progress before I gave up in frustration. &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;I&amp;#8217;d love to hear any suggestions you might have for better ways to do this process.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;(Update: it seems that they&amp;#8217;ve released an &lt;a href="http://www.omnigroup.com/blog/entry/omniplan-2.3-public-testing" target="_blank"&gt;update a few days ago&lt;/a&gt; which may help alleviate some of the pain in determining why tasks were scheduled late, but I don&amp;#8217;t think that solves the fundamental &amp;#8220;allocate these tasks to any developer in this group&amp;#8221; scheduling problem.)&lt;/div&gt;</description><link>http://workstuff.tumblr.com/post/46675224588</link><guid>http://workstuff.tumblr.com/post/46675224588</guid><pubDate>Sat, 30 Mar 2013 11:24:16 -0400</pubDate></item><item><title>Changing ulimit successfully for databases on linux</title><description>&lt;p&gt;Databases are a pain, but one thing seems to bite more often than anything else, especially at scale: per-user limits. OS creators have thus far not seemed to have caught on and made these settings either easy to set or easy to make persistent. Typically, when you run a production database, that&amp;#8217;s going to be the only thing running on the machine, so it&amp;#8217;s okay if it uses all available resources, and the default multi-user settings designed to protect users from each other make no sense. (Protecting yourself from runaway processes is another story, but generally speaking, you want to make your entire machine&amp;#8217;s resources available to your database, otherwise what&amp;#8217;s the point?)&lt;/p&gt;
&lt;p&gt;This post is aimed at CentOS/Amazon Linux. If you use another distro, your steps will vary, but may be similar.&lt;/p&gt;
&lt;p&gt;Here&amp;#8217;s what I had to do to make this work (I&amp;#8217;ll use the mongodb example):&lt;/p&gt;
&lt;p&gt;1) Add lines at the end of /etc/security/limits.conf to increase the system limit for open files and number of processes, getting badly bitten by the apparently undocumented feature that newer kernels require you to specify nproc limits user-by-user and wildcards no longer work. You may also need to add the root user here - it&amp;#8217;s unclear.&lt;/p&gt;
&lt;p&gt;&lt;script src="https://gist.github.com/fields/5189478.js" type="text/javascript"&gt;&lt;/script&gt;&lt;/p&gt;
&lt;p&gt;2) Modify /etc/init.d/mongod to set the runtime limits before the server is started (I&amp;#8217;ve included the whole init.d script here for reference, in case you don&amp;#8217;t have one):&lt;/p&gt;
&lt;p&gt;&lt;script src="https://gist.github.com/fields/5189558.js" type="text/javascript"&gt;&lt;/script&gt;&lt;/p&gt;
&lt;p&gt;3) Start up the server, and verify that this worked with this &lt;a href="http://workstuff.tumblr.com/post/44870714591/ridiculously-useful-bash-snippet-to-return-actual" target="_blank"&gt;extremely helpful script&lt;/a&gt;.&lt;/p&gt;</description><link>http://workstuff.tumblr.com/post/45686194043</link><guid>http://workstuff.tumblr.com/post/45686194043</guid><pubDate>Mon, 18 Mar 2013 14:36:00 -0400</pubDate><category>ulimit</category></item><item><title>Ridiculously useful bash snippet to return actual ulimit values for a given process</title><description>&lt;p&gt;From the &lt;a href="http://docs.mongodb.org/manual/administration/ulimit/" target="_blank"&gt;MongoDB docs&lt;/a&gt; comes this very useful bash function. In a shell, do:
&lt;script src="https://gist.github.com/fields/5189677.js"&gt;&lt;/script&gt;

Then you can get the ulimit values of a running process with e.g.:

&lt;pre style="font-size: 11px; font-family: Courier;"&gt;
return-limits mongod 
&lt;/pre&gt;&lt;/p&gt;</description><link>http://workstuff.tumblr.com/post/44870714591</link><guid>http://workstuff.tumblr.com/post/44870714591</guid><pubDate>Fri, 08 Mar 2013 13:07:00 -0500</pubDate><category>sysadmin</category><category>ulimit</category></item><item><title>Evernote, you really messed this one up, and you're making it worse.</title><description>&lt;p&gt;So… &lt;a href="http://evernote.com/corp/news/password_reset.php" target="_blank"&gt;Evernote was hacked.&lt;/a&gt; Yay. Except that their &amp;#8220;recovery&amp;#8221; procedure is seriously, significantly, embarrassingly flawed. I&amp;#8217;m flabbergasted.&lt;/p&gt;
&lt;p&gt;The procedure is as follows:&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;Log in with your old password.&lt;/li&gt;
&lt;li&gt;Change your password to a new one.&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;Yes, that&amp;#8217;s right. All you need to change your password is your old, compromised password, and there&amp;#8217;s no other verification required. No email verification, no secret questions, no nothing.&lt;/p&gt;
&lt;p&gt;Evernote, I don&amp;#8217;t think you understand how serious this is. This needs to change, immediately.&lt;/p&gt;
&lt;p&gt;(If you have an evernote account, I advise you to go change your password NOW. Before someone else does.)&lt;/p&gt;</description><link>http://workstuff.tumblr.com/post/44414647674</link><guid>http://workstuff.tumblr.com/post/44414647674</guid><pubDate>Sat, 02 Mar 2013 20:05:30 -0500</pubDate><category>evernote</category><category>security</category><category>breach</category></item><item><title>Security implications of oauth and leveraged access</title><description>&lt;p&gt;So - twitter was hacked this week. Which happens to the best of us, and is going to happen more often in the future. They invalidated the passwords for 250k user accounts (though anecdotal reports would seem to indicate that it&amp;#8217;s more than that). But here&amp;#8217;s the strange thing - even though my password was invalidated and inactive, the oauth tokens for apps I&amp;#8217;d approved access for still worked. And continued to work even after I&amp;#8217;d changed my password. If they thought it was possible that my account was compromised, why weren&amp;#8217;t these tokens deactivated, even temporarily?&lt;/p&gt;
&lt;p&gt;Granted, most of these access tokens are for mobile apps, or for using my twitter credentials to post on someone else&amp;#8217;s site instead of drawing from my twitter feed, or for enabling other apps to post _to_ my twitter stream on my behalf, but some of them are reading my stream, including direct messages, and someone with my password could have potentially spread the damage around to other services (adding significant hassle to the cleanup), and also added more without my knowledge. (It&amp;#8217;s possible that they deactivated more recent ones.) They did ask me to review them after resetting my password, but it was entirely optional, and a less savvy user may not have known what to look for.&lt;/p&gt;
&lt;p&gt;This seems like a serious and surprising oversight. I think most technical people barely understand the implications of authorization delegation, let alone everyone else. It seems like it should have been a reasonable precaution to at least turn all of those off until my password was changed.&lt;/p&gt;</description><link>http://workstuff.tumblr.com/post/42106080566</link><guid>http://workstuff.tumblr.com/post/42106080566</guid><pubDate>Sat, 02 Feb 2013 11:12:00 -0500</pubDate><category>twitter</category><category>oauth</category></item><item><title>The difference between task and list managers</title><description>&lt;p&gt;There seems to be a lot of confusion about the difference between task managers, to-do lists, and checklists, and why you&amp;#8217;d want different apps for them. They&amp;#8217;re three very different working patterns with different goals, and they require different UIs to be successful.&lt;/p&gt;
&lt;p&gt;Disclaimer: I don&amp;#8217;t make any presumptions of being an expert user of these apps. I am not a &amp;#8220;productivity guru&amp;#8221;. I am probably missing some very useful features of some of these apps because they haven&amp;#8217;t surfaced them well enough to be obvious, and I resist modifying my natural workflow to do things the way apps want me to without a good reason. I have work to do. I&amp;#8217;m productive because I do my work instead of fiddling about with settings, and I primarily use these tools to help me not forget important details, not to tell me what I should be working on. Everyone needs to find their own style, and may find different UIs more or less intuitive. This is some discussion about what I use now and how well it works for me.&lt;/p&gt;
&lt;p&gt;A note on Sync: task managers of all flavors are useless if you don&amp;#8217;t have them with you when you need them. I consider sync to be critical for everything except the most basic and narrow use cases. All of the apps listed here have iOS and Mac versions that sync, except where noted.&lt;/p&gt;
&lt;p&gt;There are many different classes of tasks. Some examples from my daily life:&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;things you have to do right away&lt;/li&gt;
&lt;li&gt;things you have to do later at a specified time&lt;/li&gt;
&lt;li&gt;things you have to do later but you don&amp;#8217;t know when&lt;/li&gt;
&lt;li&gt;things you have to do later but it doesn&amp;#8217;t really matter when&lt;/li&gt;
&lt;li&gt;things you have to do after some other thing is done&lt;/li&gt;
&lt;li&gt;things you have to do frequently but on an irregular schedule&lt;/li&gt;
&lt;li&gt;things you have to do every day&lt;/li&gt;
&lt;li&gt;ad-hoc groups of things you have to do together&lt;/li&gt;
&lt;li&gt;regular groups of things you have to do together often&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;&lt;strong&gt;Task managers, as a class of applications, aim to keep your entire perspective across many different contexts. They can handle complicated metadata like start and due dates (and reminders), dependencies, hierarchies, priorities, task status, task states, estimated times, and notes. &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;My primary store of tasks for the first five of these is &lt;a href="http://www.omnigroup.com/omnifocus" target="_blank"&gt;OmniFocus&lt;/a&gt;. (I&amp;#8217;m told &lt;a href="http://culturedcode.com/things/" target="_blank"&gt;Things&lt;/a&gt; is very similar. Having bought OmniFocus, I don&amp;#8217;t see a good reason to spend a lot of money on Things. If someone wants to make the case that Things is significantly better than OF in some way, I&amp;#8217;m all ears.) I don&amp;#8217;t do &lt;a href="http://www.davidco.com" target="_blank"&gt;GTD&lt;/a&gt;, and while OF is fairly optimized for the GTD use cases (if you want to do GTD, it&amp;#8217;ll work well for that), it is a flexible task management system with a lot of applicable metadata. It&amp;#8217;s always seemed too much work to me to set up and manage contexts, and I don&amp;#8217;t strictly use OF to tell me what to work on next. I use it primarily as a store of all of the tasks I have to do at some point, things I don&amp;#8217;t want to forget, and projects I&amp;#8217;ll probably never get to. I use the project hierarchy extensively, as well as due dates for the current project. It is not representative of the actual list of tasks I&amp;#8217;m working on next, except for the OF project called &amp;#8220;Do these next&amp;#8221;. (At one point, &amp;#8220;Do these next&amp;#8221; was a context, but I found it easier to just make it a separate project.) My job is such that pretty much as soon as I&amp;#8217;ve put something on the list to do next, there are going to be five or six other things that pop up that need to be done first. I use OF largely to keep myself from getting too far off track over time. I try to be judicious about actually killing tasks that are on my list that I never really intend to do, and moving them to inactive projects. I frequently come up against tasks that would be nice to do, but never end up being important enough to take priority over more immediate concerns. I&amp;#8217;d say most of those tasks end up having about a 20% chance of ever seeing the light of day before they&amp;#8217;re obsoleted or pushed off indefinitely. For collaboration, we maintain a separate ticket system with to-do items (class #10: things other people have to do), but those tickets are usually higher-level while the tasks that go into OF are much more detailed and very specific to me and how I work.&lt;/p&gt;
&lt;p&gt;The single most important aspect of any task management system is priority management. I need to figure out what I&amp;#8217;m doing next, and ignore everything else until I&amp;#8217;m done with that and have to figure out what to do next next. If your tasks are clear-cut enough that they will naturally form a priority queue, OF can probably help you manage that and tell you what to work on next. I often have to re-evaluate anyway, so that&amp;#8217;s not as helpful for me. I use OF to keep all of my work-related tasks. OF especially has a LOT more power to slice and dice your task list than I even come close to using, but I feel like I have a pretty good handle on my task list even with just the features I&amp;#8217;m using.&lt;/p&gt;
&lt;p&gt;While it lacks a good organization scheme for larger-scale projects, I&amp;#8217;m finding that Apple&amp;#8217;s Reminders.app is very handy for keeping non-project-related personal tasks. It feels like a to-do list, but it also has reminder times (limited but helpful) and location-based alerts (which sort of work, but generally aren&amp;#8217;t granular or flexible enough to be useful for me). It has the critical ability that I can easily share lists with my wife, and if you have an iOS device or Mac, it&amp;#8217;s already included. For many people, that may be all you need, but I find the lack of hierarchies limiting in my organization. I use it for things like remembering to return items to stores, make appointments, and print photos. I use Reminders for some personal items in classes #2-#4, as many items as I can shoehorn in from class #6, and a lot of class #7.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A to-do list is a simple ordered list of items.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.realmacsoftware.com/clear/" target="_blank"&gt;Clear&lt;/a&gt; is by far my favorite example of this. It lets you keep multiple lists, reorder them easily, and it has a very pleasing UI and sound effects. I use it primarily for keeping items in class #8. This will often encompass things I have to collect before leaving the house, or things to buy for a party. The flexible UI makes it very easy to adjust the list as I go, priorities can be adjusted by moving items up or down, and having it in a separate app allows me to concentrate on just that next list of items without worrying about anything else. &lt;a href="http://moneybookapp.com/listbook.html" target="_blank"&gt;Listbook&lt;/a&gt; is also a nice app for this, but the UI for Clear just blows it away. In the latest version, &lt;a href="https://evernote.com" target="_blank"&gt;Evernote&lt;/a&gt; has some basic to-do list capability (which they call checklists), but I don&amp;#8217;t find it useful for that much.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;I consider a checklist to be a special kind of to-do list, where there&amp;#8217;s a template for items, and every time you start a new iteration, you have to do everything (or most things) on the checklist.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Class #9 is the checklist. I haven&amp;#8217;t yet found a checklist app I like. I would use this for managing the scope of repetitive actions, like test plans or deployment checklists. In the past, I&amp;#8217;ve used &lt;a href="http://www.omnigroup.com/omnioutliner" target="_blank"&gt;OmniOutliner&lt;/a&gt; for this, but it&amp;#8217;s not great (and has no iPhone version). I like OO for making outlines, but a checklist isn&amp;#8217;t quite the same thing. I&amp;#8217;m trying out &lt;a href="http://www.hogbaysoftware.com/products/taskpaper" target="_blank"&gt;TaskPaper&lt;/a&gt; (I picked it up recently on sale) and &lt;a href="https://workflowy.com" target="_blank"&gt;Workflowy&lt;/a&gt; (someone sent me a referral code) for this, but I haven&amp;#8217;t had a chance to give either of them a whirl yet, though they seem like they won&amp;#8217;t offer too much advantage over OO. They all still have the standard &amp;#8220;make a list, save it as a document, then copy that document&amp;#8221; workflow, which is substandard. I&amp;#8217;d really like to find some checklist manager which can easily manage a bunch of different lists and &amp;#8220;deploy&amp;#8221; them as needed with the options to run a whole list at a time.&lt;/p&gt;
&lt;p&gt;Certainly anything kept on a to-do list could fairly easily be kept in a plaintext file or a note app as well, but it&amp;#8217;s nice to have a dedicated app with an intuitive UI that lets you easily reorder items, insert in the middle, and check items off individually as you go. These are the differences between a tool that &lt;em&gt;&lt;strong&gt;can do&lt;/strong&gt;&lt;/em&gt; what you need and a tool that &lt;em&gt;&lt;strong&gt;does&lt;/strong&gt;&lt;/em&gt; what you need.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m sure I have much more to say on the topic, but I hope that helps a little.&lt;/p&gt;</description><link>http://workstuff.tumblr.com/post/38395422483</link><guid>http://workstuff.tumblr.com/post/38395422483</guid><pubDate>Thu, 20 Dec 2012 13:24:41 -0500</pubDate><category>to-dos</category><category>project management</category></item><item><title>Kickstarter status check</title><description>&lt;p&gt;To date, I&amp;#8217;ve backed 15 kickstarter projects, all of which have been funded. Of those 8 have delivered. I&amp;#8217;m not going to go into detail on all of them for various reasons (some are gifts that I don&amp;#8217;t want to spoil), but here are details on some of them.&lt;/p&gt;
&lt;p&gt;On time or as close to it that I didn&amp;#8217;t really notice:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.kickstarter.com/projects/danprovost/the-cosmonaut-a-wide-grip-stylus-for-touch-screens" target="_blank"&gt;The Cosmonaut, a wide grip stylus for touch screens&lt;/a&gt;: Drawing on an iPad is necessarily low-res because of the large touch targets meant for fingers. There are some workarounds. This stylus embraces the large form factor and turns it into more of a whiteboard marker style. I like it. I don&amp;#8217;t use a stylus very often, but this one works well for when I do. I don&amp;#8217;t know if I&amp;#8217;d &lt;a href="http://www.studioneat.com/products/cosmonaut" target="_blank"&gt;buy it again&lt;/a&gt;, but I like it.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.kickstarter.com/projects/705847536/coffee-joulies-your-coffee-just-right" target="_blank"&gt;Coffee Joulies&lt;/a&gt;: They&amp;#8217;re little blobs of stainless steel with some kind of wax in the middle  that you put into your coffee, and they bring the temperature down to the drinkable range quickly and then retain heat to keep it warm longer. Marco Arment was famously unimpressed. I have found that they work really well for me. Using my regular Contigo cup, my coffee was previously way too hot to drink for about 20 minutes unless I added an ice cube, which had the side effect of making it get cool much faster. With the coffee joulies, it is drinkable in about a minute, and stays warm noticeably longer. I don&amp;#8217;t know if I&amp;#8217;d &lt;a href="http://www.joulies.com" target="_blank"&gt;buy them at retail price&lt;/a&gt; - the backer discount was substantial. They are admittedly expensive, but that doesn&amp;#8217;t take away from the fact that they work for me and I use them every day.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.kickstarter.com/projects/1051734209/tigr-titanium-lock-as-cool-as-your-bike" target="_blank"&gt;TiGr Titanium Bike Lock&lt;/a&gt;: I love this thing, though it has a few hiccups. There&amp;#8217;s no place to keep the lock cylinder when it&amp;#8217;s not used. This model is not quite long enough to lock up both wheels and a post, because my hybrid bike has a long wheel base and slightly wider wheels than many bikes (John has graciously agreed to let me exchange it for a longer one when available). It is however, really flexible, and has enabled me to lock my bike up much more easily in some places where it wasn&amp;#8217;t previously possible. &lt;a href="http://www.flickr.com/photos/fields/8269924001/in/photostream" target="_blank"&gt;They can be easily chained to get around large objects.&lt;/a&gt; It is also very light. Expensive, but not compared to my bike. I would definitely &lt;a href="http://tigrlock.com" target="_blank"&gt;buy it again&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.kickstarter.com/projects/jackadam/dark-sky-hyperlocal-weather-prediction-and-visuali" target="_blank"&gt;Dark Sky for iOS&lt;/a&gt;: A high-precision weather prediction app that will tell you with good accuracy whether it&amp;#8217;s going to rain in the next hour, and about for how long. I use this ALL THE TIME. &lt;a href="http://darkskyapp.com" target="_blank"&gt;Buy it&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.kickstarter.com/projects/1628273204/find-my-car-smart" target="_blank"&gt;Find my car smarter&lt;/a&gt;: A bluetooth 4.0 low-power dongle with an app that pings in the background to automatically keep track of where you left your car. Useful, and it seems to work, but we don&amp;#8217;t drive much. I don&amp;#8217;t regret backing this, but I probably wouldn&amp;#8217;t &lt;a href="http://findmycarsmarter.com/Welcome.html" target="_blank"&gt;buy it again&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.kickstarter.com/projects/dotan/smarter-stand-for-ipad" target="_blank"&gt;Smarter Stand for iPad&lt;/a&gt;: I absolutely love this thing. It&amp;#8217;s a set of clips for the iPad Smart Cover that open up new configurations for how it can stand up. Great idea, great implementation. &lt;a href="http://smarterstand.com/SmarterStand.com/Buy_Smarter_Stand.html" target="_blank"&gt;Buy it&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;And some delivered but not so on time:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.kickstarter.com/projects/hop/elevation-dock-the-best-dock-for-iphone" target="_blank"&gt;Elevation Dock for iPhone&lt;/a&gt;: I like the Elevation Dock, though it&amp;#8217;s been plagued with problems. It was released (late) just before the iPhone 5 changed the connector, which annoyed a lot of people, and the solution thus far has been a hack. I still have my iPhone 4S, so that&amp;#8217;s not an issue for me yet. But I&amp;#8217;ve found the circuit board to be flaky, and have had to have both of them replaced. Their support email has a turnaround time of days, which is unacceptable. I still like this, and I use it, but I would not &lt;a href="http://www.elevationlab.com" target="_blank"&gt;buy it again&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;And some that I&amp;#8217;ve not yet received:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.kickstarter.com/projects/597507018/pebble-e-paper-watch-for-iphone-and-android" target="_blank"&gt;Pebble: E-Paper Watch for iPhone and Android&lt;/a&gt;: I&amp;#8217;m not really sure why I backed this. It seems like a great idea, and I have no idea if they&amp;#8217;ll pull it off. I hope it&amp;#8217;s great, but it may not be. It&amp;#8217;s late, but the founders clearly opened up a vein of latent interest they weren&amp;#8217;t prepared to deal with, and they&amp;#8217;ve been sending reasonably frequent updates of progress. They asked for $100,000 and raised over $10,000,000. I can forgive this for being a totally different project than they thought they were getting into.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.kickstarter.com/projects/1342319572/the-nifty-minidrive" target="_blank"&gt;The Nifty MiniDrive&lt;/a&gt;: Also late, but it seems like they&amp;#8217;re actually very close to shipping. (Update: Received a shipping notification the day after I wrote this!)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.kickstarter.com/projects/doublefine/double-fine-adventure" target="_blank"&gt;Double Fine Adventure&lt;/a&gt;: It&amp;#8217;s a Tim Shafer adventure game. No-brainer.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.kickstarter.com/projects/1613260297/shadowrun-returns" target="_blank"&gt;Shadowrun Returns&lt;/a&gt;: Shadowrun was one of the best RPG systems I ever played, and I love the universe. Clearly I was not alone. Ambitious, but they raised a lot more than they asked for, and have been delivering steady updates.&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;Honorable mention:&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;&lt;li&gt;I missed the kickstarter campaign for this by a day, but I bought one from them directly. It&amp;#8217;s a really well-designed leather bike handle that makes carrying your bike up stairs much easier. &lt;a href="http://walnut-studiolo.myshopify.com/products/bicycle-frame-handle" target="_blank"&gt;Walnut Studiolo Bike Frame Handle&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
&lt;p&gt;So far, no real doozies, and few things that I use and enjoy often. I&amp;#8217;m pretty happy.&lt;/p&gt;</description><link>http://workstuff.tumblr.com/post/37856814470</link><guid>http://workstuff.tumblr.com/post/37856814470</guid><pubDate>Thu, 13 Dec 2012 16:44:10 -0500</pubDate><category>kickstarter</category><category>crowdfunding</category></item><item><title>Wifi performance and the new iPad (counterintuitive Airport settings for advanced users)</title><description>&lt;p&gt;The iPad 4 (and iPad mini, though I didn&amp;#8217;t test with one) claims to have up to twice the wifi performance as previous models. While trying to configure my Airport Extreme to get the best performance, I discovered some interesting and counterintuitive results about the settings. (This probably also applies to the newer Airport Express, though I don&amp;#8217;t have one.)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;tl;dr: The Wireless Options screen is a performance deathtrap. Leave everything here at the defaults for best results. Most changes on this screen will degrade performance.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;(UPDATE: Added iperf results to the bottom.)&lt;/p&gt;
&lt;p&gt;The longer answer: it seems that you get the absolute best wifi performance (for iOS devices, this is 150Mb/s, but laptops can go faster) if you let the router determine the protocol (radio mode) and channels to use automatically, and set the 5GHz network name to be the same as the 2.4GHz network name. I&amp;#8217;m measuring performance by the speed at which the Airport is telling me my devices are connecting (which seems to correspond to real-world throughput).&lt;/p&gt;
&lt;p&gt;Update: These tests are relatively informal, but I&amp;#8217;ve been able to repeat them several times. I&amp;#8217;m definitely curious if others are seeing the same results. I have tried running the Ookla speedtest app to verify, but at the moment, I don&amp;#8217;t really trust its results. In theory, at a 150Mbps data rate connection, I should get 50Mbps down (the speed of my cable modem), and I’ve never seen it top 20 on the iPad. I do get 50Mbps on my wired desktop. I’ve seen speedtest results vary widely by which server you’re attached to, and I can’t figure out if there’s a way to change that on the iOS app, so that may be the difference. It does seem to vary with the connection data rate speed, but not enough that I&amp;#8217;m comfortable with it.&lt;/p&gt;
&lt;p&gt;&lt;a title="View 'All wireless options set to defaults. DO NOT TOUCH' on Flickr.com" href="http://www.flickr.com/photos/35468143183@N01/8218347665" target="_blank"&gt;&lt;img src="http://farm9.staticflickr.com/8337/8218347665_23922afd12.jpg" alt="All wireless options set to defaults. DO NOT TOUCH" width="471" height="302" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;First, the network name. If you specify a different name for the 5GHz network, they will appear as two separate networks in the settings of the iPad, forcing you to choose one or the other to connect to. In this case, even choosing the 5GHz network explicitly gave much worse performance. I gather that the protocol enhancements they&amp;#8217;ve done require channel bonding across both the 2.4GHz and the 5GHz range, and if you choose one or the other, you give up that option. Even signing in to both networks did not reliably improve performance. Switching back and forth did momentarily increase throughput, but not to the highest levels.&lt;/p&gt;
&lt;p&gt;Here&amp;#8217;s what happens to the iPad wifi data rate if you have a separate network name for 5GHz.&lt;/p&gt;
&lt;p&gt;Connected to the 2.4GHz network, it&amp;#8217;s not terrible, but we should be able to do better:&lt;/p&gt;
&lt;p&gt;&lt;a title="View 'iPad 4 connected to 2.4GHz network with different names' on Flickr.com" href="http://www.flickr.com/photos/35468143183@N01/8218346377" target="_blank"&gt;&lt;img src="http://farm9.staticflickr.com/8198/8218346377_d42e85e900.jpg" alt="iPad 4 connected to 2.4GHz network with different names" width="500" height="396" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you connect to the 5GHz network, it&amp;#8217;s surprisingly even worse (it started out at 150, and rapidly deteriorated):&lt;/p&gt;
&lt;p&gt;&lt;a title="View 'iPad 4 connected to 5GHz network with different names' on Flickr.com" href="http://www.flickr.com/photos/35468143183@N01/8219427990" target="_blank"&gt;&lt;img src="http://farm9.staticflickr.com/8349/8219427990_e683a1988e.jpg" alt="iPad 4 connected to 5GHz network with different names" width="500" height="409" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Second, the radio mode. &lt;/p&gt;
&lt;p&gt;The default radio mode options screen looks like this:&lt;/p&gt;
&lt;p&gt;&lt;a title="View 'Default radio mode options' on Flickr.com" href="http://www.flickr.com/photos/35468143183@N01/8219428762" target="_blank"&gt;&lt;img src="http://farm9.staticflickr.com/8068/8219428762_08b20fffcd.jpg" alt="Default radio mode options" width="500" height="330" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;But you can get additional options by holding down the (wait for it) Option key while clicking the radio mode:&lt;/p&gt;
&lt;p&gt;&lt;a title="View '802.11n-only radio mode' on Flickr.com" href="http://www.flickr.com/photos/35468143183@N01/8218347189" target="_blank"&gt;&lt;img src="http://farm9.staticflickr.com/8203/8218347189_82c0a40590.jpg" alt="802.11n-only radio mode" width="500" height="491" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I had previously had the radio mode set to all 802.11n, because I have a separate network for the few remaining 802.11g devices I have, and I thought I was benefitting myself by preventing the network from dropping down to g speeds to accommodate those devices. This turned out to be a counterintuitive mistake - if you lock the radio mode to 802.11n, it CANNOT achieve maximum throughput, and it cripples most modern connections. The only acceptable radio mode I&amp;#8217;ve found is 802.11a/n - 802.11b/g/n (Automatic). After making these changes, nothing is preventing slower devices from connecting to your network. If you want the maximum throughput, you&amp;#8217;ll need to manually ensure that everything can use the faster connections.&lt;/p&gt;
&lt;p&gt;With the router set to n-only, here it is connected to the 2.4GHz network:&lt;/p&gt;
&lt;p&gt;&lt;a title="View 'iPad 4 connected to 2.4GHz network in n-only mode' on Flickr.com" href="http://www.flickr.com/photos/35468143183@N01/8218346801" target="_blank"&gt;&lt;img src="http://farm9.staticflickr.com/8477/8218346801_835586ee09.jpg" alt="iPad 4 connected to 2.4GHz network in n-only mode" width="500" height="394" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;And the 5GHz network again tanks very quickly (and having no separate 5GHz network name here seems to make little difference):&lt;/p&gt;
&lt;p&gt;&lt;a title="View 'iPad 4 connected to 5GHz network in n-only mode' on Flickr.com" href="http://www.flickr.com/photos/35468143183@N01/8218347011" target="_blank"&gt;&lt;img src="http://farm9.staticflickr.com/8198/8218347011_17cee551a4.jpg" alt="iPad 4 connected to 5GHz network in n-only mode" width="500" height="431" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve only tried it a few times, but it seems like in any configuration other than fully automatic, connecting explicitly to the 5GHz network may appear to give fast performance, but it will quickly step down to something slower. &lt;strong&gt;The only way I&amp;#8217;ve been able to get a sustained 150Mb/s connection is to leave the Airport Extreme in fully automatic mode.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Here&amp;#8217;s what it should look like:&lt;/p&gt;
&lt;p&gt;&lt;a title="View 'iPad 4 ideal - everything automatic and same network name' on Flickr.com" href="http://www.flickr.com/photos/35468143183@N01/8219427568" target="_blank"&gt;&lt;img src="http://farm9.staticflickr.com/8060/8219427568_0e62c29ab8.jpg" alt="iPad 4 ideal - everything automatic and same network name" width="500" height="404" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;As a bonus, here&amp;#8217;s a 2010 Macbook Pro hooked up to the same network in fully automatic mode:&lt;/p&gt;
&lt;p&gt;&lt;a title="View 'MBP on everything automatic' on Flickr.com" href="http://www.flickr.com/photos/35468143183@N01/8218346033" target="_blank"&gt;&lt;img src="http://farm9.staticflickr.com/8483/8218346033_e25a14ef41.jpg" alt="MBP on everything automatic" width="500" height="425" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Update: and a Retina Macbook Pro:&lt;/p&gt;
&lt;p&gt;&lt;a title="View 'Retina MBP at fully automatic' on Flickr.com" href="http://www.flickr.com/photos/35468143183@N01/8221090310" target="_blank"&gt;&lt;img src="http://farm9.staticflickr.com/8197/8221090310_f581d9d2e3.jpg" alt="Retina MBP at fully automatic" width="500" height="395" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Turning the router back to n-only mode also craters the rMBP data rate:&lt;/p&gt;
&lt;p&gt;&lt;a title="View 'Retina MBP at n-only' on Flickr.com" href="http://www.flickr.com/photos/35468143183@N01/8220025013" target="_blank"&gt;&lt;img src="http://farm9.staticflickr.com/8067/8220025013_bc57c6afa5.jpg" alt="Retina MBP at n-only" width="500" height="389" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;At the suggestion in the comments, I&amp;#8217;ve tested this with iperf, and it has completely substantiated my results. Using fully automatic, I get a reported actual 70Mbps transfer rate from iperf, and that&amp;#8217;s the only setting that remains high over time.&lt;/p&gt;
&lt;p&gt;Here I started out on automatic (60-70Mbps), then dropped down to N-only (barely 1Mbps), then split the networks and connected to the 2.4GHz network (25&amp;#160;Mbps):&lt;/p&gt;
&lt;p&gt;&lt;a title="View 'Image 12-4-12 at 3.36 PM' on Flickr.com" href="http://www.flickr.com/photos/35468143183@N01/8244564995" target="_blank"&gt;&lt;img src="http://farm9.staticflickr.com/8348/8244564995_08a06fd9fd.jpg" alt="Image 12-4-12 at 3.36 PM" width="375" height="500" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Choosing the 5GHZ network gave good performance initially, but then it tanked to below 1Mbps, and didn&amp;#8217;t go back up.&lt;/p&gt;
&lt;p&gt;&lt;a title="View 'Image 12-4-12 at 3.36 PM' on Flickr.com" href="http://www.flickr.com/photos/35468143183@N01/8244563665" target="_blank"&gt;&lt;img src="http://farm9.staticflickr.com/8058/8244563665_2882bc654d.jpg" alt="Image 12-4-12 at 3.36 PM" width="375" height="500" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Repeated testing with the fully automatic network over time showed a sustained high rate:&lt;/p&gt;
&lt;p&gt;&lt;a title="View 'Image 12-4-12 at 3.34 PM' on Flickr.com" href="http://www.flickr.com/photos/35468143183@N01/8244561583" target="_blank"&gt;&lt;img src="http://farm9.staticflickr.com/8487/8244561583_d03c8fc41d.jpg" alt="Image 12-4-12 at 3.34 PM" width="375" height="500" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Resist the urge to tinker with these settings.&lt;/p&gt;</description><link>http://workstuff.tumblr.com/post/36557748875</link><guid>http://workstuff.tumblr.com/post/36557748875</guid><pubDate>Sun, 25 Nov 2012 20:24:02 -0500</pubDate><category>ios</category><category>ipad</category><category>airport</category><category>wifi</category></item><item><title>iCloud Documents and OS X 10.9 wishes</title><description>&lt;p&gt;OS X 10.9 is coming. Here&amp;#8217;s are some improvements I&amp;#8217;d like to see:&lt;/p&gt;
&lt;p&gt;* First, fix iCloud Documents and autosaving. This is by far my biggest gripe with the current ecosystem. There are too many gotchas, and it&amp;#8217;s too confusing. Here are the problems I see:&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;If a document lives in iCloud, the only way to access that document is through the application that created it. I understand that for security and usability reasons, it makes sense to only allow applications to access their own document collections, but this restriction should not apply to the Finder. There should be an iCloud documents section in the Finder, where you can see everything, move documents from one application to another, drag and drop them normally, and share them with other programs and people. This section should also be a local cache, so you have your own copy of the documents if the network is unavailable for some reason.&lt;/li&gt;
&lt;li&gt;I love autosave, but it&amp;#8217;s too confusing. Save As… should not be an afterthought, it should be restored to a default menu item, and it should _always_ keep the original document as it was the last time it was explicitly saved or closed. The &amp;#8220;Duplicate&amp;#8221; menu item is, as far as I can tell, useless and should be removed.&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;* Make shared photostreams writable by multiple people. If both my wife and I could easily publish a shared photostream of pictures of our kids, it would make all of the relevant grandparents extremely happy.&lt;/p&gt;
&lt;p&gt;* Fix Mail.app for good. It still needs to be restarted periodically because it forgets that there are servers out there somewhere. I&amp;#8217;d also like to see it be easier to use multiple email addresses on the same account.&lt;/p&gt;
&lt;p&gt;* Add customizable search engines to the Safari search options.&lt;/p&gt;
&lt;p&gt;* Restore the ability to display RSS feeds in Safari. I still haven&amp;#8217;t seen an rationale for why this was removed.&lt;/p&gt;
&lt;p&gt;* Launchpad is dumb. &lt;span style="text-decoration: line-through;"&gt;No one uses it.&lt;/span&gt; (Update: I&amp;#8217;ve been informed that some people do use it. I maintain that it adds little to the experience for anyone who doesn&amp;#8217;t already know how to get around.) Get rid of it.&lt;/p&gt;
&lt;p&gt;* Make fullscreen mode for apps work with multiple monitors.&lt;/p&gt;
&lt;p&gt;* The obvious step of bringing Siri, iBooks, and Maps to the Mac.&lt;/p&gt;
&lt;p&gt;* Something better for menubar icons. They&amp;#8217;re useful, but difficult to manage and there are an increasingly large number of them.&lt;/p&gt;
&lt;p&gt;[ Update: I thought of two more:&lt;/p&gt;
&lt;p&gt;* Notification Center should be updated to show the full archive history of notifications, and allow the option of moving notifications to Reminders.app.&lt;/p&gt;
&lt;p&gt;* Periodic reminders as an option for Reminders.app. Something like &amp;#8220;Remind me again in X minutes/hours/days/weeks if I dismiss a reminder.&lt;/p&gt;
&lt;p&gt;]&lt;/p&gt;
&lt;p&gt;You can use the &lt;a href="http://www.apple.com/feedback/macosx.html" target="_blank"&gt;feedback form&lt;/a&gt; to submit ideas.&lt;/p&gt;</description><link>http://workstuff.tumblr.com/post/36066572720</link><guid>http://workstuff.tumblr.com/post/36066572720</guid><pubDate>Mon, 19 Nov 2012 10:16:26 -0500</pubDate><category>icloud</category><category>os x</category></item><item><title>Yet another hiccup on the transition to the cloud (iTunes restore is half-hearted)</title><description>&lt;p&gt;Since the beginning, it&amp;#8217;s been the case that when you restore a backup of an iOS device from iTunes, it doesn&amp;#8217;t restore the apps as part of the backup. That makes sense in some ways - the app data is completely separate from your personal data, and the apps can always be restored from the store. In the past, this has always worked fine for me, and in the past few revisions of the OS, it&amp;#8217;s even flawlessly maintained the position of all of the apps I had installed. With the advent of encrypted backups, it&amp;#8217;s even stored saved passwords with the backups. This is good - the idea of restoring from a backup is to get you back to exactly where you left off in as little time as possible.&lt;/p&gt;
&lt;p&gt;But this time around, there&amp;#8217;s a new wrinkle. Without fully realizing the implications of that choice, on my last iPad, I had turned off the syncing of apps with iTunes in favor of managing the apps directly on the device. That seemed like a rational choice at the time - there was little reason to manage my apps in iTunes when I could just as easily do it on the iPad. However, as it turns out, if you have app syncing off, and then restore from an iTunes backup, what happens is this: you get a freshly restored iPad with all of your data, and exactly zero apps installed. Apparently, the ONLY way to get them back is to painstakingly go through your purchased list, figure out what you actually had installed, and bring them back one by one. And if you happen to forget something, you can end up with a lot of orphaned data in your Other section where the app&amp;#8217;s data still exists on your iPad but the app doesn&amp;#8217;t (the only way to delete that data is to magically figure out which app it might be, reinstall it, and then delete it again). Moreover, once you turn off sync apps, there&amp;#8217;s no evident way to turn it back on again without completely wiping the list of apps that are already on your device and starting fresh. With a few hundred apps, this is a world of hate.&lt;/p&gt;
&lt;p&gt;Incidentally, restoring from an iCloud backup does do the post-restore app sync, but with two important differences: 1) it throws a large number of &amp;#8220;restore incomplete: some items could not be restored&amp;#8221; errors with no information about what actually failed, which is not very confidence inspiring and 2) &lt;strong&gt;it does not store most passwords&lt;/strong&gt;. This last is a nice security issue if someone happens to get access to your backups, I guess, but it is hardly what I want out of restoring a backup. What I want is to get back to where I was without a lot of effort. Previously, restoring from an encrypted iTunes backup was the best way to do this, but it&amp;#8217;s now hopelessly broken if you take advantage of the iCloud features of starting to separate from iTunes. (Update: A number of people have asked what I&amp;#8217;d like to see here. The ideal solution for me would be to have the saved passwords stored with the iCloud backups, but encrypted separately with a &lt;strong&gt;different &lt;/strong&gt;password/pass phrase, with no recovery option for that separate password. If you lose the password password, then you can still recover your backups, but your saved passwords are gone and have to be re-entered. That&amp;#8217;s a hassle of course, but it leaves you in no worse a situation than is the default now with iCloud backups.)&lt;/p&gt;
&lt;p&gt;Apple is trying to push people towards the cloud, which is fine when it works, but this is a very big functional hole they&amp;#8217;ve left open. I&amp;#8217;m disappointed in the user experience here. iCloud suffers from a large number of these kinds of transitionary elements where it&amp;#8217;s not sure what it wants to be or how to get there. It&amp;#8217;s time to rip off the bandaid.&lt;/p&gt;</description><link>http://workstuff.tumblr.com/post/35843269001</link><guid>http://workstuff.tumblr.com/post/35843269001</guid><pubDate>Fri, 16 Nov 2012 10:28:56 -0500</pubDate><category>apple</category><category>ios</category><category>icloud</category></item><item><title>Initial impressions: the Kindle Paperwhite falls into the Uncanny Valley</title><description>&lt;p&gt;I really want to like the Kindle Paperwhite. It&amp;#8217;s a beautiful piece of technology. I&amp;#8217;m going to give it some more time before I decide, but my first impressions are almost overwhelmingly negative compared to the previous model I have (the $79 &amp;#8220;plain&amp;#8221; Kindle), even about the changes that have some benefits.&lt;/p&gt;
&lt;p&gt;Some specifics:&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;When reading longform (books), I find that I quickly get incredibly disoriented about where I am in the book. Every visual cue here helps, and modern e-readers offer very very few of them. If I don&amp;#8217;t have enough that are persistently on the screen, my brain gets preoccupied with trying to figure it out, and it&amp;#8217;s very distracting. Indicator cues that I have to tap some area of the screen to make appear are not an adequate substitute - in order for them to work for me, they have to be on the screen at all times. The old Kindle had a visual progress bar and a percentage meter. The new one drops the progress bar in favor of some options of &amp;#8220;time left to read the book&amp;#8221; (useless), &amp;#8220;time left to read the chapter&amp;#8221; (useless and largely inaccurate), or &amp;#8220;location number&amp;#8221; (useless and obscure). There is still a percentage meter, but that alone isn&amp;#8217;t enough. Similarly, there&amp;#8217;s no way to persistently display the (pleasantly small) clock on the screen, but that&amp;#8217;s not a new problem. Incidentally, iPad reading apps pretty much all universally get this wrong. Recent versions of iBooks are slightly better. Recent versions of the Kindle app are worse. I get that some people want the chrome to fall away so they can &amp;#8220;concentrate on the text&amp;#8221;. I feel lost when that happens, and I&amp;#8217;m not alone. Forcing me into that mode makes me not want to use your app at all. This is my #1 dealbreaker.&lt;/li&gt;
&lt;li&gt;I miss the physical buttons. The touchscreen is reasonably okay, but it&amp;#8217;s still too easy to accidentally turn pages. The textured screen is nice.&lt;/li&gt;
&lt;li&gt;The front-lit screen is, in fact, lovely to look at. But in being so, it&amp;#8217;s almost-but-not-quite too good, and it draws into sharp contrast every irregularity on the surface of the screen. This is the Uncanny Valley of display technology - it&amp;#8217;s not perfect, and in being so every flaw stands out. It&amp;#8217;s possible that I have a defective screen (a replacement is on the way), but while most of the screen is evenly lit, there are subtle dark/light blotches near the bottom. They immediately stand out. In a completely dark room, the front-lit display is actually harder to read than the previous Kindle with a light. Yes, the illumination is diffused and evenly distributed over the screen, but that results in the page being a glowing rectangle in the dark with no context. Removing the light spillover on the outside case increases the contrast with the surroundings (since the screen isn&amp;#8217;t large enough to fill the entire field of vision), so rather than disappearing, all you notice is the edges of the screen. I find this very distracting. In medium or bright light, the front-light actually really helps increase the contrast, but then the large reflective &amp;#8220;kindle&amp;#8221; label on the front draws your eye. Someone didn&amp;#8217;t think this through properly. I find the black border to be more distracting than the old grey one, but that may just be that I&amp;#8217;m not used to the difference yet. In many ways, the screen is better than before, but I haven&amp;#8217;t found it to disappear the way the old one did. In terms of eyestrain, I think it&amp;#8217;s about equivalent to using the old one with a light, except you don&amp;#8217;t need an external light. I definitely want to keep the light on all the time, as it makes the screen much higher contrast and easier to read. I haven&amp;#8217;t given it an extended test yet.&lt;/li&gt;
&lt;li&gt;I really like that they added the ability to have a lock on the store purchases without locking the device, but mysteriously even if you have no lock code set, you still have to &amp;#8220;swipe to unlock&amp;#8221; AFTER pressing the power button. If you have a lock set, you have to press the power button, enter the code, and THEN swipe. This is annoyingly tedious without any apparent explanation. I also don&amp;#8217;t really understand why the store lock is under parental controls, but that&amp;#8217;s a minor quibble of terminology.&lt;/li&gt;
&lt;li&gt;The light, while pleasant in the daytime, is entirely too blue for nighttime reading. I think it&amp;#8217;s messing with my sleep in ways the old one doesn&amp;#8217;t. Someone at Amazon needs to read (or reread): &lt;a href="http://stereopsis.com/flux/research.html" target="_blank"&gt;&lt;a href="http://stereopsis.com/flux/research.html" target="_blank"&gt;http://stereopsis.com/flux/research.html&lt;/a&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;The black matte frame is a fingerprint magnet.&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;I think that&amp;#8217;s about it. I want to like it, but I think I don&amp;#8217;t. The more I use it, the more I want to switch back to the old one. That&amp;#8217;s not a great sign. Maybe it&amp;#8217;s just me.&lt;/p&gt;
&lt;p&gt;(Update: After using it for a few weeks, all of these initial impressions held, and I returned it in favor of keeping my old Kindle.)&lt;/p&gt;</description><link>http://workstuff.tumblr.com/post/32820662914</link><guid>http://workstuff.tumblr.com/post/32820662914</guid><pubDate>Wed, 03 Oct 2012 16:08:39 -0400</pubDate><category>kindle</category><category>paperwhite</category><category>gadgets</category></item><item><title>Maps. It's not just about the data.</title><description>&lt;p&gt;As you may have heard, people aren&amp;#8217;t happy with the Maps app in iOS6. I think the problems I have with it are a little different from the &lt;a href="http://theamazingios6maps.tumblr.com" target="_blank"&gt;standard map glitches&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;There are data problems, to be sure, but I expect those to be fixed reasonably quickly, as people start to use the app and Apple can collect problems and fix them. (BTW, instead of just complaining, &lt;em&gt;report data problems&lt;/em&gt;. Every pin on the map has a &amp;#8220;Report Issue&amp;#8221; button.)&lt;/p&gt;
&lt;p&gt;Most of my problems are a little deeper. The old maps app was a showcase - when I wanted to show people what the Retina iPad was really capable of, I pulled out the maps. It could display tons of data on the screen with razor sharp text (even almost too small to read but still legible), and scrolling and zooming was nearly instantaneous. On wifi or LTE, it never took more than a second or two to fill in all of the tiles on the screen in hybrid mode.&lt;/p&gt;
&lt;p&gt;That snappiness is simply &lt;strong&gt;gone&lt;/strong&gt;. The overall performance of the app has dropped precipitously, and it now often takes 5-6 seconds for the tiles to draw after each move. It looks like there&amp;#8217;s significantly less local caching going on, and I see a lot more of the holodeck placeholder background. I get that they&amp;#8217;re doing more, but Apple has historically been on the side of doing less better, and I think a poor tradeoff has been made here. (Update: I think the performance issues only apply to using the hybrid view. Even on the iPhone 4S, the standard view is fairly snappy. But I use hybrid view the most, and poor responsiveness kills the illusion that you&amp;#8217;re handling a real object.)&lt;/p&gt;
&lt;p&gt;On top of that, the app shows a lot less data on the screen at each zoom level. Before, there were a great deal of landmarks pictured at even moderate zoom, enabling _reading the map_. Now, if you don&amp;#8217;t know a much more precise location of what you&amp;#8217;re looking for, you&amp;#8217;re lost and relegated to search. Here&amp;#8217;s before and after. Notice how few streets and avenues are labeled in the new version (bottom), and how Central Park has no internal landmarks other than the obvious large bodies of water. This is largely useless to someone who doesn&amp;#8217;t already know how to get around.&lt;/p&gt;

&lt;p&gt;(Click through to see the full resolution image)&lt;/p&gt;

&lt;p&gt;&lt;a href="http://imgur.com/zl3CY.jpg" target="_blank"&gt;&lt;img title="Maps before and after" src="http://i.imgur.com/zl3CY.jpg" alt="" width="500"/&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I want my Retina apps to take advantage of the display to show me not just beautiful pictures and crisp text, but LOTS of it. I want information density. I can&amp;#8217;t see the argument that the old maps app had too much information displayed on the screen at once, and if you can, then what I want is a slider to show more or fewer labels.&lt;/p&gt;
&lt;p&gt;There are other more minor usability oversights, like the fact that it&amp;#8217;s impossible to switch from driving to walking directions without completely backing out and starting your directions search again, and there&amp;#8217;s no evident easy way to re-orient the map to north-is-up once you spin it. That stuff I can live with, but I&amp;#8217;m very sad that they&amp;#8217;ve taken a glorious impressive showcase map and turned it into something lesser. &lt;/p&gt;
&lt;p&gt;Let me be clear - I think we owe a big thanks to Apple&amp;#8217;s map team for the hard work in making this effort - better competition and less being beholden to any one provider of this data is always a good thing in the long run, and I believe them when they say it&amp;#8217;ll get better. But at the moment, the product isn&amp;#8217;t there yet, and it&amp;#8217;s disappointing that we needed to take a few steps back to get here. This is a product that people use and depend on with great regularity, and having it work three months from now doesn&amp;#8217;t help if it won&amp;#8217;t do what you need now. It certainly hasn&amp;#8217;t held me off from upgrading to iOS 6 (which seems like a massive improvement in every other way), and it&amp;#8217;s not a good reason to flee the entirety of iOS. I just hope this formerly outstanding product which is now merely very good gets restored to its former shine, and soon. I mean - let&amp;#8217;s put this in perspective - it&amp;#8217;s an incredibly detailed map of the entire world that you get to carry around in your pocket basically for free with your phone that you were going to buy anyway. That&amp;#8217;s pretty special.&lt;/p&gt;</description><link>http://workstuff.tumblr.com/post/31943324969</link><guid>http://workstuff.tumblr.com/post/31943324969</guid><pubDate>Fri, 21 Sep 2012 12:42:00 -0400</pubDate><category>maps</category><category>ios6</category></item><item><title>Some thoughts about App.net and social networks</title><description>&lt;p&gt;First: Twitter. I like Twitter. I use it daily, and it&amp;#8217;s become invaluable to me for three reasons: 1) It&amp;#8217;s a great realtime news network, both for discovery and searching, 2) I&amp;#8217;ve had some interesting and fun conversations, in short bursts, and 3) For some reason, companies, especially small ones, respond much faster to general support requests issued via twitter than almost any other medium. It took me a very long time to see the value of Twitter, and I had to cultivate a network of people to follow who would deliver me the news I actually wanted to see and the interesting thoughts I wanted to respond to. I suspect that most people won&amp;#8217;t do this work, and those are the people who don&amp;#8217;t see the value of Twitter. Almost none of my actual friends are on Twitter. Most of them still accept the &amp;#8220;tweet what you&amp;#8217;re eating for breakfast&amp;#8221; canard. &lt;/p&gt;

&lt;p&gt;Second: Facebook. My actual friends are on Facebook. My relatives are on Facebook. Everyone is on Facebook. Facebook&amp;#8217;s great triumph is that somehow, millions of normal humans who are otherwise completely incapable of handling whatever passes for a &amp;#8220;REGISTER NOW FOR A FREE ACCOUNT&amp;#8221; form on the internet have managed to acquire Facebook logins and use them on a regular basis. I do not ever expect this to happen again. Facebook is a part of the landscape, and I don&amp;#8217;t see how it can be challenged at any time in the near future. But it doesn&amp;#8217;t have to be. Other services can happily coexist with Facebook, and those who want them will use them.&lt;/p&gt;

&lt;p&gt;Facebook is known to be mining personal information, they change stuff all the time, and they&amp;#8217;re a fairly constant background in the social network space. For reasons outlined in the previous paragraph, they&amp;#8217;re &lt;b&gt;not going away anytime soon&lt;/b&gt;. Since they&amp;#8217;re so out of reach, I don&amp;#8217;t see that they&amp;#8217;re in play here, and not really relevant when talking about a new social network. Twitter, on the other hand, seems vulnerable, despite the big push they&amp;#8217;re getting from Apple via OS integration. As a user, I find it fairly easy to ignore most of the various advertising pushes, but in general, I tend to view advertising as a nice way for companies to waste their money on something I&amp;#8217;m just going to ignore (I keep searching for a way to prove that this is actually true; no one seems to believe me when I say I&amp;#8217;m almost completely immune to advertising). As a programmer, I&amp;#8217;m fairly dismayed by the turns that Twitter has taken to upset their developer community. Their third-party clients are what makes the platform tolerable, and I hope they come around to seeing that. If I had to use Twitter on the web, I possibly wouldn&amp;#8217;t. However, I think even that is largely irrelevant. Twitter is vulnerable not by nature of alienating current users, but by what they don&amp;#8217;t want to be.&lt;/p&gt;

&lt;p&gt;When I first started using Twitter, I thought it would be hard to express fully-formed thoughts in 140 characters. As it turns out, we&amp;#8217;ve gotten much better at that and some of the underlying metadata changes have helped, but it&amp;#8217;s still fairly limiting. On the other hand, I immediately thought that 140 bytes would make a great size for a large distributed message passing mechanism for programs to talk to one another; messages not meant to be seen by people. For all I know, people are actually using private accounts for this, but I envisioned that these would be public messages, publicly addressable, but by your machine to my machine instead of you to me. Maybe it would be chess moves, or picture sharing, or whatever, but your app could find and direct messages to me just by using the already public mechanism instead of forcing me to register for YET ANOTHER network. These messages might involve text, and they might even involve character limits, but they&amp;#8217;ll carry a lot of other payload that&amp;#8217;s not meant to be human-readable, and will be interpreted by the endpoints. The real play here is that you&amp;#8217;ll be using an application that isn&amp;#8217;t &amp;#8220;app.net&amp;#8221;, but it will use that account to find you and communicate with you. Conversations will happen wherever there are people, but it&amp;#8217;s still very hard for machines to find each other properly.&lt;/p&gt;

&lt;p&gt;Enter app.net. A lot of people seem to think that the whole approach is either folly or outright disingenuous (&amp;#8220;bash twitter, and oh, by the way, we&amp;#8217;re starting a competitor&amp;#8221;), but it seems to me that that&amp;#8217;s not what&amp;#8217;s going on here. I&amp;#8217;m not privy to the backstory other than what I&amp;#8217;ve read, but it looks to me like he was building some other product, got fed up with platform issues, and decided to take a gamble and pivot to a pure API play if there&amp;#8217;s sufficient interest in the form of a kickstarter-esque backing campaign. If the project doesn&amp;#8217;t get &amp;#8220;funded&amp;#8221;, I suppose we&amp;#8217;ll see what happens. It will have been an interesting PR exercise in any event.&lt;/p&gt;

&lt;p&gt;The API infrastructure messaging plan is big, and it&amp;#8217;ll require a lot of thoughtful planning and work to make it actually useful, but that&amp;#8217;s what I see when Dalton says he&amp;#8217;s launching &amp;#8220;a financially sustainable realtime feed API &amp;amp; service&amp;#8221;. App.net doesn&amp;#8217;t have to kill Twitter to be successful, it just has to move into the space that Twitter never really found itself at home in. I hope he manages to pull it off. That&amp;#8217;s why I backed it, and I think you should too.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://join.app.net/" target="_blank"&gt;https://join.app.net/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;(I&amp;#8217;m @fields on app.net and twitter. Don&amp;#8217;t bother finding me on Facebook if you don&amp;#8217;t already know me.)&lt;/p&gt;</description><link>http://workstuff.tumblr.com/post/29171511685</link><guid>http://workstuff.tumblr.com/post/29171511685</guid><pubDate>Fri, 10 Aug 2012 23:40:00 -0400</pubDate></item><item><title>Mountain Lion seems to have (partially?) addressed the memory management issues in OS X</title><description>&lt;p&gt;Having installed Mountain Lion on several machines, &lt;a href="http://workstuff.tumblr.com/post/20464780085/something-is-deeply-broken-in-os-x-memory-management" target="_blank"&gt;turned the dynamic pager back on&lt;/a&gt; and run with roughly the same pattern of applications, I&amp;#8217;m now finding that performance is vastly improved. I have not been able to replicate the same sorts of drastic slowdowns I was seeing under Lion, and I barely notice when Time Machine kicks in. However, I&amp;#8217;ve heard reports that the VM subsystem still falls over if you push it too hard (perhaps on machines with less physical RAM), and when it does, it exhibits the same sort of cascade slowdowns that were present in Lion. It&amp;#8217;s possible that they did not fully address the underlying issue but did tune the settings so it happens less often if you have more RAM. This is a significant improvement - under Lion, adding more RAM did not help - but if you have &amp;#8220;insufficient&amp;#8221; RAM, that&amp;#8217;s likely to be not much comfort. Since I installed ML, I&amp;#8217;ve seen zero pageouts, which is as it should be - there&amp;#8217;s no reason for the OS to swap out if it&amp;#8217;s got enough physical RAM.&lt;/p&gt;
&lt;p&gt;At this point, it&amp;#8217;s hard to make a conclusive recommendation - I&amp;#8217;d suggest trying it both ways.&lt;/p&gt;
&lt;p&gt;My impression is that performance in Mountain Lion is improved across the board, but &lt;a href="http://workstuff.tumblr.com/post/9002438341/impressions-of-lion" target="_blank"&gt;that&amp;#8217;s what I thought about Lion when it was first released&lt;/a&gt;. We&amp;#8217;ll see if it holds.&lt;/p&gt;</description><link>http://workstuff.tumblr.com/post/28556080639</link><guid>http://workstuff.tumblr.com/post/28556080639</guid><pubDate>Thu, 02 Aug 2012 10:14:00 -0400</pubDate><category>mountain lion</category><category>osx</category><category>mac</category><category>memory</category></item><item><title>The Uber Ice Cream Promotion is deliciously brilliant, and keeps getting better.</title><description>&lt;p&gt;The Uber guys are PR masterminds. I am in awe.&lt;/p&gt;
&lt;p&gt;Step 1: Take a service that&amp;#8217;s beleaguered on all sides by impending legislation.&lt;/p&gt;
&lt;p&gt;Step 2: &amp;#8220;Pivot&amp;#8221; to a new service - premium ice cream delivery trucks on demand! - that people are sure to love. Bravo! It&amp;#8217;s a sure hit, but it&amp;#8217;s so outrageous that no one really expects it work.&lt;/p&gt;
&lt;p&gt;Step 3: Launch with insufficient capacity, but that&amp;#8217;s ok - how could you have possibly predicted the demand for ice cream on hot July Friday?&lt;/p&gt;
&lt;p&gt;Step 4: Apologize and offer a $15 off coupon towards your &amp;#8220;regular&amp;#8221; service as a consolation.&lt;/p&gt;
&lt;p&gt;Step 5: Sway public opinion towards you (reminder: Uber == ice cream!) PLUS get otherwise reluctant new customers to try out your service.&lt;/p&gt;
&lt;p&gt;This is so far superior to just offering a coupon. I can&amp;#8217;t wait to see what&amp;#8217;s next.&lt;/p&gt;</description><link>http://workstuff.tumblr.com/post/27261518533</link><guid>http://workstuff.tumblr.com/post/27261518533</guid><pubDate>Sun, 15 Jul 2012 11:17:51 -0400</pubDate><category>uber</category><category>ice cream</category></item><item><title>Speed up the Dock animation in Mac OS</title><description>&lt;p&gt;&lt;a href="http://bengold.tv/post/21711266050" class="tumblr_blog" target="_blank"&gt;ben&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;I don’t really use that at many defaults write terminal commands, but I read about this one recently and I like it a lot.&lt;/p&gt;
&lt;p&gt;If you hide your dock, you can speed up the hide/show animation by using the following command in Terminal:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;defaults write com.apple.dock autohide-time-modifier -float 0.5;killall Dock&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This will make the animation much faster. You can also &lt;a href="http://osxdaily.com/2012/03/28/change-dock-animation-speed-mac-os-x/" target="_blank"&gt;get rid of it completely&lt;/a&gt;, but I think that looks weird.&lt;/p&gt;&lt;/blockquote&gt;</description><link>http://workstuff.tumblr.com/post/21802026016</link><guid>http://workstuff.tumblr.com/post/21802026016</guid><pubDate>Wed, 25 Apr 2012 17:12:10 -0400</pubDate></item><item><title>Some followup on disabling the dynamic pager in OS X</title><description>&lt;p&gt;Some additional uncategorized thoughts on &lt;a href="http://workstuff.tumblr.com/post/20464780085" target="_blank"&gt;disabling the dynamic pager&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;This is not a magic bullet. Anything that actually needs to use the disk is still going to take place at disk speeds. But it should take a whole lot of load off of the disk.&lt;/li&gt;
&lt;li&gt;It&amp;#8217;s evident that not everyone is seeing the problems I&amp;#8217;ve been seeing, but there are enough people who have to make me think there&amp;#8217;s a real issue here. I can&amp;#8217;t depend on my own findings being representative, because I push my machines hard - I want to have everything open at once, converting, transcoding, browsing, whatever. I&amp;#8217;ve been known to keep over 200 browser tabs open at a time. In five different browsers. I have over 20TB of data on my main machine including backups, so…. thanks for all of the suggestions to switch to SSD (I have one, but only for applications and commonly used documents and cache - my homedir won&amp;#8217;t even fit on it). This is why it&amp;#8217;s good to know if other people are seeing the same problems, and if the same fixes alleviate them.&lt;/li&gt;
&lt;li&gt;Some people have noted that the problem can be improved by adding more RAM. I found that it got worse when I bumped my Mac Pro from 24GB to 32GB, but that may just be coincidence. I also feel like it&amp;#8217;s gotten worse in successive point releases of Lion (my first impressions of Lion for the first few weeks were that it had a performance gain over SL).&lt;/li&gt;
&lt;li&gt;I love my Macs. I point this stuff out so that they&amp;#8217;ll improve, not so you can try to convince me that your Toshiba laptop is better (won&amp;#8217;t work; I&amp;#8217;ve used them). My understanding is that their development teams are tiny, and they have to be understandably aggressive about prioritizing what features they work on. As a developer, and even moreso as a project manager, I have a lot of tolerance for that.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;More testing is certainly needed. But given the overwhelming number of responses that are of the form &amp;#8220;yes! this really helped and made my machine much faster and more responsive!&amp;#8221;, I believe that the responsibility for doing that testing does lie with Apple.&lt;/p&gt;
&lt;p&gt;One particularly weird thing - I seem to still be getting page outs over time (or something else is reporting as a page out, though I have no idea what that would be). Here&amp;#8217;s what my Activity Monitor looks like:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://img.skitch.com/20120424-k6iw6psym3naajpq5muumb2m7f.png" alt="Activity Monitor"/&gt; &lt;/p&gt;
&lt;p&gt;As you can see, there&amp;#8217;s a lot of wired memory (though it does get freed; I don&amp;#8217;t have the problem that some have reported where wired memory just builds up. I suspect that means they don&amp;#8217;t actually have enough RAM for what they&amp;#8217;re trying to do). But there&amp;#8217;s also a great deal more free and less inactive than before. But I&amp;#8217;m still baffled by the page outs.&lt;/p&gt;</description><link>http://workstuff.tumblr.com/post/21730771421</link><guid>http://workstuff.tumblr.com/post/21730771421</guid><pubDate>Tue, 24 Apr 2012 16:16:04 -0400</pubDate></item><item><title>Something is deeply broken in OS X memory management (Lion performance problems part 3)</title><description>&lt;p&gt;&lt;strong&gt;(&lt;a href="http://workstuff.tumblr.com/post/28556080639/mountain-lion-seems-to-have-partially-addressed-the" target="_blank"&gt;Mountain Lion update: possibly fixed.&lt;/a&gt;)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve been doing some investigation with &lt;a href="https://plus.google.com/116685507294337280246/posts/camYp28M9St" target="_blank"&gt;Perry Metzger&lt;/a&gt; into what appears to be a huge problem with memory management in Lion (I, but not everybody, have seen this going back to Snow Leopard, though it&amp;#8217;s worse in Lion. This may have something to do with the fact that I was running the 64-bit kernel on SL and most other people weren&amp;#8217;t.)&lt;/p&gt;
&lt;p&gt;The main symptoms that we&amp;#8217;ve encountered:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Frequent beachballs, particularly when switching applications and sometimes even tabs.&lt;/li&gt;
&lt;li&gt;General overall slowness and poor UI responsivness.&lt;/li&gt;
&lt;li&gt;Specific and drastic slowdowns on every Time Machine run.&lt;/li&gt;
&lt;li&gt;High memory utilization in Safari Web Content, mds, and kernel_task processes.&lt;/li&gt;
&lt;li&gt;Large numbers of page outs even with a good deal of available RAM.&lt;/li&gt;
&lt;li&gt;High amounts of RAM marked as inactive which is not readily freed back to other applications, with page outs favored.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;The core issue seems to be that the virtual memory manager is bad at managing which pages should be freed from the inactive state and which ones should be paged out to disk (and, consequently, back from disk). There seem to be at least two distinct problems here, though it&amp;#8217;s difficult to tell for sure without proper instrumentation - 1) program data is not well prioritized to remain in physical RAM over buffer data, and 2) the garbage collection algorithm may require that all of a program&amp;#8217;s data be in physical RAM before collection can happen, causing extensive paging.&lt;/p&gt;
&lt;p&gt;High disk activity from time machine and spotlight (mds) seems to cause a lot of pages of program memory to get thrashed out to disk to make room for the disk buffer pages. This manifests itself as basically every process waiting for the disk, an incredible performance drop across the board, frequent beach balls, very high amounts of inactive memory which doesn&amp;#8217;t seem to get freed, and high numbers of page outs even with memory available. I was able to get some temporary benefit out of running the purge command to blow away the disk cache (see &lt;a href="http://workstuff.tumblr.com/post/14216999024" target="_blank"&gt;part 1&lt;/a&gt; and &lt;a href="http://workstuff.tumblr.com/post/19036310553" target="_blank"&gt;part 2&lt;/a&gt;), but the problem returned after not much time. I&amp;#8217;ve seen several blog posts recommending disabling the dynamic pager in Snow Leopard, but thought that was a fairly drastic step until Perry recommended it.&lt;/p&gt;
&lt;p&gt;The results here are dramatic - after rebooting, both of my machines (mac pro with 32GB and macbook pro with 8GB) are running viscerally and noticeably faster. Many operations which used to have a delay became instantaneous - task switching, viewing thumbnails in Lightroom, switching windows/tabs in Safari. I didn&amp;#8217;t realize until it went away just how much I&amp;#8217;d been waiting for the most mundane things. Even under very high load, the entire system is very responsive now.&lt;br/&gt;&lt;br/&gt;The only downside I can see is that things would likely start crashing if physical RAM actually runs out, but I&amp;#8217;ve noticed that the footprint of all of my apps seems to be much lower. Just keep an eye on RAM (it helps to run Activity Monitor and make the dock icon show free memory - you can configure that by right clicking on the dock icon). &lt;br/&gt;&lt;br/&gt;Ostensibly, this is &amp;#8220;risky&amp;#8221;, but so far the effects only seem beneficial. Likely the worst thing that will happen is that the OS will kernel panic if it completely runs out of memory, though it may not even be that bad - there seems to be some speculation that the system may turn on the dynamic pager automatically if system memory gets too low; I haven&amp;#8217;t encountered that, though I have noticed that if I top out physical RAM, the page out count does go up. I have no immediate explanation for that.&lt;/p&gt;
&lt;p&gt;I can&amp;#8217;t recommend this as a long term solution - Apple should fix this - but in the meantime, it seems to be having great results for me. Here&amp;#8217;s how much of a difference it is: I was going to turn it back on to collect some comparative numbers for this post, but I couldn&amp;#8217;t bear to cripple my machine again.&lt;/p&gt;
&lt;p&gt;To deactivate the dynamic pager:&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist&lt;br/&gt;&lt;/strong&gt;&lt;br/&gt;followed by a reboot. You can turn it on again with&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;sudo launchctl load -wF /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Some references:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://osxdaily.com/2010/10/08/mac-virtual-memory-swap" target="_blank"&gt;&lt;a href="http://osxdaily.com/2010/10/08/mac-virtual-memory-swap/" target="_blank"&gt;http://osxdaily.com/2010/10/08/mac-virtual-memory-swap/&lt;/a&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blog.dans.im/post/659478311/mac-os-x-10-6-memory-management-fixed" target="_blank"&gt;&lt;a href="http://blog.dans.im/post/659478311/mac-os-x-10-6-memory-management-fixed" target="_blank"&gt;http://blog.dans.im/post/659478311/mac-os-x-10-6-memory-management-fixed&lt;/a&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://cestdelamerde.com/archives/20-Mac-OS-Disk-Cache-A-Piece-Of-Crap.html" target="_blank"&gt;&lt;a href="http://cestdelamerde.com/archives/20-Mac-OS-Disk-Cache-A-Piece-Of-Crap.html" target="_blank"&gt;http://cestdelamerde.com/archives/20-Mac-OS-Disk-Cache-A-Piece-Of-Crap.html&lt;/a&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://hints.macworld.com/article.php?story=201106020948369" target="_blank"&gt;&lt;a href="http://hints.macworld.com/article.php?story=201106020948369" target="_blank"&gt;http://hints.macworld.com/article.php?story=201106020948369&lt;/a&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><link>http://workstuff.tumblr.com/post/20464780085</link><guid>http://workstuff.tumblr.com/post/20464780085</guid><pubDate>Wed, 04 Apr 2012 00:00:00 -0400</pubDate></item></channel></rss>
