<?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>Peter Krantz &#187; General</title>
	<atom:link href="http://www.peterkrantz.com/category/general/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.peterkrantz.com</link>
	<description></description>
	<lastBuildDate>Sat, 04 Feb 2012 09:57:17 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>A lightweight semantic interoperability framework for countries and large organizations (and small ones)</title>
		<link>http://www.peterkrantz.com/2010/semantic-interoperability/</link>
		<comments>http://www.peterkrantz.com/2010/semantic-interoperability/#comments</comments>
		<pubDate>Wed, 15 Dec 2010 11:17:52 +0000</pubDate>
		<dc:creator>Pete</dc:creator>
				<category><![CDATA[e-Gov]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[Standards]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[interoperability]]></category>
		<category><![CDATA[ontology]]></category>
		<category><![CDATA[OWL]]></category>
		<category><![CDATA[RDF]]></category>
		<category><![CDATA[SAWSDL]]></category>
		<category><![CDATA[semantics]]></category>
		<category><![CDATA[W3C]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.peterkrantz.com/?p=356</guid>
		<description><![CDATA[This post is a summary of some ideas for a lightweight semantic interoperability framework  It is mainly a composition of existing open standards to form a framework for organisations to be able to ensure that semantic and technical descriptions stay connected over time. The idea is to provide a framework that allows for an increasing semantic interoperability emerging over time without having a large centralized organisation defining vocabula]]></description>
			<content:encoded><![CDATA[<p>This post is a summary of some ideas for a lightweight semantic interoperability framework  It is mainly a composition of existing <a href="http://www.fsfe.org/projects/os/def.en.html">open standards</a> to form a framework for organisations to be able to ensure that semantic and technical descriptions stay connected over time. The idea is to provide a framework that allows for an increasing semantic interoperability emerging over time without having a large centralized organisation defining vocabularies. <span id="more-356"></span>Main points:</p>
<ol>
<li>The benefits appear when a vocabulary is used.</li>
<li>An important factor is how a vocabulary and its parts can be published, discovered and referenced.</li>
<li>There needs to be one and only one vocabulary artifact.</li>
<li>The vocabulary artifact must be machine processable to allow aggregation and automatic generation of other artifacts.</li>
</ol>
<h2>Background</h2>
<p>The need for interoperability arise in scenarios with many contributing actors. In the old days this was solved by hiring a (large) consulting organization that (hopefully) had experience from glueing together many products from their vast product portfolio. Everyone involved was happy if it worked. Being able to swap out a part of this system or connect it to a third party that had a different technical platform was considered a risk.</p>
<p>Today more work is being done but in my experience there are still issues in keeping it all together. Domain experts create terminology in Word documents and architects draw UML class diagrams. They all talk about the domain but each type of artifact does not describe the domain sufficiently. In a different room developers merge domain concepts with coding practices to form software that may express fragments of a domain.</p>
<p>Little work is done to define vocabularies in a way that worked both for software developers and for domain experts. Typically you would find a Word document with a flat terminology that was ignored by the software developers, or, you could find class diagrams in UML or software documentation that was impossible for domain experts to understand. And when you look at the code or interfaces of the system there are no references to the correct item in a vocabulary.</p>
<p>How can we make them work together?</p>
<p><a href="http://www.peterkrantz.com/wp-content/uploads/2010/08/interop2.jpg"><img class="alignnone size-full wp-image-366" title="interoperability-2" src="http://www.peterkrantz.com/wp-content/uploads/2010/08/interop2.jpg" alt="Interoperability. What do we mean by plant. A type of factory or a flower?" width="550" height="235" /></a></p>
<h2>Requirements and challenges</h2>
<p>I like to think of semantic interoperability as <em>a state where the same cognitive processes kicks in for two persons studying a specific artefact from the doma</em><em>in they are working in</em>.</p>
<p>In order to work with this in a structured way we need to simplify it. One way to look at interoperability can be found in the <a href="http://ec.europa.eu/idabc/en/document/7728">draft of the European Interoperability Framework version 2</a>. It introduces four interoperability levels. If we remove the European cross border services context they can be described in more general terms:</p>
<ol>
<li><em>Technical interoperability</em>: issues involved in linking computer systems and services together (e.g. transport and serialization of data).</li>
<li><em>Semantic interoperability</em>: the meaning of information specified in a way understood by all parties (e.g. definitions, relations and structure of terms used to describe data).</li>
<li><em>Organizational interoperability</em>: coordination of processes in the context where data is used/transformed. (e.g. shared definitions of the roles, responsibilities and interactions of/between participants).</li>
<li><em>Legal interoperability</em>: shared interpretation and understanding of laws regulating information exchange and cooperation (e.g. can we transfer information about people? What about privacy?).</li>
</ol>
<p>There are other models that could be used to discuss levels of interoperability (e.g. <a href="http://en.wikipedia.org/wiki/Conceptual_interoperability">LCIM &#8211; Levels of Conceptual Interoperability Model</a>) but let&#8217;s stick with the EIF 2 model above.</p>
<p>If you have a scenario with only two parties everything is simple. You could just do the minimum amount of work to make sure systems talk to each other and that people share a common image of the various levels of interoperability. Enabling more parties to participate requires more work though.</p>
<p>If you have a scenario with many parties (where some may not yet exist) you have to create a framework describing how interoperability should work by harmonizing a set of solutions at each level of interoperability. In a dictatorship this is easy. Just evaluate a few solutions, choose one and make everyone use it. In other contexts it is more complicated.</p>
<p>If we consider the EIF 2 model above as a set of requirements we should also make sure that the solutions we propose:</p>
<ol>
<li><em>scale down</em>: If the parties (organizations, departments etc) vary greatly in size (as they will if the number is sufficiently big) some may consider that the solution you propose in a framework is unnecessary complex. They are right. In order to maximize the number of parties and processes that can participate in an interoperability scenario you will have to <a href="http://www.welton.it/articles/scalable_systems">make sure the proposed solutions scale down</a>.</li>
<li><em>are technology neutral</em>: Given a large number of organizations you will find almost every technology platform you can imagine. There will also be a number of ways to send and receive information. Some like to force a specific set of transport mechanisms as part of a interoperability framework but this will quickly put you on a path where you can&#8217;t make use of new standards and technologies. Forcing participating organizations to use a specific tool or platform will fail.</li>
<li><em>give a reasonable amount of flexibility</em>: This may require the framework to contain partly overlapping standards.</li>
<li><em>facilitate an emerging semantic interoperability</em>: The idea of having a central organization defining everything only works in a dictatorship. We should enable the decentralisation of participating in vocabulary work.</li>
<li><em>are discoverable and referencable</em>: If the artefacts that are created are difficult to find for a newcomer you can give up now. By lowering the threshold to participate more parties can be involved and more information can be reused.</li>
</ol>
<p><strong>This proposal is aimed at semantic interoperability only.</strong></p>
<h2>A lightweight semantic interoperability framework proposal</h2>
<h3>1. The Web Ontology Language (OWL) is used to express vocabularies</h3>
<p>The primary reason for selecting <a href="http://www.w3.org/TR/owl2-overview/">OWL</a> is not the features it has to express domain concepts but rather the possibilities of publishing it and referencing it on the web that come bundled with it. Using the web as a publishing platform enables us to make use of already existing standards for referencing a vocabulary and its parts.</p>
<p>Although plagued by research projects of poor usability and lack of longevity there are several tools to create vocabularies in OWL. The framework does not specify the process for creating a vocabulary as that may hinder small organizations form participating.</p>
<h3>2. Vocabularies are published properly on the web</h3>
<p>Putting an OWL vocabulary on the web means that it can easily be discovered, referenced and transformed. Not only will it help your own organization but it will lower the threshold for others who want to use parts of it in their own work. As soon as that happens you have the first step towards semantic interoperability.</p>
<p>By &#8220;published properly&#8221; I mean that you should choose your URI for the vocabulary wisely as it will be the reference string used in software interfaces and other artifacts down the road. Many get web publishing wrong by scrapping one of the best features: long term referenceability, as they dump information tightly coupled to the publishing tool they are using. When you change the tool (e.g. a content management system) you may break references for everyone else. Don&#8217;t do that.</p>
<p><img class="aligncenter size-full wp-image-391" title="artifacts" src="http://www.peterkrantz.com/wp-content/uploads/2010/12/artifacts.gif" alt="An OWL model automatically transformed to HTML and a class diagram." width="524" height="192" /></p>
<p>To make the vocabulary human readable (nobody wants to read OWL/RDF-schema) generate at least an HTML-version of the vocabulary for users pointing their browser to the URL of the vocabulary and a class hierarchy overview to help users understand relations between things.</p>
<h3>3. Use a standardized way of referencing vocabularies in other artifacts</h3>
<p>Although OWL may seem to be only for semantic web scenarios it can be used in other areas. By standardizing how references from WSDL and XML schema are made it is possible to keep an unbroken chain of references. <a href="http://www.w3.org/TR/sawsdl/">SAWSDL</a> provides a mechanism to reference e.g. a class in the vocabulary. This makes it possible for developers to refer to the vocabulary in a consistent way from XML schemas and WSDL files and provides a way to keep the vocabulary closely connected to API implementations.</p>
<p>One important area missing is how to point to vocabularies from code. Code is a design artifact for a system and as such it is important that it is possible to keep an unbroken reference chain to it too. But we&#8217;ll leave that open for now.</p>
<h3>4. Aggregate all vocabularies on a central website</h3>
<p>Although vocabularies can and should be published under a URI in control by the authoring organization they should be aggregated on a central searchable website. This is easy as they are machine readable and will serve two purposes:</p>
<ol>
<li>It helps people <em>discover other vocabularies</em> before creating their own. This is an important step in creating an environment for an emerging semantic interoperability.</li>
<li>The aggregated material will become a <em>tool to find areas where harmonization efforts should be focused</em>. By querying the aggregated information it is possible to find vocabularies that define similar things. Multiple classes called &#8220;Person&#8221;? Get going.</li>
</ol>
<h3>5. Express provenance in the vocabulary</h3>
<p>Provenance provides a foundation for assessing authenticity and enabling trust. By standardizing information about <a href="http://www.w3.org/2005/Incubator/prov/XGR-prov-20101214/#A_Roadmap_for_Provenance_on_the_Web">provenance</a> you also facilitate interaction between parties involved in the domain.</p>
<h2>What do you think?</h2>
<p>I believe this could be a lightweight approach to work with semantic interoperability in a way that scales (both up and down) and that provides for an emerging semantic interoperability over time. I guess it could work for government scenarios on country scale as well as for a small organization.</p>
<p>The only thing I miss is a standardized way of referencing a vocabulary from code.</p>
<p>Please leave your feedback.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.peterkrantz.com/2010/semantic-interoperability/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Implement open data for EU institutions</title>
		<link>http://www.peterkrantz.com/2010/eu-institution-psi/</link>
		<comments>http://www.peterkrantz.com/2010/eu-institution-psi/#comments</comments>
		<pubDate>Mon, 12 Jul 2010 14:42:47 +0000</pubDate>
		<dc:creator>Pete</dc:creator>
				<category><![CDATA[e-Gov]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Open data]]></category>
		<category><![CDATA[egov]]></category>
		<category><![CDATA[gov2.0]]></category>
		<category><![CDATA[open data]]></category>
		<category><![CDATA[psi]]></category>
		<category><![CDATA[transparency]]></category>

		<guid isPermaLink="false">http://www.peterkrantz.com/?p=352</guid>
		<description><![CDATA[Jonathan Gray of the Open Knowledge Foundation participated in a conference of the Communia project, a European ...]]></description>
			<content:encoded><![CDATA[<p>Jonathan Gray of the Open Knowledge Foundation participated in a conference of the <a href="http://www.communia-project.eu/">Communia project</a>, a European thematic network on the digital public domain. In a great post about the meeting at the OKFN blog, <a href="http://blog.okfn.org/2010/07/08/opening-up-european-public-sector-information-two-recommendations/">he recommends two improvements to the current PSI work</a>; 1: Broaden the scope of the PSI Directive to include publicly funded cultural heritage organisations and 2: Broaden the evidence base for opening up PSI.<span id="more-352"></span></p>
<h2>A third recommendation</h2>
<p>An important value of public sector information is the increased transparency in government decision making. A <a href="http://en.wikipedia.org/wiki/Directive_%28European_Union%29">European Union directive</a> only affects member states and not EU institutions. We are therefore at risk of missing out on increased transparency in EU institutions that the PSI directive may bring to governments in the member states. Also, government <a href="http://ww2.unhabitat.org/cdrom/TRANSPARENCY/html/transpc.html">transparency is often considered to be a contributing factor in reducing corruption</a>.</p>
<p><strong>Therefore, it would be great if there was a plan, similar to the PSI directive, that made sure that EU institutions also started providing machine readable data in order to increase transparency and reduce the risk of corruption.</strong></p>
<p>Currently, it seems to be up to each institution to do what they want. Maybe that is why the <a href="http://publications.europa.eu/index_en.htm">Publications Office of the European Union</a> decided to charge   for access to electronic versions of the EUR-Lex database (that contains the directives and other legal acts). This move makes it difficult for new actors in the legal information industry to include EU data in their products which leads to reduced competition.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.peterkrantz.com/2010/eu-institution-psi/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Joining the Swedish eGovernment Delegation</title>
		<link>http://www.peterkrantz.com/2009/joining-the-swedish-egovernment-delegation/</link>
		<comments>http://www.peterkrantz.com/2009/joining-the-swedish-egovernment-delegation/#comments</comments>
		<pubDate>Sat, 21 Nov 2009 11:14:43 +0000</pubDate>
		<dc:creator>Pete</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.peterkrantz.com/2009/joining-the-swedish-egovernment-delegation/</guid>
		<description><![CDATA[A while ago I was offered a position with the Swedish eGovernment Delegation. I will be working ...]]></description>
			<content:encoded><![CDATA[<p>A while ago I was offered a position with the <a href="http://en.edelegationen.se/">Swedish eGovernment Delegation</a>. </p>
<p>I will be working with IT standardisation issues and the next revision of guidelines for public websites.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.peterkrantz.com/2009/joining-the-swedish-egovernment-delegation/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Solving Project Euler Problems With Ioke</title>
		<link>http://www.peterkrantz.com/2009/project-euler-in-ioke/</link>
		<comments>http://www.peterkrantz.com/2009/project-euler-in-ioke/#comments</comments>
		<pubDate>Sat, 03 Jan 2009 18:26:10 +0000</pubDate>
		<dc:creator>Pete</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Ioke]]></category>
		<category><![CDATA[euler]]></category>
		<category><![CDATA[math]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.peterkrantz.com/?p=256</guid>
		<description><![CDATA[For those of you that have been following Ola Bini's work on <a href="http://ioke.org/">Ioke</a>, the dynamic language for the JVM, I am happy to report that the current release 0.1.1 is usable enough to solve <a href="http://projecteuler.net/">Project Euler</a> problems with. I wanted to learn more about Ioke and the best way to learn a new language is to use it on your own. So, here is some example Ioke code for some of the simpler Project Euler problems.]]></description>
			<content:encoded><![CDATA[<p>For those of you that have been following Ola Bini&#8217;s work on <a href="http://ioke.org/">Ioke</a>, the dynamic language for the JVM, I am happy to report that the current release 0.1.1 is usable enough to solve <a href="http://projecteuler.net/">Project Euler</a> problems with. I wanted to learn more about Ioke and the best way to learn a new language is to use it on your own. So, here is some example Ioke code for some of the simpler Project Euler problems.<span id="more-256"></span></p>
<h2>Problem 1</h2>
<p>If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23. Find the sum of all the multiples of 3 or 5 below 1000.</p>
<p>Brute force version below.</p>
<pre class="brush: jscript; title: ; notranslate">
n = 1
sum = 0
while(n &lt; 1000,
      if(n % 3 == 0 or n % 5 == 0, sum += n)
      n++
)
sum println
</pre>
<p>Or, as a one-liner after a suggestion from Ola:</p>
<p>(1..999) select(n, n % 3 == 0 or n % 5 == 0) fold(+) println</p>
<h2>Problem 2</h2>
<p>Each new term in the Fibonacci sequence is generated by adding the previous two terms. By starting with 1 and 2, the first 10 terms will be: 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, &#8230; Find the sum of all the even-valued terms in the sequence which do not exceed four million.</p>
<pre class="brush: plain; title: ; notranslate">
sum = 0
fibs = [0, 1]
current_fib = 0
while(current_fib &lt; 4000000,
    current_fib = fibs[0] + fibs[1]
    if(current_fib % 2 == 0, sum += current_fib)
    fibs[0] = fibs[1]
    fibs[1] = current_fib
)
sum println
</pre>
<h2>Problem 3</h2>
<p>The prime factors of 13195 are 5, 7, 13 and 29. What is the largest prime factor of the number 600851475143?</p>
<p>Using brute force for this one. Faster and more elegant would have been the Rho algorithm.</p>
<pre class="brush: jscript; title: ; notranslate">
start = 600851475143
num = start
factor = 2

while(factor * factor &lt;= num,
    if(num % factor == 0,
        factor println
        num = num / factor,
        factor++
    )
)

if(num != 1, num println)
</pre>
<h2>Problem 5</h2>
<p>2520 is the smallest number that can be divided by each of the numbers  from 1 to 10 without any remainder. What is the smallest number that is evenly divisible by all of the numbers from 1 to 20?</p>
<p>First, as the numbers 1 to 10 are factors in the numbers 11 to 20 we only need to check divisibility for the the latter. Starting of by setting up methods for greatest common divisor and least common multiple. Brute forcing this by looping over an incremented number will not work in the current version of Ioke (takes a couple of hours). Brute forcing it in Ruby took a couple of seconds.</p>
<pre class="brush: jscript; title: ; notranslate">
gcd = method(a, b,
    if(b == 0, a,
        gcd(b, a % b)
    )
)

lcm = method(a, b,
    (a / gcd(a, b)) * b
)

(11..20) inject(number, n, lcm(number, n)) println
</pre>
<h2>Problem 18</h2>
<p>Find the maximum total from top to bottom of the triangle below. This solution also works for problem 67 (a much bigger triangle).</p>
<p>By moving from bottom to top, calculating each cell&#8217;s maximum sum and replacing the value with it we&#8217;ll end up with the total in the first cell in the triangle.</p>
<pre class="brush: jscript; title: ; notranslate">
triangle = [
[75],
[95, 64],
[17, 47, 82],
[18, 35, 87, 10],
[20, 04, 82, 47, 65],
[19, 01, 23, 75, 03, 34],
[88, 02, 77, 73, 07, 63, 67],
[99, 65, 04, 28, 06, 16, 70, 92],
[41, 41, 26, 56, 83, 40, 80, 70, 33],
[41, 48, 72, 33, 47, 32, 37, 16, 94, 29],
[53, 71, 44, 65, 25, 43, 91, 52, 97, 51, 14],
[70, 11, 33, 28, 77, 73, 17, 78, 39, 68, 17, 57],
[91, 71, 52, 38, 17, 14, 91, 43, 58, 50, 27, 29, 48],
[63, 66, 04, 68, 89, 53, 67, 30, 73, 16, 69, 87, 40, 31],
[04, 62, 98, 27, 23, 09, 70, 98, 73, 93, 38, 53, 60, 04, 23],
]

;; We replace cells from the bottom up by finding the max sum for each
;; position in the triangle.

current_row = triangle length - 2

while(current_row &gt; -1,
    pos = 0
    while(pos &lt; triangle[current_row] length,
        triangle[current_row][pos] = triangle[current_row][pos] + \
        ([triangle[current_row + 1][pos], triangle[current_row + 1][pos + 1]] sort)[1]
        pos++
    )

    current_row = current_row - 1
)

triangle[0][0] println
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.peterkrantz.com/2009/project-euler-in-ioke/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Building your own Twitter client with Fluid and jQuery</title>
		<link>http://www.peterkrantz.com/2008/twitter-client-with-fluid-and-jquery/</link>
		<comments>http://www.peterkrantz.com/2008/twitter-client-with-fluid-and-jquery/#comments</comments>
		<pubDate>Thu, 31 Jul 2008 23:50:28 +0000</pubDate>
		<dc:creator>Pete</dc:creator>
				<category><![CDATA[Applications]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Markup]]></category>
		<category><![CDATA[Usability]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://www.peterkrantz.com/?p=169</guid>
		<description><![CDATA[Like many before me, I was searching (unsuccessfully) for a decent twitter client. There are many, but ...]]></description>
			<content:encoded><![CDATA[<p>Like many before me, I was searching (unsuccessfully) for a decent twitter client. There are many, but most seem to be ad sponsored or based on a rather hefty framework like AIR (which by now, I guess, has been <a href="http://diveintomark.org/archives/2008/07/04/adobe-9">silently installed on my computer anyhow</a>).<span id="more-169"></span></p>
<p><strong>Update:</strong> This project is now deprecated and Twitter has removed basic authentication.</p>
<p>Custom apps have major implications for usability so I decided to roll my own. I wanted to try out <a href="http://www.fluidapp.com/">Fluid</a>, the <a href="http://labs.mozilla.com/2007/10/prism/">Prism</a>-like app to contain web apps in their own process/window, to see if it is possible to build a complete open source ad-free twitter client in a single web page only using javascript and HTML.</p>
<p>So, I <a href="http://www.cuil.com/search?q=jquery%20twitter%20plugin&amp;sl=long">cuiled</a> for a <a href="http://jquery.com/">jQuery</a> twitter plugin but had to <a href="http://www.google.se/search?q=jquery+twitter+plugin">google</a> it to find it. Some minor modifications to the code by the fine folks at <a href="http://tweet.seaofclouds.com/">SeaOfClouds</a> and adding a method to post new status messages gave this native-looking OS X twitter client (HUD-style to the left, default style to the right and HUD avatars style below):</p>
<p><img style="float: left;" src="http://www.peterkrantz.com/wp-content/uploads/2008/10/twoot-hud.png" alt="Twoot in HUD style" /></p>
<p><img src="http://www.peterkrantz.com/wp-content/uploads/2008/08/screenshot.gif" alt="Custom twitter client with Fluid and javascript" /></p>
<p><img src="http://www.peterkrantz.com/wp-content/uploads/2008/10/twoot-hud-black-avatars.jpg" alt="Twoot with avatars" /></p>
<p>Thank&#8217;s to the twitter json api it was trivial to query my own friend feed and display it in Safari. Then, I used Fluid to create a self contained OSX app that displays my static HTML page. Googling a <a href="http://www.iconarchive.com/show/dragon-soft-icons-by-artua/User-icon.html">nice application icon</a> makes it much better-looking in the taskbar. I decided to call it &#8220;Twoot&#8221;. Twoot consumes little memory and plays nice with embedded URLs (they open in a new Firefox tab).</p>
<p>Unfortunately, Fluid does not allow you to distribute the created app so you will have to roll your own by:</p>
<ol>
<li>Download and install <a href="http://fluidapp.com/">Fluid</a>.</li>
<li>Create a folder called &#8220;twoot&#8221; in your home directory.</li>
<li>Download the <a href="http://github.com/peterk/twoot/tree/master">twoot html, js and css files from github</a> and place in the twoot folder.</li>
<li><del>Edit twoot.js and set your twitter username and password.</del> (Enter credentials in the basic auth form when launching app the first time).</li>
<li>Open Fluid and create a new app by pointing to the twoot.htm file (e.g. file:///users/you/twoot/twoot.htm) and set a nice icon.</li>
<li>Save the app as &#8220;Twoot&#8221;.</li>
<li>Your new twitter client is ready! Run it and resize as required, set the window to floating, kill tabs etc. Change the twoot.css and html file to customize it further.</li>
</ol>
<p><strong>Simple API:s are wonderful for usability!</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.peterkrantz.com/2008/twitter-client-with-fluid-and-jquery/feed/</wfw:commentRss>
		<slash:comments>55</slash:comments>
		</item>
		<item>
		<title>Reducing distractions, increasing productivity</title>
		<link>http://www.peterkrantz.com/2008/reducing-distractions/</link>
		<comments>http://www.peterkrantz.com/2008/reducing-distractions/#comments</comments>
		<pubDate>Fri, 11 Jul 2008 21:43:27 +0000</pubDate>
		<dc:creator>Pete</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Methodology]]></category>
		<category><![CDATA[Usability]]></category>

		<guid isPermaLink="false">http://www.peterkrantz.com/?p=163</guid>
		<description><![CDATA[I spend a lot of time in front of my computer every day. I discovered that over time, I have added so much attention-stealing stuff to my main work environment that I feel constantly interrupted. You get growl notifications, tweets, new email sounds, new email icons, RSS feed notifications and IM alerts. Time to reduce the attention-stealing clutter!]]></description>
			<content:encoded><![CDATA[<p>I have been trying to reduce distractions in my computing environment lately. Apparently, <a href="http://www.thenewatlantis.com/publications/the-myth-of-multitasking">our brains aren&#8217;t wired properly for task switching</a>:<span id="more-163"></span></p>
<blockquote><p>&#8230;research has also found that multitasking contributes to the release of stress hormones and adrenaline, which can cause long-term health problems if not controlled, and contributes to the loss of short-term memory.</p></blockquote>
<p>I spend a lot of time in front of my computer every day. I discovered that over time, I have added so much attention-stealing stuff to my main work environment that I feel constantly interrupted. You get growl notifications, tweets, new email sounds, new email icons, RSS feed notifications and IM alerts. When you are reading stuff on the web you are constantly bugged by the <a href="http://gizmodo.com/gadgets/gadgets/the-latest-in-advertising-technology-166598.php">latest in advertising technology</a>.</p>
<p>So, starting a couple of weeks ago I decided to remove attention-stealing stuff from my work environment. A short list so far:</p>
<ol>
<li> Disabling Growl notifications for everything but really important stuff. <em>Done!</em></li>
<li>Turning off new email notfications for Outlook (on my Windows computer at work). <em>Done!</em></li>
<li>Reduced ads in internet content by installing <a href="http://adblockplus.org/en/">Adblock plus</a> in FF3. <em>Done!</em></li>
<li><span style="text-decoration: line-through;">Removed MailPlane icon from taskbar</span>. Set &#8220;Do not disturb&#8221; mode in MailPlane. <em>Done!</em></li>
<li>Turning off IM for long periods of time during the day. <em>Done!</em></li>
<li>Scheduling RSS reading to specific time slots during the day. <em>Hard!</em></li>
<li>Turning off notification sounds in Windows. <em>Done!</em></li>
<li>Hiding the windows taskbar to get rid of spinning mini-icons in the right-hand corner. <em>Done!</em></li>
<li>Turning off yellow alert popups from stuff in the Windows taskbar (like &#8220;A network cable was disconnected&#8221; &#8211; who the hell decided that that was a brilliant idea!?). <em>Not sure how yet.</em></li>
<li>Creatign a consistent editing environment for blogs and wikis with the <a href="http://universaleditbutton.org/Universal_Edit_Button">Universal Edit Button</a>. Done when they&#8217;ve fixed the Delicious extension incompatibility.</li>
</ol>
<p>I am feeling a lot more focussed already. The biggest improvement was from turning of new email notifications in Outlook at work.  I guess the experience is similar to what people are getting from the <a href="http://www.xpday.net/Xpday2007/session/PomodoroTechnique.html">pomodoro technique</a>.</p>
<p>The next step is to reduce clutter in my blogs to stop annoying other people. Mark Pilgrim gave <a href="http://diveintomark.org/archives/2008/06/21/minimalism">some interesting tips in a blog post</a> a while ago and I have implemented some of them already. Who the hell needs a visible RSS link (or RSS for that matter, now that we have <a href="http://en.wikipedia.org/wiki/Atom_(standard)">Atom</a>)? I am thinking about removing the whole category list as well. Do people ever click items in the category list?</p>
<p>It would be great if all apps could share a standard API to set a &#8220;do not disturb mode&#8221; toggable via a keyboard shortcut or a small timer app that allowed you to schedule this mode throughout the workday.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.peterkrantz.com/2008/reducing-distractions/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Beta testing the Ballmer Tee</title>
		<link>http://www.peterkrantz.com/2008/ballmer-tee-v/</link>
		<comments>http://www.peterkrantz.com/2008/ballmer-tee-v/#comments</comments>
		<pubDate>Wed, 28 May 2008 16:06:19 +0000</pubDate>
		<dc:creator>Pete</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Microsoft]]></category>

		<guid isPermaLink="false">http://www.peterkrantz.com/?p=159</guid>
		<description><![CDATA[My son has the dubious pleasure of being the primary beta tester of T-shirt messages. This time ...]]></description>
			<content:encoded><![CDATA[<p>My son has the dubious pleasure of being the primary beta tester of T-shirt messages. This time it is the first draft of the model that will be called &#8220;Ballmer&#8221;. Turned out pretty OK&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.peterkrantz.com/2008/ballmer-tee-v/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Dear lazyweb, please pimp our balcony</title>
		<link>http://www.peterkrantz.com/2008/pimp-our-balcony/</link>
		<comments>http://www.peterkrantz.com/2008/pimp-our-balcony/#comments</comments>
		<pubDate>Sun, 20 Apr 2008 17:45:07 +0000</pubDate>
		<dc:creator>Pete</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.peterkrantz.com/?p=148</guid>
		<description><![CDATA[Spring is in the air and it is time to start using the balcony. Currently it is ...]]></description>
			<content:encoded><![CDATA[<p>Spring is in the air and it is time to start using the balcony. Currently it is in a state of decay and mainly used to store old furniture. I am out of ideas what to make of it. Can you help? Measurements below.</p>
<p><img class="aligncenter size-full wp-image-149" title="balcony" src="http://www.peterkrantz.com/wp-content/uploads/2008/04/balcony.gif" alt="balcony" width="500" height="261" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.peterkrantz.com/2008/pimp-our-balcony/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The day the Routers Died&#8230;</title>
		<link>http://www.peterkrantz.com/2008/the-day-the-routers-died/</link>
		<comments>http://www.peterkrantz.com/2008/the-day-the-routers-died/#comments</comments>
		<pubDate>Thu, 31 Jan 2008 21:21:57 +0000</pubDate>
		<dc:creator>Pete</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Music]]></category>

		<guid isPermaLink="false">http://www.peterkrantz.com/2008/the-day-the-routers-died/</guid>
		<description><![CDATA[This pretty much speaks for itself. If I am not mistaken our own packet pro <a href="http://stupid.domain.name/">Patrik Fälström</a> is visible in the audience at the end of the clip.]]></description>
			<content:encoded><![CDATA[<p>This pretty much speaks for itself. If I am not mistaken our own packet pro <a href="http://stupid.domain.name/">Patrik Fältström</a> is visible in the audience at the end of the clip.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.peterkrantz.com/2008/the-day-the-routers-died/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Intricacies of PHP compared to Ruby</title>
		<link>http://www.peterkrantz.com/2008/php-for-beginners/</link>
		<comments>http://www.peterkrantz.com/2008/php-for-beginners/#comments</comments>
		<pubDate>Tue, 01 Jan 2008 09:25:19 +0000</pubDate>
		<dc:creator>Pete</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.peterkrantz.com/2008/php-for-beginners/</guid>
		<description><![CDATA[Via Tim Bray&#8217;s blog I found zestyping&#8217;s &#8220;Why PHP should never be taught&#8221;. In it he provides ...]]></description>
			<content:encoded><![CDATA[<p>Via <a href="http://www.tbray.org/ongoing/When/200x/2007/12/31/Year-Sweep-Tech">Tim Bray&#8217;s blog</a> I found <a href="http://zestyping.livejournal.com/124503.html?thread=690519">zestyping&#8217;s &#8220;Why PHP should never be taught&#8221;</a>. In it he provides some interesting PHP code that will be difficult for beginners to understand.<span id="more-127"></span></p>
<pre class="brush: php; title: ; notranslate">$a = 0;
$b = &quot;eggs&quot;;
$c = &quot;spam&quot;;</pre>
<p>yields:</p>
<pre class="brush: ruby; title: ; notranslate">
a == b
b != c
a == c
a == d
b != d
c != d
</pre>
<p>(Please note that d hasn&#8217;t been defined). In the comments, people freak out and tell him that this behaviour is defined in the documentation. I guess that makes it even worse.</p>
<p>Trying the same thing in Ruby:</p>
<pre class="brush: ruby; title: ; notranslate">
a = 0
b = &quot;eggs&quot;
c = &quot;spam&quot;

a == b
=&gt; false

b == c
=&gt; false

a == c
=&gt; false

a == d
NameError: undefined local variable or method 'd' for main:Object from (irb):7
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.peterkrantz.com/2008/php-for-beginners/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Re-enacting Video Transition Effects</title>
		<link>http://www.peterkrantz.com/2007/video-transition-effects/</link>
		<comments>http://www.peterkrantz.com/2007/video-transition-effects/#comments</comments>
		<pubDate>Fri, 31 Aug 2007 08:48:43 +0000</pubDate>
		<dc:creator>Pete</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Trends]]></category>
		<category><![CDATA[Visualization]]></category>

		<guid isPermaLink="false">http://www.peterkrantz.com/2007/video-transition-effects/</guid>
		<description><![CDATA[Please note the video progress bar. Via Jim Carlberg&#8217;s Finstilt.se.]]></description>
			<content:encoded><![CDATA[<p>Please note the video progress bar. Via <a href="http://www.finstilt.se/2007/08/16/trampolineffekter/">Jim Carlberg&#8217;s Finstilt.se</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.peterkrantz.com/2007/video-transition-effects/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Content-aware Image Resizing</title>
		<link>http://www.peterkrantz.com/2007/image-resizing/</link>
		<comments>http://www.peterkrantz.com/2007/image-resizing/#comments</comments>
		<pubDate>Wed, 22 Aug 2007 06:43:32 +0000</pubDate>
		<dc:creator>Pete</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Trends]]></category>

		<guid isPermaLink="false">http://www.peterkrantz.com/2007/image-resizing/</guid>
		<description><![CDATA[I am guessing this would be a valuable addition to web browsers in the future. With this technique it is easy to target an image for viewing in multiple displays (e.g. a 4:3 screen or a 16:9 TV). "Seam carving" allows an image to be resized non-uniformly, so you can change the height to width ratio in the image without cropping, but also without distorting important features in the image (such as faces).]]></description>
			<content:encoded><![CDATA[<p>I am guessing this would be a valuable addition to web browsers in the future. With this technique it is easy to target an image for viewing in multiple displays (e.g. a 4:3 screen or a 16:9 TV). </p>
<blockquote cite="http://www.hackszine.com/blog/archive/2007/08/seam_carving_contentaware_imag.html"><p>&#8220;Seam carving&#8221; allows an image to be resized non-uniformly, so you can change the height to width ratio in the image without cropping, but also without distorting important features in the image (such as faces).</p></blockquote>
<p>The video shows some intresting results when using this method too much, but the overall result is very impressing.</p>
<p><object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/6NcIJXTlugc"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/6NcIJXTlugc" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></embed></object></p>
<p><a href="http://www.hackszine.com/blog/archive/2007/08/seam_carving_contentaware_imag.html">Hackzine</a> has more details.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.peterkrantz.com/2007/image-resizing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySpace Layouts and Markup Quality</title>
		<link>http://www.peterkrantz.com/2007/myspace-markup-quality/</link>
		<comments>http://www.peterkrantz.com/2007/myspace-markup-quality/#comments</comments>
		<pubDate>Thu, 16 Aug 2007 16:25:15 +0000</pubDate>
		<dc:creator>Pete</dc:creator>
				<category><![CDATA[Accessibility]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Markup]]></category>
		<category><![CDATA[Trends]]></category>

		<guid isPermaLink="false">http://www.peterkrantz.com/2007/myspace-markup-quality/</guid>
		<description><![CDATA[I have received an increasing number of advertising inquiries from MySpace layout sites. Apparently the term "MySpace layouts" is a very popular search term these days. Looking at the default MySpace layouts one can unserstand why. I am confident that they didn't hire a designer to create the default <a href="http://www.myspace.com/">MySpace</a> look and feel. Looking at the <a href="http://peterkrantz.com/bacc/?url=http://www.myspace.com/">MySpace HTML</a>, they certainly didn't hire a GUI developer.]]></description>
			<content:encoded><![CDATA[<p>I have received an increasing number of advertising inquiries from MySpace layout sites. Apparently the term &#8220;MySpace layouts&#8221; is a very popular search term these days. Looking at the default MySpace layouts one can unserstand why. I am confident that they didn&#8217;t hire a designer to create the default <a href="http://www.myspace.com/">MySpace</a> look and feel. Looking at the <a href="http://peterkrantz.com/bacc/?url=http://www.myspace.com/">MySpace HTML</a>, they certainly didn&#8217;t hire a GUI developer. The markup looks like it was ripped from a teenage fan site from the early nineties:</p>
<ul>
<li>There is no doctype declaration. Not that it would have mattered anyway&#8230;</li>
<li>The markup starts out nicely with divs and spans and then freaks out with some classic table layout. I though that went away in the nineties&#8230;</li>
<li>Inline styles are used all over the place.</li>
<li>Headings start at level 5. And continues to level 4&#8230;</li>
<li>Images are missing an alt attribute.</li>
</ul>
<p>This contributes to making MySpace an inaccessible mess. What does it prove? That you can be successful with a crappy site? Maybe the laugh is on me. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.peterkrantz.com/2007/myspace-markup-quality/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The iPhone cult and self criticism among followers&#8230;</title>
		<link>http://www.peterkrantz.com/2007/iphone-fingers/</link>
		<comments>http://www.peterkrantz.com/2007/iphone-fingers/#comments</comments>
		<pubDate>Sat, 30 Jun 2007 21:37:56 +0000</pubDate>
		<dc:creator>Pete</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.peterkrantz.com/2007/iphone-fingers/</guid>
		<description><![CDATA[So the iPhone is out and the Apple cult followers are going crazy all over the place. ...]]></description>
			<content:encoded><![CDATA[<p><img src='http://www.peterkrantz.com/wp-content/uploads/2007/06/iphone.gif' alt='Apple iphone' class="right"/>So the iPhone is out and the Apple cult followers are going crazy all over the place. Unpacking porn and disassemblies are being posted.</p>
<p>When the iPhone was announced I had my doubts about the touch screen keyboard. I had been using a HTC phone for a while and did not really see how they would be able to make a decent touch keyboard. Especially not for us in the norhern hemisphere that use gloves during winter. <a href="http://www.tuaw.com/2007/06/30/experiencing-iphone-the-keyboard/">TUAW is reviewing the touch keyboard</a> and concurs that there is &#8220;nothing wrong with the keyboard&#8221;. The error seems to be the &#8220;meat mittens&#8221; of the user. How is that for self criticism? The user is to blame instead of the phone&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.peterkrantz.com/2007/iphone-fingers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What happened to plain old HTTP redirects?</title>
		<link>http://www.peterkrantz.com/2007/html-redirects/</link>
		<comments>http://www.peterkrantz.com/2007/html-redirects/#comments</comments>
		<pubDate>Tue, 05 Jun 2007 13:17:34 +0000</pubDate>
		<dc:creator>Pete</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Markup]]></category>

		<guid isPermaLink="false">http://www.peterkrantz.com/2007/html-redirects/</guid>
		<description><![CDATA[So, I was looking for an offer on IP telephony and thus decided to point my browser ...]]></description>
			<content:encoded><![CDATA[<p><img class="illustration" src="http://www.peterkrantz.com/wp-content/uploads/2007/06/bredbandsbolaget.gif" alt="Broken redirect from bredbandbolaget.se">So, I was looking for an offer on IP telephony and thus decided to point my browser to one of the larger ISP:s. I get a blank page back (blank as in &#8220;all white&#8221;). A couple of years ago, this wasn&#8217;t uncommon if you were brave enough to use a non-mainstream browser. But today it is 2007.</p>
<p>A brief look at the HTML source gives:</p>
<p><meta http-equiv="refresh" content="0;URL=/portal/redirect" /></p>
<p>&#8230;which safari doesn&#8217;t follow. Interestingly, search engines won&#8217;t be following that either. What happened to the plain old HTTP redirect header? There can&#8217;t be a single programming language for the web today that doesn&#8217;t support output of HTTP headers. Or are there still web developers that don&#8217;t know about HTTP? Apparently so.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.peterkrantz.com/2007/html-redirects/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Self-imposed RSS reading ban&#8230;</title>
		<link>http://www.peterkrantz.com/2007/rss-reading-ban/</link>
		<comments>http://www.peterkrantz.com/2007/rss-reading-ban/#comments</comments>
		<pubDate>Fri, 01 Jun 2007 09:19:05 +0000</pubDate>
		<dc:creator>Pete</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Parental leave]]></category>

		<guid isPermaLink="false">http://www.peterkrantz.com/2007/rss-reading-ban/</guid>
		<description><![CDATA[Am I alone having trouble staying away from the RSS reader? With the number of subscriptions I ...]]></description>
			<content:encoded><![CDATA[<p>Am I alone having trouble staying away from the RSS reader? With the number of subscriptions I have there is always something interesting to read. This absolutely kills productivity when you try to use the 1 hour free time per day you have when you are on parental leave. Must. Stop. Reading.</p>
<p>And who cares about the recommended refresh rate property anyway? I want to update NOW! I need some sort of time lock on all things RSS.</p>
<p>Maybe I should stop writing pointless blog posts like this as well. Aaargh!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.peterkrantz.com/2007/rss-reading-ban/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IKEA may start selling computers</title>
		<link>http://www.peterkrantz.com/2007/ikea-computer/</link>
		<comments>http://www.peterkrantz.com/2007/ikea-computer/#comments</comments>
		<pubDate>Mon, 02 Apr 2007 09:36:42 +0000</pubDate>
		<dc:creator>Pete</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Trends]]></category>

		<guid isPermaLink="false">http://www.peterkrantz.com/2007/ikea-computer/</guid>
		<description><![CDATA[Chief Executive Anders Dahlvig in an interview with Reuters said IKEA aimed to put a &#8220;bigger focus&#8221; ...]]></description>
			<content:encoded><![CDATA[<p>Chief Executive Anders Dahlvig in <a href="http://www.reuters.com/article/consumerproducts-SP/idUSL3046427320070402">an interview with Reuters</a> said IKEA aimed to put a &#8220;bigger focus&#8221; on the living room in the next year, adding accessories for TV and videogames alongside new sofas and storage ranges.</p>
<p>When asked if that could lead to electricals being sold in its iconic blue and yellow stores, he replied: </p>
<blockquote><p>Maybe. It depends on the stores. They are big, but they are still crowded; there are lots of products we would like to have in there.</p></blockquote>
<p>Will we see an IKEA computer? It is an interesting idea and IKEA has a lot of good design people so why not? My suggestion is to call the first model &#8220;Bill&#8221;&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.peterkrantz.com/2007/ikea-computer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Blogs increasingly more popular among senior citizens</title>
		<link>http://www.peterkrantz.com/2007/2007-media-sruvey/</link>
		<comments>http://www.peterkrantz.com/2007/2007-media-sruvey/#comments</comments>
		<pubDate>Mon, 26 Mar 2007 12:30:26 +0000</pubDate>
		<dc:creator>Pete</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Trends]]></category>

		<guid isPermaLink="false">http://www.peterkrantz.com/2007/2007-media-sruvey/</guid>
		<description><![CDATA[Via PR 2.0 (in swedish) I found the recently published TeliaSonera report on communication trends in Sweden ...]]></description>
			<content:encoded><![CDATA[<p>Via <a href="http://pr20.wordpress.com/2007/03/22/las-den-igen-telias-trendspaning-ar-2007/">PR 2.0</a> (in swedish) I found the recently published TeliaSonera report on <a href="http://pr20.files.wordpress.com/2007/03/teliatrendspaning.pdf">communication trends in Sweden (PDF in swedish)</a>. 10,000 people were interviewed about their online media use and expectations.</p>
<p>Most of their findings were not surprising; people expect wifi in hotel rooms, want to be able to watch TV on their cell phone and so on. One thing did stand out though:</p>
<blockquote><p>25% of the population regularly reads one or more blogs. Among persons 26 and younger the figure goes up to 50% but <strong>for the group 60 or older it is still close to 25%</strong>.</p></blockquote>
<p>This is very interesting.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.peterkrantz.com/2007/2007-media-sruvey/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Putting Camping in the Camping logo</title>
		<link>http://www.peterkrantz.com/2007/camping-steganography/</link>
		<comments>http://www.peterkrantz.com/2007/camping-steganography/#comments</comments>
		<pubDate>Sun, 11 Mar 2007 13:53:48 +0000</pubDate>
		<dc:creator>Pete</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.peterkrantz.com/2007/camping-steganography/</guid>
		<description><![CDATA[<img src='http://www.peterkrantz.com/wp-content/uploads/2007/03/camping-in-camping.png' alt='The camping framework embedded in the campin logo' class="illustration"/>Having played with the <a href="http://diit.sourceforge.net/">Digital Invisible Ink Toolkit (DIIT)</a> lately it was interesting to see how big the logo file for the <a href="https://code.whytheluckystiff.net/camping">camping framework</a> would become if the camping framework itself was embedded in it...]]></description>
			<content:encoded><![CDATA[<p><img src='http://www.peterkrantz.com/wp-content/uploads/2007/03/camping-in-camping.png' alt='The camping framework embedded in the campin logo' class="illustration"/>Having played with the <a href="http://diit.sourceforge.net/">Digital Invisible Ink Toolkit (DIIT)</a> lately it was interesting to see how big the logo file for the <a href="https://code.whytheluckystiff.net/camping">camping framework</a> would become if the camping framework itself was embedded in it. The original logo file (stolen from Why&#8217;s site) is a 73 Kb PNG file. Embedding <a href="https://code.whytheluckystiff.net/camping/browser/trunk/lib/camping.rb">camping.rb</a> in it creates a 101 Kb file visible to the right.<br />
<span id="more-72"></span><br />
Maybe this is the future of software distribution? Programmers and photographers can work together to distribute software and pretty pics? Is the porn industry in on this? What type of image would it take to distribute Oracle 9? Remember where you heard it first&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.peterkrantz.com/2007/camping-steganography/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Capture Full Web Page in OS X</title>
		<link>http://www.peterkrantz.com/2007/capture-full-web-page/</link>
		<comments>http://www.peterkrantz.com/2007/capture-full-web-page/#comments</comments>
		<pubDate>Wed, 07 Feb 2007 12:44:29 +0000</pubDate>
		<dc:creator>Pete</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.peterkrantz.com/2007/capture-full-web-page/</guid>
		<description><![CDATA[If you need to capture an image of a full web page without having to do the ...]]></description>
			<content:encoded><![CDATA[<p>If you need to capture an image of a full web page without having to do the scroll-cut-paste-repeat dance you should have a look at <a href="http://www.derailer.org/paparazzi/">Paparazzi</a>. Paparazzi uses the WebKit framework to create nice full length captures of web pages.</p>
<p>If you need to do this programmatically for a large number of sites there is a nice library called <a href="http://www.paulhammond.org/webkit2png/">webkit2png by Paul Hammond</a>. It is a Python script utilizing the <a href="http://pyobjc.sourceforge.net/">PyObjC bridge<br />
</a>.</p>
<p><strong>Update:</strong> There is also a cheap commercial alternative to Paparazzi called <a href="http://www.tastyapps.com/">Red Snapper</a>. For $8 you get a button directly in Safari to do a capture. Worth checking out if you don&#8217;t want an extra app on your system.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.peterkrantz.com/2007/capture-full-web-page/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using disk: enhanced

Served from: www.peterkrantz.com @ 2012-02-04 11:25:43 -->
