<?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>Moritz Haarmann's Blog &#187; mac</title>
	<atom:link href="http://momo.brauchtman.net/tag/mac/feed/" rel="self" type="application/rss+xml" />
	<link>http://momo.brauchtman.net</link>
	<description>for the sake of completeness!</description>
	<lastBuildDate>Fri, 27 Aug 2010 14:00:07 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Gravatar Mac Address Book Support Updated for Snow Leopard</title>
		<link>http://momo.brauchtman.net/2009/12/gravatar-address-book-support-updated-for-snow-leopard/</link>
		<comments>http://momo.brauchtman.net/2009/12/gravatar-address-book-support-updated-for-snow-leopard/#comments</comments>
		<pubDate>Thu, 10 Dec 2009 02:48:50 +0000</pubDate>
		<dc:creator>momo</dc:creator>
				<category><![CDATA[tech]]></category>
		<category><![CDATA[improvingtheworld]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[workaround]]></category>

		<guid isPermaLink="false">http://momo.brauchtman.net/?p=444</guid>
		<description><![CDATA[Because the bundle somehow didn&#8217;t work for snow leopard, now it does, and you can get it here. of course . So basically, your mac adressbook is now able to get the gravatars again.. hrhr-]]></description>
			<content:encoded><![CDATA[<p>Because the bundle somehow didn&#8217;t work for snow leopard, now it does, and you can <a href="http://momo.brauchtman.net/wp-content/uploads/2009/12/gravatarize.zip">get it here. </a> of course <img src='http://momo.brauchtman.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> . So basically, your mac adressbook is now able to get the gravatars again.. hrhr-</p>
]]></content:encoded>
			<wfw:commentRss>http://momo.brauchtman.net/2009/12/gravatar-address-book-support-updated-for-snow-leopard/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Missing Link: Update Contact Image in Mac&#8217;s Address Book using Gravatar</title>
		<link>http://momo.brauchtman.net/2009/03/missing-link-update-contact-image-in-macs-address-book-using-gravatar/</link>
		<comments>http://momo.brauchtman.net/2009/03/missing-link-update-contact-image-in-macs-address-book-using-gravatar/#comments</comments>
		<pubDate>Thu, 05 Mar 2009 17:39:59 +0000</pubDate>
		<dc:creator>momo</dc:creator>
				<category><![CDATA[tech]]></category>
		<category><![CDATA[gravatar]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[simpleyeteffective]]></category>

		<guid isPermaLink="false">http://momo.brauchtman.net/?p=319</guid>
		<description><![CDATA[It&#8217;s that simple. just download the bundle, drop it to Library/Address Book Plug-Ins/ and restart Address Book. Once you click on an E-Mail address of one of your contacts, it will update the image using gravatar.com . Have fun. Update There is a version available for Snow Leopard now, just check out the new post.]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s that simple. just download <a href="http://momo.brauchtman.net/wp-content/uploads/2009/03/gravatarizebundle.zip">the bundle</a>, drop it to Library/Address Book Plug-Ins/ and restart Address Book. Once you click on an E-Mail address of one of your contacts, it will update the image using gravatar.com .</p>
<p>Have fun.</p>
<p><strong>Update</strong></p>
<p>There is a version available for Snow Leopard now, just check out the <a href="http://momo.brauchtman.net/2009/12/gravatar-address-book-support-updated-for-snow-leopard/">new post</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://momo.brauchtman.net/2009/03/missing-link-update-contact-image-in-macs-address-book-using-gravatar/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>RIP, Macbook</title>
		<link>http://momo.brauchtman.net/2009/02/rip-macbook/</link>
		<comments>http://momo.brauchtman.net/2009/02/rip-macbook/#comments</comments>
		<pubDate>Mon, 02 Feb 2009 09:14:45 +0000</pubDate>
		<dc:creator>momo</dc:creator>
				<category><![CDATA[useless]]></category>
		<category><![CDATA[antiusability]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[icantbelievethisistrue]]></category>
		<category><![CDATA[mac]]></category>

		<guid isPermaLink="false">http://momo.brauchtman.net/?p=278</guid>
		<description><![CDATA[So this is great news on a monday morning. Just before I started to work my MacBook died. There was nothing I could do for it. The CPU-Fan stopped rotating at about 9:50am. May it rest in peace.]]></description>
			<content:encoded><![CDATA[<p>So this is great news on a monday morning. Just before I started to work my MacBook died. There was nothing I could do for it. The CPU-Fan stopped rotating at about 9:50am. May it rest in peace.</p>
]]></content:encoded>
			<wfw:commentRss>http://momo.brauchtman.net/2009/02/rip-macbook/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sharer, Giver, whatever, Filesharing</title>
		<link>http://momo.brauchtman.net/2009/01/sharer-giver-whatever-filesharing/</link>
		<comments>http://momo.brauchtman.net/2009/01/sharer-giver-whatever-filesharing/#comments</comments>
		<pubDate>Wed, 14 Jan 2009 22:09:31 +0000</pubDate>
		<dc:creator>momo</dc:creator>
				<category><![CDATA[tech]]></category>
		<category><![CDATA[improvingtheworld]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[simpleyeteffective]]></category>
		<category><![CDATA[usability]]></category>

		<guid isPermaLink="false">http://momo.brauchtman.net/?p=242</guid>
		<description><![CDATA[A short note on a previous post where I talked about my project of a simple File-Sharing applications that basically works using drag&#8217;n'drop and some zeroconf to find other peers. I wasn&#8217;t exactly surprised to find something that matches that description pretty well, but here it is, it&#8217;s called giver and should run on any [...]]]></description>
			<content:encoded><![CDATA[<p>A short note on a previous post where I talked about my project of a simple File-Sharing applications that basically works using drag&#8217;n'drop and some zeroconf to find other peers. I wasn&#8217;t exactly surprised to find something that matches that description pretty well, but here it is, it&#8217;s <a href="http://code.google.com/p/giver/">called giver</a> and should run on any platform that has support for some kind of .net/mono framework. I haven&#8217;t tried it yet, but I&#8217;ll sure give it a shot and tell you about it.</p>
<p>I&#8217;m already thinking about dropping the Java-project and instead do a client for the giver-protocol in Cocoa. I would be excited to have someone reporting about the actual use of giver! Moritz.</p>
]]></content:encoded>
			<wfw:commentRss>http://momo.brauchtman.net/2009/01/sharer-giver-whatever-filesharing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Microsoft Songsmith on a MacBook Pro</title>
		<link>http://momo.brauchtman.net/2009/01/microsoft-songsmith-on-a-macbook-pro/</link>
		<comments>http://momo.brauchtman.net/2009/01/microsoft-songsmith-on-a-macbook-pro/#comments</comments>
		<pubDate>Sat, 10 Jan 2009 15:41:31 +0000</pubDate>
		<dc:creator>momo</dc:creator>
				<category><![CDATA[personal]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[icantbelievethisistrue]]></category>
		<category><![CDATA[industry]]></category>
		<category><![CDATA[mac]]></category>

		<guid isPermaLink="false">http://momo.brauchtman.net/?p=201</guid>
		<description><![CDATA[I guess you&#8217;ve already witnessed Microsoft dropping it&#8217;s zero-drug policy, and the first obvious result. The Microsoft Songsmith Spot was certainly created by some kind of PR-genius. They are using a MacBook Pro to actually demo the software in the clip, a good choice, but don&#8217;t you think that it&#8217;s a bit too obvious how [...]]]></description>
			<content:encoded><![CDATA[<p>I guess you&#8217;ve already witnessed Microsoft dropping it&#8217;s zero-drug policy, and the first obvious result. The Microsoft Songsmith Spot was certainly created by some kind of PR-genius. They are using a MacBook Pro to actually demo the software in the clip, a good choice, but don&#8217;t you think that it&#8217;s a bit too obvious how they&#8217;re making fun of themselves? &#8220;Microsoft, so it&#8217;s pretty easy to use, hu?&#8221; should be enough. But it&#8217;s about your opinion, so just watch and learn.</p>
<p><object width="480" height="295" data="http://www.youtube.com/v/dTXG2uKNLIw&amp;hl=de&amp;fs=1" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/dTXG2uKNLIw&amp;hl=de&amp;fs=1" /><param name="allowfullscreen" value="true" /></object></p>
]]></content:encoded>
			<wfw:commentRss>http://momo.brauchtman.net/2009/01/microsoft-songsmith-on-a-macbook-pro/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zeroconf made easy: Bonjour for Java, Part 2, Client Implementation</title>
		<link>http://momo.brauchtman.net/2009/01/zeroconf-made-easy-bonjour-for-java-client-implementation/</link>
		<comments>http://momo.brauchtman.net/2009/01/zeroconf-made-easy-bonjour-for-java-client-implementation/#comments</comments>
		<pubDate>Fri, 09 Jan 2009 08:04:14 +0000</pubDate>
		<dc:creator>momo</dc:creator>
				<category><![CDATA[tech]]></category>
		<category><![CDATA[Add new tag]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[simpleyeteffective]]></category>
		<category><![CDATA[useful]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://momo.brauchtman.net/?p=190</guid>
		<description><![CDATA[I&#8217;ve been writing about the server side implementation aspects of Bonjour for Java a while ago, and I promised to explain the client side, which is a bit more tricky. The reasons therefore is that it makes heavy use of asynchronous callbacks, leaving you no other choice but to implement some interfaces and understand the [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been writing about the<a href="http://momo.brauchtman.net/2008/12/zeroconf-made-easy-using-bonjour-for-java/"> server side implementation aspects of Bonjour for Java </a>a while ago, and I promised to explain the client side, which is a bit more tricky. The reasons therefore is that it makes heavy use of asynchronous callbacks, leaving you no other choice but to implement some interfaces and understand the way things work behind the curtain.<span id="more-190"></span></p>
<p>So what is the client&#8217;s task? In our example it is to find, that is discover, services and make them accessible to our application. Of course, it uses the same mDNSResponder facilites discussed previously. To mention it again, mDNSResponder is, from our point of view, the single instance taking care about all actions required to either register, discover or browse services. And caused by the way it works ( by &#8220;talking&#8221; to the other peers on your network ) it can&#8217;t provide instant answers to requests made, that&#8217;s why asynchronous callbacks are required.</p>
<p>We used that killerapp example, and I&#8217;m going to continue with that, though any other name can of course be used.</p>
<p>I assume you already imported the apple package and read about how to install it if you&#8217;re unable to compile your class file.</p>
<pre lang="JAVA">import com.apple.dnssd.*;</pre>
<p>Before actually starting to putting it all together, let&#8217;s have a look at two interfaces that are important for our work. The one is BrowseListener, which actually defines the callbacks to call when a service is either lost or found.</p>
<pre lang="JAVA">public void serviceFound(DNSSDService browser,
                         int flags,
                         int ifIndex,
                         java.lang.String serviceName,
                         java.lang.String regType,
                         java.lang.String domain)

public void serviceLost(DNSSDService browser,
                        int flags,
                        int ifIndex,
                        java.lang.String serviceName,
                        java.lang.String regType,
                        java.lang.String domain)</pre>
<p>The other interface which is used to provide our application with the data necessary to connect to a discovered service using standard Java Sockets, is ResolveListener. This interface defines only one callback, serviceResolved</p>
<pre lang="JAVA">public void serviceResolved(DNSSDService resolver,
                            int flags,
                            int ifIndex,
                            java.lang.String fullName,
                            java.lang.String hostName,
                            int port,
                            TXTRecord txtRecord)</pre>
<p>which is called whenever Bonjour was apple to resolve a service. Of course, because of the BaseListener interface, operationFailed must be implemented, too. Let&#8217;s do something useful now.</p>
<p>First of all, we have to enable Bonjour and tell it what to call in case it finds something. It&#8217;s best done by having a Class which handles all the discovery stuff. So whatever your class is, just implement the interface BrowseListener, as the ResolveListener callbacks will be implemented using anonymous classes later. For me, the skeleton looks like this:</p>
<pre lang="JAVA">public class Discover implements BrowseListener {
	// the constructor.
	public Discover(){

	}

	public void serviceLost(DNSSDService browser, int flags, int ifIndex,
				String serviceName, String regType, String domain) {
	}

	public void serviceFound(DNSSDService browser, int flags, int ifIndex,
				String serviceName, String regType, String domain) {
	}

        public void operationFailed(DNSSDService arg0, int arg1) {
		// this one is required by BaseListener, which is the parent of all other Listener Interfaces.
	}
}</pre>
<p>Now I&#8217;m going to initialise Bonjour&#8217;s browsing capabilities in the constructor. Take care, It throws an exception if something goes wrong. It&#8217;s up to you what to do with it.</p>
<pre lang="JAVA">	public Discover(){
		try {
			browser = DNSSD.browse("_killerapp._tcp", this);
		} catch (DNSSDException e) {
			// do something fancy here.
		}
	}</pre>
<p>The method browse requires two arguments, the name of the service you are browsing for, and the callback handler, which is the calling object in that case. Bonjour handles the rest for us, and either one of the methods serviceFound or serviceLost gets called accordingly.</p>
<p>Assuming you are lucky and Bonjour finds a service with that name, serviceFound will be called. To resolve the found service to an IP address and a port, you need to call DNSSD.resolve, a method with the following signature</p>
<pre lang="JAVA">public static DNSSDService resolve(int flags,
                                   int ifIndex,
                                   java.lang.String serviceName,
                                   java.lang.String regType,
                                   java.lang.String domain,
                                   ResolveListener listener)
                            throws DNSSDException</pre>
<p>It&#8217;s okay to fill 0 in flags, for further meaning just read the <a href="http://developer.apple.com/documentation/Java/Reference/DNSServiceDiscovery_JavaRef/index.html">Javadoc</a>. Because our serviceFound method is already called with most of the required arguments, it&#8217;s quite easy to implement the resolve process.</p>
<pre lang="JAVA">DNSSD.resolve(0, ifIndex, serviceName, regType, domain, new ResolveListener(){
				public void serviceResolved(DNSSDService resolver, int flags, int ifIndex,
				String fullname, String hostname, int port, TXTRecord txtRecord){
					InetAddress theAddress;
					try {
						theAddress = InetAddress.getByName(hostname);
					} catch (UnknownHostException e) {
						// ouch..
					}
				}

				public void operationFailed(DNSSDService arg0, int arg1) {
					// ouch, again!
				}
			});</pre>
<p>So what&#8217;s happening here is that we create an anonymous class to handle the callbacks, which should look familiar if you&#8217;ve been doing some AWT stuff. Once the resolve process was successful, the serviceResolved method is called, and we resolve the hostname given there to create an InetAddress object filled with all the information we want to know.</p>
<p>And yes, that&#8217;s it. The same applies for the serviceLost method, which has the same signature, and it&#8217;s up to you what to do with that address object from now on! Hope this helped you a bit.</p>
]]></content:encoded>
			<wfw:commentRss>http://momo.brauchtman.net/2009/01/zeroconf-made-easy-bonjour-for-java-client-implementation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The dying MacBook: Early adopters fate.</title>
		<link>http://momo.brauchtman.net/2008/12/the-dying-macbook-early-adopters-fate/</link>
		<comments>http://momo.brauchtman.net/2008/12/the-dying-macbook-early-adopters-fate/#comments</comments>
		<pubDate>Fri, 19 Dec 2008 01:37:07 +0000</pubDate>
		<dc:creator>momo</dc:creator>
				<category><![CDATA[tech]]></category>
		<category><![CDATA[useless]]></category>
		<category><![CDATA[antiusability]]></category>
		<category><![CDATA[experience]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[stupid]]></category>

		<guid isPermaLink="false">http://momo.brauchtman.net/?p=75</guid>
		<description><![CDATA[So it is. I have a MacBook, the beautiful ( at least it used to be ) white, 13&#8243; screen, first model. But as with any living being, death is certain and signs for its arrival are mostly undeniable. Would my MacBook be a human patient, he would be approaching multi-organ failure. But let&#8217;s step [...]]]></description>
			<content:encoded><![CDATA[<p>So it is. I have a MacBook, the beautiful ( at least it used to be ) white, 13&#8243; screen, first model. But as with any living being, death is certain and signs for its arrival are mostly undeniable. Would my MacBook be a human patient, he would be approaching multi-organ failure. But let&#8217;s step over to the comprehensive list of failures.</p>
<p>Bluetooth seems to work only when Moon and some other planets are in a constellation allowing certain, yet to be discovered, microwaves to be sent to the outer world, thus enabling bluetooth. I can assure you that this planetary constellation is indeed very, very rare and so is my bluetooth.</p>
<p>I wouldn&#8217;t bother just because of a broken bluetooth device, but fun is that one of the two USB-Ports seems to have been infected by the same disease little Bluetooth already has. Random failures. Just random.</p>
<p>There are days when I just don&#8217;t care about these little details. Its the days when the display starts to flicker. I&#8217;m not the only one ( the above reported issues are also well-known ), as you can see <a href="http://www.youtube.com/watch?v=Ww6acstHryc">here</a>. I&#8217;m glad to have a external display allowing me to take back control &#8211; and actually see it!</p>
<p>That&#8217;s it? Nope. Battery life is over, okay, no comment here, just normal. But case life too? Actually its broken in two places, and it appears to me to be just lousy. really. I&#8217;m quite confident though that it won&#8217;t happen with a new Alu MacBook, which I&#8217;m going to buy as soon as I find out about my fathers credit card number. Any hints welcome.</p>
<p>Good night.</p>
<p>Update: After I posted this here, my ComboDrive began making strange noises. And hasn&#8217;t stopped doing that since. Hmlz.</p>
]]></content:encoded>
			<wfw:commentRss>http://momo.brauchtman.net/2008/12/the-dying-macbook-early-adopters-fate/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->