<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE rss [<!ENTITY % HTMLlat1 PUBLIC "-//W3C//ENTITIES Latin 1 for XHTML//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent">]>
<rss version="2.0" xml:base="https://diaryproducts.net">
<channel>
 <title>Diary Products - Hannes Schmidt - </title>
 <link>https://diaryproducts.net</link>
 <description>Got info? Welcome to Diary Products, the only personal homepage you will ever visit more than once. Why? Well, to make a long story short, the older one gets the less space the brain has for all those tiny tidbits of &lt;em&gt;knowledge&lt;/em&gt; that matter big time. And even if the brain has made space for a new tidbit, another one may just as well have fallen off the edge into nowhere, screaming. This site puts an end to all this wasting of knowledge. It is the happy hunting ground for all my information tidbits. Oh, and by the way, it&#039;s about &lt;em&gt;information technology&lt;/em&gt;; &lt;em&gt;everything related to computers&lt;/em&gt;, that is.</description>
 <language>en</language>
<item>
 <title>Install Squid 3.2.x on Ubuntu 12.04 (Precise) LTS</title>
 <link>https://diaryproducts.net/install_squid_3_2_x_on_ubuntu_12_04_precise_lts</link>
 <description>&lt;p&gt;This is how I upgraded the Squid package from 3.1.19 to 3.2.6 on my Ubuntu 12.04 installations. The 3.2.x branch contains support for multiple cores, so that&amp;#39;s a pretty important update to have. 12.04 is an LTS release, so I&amp;#39;m really not sure why 3.2.6 hasn&amp;#39;t been backported to it. Anyhow, here&amp;#39;s how I did it:&lt;/p&gt;

&lt;p&gt;Set up the &lt;code&gt;dquilt&lt;/code&gt; shell alias as described in the &lt;a href=&quot;http://www.debian.org/doc/manuals/maint-guide/modify.en.html&quot;&gt;Debian New Maintainer&amp;#39;s Guide&lt;/a&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;alias dquilt=&amp;quot;quilt --quiltrc=${HOME}/.quiltrc-dpkg&amp;quot;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Create &lt;code&gt;~/.quiltrc-dpkg&lt;/code&gt; containing&lt;/p&gt;</description>
 <category domain="https://diaryproducts.net/exactly/about/operating_systems/unix">Unix</category>
 <category domain="https://diaryproducts.net/exactly/for/administrator">Administrator</category>
 <pubDate>Fri, 25 Jan 2013 00:51:21 +0000</pubDate>
</item>
<item>
 <title>Inotify for Python</title>
 <link>https://diaryproducts.net/inotify_for_python</link>
 <description>&lt;p&gt;The other day, I was trying to use Linux&#039; &lt;code&gt;inotify(7)&lt;/code&gt; functionality in a Python script. The obvious contender seems to be &lt;a href=&quot;https://github.com/seb-m/pyinotify&quot;&gt;pynotify&lt;/a&gt;, being the top Google result, as well as being mentioned in the O&#039;Reilly title &lt;i&gt;Python for Unix and Linux System Administration&lt;/i&gt;. Unfortunately, I found myself dumbfounded by its API. The native &lt;code&gt;inotify(7)&lt;/code&gt; functionality is simple and elegant, what does a scripting wrapper have to add on top of it? If it were an abstraction that unifies the various platform-specific filesystem notification approaches, I would be able to digest a thick, opinionated API, but a mere wrapper for one particular platform should be just that: a wrapper, as thin as possible.&lt;/p&gt;
</description>
 <pubDate>Thu, 24 Jan 2013 20:27:08 +0000</pubDate>
</item>
<item>
 <title>Lightweight and fast HTTP proxies</title>
 <link>https://diaryproducts.net/about/operating_systems/unix/lightweight_and_fast_http_proxies</link>
 <description>&lt;p&gt;I recently evaluated several open-source HTTP proxy servers. I was looking for something lightweight and fast, without a persistent cache or with no cache at all.&lt;/p&gt;
</description>
 <category domain="https://diaryproducts.net/exactly/about/operating_systems/unix">Unix</category>
 <category domain="https://diaryproducts.net/exactly/for/administrator">Administrator</category>
 <pubDate>Sun, 20 Jan 2013 00:24:10 +0000</pubDate>
</item>
<item>
 <title>EnvPane - An OS X preference pane for environment variables</title>
 <link>https://diaryproducts.net/EnvPane</link>
 <description>&lt;p&gt;News: Release 0.7 is built for macOS 12 &quot;Monterey&quot; and up. It uses code-signed, universal binaries.&lt;/p&gt;

&lt;p&gt;EnvPane is a preference pane for macOS that lets you set environment variables for all applications, both GUI and terminal. Not only does it restore support for &lt;code&gt;~/.MacOSX/environment.plist&lt;/code&gt; (seeBackground), it also publishes your changes to the environment immediately, without the need to log out and back in. This works for changes made by manually editing &lt;code&gt;~/.MacOSX/environment.plist&lt;/code&gt; as well via the preference pane UI.

&lt;p&gt;EnvPane 0.7 was tested under macOS 12 &quot;Monterey&quot; on Apple Silicon and Intel.&lt;/p&gt;

&lt;p&gt;For more information &amp; downloads head on over to the &lt;a href=&quot;https://github.com/hschmidt/EnvPane&quot;&gt;GitHub repository&lt;/a&gt;.&lt;/p&gt;

</description>
 <category domain="https://diaryproducts.net/exactly/about/operating_systems/mac_os_x">Mac OS X</category>
 <pubDate>Thu, 03 Jan 2013 07:52:29 +0000</pubDate>
</item>
<item>
 <title>Debugging System Preference Panes with ARC under Mountain Lion</title>
 <link>https://diaryproducts.net/debugging_system_preference_panes_with_arc_under_mountain_lion</link>
 <description>&lt;p&gt;First of all, follow the accepted answer in &lt;a href=&quot; http://stackoverflow.com/questions/7375698/cant-run-preference-pane-application&quot;&gt;this StackOverflow question&lt;/a&gt;. That takes care of the basics. Second, if your application is using ARC (as it should if it targets Lion and higher) you may have to explicitly disable garbage collection for the System Preferences application. System Preferences is using ARC by default but there seems to be some crutch in place that causes it to switch to GC when launched by Xcode. This crutch will cause&lt;/p&gt;
&lt;pre&gt;Garbage Collection enabled !&lt;/pre&gt;&lt;p&gt;
in the debug log and the&lt;/p&gt;
&lt;pre&gt;To use the â€œ...â€ preferences pane, System Preferences must quit and reopen.&lt;/pre&gt;&lt;p&gt;
error sheet to be displayed when your preference pane is selected. Clicking OK will restart System Preferences and you will lose your debug session.&lt;/p&gt;
&lt;p&gt;I found that setting &lt;code&gt;OBJC_DISABLE_GC&lt;/code&gt; to &lt;code&gt;YES&lt;/code&gt; will override the crutch and cause System Preferences to start with ARC enabled, letting you debug your preference pane as intended. In Xcode, edit the scheme (Menu Product - Edit scheme), select the Run action and click the arguments tab. To the Environment Variables list, add an entry for &lt;code&gt;OBJC_DISABLE_GC&lt;/code&gt; and &lt;code&gt;YES&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;This is on Xcode 4.5.2 (4G2008a) on OS X 10.8.2.&lt;/p&gt;
</description>
 <pubDate>Tue, 18 Dec 2012 19:47:38 +0000</pubDate>
</item>
<item>
 <title>Security by obstinacy</title>
 <link>https://diaryproducts.net/for/geek/security_by_obstinacy</link>
 <description>&lt;p&gt;The mechanism we employ to increase the security, integrity and privacy of systems and the communication between them are never absolutely effective. They evolve over time, some are abandoned, others are hardened incrementally, yet others are replaced by supreme alternatives. The encryption algorithms deemed secure today may become obsolete with a new mathematical break-through or with the advent of computational devices that are orders of magnitude more performant compared to their predecessors. Security, as a goal, requires continued effort, and, as a property of a system, can be measured on a scale. It involves making trade-offs: only if the prize is high, do we need to go the extra mile, otherwise we do get away with compromising on security, pun intended.&lt;/p&gt;
&lt;p&gt;I recently was exposed to an example of the all-or-nothing approach to security. Google &lt;a href=&quot;https://productforums.google.com/d/msg/gmail/Xy9dRjgrrm4/l27CWXeqM_UJ&quot;&gt;suddenly&lt;/a&gt; (as in &#039;without notice&#039;) dropped support for self-signed certificates when fetching mail from external POP3 accounts over secure connections. Granted, self-signed certificates do compromise the security of TLS. But that doesn&#039;t justify someone deciding for us that we shouldn&#039;t be using them. Interestingly, the suggested mitigations involve abstinence (as in &quot;you can always leave Gmail&quot;) and ignorance (as in &quot;you can always use unencrypted POP3&quot;).&lt;/p&gt;
</description>
 <category domain="https://diaryproducts.net/exactly/for/geek">Geek</category>
 <pubDate>Fri, 14 Dec 2012 02:28:53 +0000</pubDate>
</item>
<item>
 <title>Installing Mosh on Ubuntu Hardy</title>
 <link>https://diaryproducts.net/about/operating_systems/unix/installing_mosh_on_ubuntu_hardy</link>
 <description>&lt;p&gt;I recently had to get into the &lt;a href=&quot;http://mosh.mit.edu&quot;&gt;Mosh&lt;/a&gt; pit with my good old friend Hardy Heron aka Ubuntu 8.04 TLS.&lt;/p&gt;
&lt;pre&gt;
wget --no-check-certificate https://github.com/keithw/mosh/zipball/mosh-1.2.2
mv mosh-1.2.2 mosh-1.2.2.zip
unzip mosh-1.2.2.zip
cd keithw-mosh-df955aa
sudo sed -i -r &#039;s/#\s*(.*hardy-backports.*)/\1/&#039; /etc/apt/sources.list
sudo apt-get update
sudo apt-get install build-essential autoconf automake libprotobuf-dev \
                     protobuf-compiler libncurses5-dev zlib1g-dev libio-pty-perl
./autogen.sh
protobuf_CFLAGS=&quot; &quot; protobuf_LIBS=&quot;-lprotobuf&quot; ./configure --prefix=&quot;/usr&quot;
sed -i s/LITE_RUNTIME/SPEED/ src/protobufs/*.proto
make
sudo make install
&lt;/pre&gt;&lt;br /&gt;
</description>
 <category domain="https://diaryproducts.net/exactly/about/operating_systems/unix">Unix</category>
 <category domain="https://diaryproducts.net/exactly/for/administrator">Administrator</category>
 <pubDate>Fri, 27 Jul 2012 06:24:46 +0000</pubDate>
</item>
<item>
 <title>NSTreeController&#039;s add, addChild, insert and insertChild methods</title>
 <link>https://diaryproducts.net/nstreecontrollers_add_addchild_insert_and_insertchild_methods</link>
 <description>&lt;p&gt;I had a hard time interpreting Apple&#039;s documentation of NSTreeController&#039;s mutator methods and their corresponding &lt;code&gt;canXyz&lt;/code&gt; methods. My experiments did reveal symmetry in and consistency among the semantics of these methods, it&#039;s just that their naming is a bit odd (I say that coming from a strong Java background). The docs didn&#039;t help much either. I only investigated NSTreeController in entity mode, but I would guess that these methods behave identically in object mode as far as the pre-conditions and the position of the new node are concerned.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;add&lt;/code&gt;: Creates a new entity and makes it the last sibling of the selected entity. IOW, the new entity becomes the last child of the selected entity&#039;s parent. Without a selection, the entity becomes the last top-level (orphan) entity. Think &lt;code&gt;appendSibling&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;canAdd&lt;/code&gt;: Have never observed it to be false.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;insert&lt;/code&gt;: Creates a new entity and makes it a sibling of the selected entity, immediately preceding it. Without a selection, the entity becomes the first top-level entity. Think &lt;code&gt;prependSibling&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;canInsert&lt;/code&gt;: Have never observed it to be false.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;addChild&lt;/code&gt;: Does nothing if the selected entity is a leaf. Otherwise, creates a new entity and adds it as the last child of the selection. Think &lt;code&gt;appendChild&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;canAddChild&lt;/code&gt;: False if selection is a leaf.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;insertChild&lt;/code&gt;: Does nothing if the selected entity is a leaf. Otherwise, creates a new entity and adds it as the first child of the selection.Think &lt;code&gt;prependChild&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;canInsertChild&lt;/code&gt;: False if selection is a leaf.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Please not that these are empirical findings. I am pretty confident that they are accurate for the mutators, I am pretty sure that they are incomplete for the &lt;code&gt;canXyz&lt;/code&gt; methods. In other words, even if &lt;code&gt;canAdd&lt;/code&gt; seems to be true all the time, I wouldn&#039;t assume that &lt;code&gt;add&lt;/code&gt; always succeeds and still bind to &lt;code&gt;canAdd&lt;/code&gt;.&lt;/p&gt;
</description>
 <pubDate>Fri, 09 Jul 2010 19:59:00 +0000</pubDate>
</item>
<item>
 <title>Debian/Ubuntu packages for Hudson CI </title>
 <link>https://diaryproducts.net/about/operating_systems/unix/debian_ubuntu_packages_for_hudson_ci</link>
 <description>&lt;p&gt;The awesome &lt;a href=&quot;http://hudson-ci.org/&quot;&gt;Hudson Continuous Integration&lt;/a&gt; project seems to be undergoing some organizational changes at the moment. Its leader, &lt;a href=&quot;http://kohsuke.org/&quot;&gt;Kohsuke Kawaguchi&lt;/a&gt; has left Sun/Oracle and started up his own company revolving around professional services for Hudson, it seems. Let&#039;s hope this is not going to be one of those messy &quot;open-source project going commercial&quot; scenarios. Anyways, one of the more immediate problems caused by the changes is that the Debian package repository did not get any updates since late March. In a Hudson mailing list Kohsuke casually announced that he&#039;d be pushing packages to this &lt;a href=&quot;http://pkg.hudson-labs.org/debian/&quot;&gt;Hudson CI Debian and Ubuntu package repository&lt;/a&gt; but this fact isn&#039;t reflected on the official Hudson website yet which is why I am mentioning it here, putting all of my SEO weight behind the link&amp;nbsp;;-).&lt;/p&gt;
</description>
 <category domain="https://diaryproducts.net/exactly/about/operating_systems/unix">Unix</category>
 <pubDate>Wed, 05 May 2010 17:19:32 +0000</pubDate>
</item>
<item>
 <title>Bind9 with DLZ and MySQL backend on Ubuntu Jaunty (9.04), Lucid (10.04) and Precise (12.04)</title>
 <link>https://diaryproducts.net/about/operating_systems/unix/installing_bind9_with_dlz_and_mysql_backend_on_ubuntu_jaunty_9_04</link>
 <description>&lt;p class=&quot;meta&quot;&gt;Update 06/27/2010: This workaround is still necessary for Lucid (10.04 LTS) and Precise (12.04 LTS). These instructions still work for those releases with minor adjustments (see the updates at the end of the article).&lt;/p&gt;
&lt;p&gt;This &lt;a href=&quot;http://ubuntuforums.org/showthread.php?t=823578&quot;&gt;forum post&lt;/a&gt; got me started but I got stuck in various places and thought I&#039;d summarize what worked for me. I&#039;m not going to explain much but if you&#039;re going to work with Bind and DLZ you probably know what you&#039;re dealing with. I also won&#039;t go into configuring DLZ because that depends on your particular DB schema and there is sufficient documentation on the &lt;a href=&quot;http://bind-dlz.sourceforge.net/&quot;&gt;DLZ&lt;/a&gt; website.&lt;/p&gt;
&lt;p&gt;We need MySQL of course:&lt;/p&gt;
</description>
 <category domain="https://diaryproducts.net/exactly/about/operating_systems/unix">Unix</category>
 <pubDate>Thu, 24 Dec 2009 22:48:59 +0000</pubDate>
</item>
<item>
 <title>Domain Name (Dis)service</title>
 <link>https://diaryproducts.net/domain_name_dis_service</link>
 <description>&lt;p&gt;There are plenty of openly accessible DNS servers available that do name resolution for you. Most Internet providers run them for their customers. There are also DNS providers that encourage you to replace your ISP&#039;s name server with theirs. OpenDNS is one example. They even do it without charging you! But remember, hardly anything on the Internet is free. Someone will have to pay the bill. AFAIK, OpenDNS&#039; business model is based on advertising revenue, so the advertiser pays the bill. This is how it works: If you accidentally type a URL with a nonexistent domain name, OpenDNS will resolve it to one of their web servers instead of returning an NXDOMAIN error. The web server will then serve a page with web search results related to the mistyped domain name and some advertisements.&lt;/p&gt;
</description>
 <category domain="https://diaryproducts.net/exactly/for/administrator">Administrator</category>
 <pubDate>Fri, 18 Sep 2009 16:41:07 +0000</pubDate>
</item>
<item>
 <title>Installing dbd-mysql for 64-bit binary installation of MySQL</title>
 <link>https://diaryproducts.net/installing_dbd_mysql_for_64_bit_binary_installation_of_mysql</link>
 <description>&lt;p&gt;The dbd-mysql gem assumes (?) an i386 architecture when building the native component of the driver. You&#039;ll need to set ARCHFLAGS appropriately and point the build at the installation of MySQL.&lt;/p&gt;
&lt;pre&gt;
sudo env ARCHFLAGS=&quot;-arch x86_64&quot; \
     gem install mysql -- \
     --with-mysql-config=/usr/local/mysql/bin/mysql_config
&lt;/pre&gt;&lt;p&gt;
That should fix it.&lt;/p&gt;
</description>
 <category domain="https://diaryproducts.net/exactly/about/operating_systems/mac_os_x">Mac OS X</category>
 <category domain="https://diaryproducts.net/exactly/for/administrator">Administrator</category>
 <pubDate>Sun, 21 Jun 2009 01:02:44 +0000</pubDate>
</item>
<item>
 <title>Multiple Google Notifier instances for multiple accounts on Mac OS X</title>
 <link>https://diaryproducts.net/about/operating_systems/mac_os_x/multiple_google_notifier_instances_for_multiple_accounts</link>
 <description>&lt;p&gt;I use &lt;a href=&quot;http://toolbar.google.com/gmail-helper/notifier_mac.html&quot;&gt;Google Notifier&lt;/a&gt; to have my Gmail account checked for new mail periodically and automatically. I have a secondary Gmail account that I don&#039;t use that often but that I would like to have notifier check as well. Unfortunately, Google Notifier currently supports a single Gmail account only. Here&#039;s a simple hack that works well for a few gmail accounts. In a nutshell, you need to clone the application package and modify the bundle id in the clone&#039;s &lt;code&gt;Contents/Info.plist&lt;/code&gt; file.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Copy the Google Notifier application from &lt;code&gt;Applications&lt;/code&gt; to a temporary location.&lt;/li&gt;
</description>
 <category domain="https://diaryproducts.net/exactly/about/operating_systems/mac_os_x">Mac OS X</category>
 <category domain="https://diaryproducts.net/exactly/for/geek">Geek</category>
 <pubDate>Fri, 19 Jun 2009 19:29:22 +0000</pubDate>
</item>
<item>
 <title>Overriding DHCP- or VPN-assigned DNS servers in Mac OS X Leopard</title>
 <link>https://diaryproducts.net/about/operating_systems/mac_os_x/overriding_dhcp_or_vpn_assigned_dns_servers_in_mac_os_x_leopard</link>
 <description>&lt;p&gt;I&#039;ll have to break sad news to you: /etc/resolv.conf has been made redundant in Mac OS X. The dig and nslookup utilities still read it but most applications use a different mechanism for picking DNS servers when resolving host names. They generally go through Darwin&#039;s resolver library which instead of reading /etc/resolv.conf looks up DNS servers via the SystemConfiguration framework backed by configd. Survival of the fittest, I guess, or, Darwin&#039;s intelligent design.&lt;/p&gt; 

&lt;p&gt;Ok, ok, I&#039;ll stop trying to be funny ... Anyways, this would be all swell if there wasn&#039;t the occasional need for manually specifying DNS servers. For me this need typically arises when I connect to a VPN managed by an operator from hell. After hours and hours of hard work (my fingertips still hurt from all the googling) I present to you a solution:&lt;p&gt;

&lt;p&gt;With the VPN connected, launch scutil with root privileges:&lt;p&gt;

&lt;pre&gt;hannes-mbp:~ Sysop$ sudo scutil
Password:&lt;/pre&gt;

List all network services with DNS configuration:

&lt;pre&gt;&amp;gt; list State:/Network/Service/[^/]+/DNS
  subKey [0] = State:/Network/Service/A3551F2D-62CE-1234-B79A-6EE50CA7AE30/DNS
  subKey [1] = State:/Network/Service/F194302A-846C-4321-9325-6813DAE148F2/DNS&lt;/pre&gt;

Pick one and show its contents.

&lt;pre&gt;&amp;gt; show State:/Network/Service/A3551F2D-62CE-1234-B79A-6EE50CA7AE30/DNS
&amp;lt;dictionary&amp;gt; {
  SupplementalMatchDomains : &amp;lt;array&amp;gt; {
    0 : 
  }
  ServerAddresses : &amp;lt;array&amp;gt; {
    0 : 192.168.1.74
    1 : 217.0.43.81
  }
  SupplementalMatchOrders : &amp;lt;array&amp;gt; {
    0 : 100000
  }
}&lt;/pre&gt;

Ahh, this is the one! So let&#039;s get rid of those pesky servers. Obtain a working copy of the DNS configuration entry. It&#039;s called ... drum roll ... well, obviously: &quot;d&quot; (rolls eyes).

&lt;pre&gt;&amp;gt; d.init
&amp;gt; get State:/Network/Service/A3551F2D-62CE-1234-B79A-6EE50CA7AE30/DNS
&amp;gt; d.show
&amp;lt;dictionary&amp;gt; {
  SupplementalMatchDomains : &amp;lt;array&amp;gt; {
    0 : 
  }
  ServerAddresses : &amp;lt;array&amp;gt; {
    0 : 192.168.1.74
    1 : 217.0.43.81
  }
  SupplementalMatchOrders : &amp;lt;array&amp;gt; {
    0 : 100000
  }
}&lt;/pre&gt;

Reset the ServerAddresses entry to an empty array: 

&lt;pre&gt;&amp;gt; d.add ServerAddresses *
&amp;gt; d.show
&amp;lt;dictionary&amp;gt; {
  ServerAddresses : &amp;lt;array&amp;gt; {
  }
  SupplementalMatchDomains : &amp;lt;array&amp;gt; {
    0 : 
  }
  SupplementalMatchOrders : &amp;lt;array&amp;gt; {
    0 : 100000
  }
}&lt;/pre&gt;

Write the working copy back:

&lt;pre&gt;&amp;gt; set State:/Network/Service/A3551F2D-62CE-1234-B79A-6EE50CA7AE30/DNS&lt;/pre&gt;

Note, that the line

&lt;pre&gt;d.add ServerAddresses *&lt;/pre&gt;

clears the ServerAddresses array, thereby removing all DNS-servers tied to that particular connection (&quot;service&quot; in Apple-talk). Without service-specific DNS servers, Mac OS will fall back to DNS servers from other network services. Not sure how exactly that works. If you want to specify particular DNS servers, use

&lt;pre&gt;d.add ServerAddresses * 10.0.1.2 112.21.44.66&lt;/pre&gt;

&lt;p&gt;By the way, the &quot;*&quot; signifies array values, so it&#039;s not some kind of wild card.&lt;/p&gt;</description>
 <category domain="https://diaryproducts.net/exactly/about/operating_systems/mac_os_x">Mac OS X</category>
 <category domain="https://diaryproducts.net/exactly/for/administrator">Administrator</category>
 <pubDate>Sun, 03 May 2009 20:13:55 +0000</pubDate>
</item>
<item>
 <title>Pimp Da Kitty</title>
 <link>https://diaryproducts.net/about/operating_systems/mac_os_x/pimp_my_leopard</link>
 <description>&lt;p&gt;I have been converted. After having preferred Windows on the desktop for the past 15 years, after six generations of&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;Yet Another Way To Screw Up The Control Panel,&lt;sup&gt;&amp;trade;&lt;/sup&gt;&lt;/p&gt;
I felt the urge to try something else. Something that&lt;br /&gt;
&lt;p style=&quot;text-align: center&quot;&gt;Just Works.&lt;sup&gt;&amp;trade;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Those fifteen years were an interesting ride but for some reason the pride and satisfaction of finding just the right combination of registry settings that would let me mount a Samba share had worn off. I want to spend my time on something creative. Defragmenting the registry, scanning regularly for malware, and trying to find anti-virus software that doesn&#039;t take five minutes to load is fun and all, but how about an operating system that doesn&#039;t need any of that? You guessed right, I have become a Mac user. Enough of the trivialities, in this article I would like to list a handful of very useful Mac OS X applications and utilities I couldn&#039;t live without anymore.&lt;/p&gt;
</description>
 <category domain="https://diaryproducts.net/exactly/about/operating_systems/mac_os_x">Mac OS X</category>
 <pubDate>Sat, 13 Dec 2008 07:46:59 +0000</pubDate>
</item>
</channel>
</rss>
