<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Fazal Majid&#039;s low intensity weblog &#187; Mac</title>
	<atom:link href="http://majid.info/blog/category/mac/feed/" rel="self" type="application/rss+xml" />
	<link>http://majid.info/blog</link>
	<description>Sporadic pontification</description>
	<lastBuildDate>Sat, 24 Mar 2012 16:49:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Fixing Microsoft Office Mac 2011 font woes</title>
		<link>http://majid.info/blog/fixing-microsoft-office-mac-2011-font-woes/</link>
		<comments>http://majid.info/blog/fixing-microsoft-office-mac-2011-font-woes/#comments</comments>
		<pubDate>Wed, 30 Nov 2011 19:33:45 +0000</pubDate>
		<dc:creator>majid</dc:creator>
				<category><![CDATA[Mac]]></category>

		<guid isPermaLink="false">http://majid.info/blog/?p=141242631</guid>
		<description><![CDATA[This post may be of use to people experiencing the same problem I had. When I opened PowerPoint slides sent by a coworker, I was getting blank slides. Attempting to switch to outline view would crash PowerPoint. A search for &#8230; <a href="http://majid.info/blog/fixing-microsoft-office-mac-2011-font-woes/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>This post may be of use to people experiencing the same problem I had. When I opened PowerPoint slides sent by a coworker, I was getting blank slides. Attempting to switch to outline view would crash PowerPoint. A search for possible solutions yielded <a href="http://answers.microsoft.com/en-us/mac/forum/macoffice2011-macpowerpoint/slides-show-up-blank-white-when-opening/312fd117-2265-4499-bcc6-7b98fa4c2933">inconclusive posts</a> or <a href="http://word.mvps.org/Mac/fontweeding.html">dead-ends</a>.</p>
<p>After much twiddling, it turns out the problem was with a misconfigured Arial font. Microsoft in its great wisdom installs a copy of Arial that conflicts with the system-supplied one, as explained in Karl Lang&#8217;s must-read article on <a href="http://www.jklstudios.com/misc/osxfonts.html">OS X font management</a>, but that was not the root cause of the problem.</p>
<p>Arial was not appearing at all in the PowerPoint font menu, and opening the slides in Keynote yielded a font warning saying non-existent Arial was replaced by Arial Narrow. Clearly PowerPoint is much less resilient than Keynote to missing fonts (crashing in outline view mode is inexcusable, but that&#8217;s Microsoft coding sloppiness for you). If Arial is so vital, it should have been included as a resource in the application bundle itself, but I digress.</p>
<p>Font Book did show Arial as installed, with only a single copy after I purged the conflicting fonts as per Kurt Lang&#8217;s recommendations. Validating Arial in Font Book yielded a warning about duplicate fonts, but with no indication of where the duplicate may be, since Font Book itself did not know of any other instance.</p>
<p>It turns out I had an old pre-OpenType copy of Arial in my <tt>~/Library/Fonts</tt> folder that was causing a conflict. It was functional enough to be picked up as conflicting and disabling Arial in PowerPoint and Keynote, but not functional enough to be listed by Font Book. I am not sure how it got there, possibly from an older version of Office and transferred over many machine upgrades. Removing the file fixed the problem. of blank slides and the crash in switching to outline view.</p>
<p>Of course, if you care at all about typography, you should use Helvetica rather than an inferior ersatz like Arial, but Arial is so prevalent in the taste-impaired Windows world that one cannot escape its gaucheness entirely.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://majid.info/blog/fixing-microsoft-office-mac-2011-font-woes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Solving Mac freezes due to ocspd crashes</title>
		<link>http://majid.info/blog/ocspd-crashes/</link>
		<comments>http://majid.info/blog/ocspd-crashes/#comments</comments>
		<pubDate>Thu, 15 Sep 2011 18:38:58 +0000</pubDate>
		<dc:creator>majid</dc:creator>
				<category><![CDATA[Mac]]></category>

		<guid isPermaLink="false">http://majid.info/blog/?p=141242594</guid>
		<description><![CDATA[A public service announcement for anyone experiencing the same problem and who may google for a solution. A couple of days ago my work iMac started experiencing intermittent freezing, and very slow searches in Mail.app. Rebuilding my Spotlight index overnight &#8230; <a href="http://majid.info/blog/ocspd-crashes/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>A public service announcement for anyone experiencing the same problem and who may google for a solution.</p>
<p>A couple of days ago my work iMac started experiencing intermittent freezing, and very slow searches in Mail.app. Rebuilding my Spotlight index overnight using <tt>sudo mdutil -Eav</tt> did not help. I started suspecting problems with recent versions of Chrome, or iTunes 10.5 Beta 7, but quitting those apps did not help either.</p>
<p>After running the Console.app, I noticed the following messages in my logs:</p>

<div class="wp_syntax"><div class="code"><pre class="log" style="font-family:monospace;">2011-09-14 17:39:20 	com.apple.launchd[1]	(com.apple.ocspd[3197]) Job appears to have crashed: Bus error
2011-09-14 17:39:21 	com.apple.ReportCrash.Root[3201]	2011-09-14 17:39:21.325 ReportCrash[3201:2903] Saved crash report for ocspd[3197] version ??? (???) to /Library/Logs/DiagnosticReports/ocspd_2011-09-14-173921_localhost.crash
2011-09-14 17:50:29 	com.apple.launchd[1]	(com.apple.ocspd[3269]) Job appears to have crashed: Bus error
2011-09-14 17:50:29 	com.apple.ReportCrash.Root[3270]	2011-09-14 17:50:29.964 ReportCrash[3270:2903] Saved crash report for ocspd[3269] version ??? (???) to /Library/Logs/DiagnosticReports/ocspd_2011-09-14-175029_localhost.crash
2011-09-14 17:50:45 	com.apple.launchd[1]	(com.apple.ocspd[3271]) Job appears to have crashed: Bus error
2011-09-14 17:50:45 	com.apple.ReportCrash.Root[3270]	2011-09-14 17:50:45.117 ReportCrash[3270:2807] Saved crash report for ocspd[3271] version ??? (???) to /Library/Logs/DiagnosticReports/ocspd_2011-09-14-175045_localhost.crash</pre></div></div>

<p>Looking at those crash dumps did not yield very useful information, just some blather like this:</p>

<div class="wp_syntax"><div class="code"><pre class="unknown" style="font-family:monospace;">Process:         ocspd [3197]
Path:            /usr/sbin/ocspd
Identifier:      ocspd
Version:         ??? (???)
Code Type:       X86-64 (Native)
Parent Process:  launchd [1]
&nbsp;
Date/Time:       2011-09-14 17:39:19.339 -0700
OS Version:      Mac OS X 10.6.8 (10K549)
Report Version:  6
&nbsp;
Exception Type:  EXC_BAD_ACCESS (SIGBUS)
Exception Codes: 0x000000000000000a, 0x000000010009b210
Crashed Thread:  0  Dispatch queue: com.apple.main-thread
&nbsp;
Thread 0 Crashed:  Dispatch queue: com.apple.main-thread
0   com.apple.security            	0x00007fff87b59d0b Security::ReadSection::at(unsigned int) const + 25
1   com.apple.security            	0x00007fff87b59172 Security::DbVersion::open() + 62
2   com.apple.security            	0x00007fff87b58cc1 Security::DbVersion::DbVersion(Security::AppleDatabase const&amp;amp;, Security::RefPointer const&amp;amp;) + 179
3   com.apple.security            	0x00007fff87b587ce Security::DbModifier::getDbVersion(bool) + 330
4   com.apple.security            	0x00007fff87b58675 Security::DbModifier::openDatabase() + 33
5   com.apple.security            	0x00007fff87b582b9 Security::Database::_dbOpen(Security::DatabaseSession&amp;amp;, unsigned int, Security::AccessCredentials const*, void const*) + 221
6   com.apple.security            	0x00007fff87b576c1 Security::DatabaseManager::dbOpen(Security::DatabaseSession&amp;amp;, Security::DbName const&amp;amp;, unsigned int, Security::AccessCredentials const*, void const*) + 77
7   com.apple.security            	0x00007fff87b575a3 Security::DatabaseSession::DbOpen(char const*, cssm_net_address const*, unsigned int, Security::AccessCredentials const*, void const*, long&amp;amp;) + 285
8   com.apple.security            	0x00007fff87b6b294 cssm_DbOpen(long, char const*, cssm_net_address const*, unsigned int, cssm_access_credentials const*, void const*, long*) + 108
9   com.apple.security            	0x00007fff87b6ae3a CSSM_DL_DbOpen + 106
10  ocspd                         	0x0000000100006ad9 0x100000000 + 27353
11  ocspd                         	0x0000000100006cab 0x100000000 + 27819
12  ocspd                         	0x0000000100001f68 0x100000000 + 8040
13  ocspd                         	0x00000001000176ed 0x100000000 + 95981
14  ocspd                         	0x000000010001787b 0x100000000 + 96379
15  ocspd                         	0x0000000100017e4f 0x100000000 + 97871
16  ocspd                         	0x0000000100004613 0x100000000 + 17939
17  ocspd                         	0x0000000100001d48 0x100000000 + 7496
&nbsp;
Thread 0 crashed with X86 Thread State (64-bit):
  rax: 0x000000010008e000  rbx: 0x000000010008e000  rcx: 0x00007fff88f0d47a  rdx: 0x000000000000d210
  rdi: 0x0000000100115478  rsi: 0x000000000000d210  rbp: 0x00007fff5fbfe850  rsp: 0x00007fff5fbfe850
   r8: 0x0000000000000003   r9: 0x0000000000000000  r10: 0x00007fff88f0597a  r11: 0x0000000000000206
  r12: 0x0000000100115478  r13: 0x00007fff5fbfecd0  r14: 0x00007fff5fbfecd0  r15: 0x00007fff5fbfed20
  rip: 0x00007fff87b59d0b  rfl: 0x0000000000010297  cr2: 0x000000010009b210
&nbsp;
Binary Images:
       0x100000000 -        0x10003cfef +ocspd ??? (???)  /usr/sbin/ocspd
    0x7fff5fc00000 -     0x7fff5fc3bdef  dyld 132.1 (???)  /usr/lib/dyld
    0x7fff80853000 -     0x7fff80859ff7  com.apple.DiskArbitration 2.3 (2.3)  /System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration
    0x7fff80baa000 -     0x7fff80c27fef  libstdc++.6.dylib 7.9.0 (compatibility 7.0.0)  /usr/lib/libstdc++.6.dylib
    0x7fff811af000 -     0x7fff81268fff  libsqlite3.dylib 9.6.0 (compatibility 9.0.0)  /usr/lib/libsqlite3.dylib
    0x7fff812e9000 -     0x7fff8161dfef  com.apple.CoreServices.CarbonCore 861.39 (861.39)  /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/CarbonCore
    0x7fff82092000 -     0x7fff82122fff  com.apple.SearchKit 1.3.0 (1.3.0)  /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/SearchKit
    0x7fff8229d000 -     0x7fff822c8ff7  libxslt.1.dylib 3.24.0 (compatibility 3.0.0)  /usr/lib/libxslt.1.dylib
    0x7fff82695000 -     0x7fff826d2fff  com.apple.LDAPFramework 2.0 (120.1)  /System/Library/Frameworks/LDAP.framework/Versions/A/LDAP
    0x7fff82954000 -     0x7fff82966fe7  libsasl2.2.dylib 3.15.0 (compatibility 3.0.0)  /usr/lib/libsasl2.2.dylib
    0x7fff82ae1000 -     0x7fff82b81fff  com.apple.LaunchServices 362.3 (362.3)  /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/LaunchServices
    0x7fff82c8f000 -     0x7fff82c9dff7  libkxld.dylib ??? (???)  /usr/lib/system/libkxld.dylib
    0x7fff82d0e000 -     0x7fff82dc4ff7  libobjc.A.dylib 227.0.0 (compatibility 1.0.0)  /usr/lib/libobjc.A.dylib
    0x7fff82dc5000 -     0x7fff82de6fff  libresolv.9.dylib 41.0.0 (compatibility 1.0.0)  /usr/lib/libresolv.9.dylib
    0x7fff8349e000 -     0x7fff834adfff  com.apple.NetFS 3.2.2 (3.2.2)  /System/Library/Frameworks/NetFS.framework/Versions/A/NetFS
    0x7fff83a2b000 -     0x7fff83a41fef  libbsm.0.dylib ??? (???)  /usr/lib/libbsm.0.dylib
    0x7fff83a42000 -     0x7fff83bb9fe7  com.apple.CoreFoundation 6.6.5 (550.43)  /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation
    0x7fff83bbe000 -     0x7fff83c92fe7  com.apple.CFNetwork 454.12.4 (454.12.4)  /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CFNetwork.framework/Versions/A/CFNetwork
    0x7fff83c93000 -     0x7fff83cbbfff  com.apple.DictionaryServices 1.1.2 (1.1.2)  /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/DictionaryServices.framework/Versions/A/DictionaryServices
    0x7fff84905000 -     0x7fff849c2fff  com.apple.CoreServices.OSServices 359.2 (359.2)  /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/OSServices.framework/Versions/A/OSServices
    0x7fff849d8000 -     0x7fff84a38fe7  com.apple.framework.IOKit 2.0 (???)  /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit
    0x7fff850ef000 -     0x7fff8513bfff  libauto.dylib ??? (???)  /usr/lib/libauto.dylib
    0x7fff851a2000 -     0x7fff851ddfff  com.apple.AE 496.5 (496.5)  /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/AE.framework/Versions/A/AE
    0x7fff8525f000 -     0x7fff85270ff7  libz.1.dylib 1.2.3 (compatibility 1.0.0)  /usr/lib/libz.1.dylib
    0x7fff85b42000 -     0x7fff85b43ff7  com.apple.TrustEvaluationAgent 1.1 (1)  /System/Library/PrivateFrameworks/TrustEvaluationAgent.framework/Versions/A/TrustEvaluationAgent
    0x7fff87921000 -     0x7fff8796bff7  com.apple.Metadata 10.6.3 (507.15)  /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/Metadata.framework/Versions/A/Metadata
    0x7fff87b2b000 -     0x7fff87db4ff7  com.apple.security 6.1.2 (55002)  /System/Library/Frameworks/Security.framework/Versions/A/Security
    0x7fff88b46000 -     0x7fff88b4aff7  libmathCommon.A.dylib 315.0.0 (compatibility 1.0.0)  /usr/lib/system/libmathCommon.A.dylib
    0x7fff88f02000 -     0x7fff890c3fef  libSystem.B.dylib 125.2.11 (compatibility 1.0.0)  /usr/lib/libSystem.B.dylib
    0x7fff8921b000 -     0x7fff8933afe7  libcrypto.0.9.8.dylib 0.9.8 (compatibility 0.9.8)  /usr/lib/libcrypto.0.9.8.dylib
    0x7fff8933b000 -     0x7fff89378ff7  libssl.0.9.8.dylib 0.9.8 (compatibility 0.9.8)  /usr/lib/libssl.0.9.8.dylib
    0x7fff89494000 -     0x7fff894d5fff  com.apple.SystemConfiguration 1.10.8 (1.10.2)  /System/Library/Frameworks/SystemConfiguration.framework/Versions/A/SystemConfiguration
    0x7fff8953e000 -     0x7fff896fcfff  libicucore.A.dylib 40.0.0 (compatibility 1.0.0)  /usr/lib/libicucore.A.dylib
    0x7fff89b66000 -     0x7fff89b66ff7  com.apple.CoreServices 44 (44)  /System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices
    0x7fff8a545000 -     0x7fff8a65cfef  libxml2.2.dylib 10.3.0 (compatibility 10.0.0)  /usr/lib/libxml2.2.dylib
    0x7fffffe00000 -     0x7fffffe01fff  libSystem.B.dylib ??? (???)  /usr/lib/libSystem.B.dylib</pre></div></div>

<p>Some of the information you get when googling for the error message is misleading, suggesting ocspd is somehow tied to nVidia graphics drivers. It is in fact the system daemon that handles verification and revocation of SSL certificates using the Online Certificate Status Protocol (OCSP), a vital component of the Internet&#8217;s security architecture, as evidenced by the recent <a href="http://arstechnica.com/security/news/2011/08/earlier-this-year-an-iranian.ars">Diginotar fiasco</a>. Thus presumably it is used throughout Internet apps like Mail.app or Chrome, and the regular crashes (at 3 minute intervals or so) would also freeze any apps that make use of cryptography.</p>
<p>The solution was to delete the the temporary certificate revocation list (CRL) databases <tt>ocspd</tt> maintains:</p>
<pre>sudo rm -rf /private/var/db/crls/*
sudo rm -rf /private/var/db/crls/.fl*</pre>
<p>A corrupted database is probably responsible for the repeated crashes I observed, and clearing those solved my problem. You may want to make backups of those files instead of just deleting them.</p>
<p>As usual, I disclaim responsibility for any harm this procedure may do to your computer, or induce it to eat your dog, who ate your homework.</p>
<p>So much for the theory that the Mac &#8220;just works&#8221;. To paraphrase Churchill, it is the worst operating system, with the exception of all others&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://majid.info/blog/ocspd-crashes/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Clearing custom crop aspect ratios in Lightroom</title>
		<link>http://majid.info/blog/lightroom-crops/</link>
		<comments>http://majid.info/blog/lightroom-crops/#comments</comments>
		<pubDate>Sat, 04 Jun 2011 17:04:31 +0000</pubDate>
		<dc:creator>majid</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Photo]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://majid.info/blog/?p=141242538</guid>
		<description><![CDATA[Lightroom&#8217;s crop tool allows you to constrain the aspect ratio to a proportion of your choice, e.g. to 4:3, defaulting to the same aspect ratio as the original. The last 5 or so custom crop aspect ratios are saved, but &#8230; <a href="http://majid.info/blog/lightroom-crops/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Lightroom&#8217;s crop tool allows you to constrain the aspect ratio to a proportion of your choice, e.g. to 4:3, defaulting to the same aspect ratio as the original. The last 5 or so custom crop aspect ratios are saved, but a minor annoyance is you are unable to clear the list.</p>
<p>Python on the Mac and SQLite to the rescue: this simple script  <a href="http://majid.info/blog/wp-content/uploads/2011/06/lraspect.zip">lraspect.zip</a> will reset them. If you use a non-default name for your Lightroom catalog, you will need to edit it. To run it, quit Lightroom and run the script. It will back up your catalog for you just in case.</p>
<p>Needless to say, I cannot be held liable if this script corrupts your catalog or eats your dog (who ate your homework), use at your own risk.</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#!/usr/bin/python</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">sys</span>, <span style="color: #dc143c;">os</span>, sqlite3
&nbsp;
<span style="color: #808080; font-style: italic;"># edit this to point to your LR3 catalog if you do not use the default location</span>
lrcat = <span style="color: #dc143c;">os</span>.<span style="color: black;">path</span>.<span style="color: black;">expanduser</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'~/Pictures/Lightroom/Lightroom 3 Catalog.lrcat'</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #dc143c;">os</span>.<span style="color: black;">system</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'cp -i &quot;%s&quot; &quot;%s.bak&quot;'</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>lrcat, lrcat<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
db = sqlite3.<span style="color: black;">connect</span><span style="color: black;">&#40;</span>lrcat<span style="color: black;">&#41;</span>
c = db.<span style="color: black;">cursor</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
c.<span style="color: black;">execute</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;&quot;&quot;select value from Adobe_variablesTable
where name='Adobe_customCropAspects'&quot;&quot;&quot;</span><span style="color: black;">&#41;</span>
crops = c.<span style="color: black;">fetchone</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span>
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">'aspect ratios:'</span>, crops
c.<span style="color: black;">execute</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;&quot;&quot;update Adobe_variablesTable
set value='{}'
where name='Adobe_customCropAspects'&quot;&quot;&quot;</span><span style="color: black;">&#41;</span>
db.<span style="color: black;">commit</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">'Custom crop aspect ratios reset successfully'</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://majid.info/blog/lightroom-crops/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A waiter for a server</title>
		<link>http://majid.info/blog/pwait-hack/</link>
		<comments>http://majid.info/blog/pwait-hack/#comments</comments>
		<pubDate>Fri, 13 May 2011 06:52:16 +0000</pubDate>
		<dc:creator>majid</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[solaris]]></category>

		<guid isPermaLink="false">http://majid.info/blog/?p=141242526</guid>
		<description><![CDATA[I had to monitor a long-running process on a Solaris server tonight, but didn&#8217;t want to stay glued at a computer monitor. A neat trick: ssh myserver.example.com "pwait 17601"; say "batch done" You would replace 17601 with the process ID &#8230; <a href="http://majid.info/blog/pwait-hack/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I had to monitor a long-running process on a Solaris server tonight, but didn&#8217;t want to stay glued at a computer monitor. A neat trick:</p>
<pre>ssh myserver.example.com "pwait 17601"; say "batch done"</pre>
<p>You would replace <tt>17601</tt> with the process ID of the job you are waiting for, of course. That way, my Mac connects to the server, waits for the job to complete, then gives me an spoken alert when it is done. I can watch a movie, do chores or whatever during that time. I am sure there are equivalent commands to <tt>pwait</tt> for Linux.</p>
]]></content:encoded>
			<wfw:commentRss>http://majid.info/blog/pwait-hack/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Doing my bit for the Internet</title>
		<link>http://majid.info/blog/doing-my-bit-for-the-internet/</link>
		<comments>http://majid.info/blog/doing-my-bit-for-the-internet/#comments</comments>
		<pubDate>Sat, 05 Mar 2011 10:04:21 +0000</pubDate>
		<dc:creator>majid</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Network]]></category>

		<guid isPermaLink="false">http://majid.info/blog/?p=141242452</guid>
		<description><![CDATA[My first IPv6 connectivity, courtesy of Hurricane Electric&#8217;s Tunnel Broker. It only took me three years&#8230;]]></description>
			<content:encoded><![CDATA[<p>My first IPv6 connectivity, courtesy of Hurricane Electric&#8217;s <a href="http://tunnelbroker.com/">Tunnel Broker</a>. It only took me three years&#8230;</p>
<p><a rel="attachment wp-att-141242453" href="http://majid.info/blog/doing-my-bit-for-the-internet/screen-shot-2011-03-05-at-01-59-46/"><img class="aligncenter size-medium wp-image-141242453" title="Screen shot 2011-03-05 at 01.59.46" src="http://majid.info/blog/wp-content/uploads/2011/03/Screen-shot-2011-03-05-at-01.59.46-450x500.png" alt="" width="450" height="500" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://majid.info/blog/doing-my-bit-for-the-internet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hey Apple&#8230;</title>
		<link>http://majid.info/blog/hey-apple/</link>
		<comments>http://majid.info/blog/hey-apple/#comments</comments>
		<pubDate>Thu, 24 Feb 2011 21:28:24 +0000</pubDate>
		<dc:creator>majid</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Soapbox]]></category>

		<guid isPermaLink="false">http://majid.info/blog/?p=141242442</guid>
		<description><![CDATA[Some improvements you should consider: Sync iPods, iPhones and iPads over WiFi. Cables are so twentieth century. Palm had bluetooth sync working ten years ago, and 802.11n has the same real-world speed as USB. You could then simply extend this to &#8230; <a href="http://majid.info/blog/hey-apple/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Some improvements you should consider:</p>
<ul>
<li>Sync iPods, iPhones and iPads over WiFi. Cables are so twentieth century. Palm had bluetooth sync working ten years ago, and 802.11n has the same real-world speed as USB. You could then simply extend this to sync the device to the cloud instead of a specific computer.</li>
<li>Ditching DVDs to offer an OS reinstall USB flash drive on the new MacBook Airs and Pros is a good idea, but the stick is easy to misplace. How about soldering a read-only USB drive directly onto the motherboard so it can never be lost?</li>
<li>When someone enters an address in a Calendar entry on iOS, make it clickable and linked to the Maps app, the way addresses in Contacts are. Copying and pasting them manually is a drag.</li>
<li>Stop adding useless frills like &#8220;stationery&#8221; to Mail.app, and make the default chronological sort order switchable to &#8220;most recent on top&#8221;.</li>
<li>Add HDMI CEC support to the AppleTV. It would be nice to have a HDTV automatically switch over to the AppleTV&#8217;s HDMI input when you try to access it. Speaking of which, it would be nice to have an option to disable the audio out on HDMI, e.g. if you have a decent surround sound system connected to it over Toslink and don&#8217;t want the TV&#8217;s tinny speakers to kick in.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://majid.info/blog/hey-apple/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dear Parallels</title>
		<link>http://majid.info/blog/dear-parallels/</link>
		<comments>http://majid.info/blog/dear-parallels/#comments</comments>
		<pubDate>Thu, 07 Oct 2010 06:27:56 +0000</pubDate>
		<dc:creator>majid</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Soapbox]]></category>

		<guid isPermaLink="false">http://majid.info/blog/?p=141242388</guid>
		<description><![CDATA[Since you keep hitting me with these spammy popups no matter how many times I click on &#8220;Do not show again&#8221;, you leave me no choice but to switch to VirtualBox (much better software in any case, and less Windows &#8230; <a href="http://majid.info/blog/dear-parallels/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Since you keep hitting me with these spammy popups no matter how many times I click on &#8220;Do not show again&#8221;, you leave me no choice but to switch to <a href="http://www.virtualbox.org/">VirtualBox</a> (much better software in any case, and less Windows integration means less chances a virus breaking out of the virtualized Windows ghetto.</p>
<p><a rel="attachment wp-att-141242389" href="http://majid.info/blog/dear-parallels/screen-shot-2010-10-06-at-23-22-22/"><img class="aligncenter size-large wp-image-141242389" title="Screen shot 2010-10-06 at 23.22.22" src="http://majid.info/blog/wp-content/uploads/2010/10/Screen-shot-2010-10-06-at-23.22.22-529x620.png" alt="" width="529" height="620" /></a></p>
<p>Oh, and installing MacFuse without asking permission (unlike VMware Fusion): not cool.</p>
<p>Don&#8217;t let the door hit you on the way out.</p>
]]></content:encoded>
			<wfw:commentRss>http://majid.info/blog/dear-parallels/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Will Adobe ever learn?</title>
		<link>http://majid.info/blog/adobe-shenanigans/</link>
		<comments>http://majid.info/blog/adobe-shenanigans/#comments</comments>
		<pubDate>Tue, 05 Oct 2010 02:42:57 +0000</pubDate>
		<dc:creator>majid</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Soapbox]]></category>

		<guid isPermaLink="false">http://majid.info/blog/?p=141242373</guid>
		<description><![CDATA[In a triumph of hope over experience, I recently &#8220;upgraded&#8221; from Adobe CS3 Design Standard to CS5 Design Standard. I hardly ever use Photoshop any more since I started using Aperture and Lightroom (originally a Macromedia product, no matter what &#8230; <a href="http://majid.info/blog/adobe-shenanigans/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>In a triumph of hope over experience, I recently &#8220;upgraded&#8221; from Adobe CS3 Design Standard to CS5 Design Standard. I hardly ever use Photoshop any more since I started using Aperture and Lightroom (originally a Macromedia product, no matter what the lame &#8220;Adobe Photoshop Lightroom&#8221; face-saving branding may try to claim), the main driver for the purchase was actually InDesign CS5 and its ePub functions.</p>
<p>Of course, this is Adobe. <a href="http://majid.info/blog/adobe-creative-suite-3-a-mixed-bag/">Previous versions</a> gratuitously included crud like a full Opera install (an older version, insecure, naturally) just to display a splash screen, or a full MySQL install to power Acrobat search. I never install Acrobat, of course, since that bloated and bug-ridden piece of garbage managed to steal the crown for most insecure software from Internet Explorer, no small feat.</p>
<p>Adobe does not want to confuse users with streamlined and efficient software, so they <a href="http://blogs.adobe.com/oobe/2010/05/growl_installation_with_adobe.html">decided to include</a> the mostly useless Growl on-screen notification program to nag you into registering. Increasing bloat and attack surface for malware is not a good idea, nor is interrupting creative people&#8217;s flow with interruptions. Of course, helping clients Get Things Done is a low priority at Adobe, as evidenced by their product choices.</p>
<p>You have to pity the Growl developers, whose reputation will suffer from guilt by association. I dislike interruptions and do not find it useful, but many people do and rave about it. They installed it by choice, not as a sneaky drive-by install for slimy marketing purposes.</p>
<p>Some more annoyances in CS5:</p>
<ul>
<li>The pricing for the suite is more than the sum of its parts: $200 each for Photoshop, InDesign or Illustrator, $700 for Design Standard. I suppose they must think Acrobat and their online tie-ins have a value of $100 (hint: they forgot the negative sign).</li>
<li>Of course, they won&#8217;t let you upgrade individual component applications.</li>
<li>On the plus side, they now have the decency to include Acrobat on a separate CD, so you can discard it immediately and not risk installing it as a side-effect of installing the apps that are actually useful.</li>
<li>The icons were designed by the world&#8217;s laziest and most creatively bankrupt designer, just as with CS3 and CS4</li>
<li>Performance on a high-end <a href="http://macperformanceguide.com/Reviews-MacProWestmere-Photoshop-CoresSlower.html">8-core or 12-core Mac is actually slower</a> than on a lower-end configuration, thanks to <a href="http://macperformanceguide.com/blog/2010/20100910_PhotoshopScalability--photoshop.html">legacy cruft and incompetence</a>.</li>
<li>It is slower to load on my wife&#8217;s MacBook Pro. Each successive version of OS X is faster on the same hardware, Microsoft and Adobe deliver software that gets progressively slower.</li>
</ul>
<p>In other words, unlike Lightroom, CS5 is designed to be endured, not to delight.</p>
]]></content:encoded>
			<wfw:commentRss>http://majid.info/blog/adobe-shenanigans/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Organizing with Delicious Library</title>
		<link>http://majid.info/blog/organizing-with-delicious-library/</link>
		<comments>http://majid.info/blog/organizing-with-delicious-library/#comments</comments>
		<pubDate>Sat, 04 Sep 2010 08:24:00 +0000</pubDate>
		<dc:creator>majid</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Stuff]]></category>

		<guid isPermaLink="false">http://majid.info/blog/?p=141242348</guid>
		<description><![CDATA[Delicious Library is one of the slickest apps on the Mac, and won countless design accolades. Essentially, it is a database for your books, CDs and DVDs (version 2 added gadgets), and it looks glorious on a large monitor like &#8230; <a href="http://majid.info/blog/organizing-with-delicious-library/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.delicious-monster.com/">Delicious Library</a> is one of the slickest apps on the Mac, and won countless design accolades. Essentially, it is a database for your books, CDs and DVDs (version 2 added gadgets), and it looks glorious on a large monitor like mine. It seems like a novelty for collector-fondlers, and I myself <a href="http://majid.info/blog/a-contrarian-take-on-delicious-library-2/">unfairly dismissed it as a toy</a> in 2008, but behind its playful user interface lies a remarkably powerful organizational tool, and the new 2.5 version has made <a href="http://arstechnica.com/apple/news/2010/09/wil-shipley-we-tried-to-do-too-much-for-delicious-library-2.ars">major improvements in stability and performance</a> after 2 years of relative neglect.</p>
<p><a rel="attachment wp-att-141242355" href="http://majid.info/blog/organizing-with-delicious-library/dl/"><img class="aligncenter size-medium wp-image-141242355" title="Delicious Library" src="http://majid.info/blog/wp-content/uploads/2010/09/dl-500x392.png" alt="Screenshot of Delicious Library" width="500" height="392" /></a></p>
<p>My wife and I are both avid readers—one of our common dreams is to someday have a home with a dedicated room for a library. We are squarely in the demographic for the <a href="http://bookshelfporn.com/">Bookshelf porn</a> website. Here is a montage of mine alone, not including the books I reluctantly had to consign to storage, or those in my parents&#8217; basement back in France:</p>
<p><a href="http://majid.info/blog/wp-content/uploads/2010/09/bookshelves.jpg"><img class="aligncenter size-full wp-image-141242353" title="My bookshelves" src="http://majid.info/blog/wp-content/uploads/2010/09/bookshelves.jpg" alt="My bookshelves" width="500" height="259" /></a></p>
<p>With well over 900 books, I needed a system to manage. At some point I discovered Delicious Library has a writeable <em>location</em> field in its database for every item, and you can create virtual shelves to organize your books. I literally have one DL shelf for each shelf in my bookshelves, one for each box in storage, and one for all the books I keep at work. This way, I can browse shelf by shelf or box by box, or conversely look up the location of a book I need.</p>
<p><img class="aligncenter size-full wp-image-141242356" title="Location data" src="http://majid.info/blog/wp-content/uploads/2010/09/dl_location.png" alt="Location data for a book" width="500" height="550" /></p>
<p>You may think recording the location of each book would be a mind-numbing task, but Delicious Library makes it effortless. It can read ISBN bar codes using the iSight camera included in most Macs, but a better option is to use the <a href="http://www.microvision.com/store/ROV-Scanner-with-Bluetooth-p-2.html">Microvision RoV Bluetooth barcode scanner</a> they sell and support. It is quite inexpensive at well over $200, specially compared to the inexpensive <a href="/blog/a-python-driver-for-the-symbol-cs-1504-bar-code-scanner/">Symbol CS1504</a>, but the convenience makes it well worth the price if you have a serious library to wrangle.</p>
<p>If you select a shelf on the right sidebar, then scan a barcode, the book is automatically added to the selected shelf. I filed a feature request with them in 2008 for precisely this, and I do not know when they added it, but it makes a world of difference. The scanner has a memory, so you can zip into an adjoining room, scan all the barcodes on a shelf, zip back and let the scanner pour the shelf&#8217;s inventory into DL. It even reads out the titles as they are added. Repeat the process and quite quickly you can compile an inventory of your entire library.</p>
<p><img class="aligncenter size-full wp-image-141242357" title="dl_shelves" src="http://majid.info/blog/wp-content/uploads/2010/09/dl_shelves.png" alt="" width="500" height="300" /></p>
<p>The search function in DL is somewhat primitive, but Smart bookshelves (similar to iTunes&#8217; Smart playlists) help. I have Smart Bookshelves for:</p>
<ul>
<li>Books I have already read</li>
<li>Books I have yet to read</li>
<li>Books that now have significant resale values on Amazon, to identify candidates for decluttering (you would be surprised to see the markups some art or technical books can fetch once they go out of print, even temporarily, such as my old copy of De Marco&#8217;s Peopleware).</li>
<li>Books signed by the author</li>
<li>Science-Fiction and Fantasy books, using Amazon&#8217;s (probably Bookscan&#8217;s) categorization</li>
<li>Computer books, similarly</li>
</ul>
<p>Delicious Library tries hard to use cutting-edge functionality in OS X, which is why version 2 only supported Snow Leopard and later. It has a top-notch AppleScript implementation. I am no AppleScript guru, but I relatively easily wrote my <a href="http://majid.info/blog/wp-content/uploads/2010/09/dl_scripts.zip">own scripts</a> to:</p>
<ul>
<li>Copy the bookshelf name into all the books it contains. This essentially eliminates the data entry, but you have to be careful to make sure a book is not misfiled into two shelves at the same time. The sample script <em>Highlight shelves containing selected media</em> is helpful in this respect.</li>
<li>Find the <a href="http://www.bookmooch.com/">BookMooch</a> entry for books I want to give away.</li>
<li>Find the book in the San Francisco Public Library, in case they do not have it and might be interested in a donation.</li>
</ul>
<p>Thanks to the user interface, browsing books on the Mac is almost as fun as doing so on the bookshelves, and infinitely faster. Of course, this is true of most book catalog programs, including many fine free options available for Windows and Mac, but most others do it with less aplomb.</p>
]]></content:encoded>
			<wfw:commentRss>http://majid.info/blog/organizing-with-delicious-library/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Incensed at Mozilla</title>
		<link>http://majid.info/blog/incensed-at-mozilla/</link>
		<comments>http://majid.info/blog/incensed-at-mozilla/#comments</comments>
		<pubDate>Tue, 31 Aug 2010 23:39:39 +0000</pubDate>
		<dc:creator>majid</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Soapbox]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://majid.info/blog/?p=141242332</guid>
		<description><![CDATA[One of the greatest features in the Webkit-based browsers (Apple&#8217;s Safari and Google Chrome) is WebSQLdatabase, the ability for a web site to store information in a SQLite database on your browser accessible via JavaScript. This allows web developers to &#8230; <a href="http://majid.info/blog/incensed-at-mozilla/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>One of the greatest features in the Webkit-based browsers (Apple&#8217;s Safari and Google Chrome) is <a href="http://www.w3.org/TR/webdatabase/">WebSQLdatabase</a>, the ability for a web site to store information in a SQLite database on your browser accessible via JavaScript. This allows web developers to build database-enabled applications that run entirely in the browser, without requiring a server. This is very useful for mobile devices, which in the US enjoy flaky network connectivity at best. One very handsome example is the iPad-optimized <a href="http://everytimezone.com/">Every Time Zone</a> webapp.</p>
<p><a href="http://www.sqlite.org/">SQLite</a> is probably the most important open-source project you have never heard of. It is a simple, streamlined and efficient embedded database. Firefox stores its bookmarks in it. Google distributes its database of phishing sites in that format. Sun&#8217;s industrial-strength Solaris operating system stores the list of services it runs on boot in it—if it were to fail, a server would be crippled so that is a pretty strong vote of confidence. Adobe Lightroom and Apple&#8217;s Aperture use it to store their database, as do most Mac applications that use the CoreData framework, and many iPhone apps. In other words, it is robust and proven mission-critical software that is widely yet invisibly deployed.</p>
<p>WebSQLdatabase basically makes the power of SQLite available to web developers trying to build apps that work offline, specially on mobile devices. No good deed goes unpunished, and the Mozilla foundation teamed up with unlikely bedfellow Microsoft to torpedo formal adoption of WebSQLdatabase as a web standard, on <a href="http://hacks.mozilla.org/2010/06/beyond-html5-database-apis-and-the-road-to-indexeddb/">spurious grounds</a>, and pushed an alternate standard called IndexedDB instead. To <a href="http://www.chromium.org/developers/design-documents/indexeddb">quote</a> the Chromium team:</p>
<blockquote><p>Q: Why this over WebSQLDatabase?</p>
<p>A: Microsoft and Mozilla have made it very clear they will not implement SQL in the browser.  If you want to argue this is silly, talk to them, not me.</p></blockquote>
<p>IndexedDB is several steps backwards. Instead of using powerful, expressive and mature SQL technology, it uses a verbose JavaScript B-tree API that is a throwback to the 1960s bad old days of hierarchical databases and ISAM, requires a lot more work from the developer, for no good reason. To add injury to insult, Firefox 4&#8242;s implementation of IndexedDB is actually built on top of SQLite. The end result will be that web developers will need to build a SQL emulation library on top of IndexedDB to restore the SQLite functionality deliberately crippled by IndexedDB. If there is one constant in software engineering, it is that multiple layers add brittleness and impair performance.</p>
<p>Of course, both Mozilla and Microsoft are irrelevant on mobiles, where WebKit has essentially won the day, so why should this matter? Microsoft has always been a hindrance to the development of the web, since they have to protect the Windows API from competition by increasingly capable webapps, but I cannot understand Mozilla&#8217;s attitude, except possibly knee-jerk not-invented-here syndrome and petulance at being upstaged by WebKit. WebSQLdatabase is not perfect—to reach its full potential, it needs and automatic replication and sync facility between the local database and the website&#8217;s own database, but it is light years ahead of IndexedDB in terms of power and productivity.</p>
<p>I am so irritated by Mozilla&#8217;s attitude that after 10 years of using Mozilla-based browsers, I switched today from Firefox to Chrome as my primary browser. Migrating was surprisingly easy. Key functionality like bookmark keywords, AdBlock, FlashBlock, a developer console, and the ability to whitelist domains for cookies, all have equivalents on Chrome. The main regressions are bookmark tags, and Chrome&#8217;s sync options are not yet equivalent to <a href="http://majid.info/blog/mozilla-weave/">Weave</a>&#8216;s. At some point I will need to roll my own password syncing facility (Chrome stores its passwords in the OS X keychain, which is also used by Safari and Camino).</p>
]]></content:encoded>
			<wfw:commentRss>http://majid.info/blog/incensed-at-mozilla/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

