<?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/"
	xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule"
>

<channel>
	<title>willnorris.com &#187; osx</title>
	<atom:link href="http://willnorris.com/tag/osx/feed" rel="self" type="application/rss+xml" />
	<link>http://willnorris.com</link>
	<description>there&#039;s more to life than this</description>
	<lastBuildDate>Tue, 15 May 2012 21:57:32 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4-beta3-20574</generator>
<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
		<item>
		<title>Nightly WebKit builds</title>
		<link>http://willnorris.com/2005/10/nightly-webkit-builds</link>
		<comments>http://willnorris.com/2005/10/nightly-webkit-builds#comments</comments>
		<pubDate>Fri, 14 Oct 2005 00:33:36 +0000</pubDate>
		<dc:creator>Will Norris</dc:creator>
				<category><![CDATA[technology]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[osx]]></category>
		<category><![CDATA[safari]]></category>
		<category><![CDATA[webkit]]></category>

		<guid isPermaLink="false">http://willnorris.com/?p=73</guid>
		<description><![CDATA[The WebKit team announced a new site today where you can download nightly builds of the latest WebKit &#8212; very cool. I went ahead and wrote the following simple shell script to automate the process of downloading and installing the latest build: #!/bin/sh curl -o /tmp/webkit.dmg http://nightly.webkit.org/builds/Latest-WebKit-CVS.dmg hdiutil mount /tmp/webkit.dmg if [ -d /Volumes/WebKit/WebKit.app ]; [...]]]></description>
			<content:encoded><![CDATA[<p>The WebKit team <a href="http://webkit.opendarwin.org/blog/?p=29">announced</a> a <a href="http://nightly.webkit.org/builds/">new site</a> today where you can download nightly builds of the latest WebKit &#8212; very cool.  I went ahead and wrote the following simple shell script to automate the process of downloading and installing the latest build:</p>

<pre><code>#!/bin/sh

curl -o /tmp/webkit.dmg http://nightly.webkit.org/builds/Latest-WebKit-CVS.dmg

hdiutil mount /tmp/webkit.dmg

if [ -d /Volumes/WebKit/WebKit.app ]; then 
    rm -rf /Applications/WebKit.app
    cp -pR /Volumes/WebKit/WebKit.app /Applications/
fi

hdiutil detach /Volumes/WebKit
</code></pre>

<p>Sure, it could be a little more robust (or you might prefer one of the other two builds), but it works.  Put this in a new file, <code>chmod +x</code> it, and drop it into /etc/daily to have it run each morning.</p>

<p><em>(updated 2005-12-21 to reflect new webkit packaging and fix minor bugs)</em></p>
]]></content:encoded>
			<wfw:commentRss>http://willnorris.com/2005/10/nightly-webkit-builds/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Lock Screen revisited</title>
		<link>http://willnorris.com/2005/07/lock-screen-revisited</link>
		<comments>http://willnorris.com/2005/07/lock-screen-revisited#comments</comments>
		<pubDate>Thu, 28 Jul 2005 21:30:10 +0000</pubDate>
		<dc:creator>Will Norris</dc:creator>
				<category><![CDATA[technology]]></category>
		<category><![CDATA[osx]]></category>
		<category><![CDATA[quicksilver]]></category>

		<guid isPermaLink="false">http://willnorris.com/2005/07/lock-screen-revisited</guid>
		<description><![CDATA[So just a couple of days ago I talked about locking your screen with Quicksilver. Today I discovered that Quicksilver actually has a lock screen in the &#8220;Extra Scripts&#8221; plugin, but it&#8217;s not visible by default in Tiger (seems to work out of the box on Panther). The problem is with the file types filtering [...]]]></description>
			<content:encoded><![CDATA[<p>So just a couple of days ago I talked about <a href="http://willnorris.com/2005/07/lock-screen">locking your screen with Quicksilver</a>.  Today I discovered that Quicksilver actually has a lock screen in the &#8220;Extra Scripts&#8221; plugin, but it&#8217;s not visible by default in Tiger (seems to work out of the box on Panther).  The problem is with the file types filtering &#8212; it is setup to only look for .script, text files, and applescripts.  LockScreen is a &#8220;unix executable&#8221; and therefore isn&#8217;t included.  To make matters worse there doesn&#8217;t seem to be a way to add this file type to the Types list, so we need to simply have it include all files (not filtering any).</p>

<p>[Update: I discovered my previous solution didn&#8217;t persist between restarts of Quicksilver, so here is a working solution]
It&#8217;s pretty simple&#8230;</p>

<ul>
<li>First make sure you have the &#8220;Extra Scripts&#8221; plugin installed</li>
<li>open your Quicksilver Preferences and go to your catalog.  </li>
<li>Add a new &#8220;File &amp; Folder Scanner&#8221; and point it to <code>~/Library/Application Support/Quicksilver/PlugIns/Extra Scripts.qsplugin/Contents/Resources/ExtraScripts</code></li>
<li>Set &#8220;Include Contents: Folder Contents&#8221; and &#8220;Depth: infinite&#8221;</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://willnorris.com/2005/07/lock-screen-revisited/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>quicksilver and itunes</title>
		<link>http://willnorris.com/2005/06/quicksilver-and-itunes</link>
		<comments>http://willnorris.com/2005/06/quicksilver-and-itunes#comments</comments>
		<pubDate>Mon, 27 Jun 2005 17:26:01 +0000</pubDate>
		<dc:creator>Will Norris</dc:creator>
				<category><![CDATA[technology]]></category>
		<category><![CDATA[applescript]]></category>
		<category><![CDATA[itunes]]></category>
		<category><![CDATA[osx]]></category>
		<category><![CDATA[quicksilver]]></category>

		<guid isPermaLink="false">http://willnorris.com/?p=43</guid>
		<description><![CDATA[I&#8217;m generally a big fan of the Unix axiom of applications doing one thing and doing it well, but when each of those applications is running all the time and takes up 20MB of active memory I tend to make an exception and Quicksilver is providing an excellent alternative to several smalls apps I use. [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m generally a big fan of the Unix axiom of applications doing one thing and doing it well, but when each of those applications is running all the time and takes up 20MB of active memory I tend to make an exception and <a href="http://quicksilver.blacktree.com">Quicksilver</a> is providing an excellent alternative to several smalls apps I use.</p>

<p>I originally used <a href="http://www.ithinksw.com/products/menutunes/">MenuTunes</a>, and most recently <a href="http://synergy.wincent.com/">Synergy</a> to provide global &#8220;hotkeys&#8221; to do some simple things like play/pause iTunes, skip to next or previous track, and display some information about the current track.  Quicksilver&#8217;s triggers are ideal for this &#8212; it allows you to create keyboard shortcuts to perform any Quicksilver action.  This let me setup keys for play/pause and next/previous track.</p>

<p>Additionally I setup the iTunes Quicksilver plugin to display track notifications and to send those notifications to <a href="http://www.growl.info/">Growl</a>, however the plugin only displays notifications when something happens like the track changes.  I want to be able to display track info at any time so I whipped up this simple Applescript, saved it to my scripts folder, and assigned it to a Quicksilver trigger.  This will display the exact same as the built-in iTunes notification in Quicksilver with the addition of track time, current position, and ratings stars.  It&#8217;s a very simple matter of displaying more or less info for the track.</p>

<p><img src="http://willnorris.com/wordpress-content/uploads/2005/06/itunes-notification.jpeg" alt="iTunes notification" /></p>

<p>[updated 09 Aug 2005 to work when no artwork is present]</p>

<pre><code>tell application "iTunes"
  set currentTrack to current track
  set theArtworks to artworks of currentTrack

  if ((count of theArtworks) &gt; 0) then
    set theArtworkData to data of item 1 of theArtworks
  else
    set theArtworkData to null
  end if

  set theArtist to artist of currentTrack
  set theAlbum to album of currentTrack
  set theTime to time of currentTrack

  -- set the rating stars
  set theStars to ""
  set theRating to rating of currentTrack
  set bStar to Â«data utxt2605Â» as Unicode text
  set wStar to Â«data utxt2606Â» as Unicode text
  repeat 5 times
    if (theRating &gt; 0) then
      set theStars to theStars &amp; bStar
      set theRating to (theRating - 20)
    else
      set theStars to theStars &amp; wStar
    end if
  end repeat

  -- get player position and format to MM:SS
  set positionMinutes to (player position div 60)
  if (positionMinutes &lt; 10) then Â¬
    set positionMinutes to "0" &amp; positionMinutes
  set positionSeconds to (player position mod 60)
  if (positionSeconds &lt; 10) then Â¬
    set positionSeconds to "0" &amp; positionSeconds
  set thePosition to positionMinutes &amp; ":" &amp; positionSeconds
end tell

tell application "GrowlHelperApp"
  if (theArtworkData is not null) then
    notify with name Â¬
      "iTunes Notification" title Â¬
      name of currentTrack description Â¬
      theArtist &amp; return &amp; theAlbum &amp; return &amp; thePosition Â¬
        &amp; " / " &amp; theTime &amp; "     " &amp; theStars application name Â¬
      "Quicksilver" pictImage theArtworkData
  else
    notify with name Â¬
      "iTunes Notification" title Â¬
      name of currentTrack description Â¬
      theArtist &amp; return &amp; theAlbum &amp; return &amp; thePosition Â¬
      &amp; " / " &amp; theTime &amp; "     " &amp; theStars application name Â¬
      "Quicksilver" icon of application "iTunes"
  end if
end tell
</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://willnorris.com/2005/06/quicksilver-and-itunes/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Accountability Software</title>
		<link>http://willnorris.com/2005/05/accountability-software</link>
		<comments>http://willnorris.com/2005/05/accountability-software#comments</comments>
		<pubDate>Wed, 04 May 2005 14:43:50 +0000</pubDate>
		<dc:creator>Will Norris</dc:creator>
				<category><![CDATA[technology]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[osx]]></category>
		<category><![CDATA[x3watch]]></category>

		<guid isPermaLink="false">http://willnorris.com/wordpress/?p=7</guid>
		<description><![CDATA[Last Fall, I started working with the developers of x3watch on creating a Mac version of the software. I had a pretty decent working solution, but they&#8217;ve since contracted the work out to some firm. I don&#8217;t particularly mind that they went with someone else, but if they attack the problem in any way similar [...]]]></description>
			<content:encoded><![CDATA[<p>Last Fall, I started working with the developers of <a href="http://www.x3watch.com">x3watch</a> on creating a
Mac version of the software.  I had a pretty decent working solution, but
they&#8217;ve since contracted the work out to some firm.  I don&#8217;t particularly mind
that they went with someone else, but if they attack the problem in any way
similar to how the Windows version works, I think they&#8217;re gonna have trouble.</p>

<blockquote>
  <p>Windows provides access to all program windows via the window handles.  Think
  in terms of each program has a window number.  That program has invisible
  sub-windows that each has a number.  I parse all the window handles every few
  seconds and grab the URL in the address bar where the window is id&#8217;d as a
  browser.  &#8212; email from lead x3watch developer</p>
</blockquote>

<p>I&#8217;ve run across a couple of posts on the <a href="http://www.xxxchurch.com/forum/">x3church forums</a> where people are
using browsers that aren&#8217;t supported (at the time of the above email, Firefox
was the only &#8220;major&#8221; browser known not to work).  The problem is that the above
approach relies on a specific API of a specifc operating system, as well as the
browser identifying itself properly.  And what about when you don&#8217;t have any
browsers open, or aren&#8217;t actively surfing the web?  x3watch is still processing
every window you have open every few seconds &#8212; very inefficient.  Additionally,
x3watch only grabs the URL from the browser and must download the page <em>again</em>
in order to parse it for keywords.</p>

<p>The solution I created for the Mac version relies on packet sniffing.
Essentially, a process is run in the background that listens for all incoming
web traffic.  The contents of the packets can then be analyzed on the fly and
logged.  I believe this to be a much better solution, as it</p>

<ul>
<li>is OS and application independent &#8212; packet analysis exists on all platforms.
This is the biggest one to me, since the same core engine can be shared across
every version of x3watch.</li>
<li>does not require the page to be downloaded more than once</li>
<li>could easily be expanded to include other transfer methods such as FTP (though
this would use more domain matching, and not as much content analysis)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://willnorris.com/2005/05/accountability-software/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Some thoughts on Longhorn</title>
		<link>http://willnorris.com/2005/04/some-thoughts-on-longhorn</link>
		<comments>http://willnorris.com/2005/04/some-thoughts-on-longhorn#comments</comments>
		<pubDate>Wed, 27 Apr 2005 13:26:25 +0000</pubDate>
		<dc:creator>Will Norris</dc:creator>
				<category><![CDATA[technology]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[longhorn]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[osx]]></category>

		<guid isPermaLink="false">http://willnorris.com/wordpress/2005/04/some-thoughts-on-longhorn</guid>
		<description><![CDATA[After reading this slashdot article I decided to view a little of Gates&#8217;s presentation on Longhorn, and I must say that Microsoft never ceases to amaze me. They seem to have the most backwards thinking with so many things they do, and this new Metro file format is no exception. The slashdot comments contain most [...]]]></description>
			<content:encoded><![CDATA[<p>After reading this <a href="http://slashdot.org/article.pl?sid=05/04/27/0422250">slashdot article</a> I decided to view a little of Gates&#8217;s
<a href="http://www.microsoft.com/events/executives/billgates.mspx">presentation</a> on Longhorn, and I must say that Microsoft never ceases to
amaze me.  They seem to have the most backwards thinking with so many things
they do, and this new Metro file format is no exception.  The slashdot comments
contain most of the obvious and typical remarks &#8212; why do we need another PDF?
One of the more humorous notes in the presentation that I didn&#8217;t see mentioned
on /.  was in regards to printing.  The presentor talks about the next
generation of printers that will have Metro support built in to allow them to
&#8220;decode&#8221; Metro documents and properly print them identical to what is seen on
screen.  In fact he even goes so far as to show the difference between a page
printed with a Metro enabled printer, and a standard non Metro enabled printer.
Just like he says, the standard printer is completely incapable of properly
printing the gradients in his example document.  So what does this prove?  Only
that whenever you upgrade your PC to Longhorn, you&#8217;ll also have to upgrade your
printer in order to properly print Metro documents!  This is incentive to
upgrade my operating system?  So that I can break the ability to use my printer
that has always worked just fine?  I&#8217;m not sure what blows my mind more &#8212; that
Microsoft is actually crazy enough as to tout this as a <em>feature</em>, or that
people buy into it.</p>

<p>Another Longhorn feature talked about was the enhancements to WinFS and Explorer
(was called &#8220;Windows Explorer&#8221;, but I think it may be called &#8220;Document Explorer&#8221;
now).  WinFS was originally supposed to be a database powered file system,
providing rich metadata and search capabilities.  That idea has long since been
scratched off the Longhorn road map, but they are still working on an extensive
document metadata index.  As it turns out, this should be very similar to
<a href="http://www.apple.com/macosx/features/spotlight/">Spotlight</a>.  Longhorn will also have &#8220;virtual directories&#8221;, akin to &#8220;smart
folders&#8221; in Tiger.  Blow for blow, it seems Microsoft and Apple have very
similar plans for changing [for the better] how people will interact with their
files.  I say this not accuse one company of copying the other; on the contrary,
I see this paridigm as a rather natural progression based on current trends in
the search industry.  What really gets me though, is the timeline &#8212; Tiger
debuts in two days, while the most recently announced debut goal for Longhorn is
&#8220;Holiday 2006&#8221; (given Microsoft&#8217;s track record, this can be read as &#8220;mid to late
2007 at the earliest&#8221;).  We&#8217;re talking about a 2 year difference here&#8230;  that
is <em>several</em> lifetimes in this industry; I can&#8217;t possibly imagine what Apple
will be rolling out two years from now.</p>
]]></content:encoded>
			<wfw:commentRss>http://willnorris.com/2005/04/some-thoughts-on-longhorn/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Temporary Password Change</title>
		<link>http://willnorris.com/2005/04/temporary-password-change</link>
		<comments>http://willnorris.com/2005/04/temporary-password-change#comments</comments>
		<pubDate>Fri, 22 Apr 2005 14:39:12 +0000</pubDate>
		<dc:creator>Will Norris</dc:creator>
				<category><![CDATA[technology]]></category>
		<category><![CDATA[ldap]]></category>
		<category><![CDATA[opendirectory]]></category>
		<category><![CDATA[osx]]></category>

		<guid isPermaLink="false">http://willnorris.com/wordpress/?p=10</guid>
		<description><![CDATA[I was thinking about something this morning and wanted to write it down before I forget&#8230; here at Visible School we often need to login to a user&#8217;s machine as that user while we&#8217;re working on it to ensure proper file permissions, set preferences, etc. Typically, the easiest thing to do is to change the [...]]]></description>
			<content:encoded><![CDATA[<p>I was thinking about something this morning and wanted to write it down before I
forget&#8230; here at <a href="http://www.visibleschool.com">Visible School</a> we often need to login to a user&#8217;s machine
as that user while we&#8217;re working on it to ensure proper file permissions, set
preferences, etc.  Typically, the easiest thing to do is to change the user&#8217;s
password to something generic, and then have them change it back when we&#8217;re done
with their machine.  Wouldn&#8217;t it be much easier though to create a new LDAP
attribute called &#8216;password_bak&#8217;; then copy the user&#8217;s password into
that new attribute, change &#8216;password&#8217; to something temporary, and then copy the
user&#8217;s password back into place when you&#8217;re done.  We could login with their
account while we were working on the computer, and everything would be
completely transparent to the user.  I&#8217;m pretty sure <a href="http://www.apple.com/server/macosx/open_directory.html">Open Directory</a> does
some weird things with the password attribute in LDAP so I&#8217;m not sure how easy
it would be with OS X, but it&#8217;s certainly an idea worth pursuing.</p>
]]></content:encoded>
			<wfw:commentRss>http://willnorris.com/2005/04/temporary-password-change/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Address Book features in Tiger</title>
		<link>http://willnorris.com/2005/04/address-book-features-in-tiger</link>
		<comments>http://willnorris.com/2005/04/address-book-features-in-tiger#comments</comments>
		<pubDate>Tue, 12 Apr 2005 14:59:17 +0000</pubDate>
		<dc:creator>Will Norris</dc:creator>
				<category><![CDATA[technology]]></category>
		<category><![CDATA[ldap]]></category>
		<category><![CDATA[osx]]></category>

		<guid isPermaLink="false">http://willnorris.com/wordpress/2005/04/address-book-features-in-tiger</guid>
		<description><![CDATA[After reading back through this, I realize this has less to do with the new Address Book features and more to do with structuring your enterprise correctly&#8230; the new features just really got me thinking about it I guess. So Apple just announced today that Tiger would ship on April 29, and I&#8217;m just giddy [...]]]></description>
			<content:encoded><![CDATA[<p><em>After reading back through this, I realize this has less to do with the new
Address Book features and more to do with structuring your enterprise
correctly&#8230;  the new features just really got me thinking about it
I guess.</em></p>

<p>So Apple just announced today that Tiger would ship on April 29, and I&#8217;m just
giddy like a little school girl&#8230; it&#8217;s quite ridiculous really.  I&#8217;ve been
looking at all the new features that are to be included and was really impressed
by the new stuff in <a href="http://www.apple.com/macosx/features/addressbook">Address Book</a>.  Because of some recent stuff we&#8217;ve been
doing at Visible, I had this great vision of how things could (and should) work.</p>

<!-- more -->

<p>Visible School is holding a large fundraiser later this month and Rick has been
working on sending out personlized invitations to a rather large group of
people.  He&#8217;s been keeping track of everyone&#8217;s information in an Excel
spreadsheet and is then doing a mail merge in Word to create the letters and
all.  He could have done the same for envelope labels, but they opted to just
hand-write them (not sure why).  Anyway, the problem is that the only copy the
school has of these people&#8217;s contact info is in the spreadsheet on Rick&#8217;s
computer.  These could be potential future donors so it would be nice to have
them in a more permanent spot, so imagine this scenario &#8212;</p>

<p>All of these guests are entered into Visible&#8217;s master LDAP directory&#8230; they
could be in their own branch if need be, but it would likely suffice to simply
put them in the main users branch with an <a href="http://www.nmi-edit.org/eduPerson/draft-internet2-mace-dir-eduperson-00.html">eduPersonAffiliation</a> of &#8220;donor&#8221; or
something.  Some of the contact information for some of these people may be
private so we would set permission levels accordingly (and because Address Book
allows you to authenticate to LDAP it would all be transparent to the end user).
Rick could then just open Address Book and search for &#8220;donor&#8221; (some
customization would need to be done so that the eduPersonAffiliation field would
show up), then use the new label printing feature that will be added in Tiger to
print out labels.  I would imagine he could also export them in a format to be
used for a mail merge to do the covers letters.</p>

<p>So how is this different than just using a spreadsheet?  Well, on the front-end
it wouldn&#8217;t be much different&#8230; probably about the same amount of work (if not
a tad bit more).  However, all of these donor&#8217;s information would now be stored
where they belong&#8230; in Visible School&#8217;s master contact database.  As we get
more donors they are simply added as well, and when the next fundraiser comes
along, Rick simply searches for &#8220;donor&#8221; again.  It doesn&#8217;t seem all that
revolutionary, but if you could see the way things are done now you&#8217;d understand
how great this would be.</p>
]]></content:encoded>
			<wfw:commentRss>http://willnorris.com/2005/04/address-book-features-in-tiger/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

