<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description>A trackable approach to Steffen Tiedemann Christensen</description><title>@steffentchr</title><generator>Tumblr (3.0; @steffentchr)</generator><link>http://steffentchr.dk/</link><item><title>The LBJ Book Club: New job, New deal / discussion of Path 13-16</title><description>&lt;a href="http://www.lbjbookclub.com/post/14770273503/new-job-new-deal"&gt;The LBJ Book Club: New job, New deal / discussion of Path 13-16&lt;/a&gt;: &lt;p&gt;Our &lt;a href="http://www.lbjbookclub.com/post/14770273503/new-job-new-deal" class="tumblr_blog"&gt;LBJ Book Club&lt;/a&gt; is getting interesting…&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Random observations:
&lt;/p&gt;&lt;ul&gt;&lt;li&gt;- Johnson giving dictation on the toilet is one of the most told stories about his time in the White House, and its genesis is revealed here. I wonder if anyone has tried to emulate this tactic?&lt;/li&gt;
&lt;li&gt;- Johnson felt that coffee would distract Latimer and Jones — not only making the coffee, but also the small act of drinking it would waste valuable time.&lt;/li&gt;
&lt;li&gt;- “Burn this — others probably won’t understand the personal references” is a great way to end personal correspondence.&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;

&lt;p&gt;Are you following along?&lt;/p&gt;</description><link>http://steffentchr.dk/post/14780329305</link><guid>http://steffentchr.dk/post/14780329305</guid><pubDate>Sun, 25 Dec 2011 23:06:00 +0100</pubDate></item><item><title>The LBJ Book Club: Is this the trap?</title><description>&lt;a href="http://www.lbjbookclub.com/post/13305647190/is-this-the-trap"&gt;The LBJ Book Club: Is this the trap?&lt;/a&gt;: &lt;p&gt;&lt;a href="http://guan.dk"&gt;Guan&lt;/a&gt; and I are teaming up to bring you an online book club over the next few month. &lt;a href="http://www.lbjbookclub.com/"&gt;We’ll be reading&lt;/a&gt; the Robert Caro’s series of biographies of Lyndon B. Johnson to celebrate the forthcoming release of the fourth book in the series, &lt;em&gt;The Passage of Power&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;If you aren’t rushing out to buy the books just for the pleasure of our company, &lt;a href="http://www.lbjbookclub.com/post/13305647190/is-this-the-trap"&gt;here’s the pitch&lt;/a&gt; for why you need to do so anyway.&lt;/p&gt;</description><link>http://steffentchr.dk/post/13594378239</link><guid>http://steffentchr.dk/post/13594378239</guid><pubDate>Thu, 01 Dec 2011 18:33:49 +0100</pubDate></item><item><title>Is it a box or a TV? Yes...</title><description>&lt;p&gt;There&amp;#8217;s been much speculation about Steve Jobs&amp;#8217; &amp;#8220;I finally cracked it&amp;#8221; remark on Apple&amp;#8217;s role in the TV industry. I am not following the Apple blogs closely, but the future Apple TV strategy has been a recurring topic on &lt;a href="http://5by5.tv"&gt;my weekly soaps&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Mainly, the discussion has centered on whether the product will be a new box (as the current Apple TV) or a full-fledged television set? (Consensus: A TV.) And on how the product will get its content? Obviously, it will be hooked in to the iTunes infrastructure, but will it have a cable connection for ordinary TV watching? (Consensus: Probably not.)&lt;/p&gt;

&lt;p&gt;The conversations though have missed a few pretty obvious options, and I thought I&amp;#8217;d gather my predictions here. If for no other reason that to be wrong on the record.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;It will be both a box and a TV:&lt;/em&gt;&lt;/strong&gt; Apple will release both an iTV Mini (essentially a new version of the Apple TV box) and an iTV Cinema, a large and beautifully designed LCD screen with the same hardware built in as the box. Both the Mini and the Cinema will run the same iOS based software, which will account for the entire user experience.&lt;/p&gt;

&lt;p&gt;(Relatedly, the PC media will ridicule Apple for shipping the large TV screen without the ability to change and upgrade the hardware box &amp;#8212; because the company has chosen not to simply build the Cinema with a replaceable Mini box inside.)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;You can connect your cable:&lt;/em&gt;&lt;/strong&gt; How is Apple going to get sufficient content penetration has been the biggest question so far. The strategy might require an AT&amp;amp;T-like partnership with Comcast (or whatever other cable provider is willing to play), but generally the idea is this: You hook up your cable to the Mini or Cinema, you put in your cable card, and you will have access to content based on your cable subscription. Live TV is played directly from cable, and the electronic program guide will look purdy and Apple-like.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Recording is done through iCloud:&lt;/em&gt;&lt;/strong&gt; The magic is in the recording of shows though. Rather than shipping the hardware with hard drives, any piece of content available through the cable package can be recorded to iCloud &amp;#8212; and playback in done over IP. Since you&amp;#8217;re technically just recording the content available in the cable package, content availability is eliminated as a problem. The content you current get through TiVo will be available on the Apple solution, and you might even be able to record two or three simultaneous shows with a single cable card.&lt;/p&gt;

&lt;p&gt;(On the server side, Apple would need to store massive amounts of data; but much less than you&amp;#8217;d expect on first glance. De-duplication to the rescue. Apple would be recording everything from a few thousand channels/live feeds, and making this single version available to everyone who&amp;#8217;d thought to record the show.)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;There will be iTunes and there will be apps:&lt;/em&gt;&lt;/strong&gt; I think this goes without saying, but the iOS SDK is coming to the iTV. And all the standard iTunes content will be there as well.&lt;/p&gt;

&lt;p&gt;This strategy seems to solve the pricing problem: Rather than having to choose between an inexpensive product (the Mini) to get market share and an expensive one (the Cinema) to maximize profits, the dual strategy achieves both. The Cinema will be a 5% thing, but it probably would be in either case.&lt;/p&gt;

&lt;p&gt;This strategy also seems to solve the content problem: Yes, Apple is still relying on the cable companies (just as they rely on mobile carriers to sell iPhones), but the compromise maximizes content. Over time, the iTV will pop up in more and more homes and cable will become less important while Apple&amp;#8217;s negotiating power with content providers increases.&lt;/p&gt;

&lt;p&gt;The iTV Mini will be $149 and the iTV Cinema is $2000.&lt;/p&gt;</description><link>http://steffentchr.dk/post/12892521807</link><guid>http://steffentchr.dk/post/12892521807</guid><pubDate>Wed, 16 Nov 2011 21:58:00 +0100</pubDate></item><item><title>[DK] Podcast med @jacobchr, @guan og jeg selv om perspektiverne...</title><description>&lt;iframe src="http://a.podcast.dk/v.ihtml?photo%5fid=3215428" width="400" height="45" frameborder="0" border="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;[DK] Podcast med &lt;a href="http://twitter.com/jacobchr"&gt;@jacobchr&lt;/a&gt;, &lt;a href="http://twitter.com/guan"&gt;@guan&lt;/a&gt; og jeg selv om perspektiverne i den nuværende valgkamp. Det er spændende og heldigvis bredere end blot, hvem der har vundet i meningsmålingerne i dag.&lt;/p&gt;

&lt;p&gt;Du kan &lt;a href="http://podcast.dk/p=np/2"&gt;downloade&lt;/a&gt; eller abonnere &lt;a href="http://podcast.dk/p=np/feed"&gt;som podcast&lt;/a&gt; og &lt;a href="http://podcast.dk/p=np/itunes"&gt;i iTunes&lt;/a&gt;&lt;/p&gt;</description><link>http://steffentchr.dk/post/9925848397</link><guid>http://steffentchr.dk/post/9925848397</guid><pubDate>Wed, 07 Sep 2011 21:21:00 +0200</pubDate></item><item><title>A call for a progressive IT agenda</title><description>&lt;p&gt;&lt;a href="http://www.version2.dk/"&gt;Version2&lt;/a&gt; is using the upcoming Danish election to run a series on the IT policies of the individual parties running for Parliament. The first two articles interview the IT spokespeople for the two largest parties, and frankly the outcome is disheartening. In each interview, fifteen questions are asked and the result is vague and non-committal statements on issues affecting us all &amp;#8212; both in how we interact electronically with the government and more broadly how we conceive digital democracy.&lt;/p&gt;

&lt;p&gt;Asked about the value of software patents, on legislation limiting the use of cookies and on personal data protection, &lt;a href="http://www.version2.dk/artikel/s-besparelserne-i-det-offentlige-ligger-i-eksisterende-kommercielle-clouds-30742"&gt;Yildiz Akdogan&lt;/a&gt; (Social Democratic Party) argues both sides of the issue and then leaves the question unanswered. &lt;a href="http://www.version2.dk/artikel/venstre-gaar-ind-open-source-og-frit-valg-af-dokumentformater-30731"&gt;Michael Aastrup Jensen&lt;/a&gt; of the Danish Liberal Party isn&amp;#8217;t much better. Software patents? Yes and no. Cookie legislation? Yes, but it&amp;#8217;s not our problem. Blame it on the European Union. Personal data protection and cloud computing? Yes, no, whatever.&lt;/p&gt;

&lt;p&gt;We deserve better. We deserve a political system where important digital democracy questions are actually handled by people with a clear vision of where we&amp;#8217;re being taken. Not by catch-all answers amounting to barely muddling through. The Internet and the society revolving around it is too important a force to be discussed in such general terms. So what should we think?&lt;/p&gt;

&lt;h3&gt;Do you support software patents?&lt;/h3&gt;

&lt;p&gt;Whether you want to answer &lt;em&gt;Yes&lt;/em&gt; or &lt;em&gt;No&lt;/em&gt; to this question, you should have a clear answer ready. Software patents and their selective application has been the subject of a lot of stories over the past few months: NPR&amp;#8217;s Planet Money team has done &lt;a href="http://www.npr.org/blogs/money/2011/08/05/138934689/the-tuesday-podcast-the-patent-war"&gt;a number of great overview stories about patent&lt;/a&gt;. The indie mobile developers have been &lt;a href="http://www.engadget.com/2011/05/17/lodsys-vs-apple-devs-eff-helps-us-dig-deeper/"&gt;hit by Lodsys&lt;/a&gt;. And we&amp;#8217;ve seen Apple, Google and other giants in a &lt;a href="http://daringfireball.net/2011/08/google_patently_absurd"&gt;land grab for patents with a $3.14B price stamp&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Whether you find the arguments for patenting software compelling or not (I don&amp;#8217;t, but that&amp;#8217;s not the issue here) you should and must have made up your mind as a Danish political party acting in 2011. Nuanced views are more than welcome, non-committal ones aren&amp;#8217;t.&lt;/p&gt;

&lt;h3&gt;Do you support the EU &amp;#8220;cookie directive&amp;#8221;?&lt;/h3&gt;

&lt;p&gt;&lt;a href="http://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=OJ:L:2009:337:0011:0036:En:PDF"&gt;The EU cookie directive&lt;/a&gt; is a policy which should have taken effect in May of this year, but has been postponed until 2012 due to implementation and guidance issues. Put simply, the policy mandates that web publishers must inform users about their use of cookies and other tracking technologies &amp;#8212; and can only make use of such technologies in an opt-in fashion.&lt;/p&gt;

&lt;p&gt;This is an amazingly stupid idea. The directive is based on a fundamental misunderstanding of how the internet works; cookies do not track individual users on a personal level, they track visitors anonymously on the level of usage patterns. Through tracking within a web page, web publishers can build a persona and track usage of a site in order to make it better. For example, we use cookies with &lt;a href="http://www.23video.com"&gt;23 Video&lt;/a&gt; to track video usage and present aggregated statistics to our customers &amp;#8212; we don&amp;#8217;t use it to track named users. In an opt-in world, all such legitimate usages of cookies to improve the web experience for users would be outlawed (at least in practice since opt-in will never work).&lt;/p&gt;

&lt;p&gt;Cookies are not the enemy here. Cookies are necessary for the Internet to work. The enemy might be &lt;em&gt;particular uses&lt;/em&gt; of cookies to track behavior across domains, but even that evil doesn&amp;#8217;t warrant this policy.&lt;/p&gt;

&lt;p&gt;So what do the Danish parties say? On the one hand, consumers should be informed. On the other hand, it shouldn&amp;#8217;t burden publishers. Please, please, please don&amp;#8217;t make me have a real opinion about anything!&lt;/p&gt;

&lt;p&gt;(Also, see the somewhat annoying &lt;a href="http://www.davidnaylor.co.uk/eu-cookies-directive-interactive-guide-to-25th-may-and-what-it-means-for-you.html"&gt;interactive guide to the policy&lt;/a&gt;.)&lt;/p&gt;

&lt;h3&gt;Should internet traffic from open hotspots be logged down to the individual and personal level?&lt;/h3&gt;

&lt;p&gt;Here, there&amp;#8217;s actually some clear answers. Unfortunately those answers are wrong. The Social Democrats want to allow personal logging of traffic, while the Liberals only want to log terrorism while minding our civil rights. It&amp;#8217;s unclear how that distinction should be made without actually logging all traffic, but Michael Aastrup Jensen worked in an IT company before being elected to Parliament, so he probably knows.&lt;/p&gt;

&lt;p&gt;The built-in contradiction is that web publishers are not allowed to track anonymous usage, while government can access personalized and detailed information about how we all use the web.&lt;/p&gt;

&lt;p&gt;There&amp;#8217;s a fundamental disrespect for the Internet inherent in such as view: To me, the Internet is a democratizing force with a potential to stand above any individual person or individual government &amp;#8212; and realizing this potential, we also need to respect the neutrality of the Internet. Open societies have downsides, but those must be embraced to capitalize on the much bigger upsides.&lt;/p&gt;

&lt;h3&gt;Should ISPs be forced to block site access through DNS?&lt;/h3&gt;

&lt;p&gt;Both parties answer with a heavily qualified Yes, and I&amp;#8217;m guessing the only qualification is bound to court mandates.&lt;/p&gt;

&lt;p&gt;The correct answer though is No. DNS is designed to allow propagation or caching of internet addresses in order to make for a faster and more resilient browsing experience. TDC, Telia or whichever name server provider you&amp;#8217;re using is a caching relay for information published by other nodes, and the view that Danish ISPs are responsible for the IP addresses served up by their name servers is ludicrous. We need to protect the web from intrusion of political idiocracy, and whenever this line is breached we become a less democratic society.&lt;/p&gt;

&lt;h3&gt;Should public IT projects be open source?&lt;/h3&gt;

&lt;p&gt;None of the spokespeople want to mandate open source in the public sector, and here we agree. Of course, public IT projects shouldn&amp;#8217;t utilize open source project just for the sake of it. Open source can stand on its own, and if it isn&amp;#8217;t the best available option for the job, the commercial alternatives should be chosen. Of course.&lt;/p&gt;

&lt;p&gt;The politicians miss the larger point of the question though. It isn&amp;#8217;t a matter of using other people&amp;#8217;s open sourced code &amp;#8212; it&amp;#8217;s a matter of open sourcing code themselves. I couldn&amp;#8217;t care less which office suite is being used in the halls of the public sector, but the truly interesting potential is to open source the code being written for tax money. Whenever a new service, a new piece of software, a new integration is developed, we should all be able to evaluate the code &amp;#8212; and both other public institutions and private ones should be able to reuse and improve on the code.&lt;/p&gt;

&lt;p&gt;To summarize, I&amp;#8217;ll reiterate my sense of disillusion: It isn&amp;#8217;t that either of the politicians asked in the articles are particularly wrong. Rather, this is a missed opportunity. IT policy is faced with a number of really interesting issues that could potentially propel us forward with a progressive IT agenda. But when our leaders cannot even muster a modicum of interest in those issues, we&amp;#8217;re failing ourselves.&lt;/p&gt;</description><link>http://steffentchr.dk/post/9872201812</link><guid>http://steffentchr.dk/post/9872201812</guid><pubDate>Tue, 06 Sep 2011 10:53:00 +0200</pubDate></item><item><title>[Danish] Tryk Optag #3: Men drømmen slutter jo ikke dér,...</title><description>&lt;iframe src="http://a.podcast.dk/v.ihtml?photo%5fid=3000176" width="400" height="45" frameborder="0" border="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;b&gt;[Danish] Tryk Optag #3: Men drømmen slutter jo ikke dér, Morten&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Jeg og Morten Saxnæs tager fat i de højtflyvende emner, som cyborg tattoveringer, rumturisme og flydende lande, men slutter af med en mere jordnær debat om open source-bevægelsen og fængselsstraf for Facebook opdateringer.&lt;/p&gt;

&lt;p&gt;Du kan &lt;a href="http://podcast.dk/trykoptag/3"&gt;downloade som MP3&lt;/a&gt; eller abonnere &lt;a href="http://podcast.dk/trykoptag/feed"&gt;som Podcast&lt;/a&gt; eller &lt;a href="http://podcast.dk/trykoptag/itunes"&gt;i iTunes&lt;/a&gt;.&lt;/p&gt;</description><link>http://steffentchr.dk/post/9291117489</link><guid>http://steffentchr.dk/post/9291117489</guid><pubDate>Tue, 23 Aug 2011 14:59:00 +0200</pubDate></item><item><title>"Android has been so successful through a) hard work by engineers and b) a disruptive and very..."</title><description>“Android has been so successful through a) hard work by engineers and b) a disruptive and very different business model. Java is yesterdays technology though, and if we saw webOS at Google I think that Android would have been even more than it is today.”&lt;br/&gt;&lt;br/&gt; - &lt;em&gt;&lt;a href="http://almaer.com/blog/facebook-webos-playing-to-win"&gt;Dion Almaer on webOS’ troubles at Palm an HP, because going on to make a pitch for Facebook to take over&lt;/a&gt;&lt;/em&gt;</description><link>http://steffentchr.dk/post/9223308733</link><guid>http://steffentchr.dk/post/9223308733</guid><pubDate>Sun, 21 Aug 2011 23:45:06 +0200</pubDate></item><item><title>Deploying on stage for the hell of it sound like fun.</title><description>&lt;p&gt;&lt;a href="http://warpspire.com/posts/ops-art/"&gt;Deploying on stage for the hell of it&lt;/a&gt; sound like fun.&lt;/p&gt;</description><link>http://steffentchr.dk/post/9097114498</link><guid>http://steffentchr.dk/post/9097114498</guid><pubDate>Fri, 19 Aug 2011 00:49:05 +0200</pubDate></item><item><title>[Danish] Denne uges podcast fra hr. Morten Saxnæs og jeg selv...</title><description>&lt;iframe src="http://a.podcast.dk/v.ihtml?photo%5fid=2931668" width="400" height="45" frameborder="0" border="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;[Danish] Denne uges podcast fra hr. Morten Saxnæs og jeg selv under den fine titel &lt;i&gt;Det er jo klart, de skal sige det&lt;/i&gt;. Vi snakker om ytringfriheds og politik i sociale medier, og åbenhed i Android og om min nye titel som &lt;a href="http://geekswithblogs.net/DavidHoerster/archive/2011/08/10/html--css--javascript-ndash-we-need-an-acronym.aspx"&gt;JACSHT developer&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Du kan &lt;a href="http://a.podcast.dk/1984077/2931668/5a22162be8b8566c4debe97c8189e23b/audio/2-det-er-jo-klart-de-skal-sige-audio.mp3"&gt;downloade som MP3&lt;/a&gt; eller abonnere &lt;a href="http://podcast.dk/trykoptag/feed"&gt;som Podcast&lt;/a&gt; eller &lt;a href="http://podcast.dk/trykoptag/itunes"&gt;i iTunes&lt;/a&gt;.&lt;/p&gt;</description><link>http://steffentchr.dk/post/8990020939</link><guid>http://steffentchr.dk/post/8990020939</guid><pubDate>Tue, 16 Aug 2011 10:14:00 +0200</pubDate></item><item><title>"HIRING MANAGER: So, do you know JACSHT?

CANDIDATE: No, sir, I don’t know JACSHT.

HIRING MANAGER:..."</title><description>“&lt;p&gt;HIRING MANAGER: So, do you know JACSHT?&lt;/p&gt;

&lt;p&gt;CANDIDATE: No, sir, I don’t know JACSHT.&lt;/p&gt;

&lt;p&gt;HIRING MANAGER: How can you expect me to employ you if you don’t know JACSHT? The whole world is moving towards JACSHT.&lt;/p&gt;

&lt;p&gt;CANDIDATE: Sir, I wish I knew as much JACSHT as you.&lt;/p&gt;”&lt;br/&gt;&lt;br/&gt; - &lt;em&gt;&lt;a href="http://geekswithblogs.net/DavidHoerster/archive/2011/08/10/html--css--javascript-ndash-we-need-an-acronym.aspx"&gt;HTML / CSS / JavaScript – We Need An Acronym&lt;/a&gt;&lt;/em&gt;</description><link>http://steffentchr.dk/post/8922143445</link><guid>http://steffentchr.dk/post/8922143445</guid><pubDate>Sun, 14 Aug 2011 23:37:25 +0200</pubDate></item><item><title>Org-Mode: Your Life in Plain Text</title><description>&lt;a href="http://orgmode.org/"&gt;Org-Mode: Your Life in Plain Text&lt;/a&gt;: &lt;p&gt;It’s one if the joys of being an Emacs user that you will always find another hidden gem in your text editor. Here’s a plain-text todo list mode for Emacs which seems built for the world &lt;code&gt;git&lt;/code&gt; and Dropbox.&lt;/p&gt;</description><link>http://steffentchr.dk/post/8915346425</link><guid>http://steffentchr.dk/post/8915346425</guid><pubDate>Sun, 14 Aug 2011 20:46:25 +0200</pubDate></item><item><title>I'm a developer and I hate "networking". Here's why.</title><description>&lt;p&gt;&lt;a href="http://daredo.tumblr.com/"&gt;Tine Thygesen&lt;/a&gt;, a previous colleague from 23, declares provocatively that &lt;a href="http://daredo.tumblr.com/post/7647554014"&gt;developers hate networking&lt;/a&gt; for the wrong reasons:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The reason developers, and many non-business people, 
  hate networking because the terms is largely misunderstand 
  and misused! &amp;#8230; The reason [is] they think they have 
  to entertain hot shots they have nothing in common with 
  with witty oneliner or deep business insights.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Tine is absolutely right. As a breed, we don&amp;#8217;t really like chatting for the sake of chatting. (And we absolutely don&amp;#8217;t have neither wittiness nor insight when let out of the cave. By then the uncaffeinated climate has shocked our systems enough to keep us quiet in the corner.)&lt;/p&gt;

&lt;p&gt;To the developer mind, networking changes any focus from short-term action to the long-term talking. Networking challenges us to talk our way into key relationships - rather than to act, build, do. And above all, any good developer will prefer to &lt;em&gt;do&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Tine&amp;#8217;s call for a different way to talk about networking is spot on, but she is aiming her arguments in the wrong direction. It&amp;#8217;s a mistake to try to teach developers the value of community and of relationships though. Ask any developer how he or she learned to code, and I guarantee you that the answer is through tutorials and questions on blogs and forums. And by reading open source software.&lt;/p&gt;

&lt;p&gt;The interesting bit is that the social web (take Twitter as an example) is teaching The Network People to network the same way that developers have been doing for ages: By showing yourself to knowledgeable and interesting within an accessible and flat structure. It&amp;#8217;s modern networking through content and personality, rather than through access, status and position.&lt;/p&gt;

&lt;p&gt;Twitter creates informal bonds and provides ample room to listen in to a conversations form the side-lines. And then to contribute. It starts off with an open invitation and slowly encourages people to get involved. This is very similar to how geeks have been setting up well-functioning open source and crowd-sourcing projects through the ages.&lt;/p&gt;

&lt;p&gt;I think we are teaching the bizzies to network, not the other way around.&lt;/p&gt;</description><link>http://steffentchr.dk/post/7998158553</link><guid>http://steffentchr.dk/post/7998158553</guid><pubDate>Sun, 24 Jul 2011 12:49:00 +0200</pubDate></item><item><title>Fault-tolerant HTML5 uploads with Resumable.js [Open JavaScript]</title><description>&lt;p&gt;With &lt;a href="http://www.23video.com"&gt;23 Video&lt;/a&gt; we (at &lt;a href="http://www.23company.com"&gt;23&lt;/a&gt;) receive a large number of really, really large files every day. At times, we get files of several gigabytes transferred over a simple HTTP connection. Usually, this works out alright, but we&amp;#8217;ve wanted to make better use of some new features in modern browsers to make uploads more stable &amp;#8212; specifically, to allow users to pause their uploads and have the uploads automatically resume if the internet connection fails (either locally or to our servers).&lt;/p&gt;

&lt;p&gt;This approach is fairly new and is only available in Chrome (11+) and Firefox (4+), so no one has packaged the feature-set we wanted nicely yet. This calls for open sourcing a few hundred lines of code and a victory lap:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;We bring you &lt;a href="http://github.com/23/resumable.js"&gt;Resumable.js&lt;/a&gt; as our answer.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Resumable.js is a JavaScript library built on top of the HTML5 File API to:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;Allow selection or dropping of multiple files.&lt;/li&gt;
&lt;li&gt;Handle queuing and progress indications during upload.&lt;/li&gt;
&lt;li&gt;Uploads files in small chunks, rather than in a single big batch.&lt;/li&gt;
&lt;li&gt;Automatically resume uploads if something fails, for example if the network connection drops.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;The first two features have been available through Flash and &lt;a href="http://plupload.com"&gt;related&lt;/a&gt; &lt;a href="http://www.swfupload.org"&gt;tools&lt;/a&gt; for quite a while, but I&amp;#8217;m pretty excited about the latter two. Chunking and auto-resuming will allow for a degree of stability in HTTP uploading we haven&amp;#8217;t seen before: Resumable.js will simply keep uploading until all the bits of a file has been sent. And it all happens transparently to the user.&lt;/p&gt;

&lt;iframe src="http://reinvent.23video.com/v.ihtml?photo%5fid=2333745" width="520" height="293" frameborder="0" border="0" scrolling="no"&gt;&lt;/iframe&gt;

&lt;p&gt;The &lt;a href="http://github.com/23/resumable.js"&gt;Resumable.js&lt;/a&gt;-based uploader will make its appearance in 23 Video later this summer, but we will also add support for this method in our &lt;a href="http://www.23developer.com/api/browser-based-uploads"&gt;API for direct browser uploads&lt;/a&gt; &amp;#8212; in fact the prototype uses this API method behind the scenes.&lt;/p&gt;</description><link>http://steffentchr.dk/post/7454042318</link><guid>http://steffentchr.dk/post/7454042318</guid><pubDate>Sun, 10 Jul 2011 15:46:00 +0200</pubDate><category>resumable.js</category><category>html5</category><category>javascript</category><category>opensource</category><category>23</category><category>23video</category><category>uploading</category><category>http</category></item><item><title>Paranoid</title><description>&lt;p&gt;&lt;a href="http://guan.dk/backup-strategy"&gt;Guan is paranoid&lt;/a&gt;, but it&amp;#8217;s probably a good list to consider. My own strategy is much simpler and involves both a trade-off in terms of immediacy and restorability: &lt;/p&gt;
&lt;ul&gt;&lt;li&gt;I&amp;#8217;m running &lt;a href="http://www.backblaze.com"&gt;Backblaze&lt;/a&gt; to do an almost full back-up. It doesn&amp;#8217;t include my VMware machines or my system files so I won&amp;#8217;t be able to restore immediately &amp;#8212; as Guan would from his SuperDuper! drive once he&amp;#8217;s opened his safe deposit box. This means that I keep &lt;b&gt;no data&lt;/b&gt; on my virtual machine that I actually couldn&amp;#8217;t live without.&lt;/li&gt;
&lt;li&gt;I&amp;#8217;m using &lt;a href="http://www.dropbox.com"&gt;Dropbox&lt;/a&gt; for all my actual documents &amp;#8212; including symlinking in my Desktop and other system folders I use frequently. And an encrypted &lt;a href="http://notational.net/"&gt;Notational Velocity&lt;/a&gt; notebook of my every thought and secret. This means that I can install a clean OS X and have access to 95% of my documents just by installing Dropbox.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;The major upside in this much simpler approach is that everything happens automatically, and there are very few moving parts. In fact, I&amp;#8217;m relying only on two excellent and stable services. I&amp;#8217;m always backed up at least to within 24 hours of my machine crashing, which is frankly better than I&amp;#8217;d manage if I relied on myself remembering to connect physical devices to my computer.&lt;/p&gt;
&lt;p&gt;The major downside is that I don&amp;#8217;t have either a full backup or an offline backup. If my machine crashes, I can restore everything I care about &amp;#8212; but it will probably take about 10 hours of hard work. When it happened last in late 2009, this was the approach:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Get a new machine.&lt;/li&gt;
&lt;li&gt;Power up a clean Mac OS X and install all the software I needed.&lt;/li&gt;
&lt;li&gt;Start up Dropbox which within about two hours managed to restore most of my documents. With 20 minutes of linking, I had my Desktop and other bits and pieces in working order.&lt;/li&gt;
&lt;li&gt;Identify the last 5% of files. Most of these files, I was able to restore from my previous machine&amp;#8217;s hard drive, although this might not be an option if the computer is stolen.&lt;/li&gt;
&lt;li&gt;Retrieve the last missing pieces from Backblaze. This was in fact the hardest part. Backblaze is amazing for backing up, but a bitch to work with for restoring: I spend a few days generating and downloading zip files with music, podcasts, audiobooks and other lost bit and bytes.&lt;/li&gt;
&lt;/ul&gt;</description><link>http://steffentchr.dk/post/7423787348</link><guid>http://steffentchr.dk/post/7423787348</guid><pubDate>Sat, 12 Feb 2011 14:22:09 +0100</pubDate><category>tumblrize</category></item><item><title>Updated stalkering</title><description>&lt;p&gt;I&amp;#8217;ve managed to add a few bonus features to &lt;a href="http://stalkify.com"&gt;Stalkify&lt;/a&gt; tonight. So far, Stalkify has been awesome at keeping Spotify in sync with your Last.fm account, but I wanted to add a bit of music discovery to the site as well.&lt;/p&gt;
&lt;p&gt;To accomplish this, Stalkify now lists top artists for any user:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://www.refresh.dk/wordpress/wp-content/uploads/2010/11/Screen-shot-2010-11-13-at-10.59.23-PM.png" alt="Screen shot 2010-11-13 at 10.59.23 PM" title="Screen shot 2010-11-13 at 10.59.23 PM" width="397" height="390" class="alignnone size-full wp-image-98"/&gt;&lt;/p&gt;
&lt;p&gt;&amp;#8230; and Stalkify will now also recommend other people for you to follow based on you musical taste:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://www.refresh.dk/wordpress/wp-content/uploads/2010/11/Screen-shot-2010-11-13-at-10.59.32-PM.png" alt="Screen shot 2010-11-13 at 10.59.32 PM" title="Screen shot 2010-11-13 at 10.59.32 PM" width="205" height="148" class="alignnone size-full wp-image-97"/&gt;&lt;/p&gt;
&lt;p&gt;Finally, there&amp;#8217;s a new type of playlist on Stalkify called &amp;#8216;Loved tracks&amp;#8217;. This obviously includes all the tracks users have marked as loved on Last.fm.&lt;/p&gt;
&lt;p&gt;Be sure to tell a friend&amp;#8230;&lt;/p&gt;</description><link>http://steffentchr.dk/post/7423828620</link><guid>http://steffentchr.dk/post/7423828620</guid><pubDate>Sat, 13 Nov 2010 23:06:18 +0100</pubDate><category>tumblrize</category></item><item><title>Stalkify: Last.fm + Spotify = &amp;hearts;</title><description>&lt;p&gt;I&amp;#8217;ve been playing around with a new web service called &lt;a href="http://stalkify.com"&gt;Stalkify&lt;/a&gt; for the past week or so. The notion is simple: &lt;a href="http://stalkify.com"&gt;Stalkify&lt;/a&gt; makes the social graph from &lt;a href="http://last.fm"&gt;Last.fm&lt;/a&gt; available in &lt;a href="http://spotify.com"&gt;Spotify&lt;/a&gt;. So all the tracks you&amp;#8217;re scrobbling to Last.fm (and have been for the past decade or so&amp;#8230;) suddenly makes sense in the brave new world of Spotify.&lt;/p&gt;
&lt;p&gt;Stalkify was inspired by &lt;a href="http://www.classy.dk/log/archive/003938.html"&gt;@Claus&amp;#8217;s&lt;/a&gt; &lt;a href="http://spotifydj.com/"&gt;Spotify DJ&lt;/a&gt;, which allows you to have peers listen into DJ sets. Classy clever used &lt;i&gt;spotify:&lt;/i&gt; URIs and some Adobe Air magic to patch this piece of software together, but I figured that you could build the same live experience by using tracks recently scrobbled to Last.fm &amp;#8212; and making a live-updated playlist in Spotify. &lt;/p&gt;
&lt;p&gt;So that&amp;#8217;s the first feature: You&amp;#8217;ll key in a username (or your username) and you&amp;#8217;ll get a live playlist of what&amp;#8217;s being played by that user. &lt;/p&gt;
&lt;p&gt;An awesome upside of using Last.fm as the data exchange is that you&amp;#8217;ll also be able to stalk non-Spotify users. For example, my good friend &lt;a href="http://www.last.fm/user/pollethewonder"&gt;PolleTheWonder&lt;/a&gt; is a heavy Last.fm user with a list of almost 20.000 listened tracks; but he isn&amp;#8217;t a Spotify user. With Stalkify, I&amp;#8217;ll still be able to &lt;a href="http://stalkify.com/pollethewonder"&gt;listen live to what Paul is playing&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I have four years of Last.fm usage and 22.559 plays to &lt;a href="http://www.last.fm/user/steffentchr"&gt;my name&lt;/a&gt;, and Last.fm is pretty good at collating this information into a sense of my musical taste. For example, they compile lists of my favorite tracks (from both my Winamp, my iTunes and my Spotify days), which is something I&amp;#8217;d love to have ready at hand in Spotify. Stalkify does that: It give me a list of daily updated list of &lt;a href="http://stalkify.com/steffentchr"&gt;what I&amp;#8217;m listening to the most&lt;/a&gt;.  &lt;/p&gt;
&lt;p&gt;(I&amp;#8217;ll be updating Stalkify to use more features from Last.fm in the future: Top albums, Recommended artists, Neighbouring users&amp;#8230;)&lt;/p&gt;
&lt;h3&gt;For the geeks&amp;#8230;&lt;/h3&gt;
&lt;p&gt;Stalkify is pieced together from &lt;a href="http://www.last.fm/api"&gt;The Last.fm API&lt;/a&gt; using &lt;a href="http://code.google.com/p/pylast/"&gt;pylast&lt;/a&gt;, from &lt;a href="http://developer.spotify.com/en/libspotify/overview/"&gt;libspotify&lt;/a&gt; (0.0.3 because 0.0.4 is buggy in playlist handling) using &lt;a href="http://github.com/sarnesjo/greenstripes"&gt;greenstripes&lt;/a&gt; and &lt;a href="http://developer.spotify.com/en/metadata-api/overview/"&gt;Spotify&amp;#8217;s Metadata API&lt;/a&gt; using &lt;a href="http://pypi.python.org/pypi/spotimeta/"&gt;spotimeta&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;All the code is a) ugly and b) available at &lt;a href="http://github.com/steffentchr/Stalkify"&gt;github.com/steffentchr/Stalkify&lt;/a&gt;.&lt;/p&gt;</description><link>http://steffentchr.dk/post/7423831165</link><guid>http://steffentchr.dk/post/7423831165</guid><pubDate>Sun, 02 May 2010 18:18:27 +0200</pubDate><category>tumblrize</category></item><item><title>Taking out node.js for a spin with Bomber</title><description>&lt;p&gt;The &lt;a href="http://nodejs.org/"&gt;node.js&lt;/a&gt; project has been getting a lot of good press and positive attention over the past few months. With good reason. If this is the first you&amp;#8217;re hearing of node.js, it&amp;#8217;s officially an &amp;#8220;evented I/O for V8 JavaScript&amp;#8221; but more generally it is used as a tool for writing non-blocking network servers. This means that it can easily be made into a JavaScript-based and highly efficient web server. If you&amp;#8217;re curious, have a look at &lt;a href="http://simonwillison.net/2009/Nov/23/node/"&gt;Simon Willison&amp;#8217;s nice write-up&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Node is still in it&amp;#8217;s infancy. For example, there&amp;#8217;s is still a lot of discussion going on &lt;a href="http://groups.google.com/group/nodejs"&gt;on the mailing list&lt;/a&gt; about core API (i.e. &lt;a href="http://groups.google.com/group/nodejs/browse_thread/thread/4a1ce27a1f588a7f/28b8fb57bb126ee2"&gt;how to handle communication between and chaining of events&lt;/a&gt; or even &lt;a href="http://groups.google.com/group/nodejs/browse_thread/thread/c1553dda2f860bb9"&gt;how the final file API is going to look&lt;/a&gt;). Since node isn&amp;#8217;t designed explicitly as a web server, there&amp;#8217;s only low-level http support &amp;#8212; and of course, there is no standard web application framework for handlings requests, sessions, cookies, and users. &lt;/p&gt;
&lt;p&gt;The first question to be answered is if you&amp;#8217;d actually want big web applications to run solely on node.js? But for now I&amp;#8217;ve skipped that question entirely and simply asked how I&amp;#8217;d approach writing such and application (hopefully reusing some of the code being currently being pushed by the node community)? &lt;/p&gt;
&lt;p&gt;It seems as if every person in that community has written her or his own lightweight library for handling web requests. To name &lt;a href="http://wiki.github.com/ry/node"&gt;a few&lt;/a&gt;, there&amp;#8217;s &lt;a href="http://github.com/simonw/djangode"&gt;Djangode&lt;/a&gt;, &lt;a href="http://github.com/visionmedia/express"&gt;Express&lt;/a&gt;, &lt;a href="http://github.com/ujh/coltrane"&gt;Coltrane&lt;/a&gt;, &lt;a href="http://github.com/raycmorgan/vroom"&gt;Vroom&lt;/a&gt;, and &lt;a href="http://github.com/creationix/node-router"&gt;node-router&lt;/a&gt;). A lot of these are obviously inspired by the approaches taken by either Django or by Rails (it&amp;#8217;s right there in the names), but taken as a whole they&amp;#8217;re very limited in how they approach the task. Most of the frameworks are just different syntaxes for binding a JavaScript &lt;tt&gt;function() {}&lt;/tt&gt; to a URL &amp;#8212; without the modular approach taken by their more mature counterparts. &lt;/p&gt;
&lt;p&gt;This means that you can easily use any of these frameworks if you need to write up a simple &amp;#8212; and fast! &amp;#8212; web app in a single file with a few hundred lines of code (in that case, I&amp;#8217;d opt for Djangode), but you&amp;#8217;d be stomped if wanted different, re-usable applications meshing into a single project. &lt;a href="http://benjaminthomas.org/2009-11-20/designing-a-web-framework.html"&gt;Benjamin Thomas has gone in designing mode&lt;/a&gt; in order to come up with a mini-framework which isn&amp;#8217;t quite as &lt;i&gt;mini&lt;/i&gt; as the ones listed above. His ambition is to build&amp;#8230;&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;- The ability to bundle up a collection of controllers/views, models and templates into “apps” for easy portability and reuse.&lt;br/&gt;
- Smart defaults that hide a lot of the options/power/complexity. I think this is important for getting up and running quickly.&lt;br/&gt;
- A code base that is as small and simple as possible.&lt;br/&gt;
- I want it to feel javascript-like. Whatever that means. &lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;The end result is &lt;a href="http://bomber.obtdev.com/"&gt;Bomber&lt;/a&gt;. I like how Bomber creates simple URL routing to file-based (or rather node.js module-based) views, and how it lightly extends the core &lt;tt&gt;http.ServerRequest&lt;/tt&gt; and &lt;tt&gt;http.ServerResponse&lt;/tt&gt; objects. It feels almost native, but you see that enough of a foundation exists for this framework to actually include the ability to handle POSTs, sessions, cookies, multiple applications within a project and so on. There are no great ambitions where the framework will suddenly include a native XML parser (just a random example, sorry), but there&amp;#8217;s enough room to grow and spread the webby wings a bit.  &lt;/p&gt;
&lt;p&gt;The Bomber project is very much in flux. In fact, it might even be dead since the last commit is a month old. And the entire project is build around an &lt;tt&gt;&lt;a href="http://bomber.obtdev.com/docs/action.html"&gt;Action API&lt;/a&gt;&lt;/tt&gt; which about to be deprecated. Hopefully to be replaced with &lt;a href="http://api.dojotoolkit.org/jsdoc/1.2/dojo.Deferred"&gt;DOJO-style&lt;/a&gt;, native &lt;a href="http://groups.google.com/group/nodejs/browse_thread/thread/4a1ce27a1f588a7f/28b8fb57bb126ee2"&gt;Deferreds&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve been playing around a bit by adding some extra stuff to Bomber through &lt;a href="http://github.com/steffentchr/bomberjs"&gt;my own fork at github&lt;/a&gt;. I&amp;#8217;ve already tweaked a little with the app structure to allow for multiple projects to be bootstrapped with different configurations from the same Bomber library, and there is some copy-paste and bug fixes in there as well. This will likely include experiments with multi-application projects, per-application media directories, cookie and session handling and templating (although I disagree with Benjamin that Bomber should include its own templating system; this could probably be left for the programmer to choose).&lt;/p&gt;
&lt;p&gt;And now, back to Jersey Shore, bitches!&lt;/p&gt;</description><link>http://steffentchr.dk/post/7423832958</link><guid>http://steffentchr.dk/post/7423832958</guid><pubDate>Sat, 02 Jan 2010 22:39:59 +0100</pubDate><category>tumblrize</category></item><item><title>Using the keyboard to navigate a web site [KeyboardFocus]</title><description>&lt;p&gt;I&amp;#8217;m beginning work on a project which requires users to be able to navigate the content of a web page using only the keyboard, and where switching focus using the standard method of tabbing is not an option either. To solve this problem, I&amp;#8217;ve pieced together &lt;a href="/examples/keyboardfocus/keyboardfocus.js"&gt;KeyboardFocus&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;KeyboardFocus does one thing: Look through all elements on a web page with a given class name and make those elements selectable and clickable through the keyboard &amp;#8212; using the arrow keys and the enter key.&lt;/p&gt;
&lt;p&gt;Using the code is really quite easy:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Add the CSS class name focusable to all the items you need to be addresseable with the keyboard.&lt;/li&gt;
&lt;li&gt;Add some CSS style for .focusable, for .focused and possibly for .hovered.&lt;/li&gt;
&lt;li&gt;Include the &lt;a href="http://prototypejs.org"&gt;Prototype&lt;/a&gt; and &lt;a href="/examples/keyboardfocus/keyboardfocus.js"&gt;KeyboardFocus&lt;/a&gt; scripts in your header.&lt;/li&gt;
&lt;li&gt;Add the line var kf = new KeyboardFocus(); somewhere in your code.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;It could look something like &lt;a href="/examples/keyboardfocus/linked-document"&gt;this&lt;/a&gt;:&lt;/p&gt;
&lt;pre&gt;&amp;lt;html&amp;gt;
  &amp;lt;head&amp;gt;
    &amp;lt;script src="/script/prototype.js"&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src="keyboardfocus.js"&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;style type="text/css"&amp;gt;
    a {color:#06c; text-decoration:none;}
    .focusable {border-bottom:1px solid #06c;}
    a.focused {background-color:#06c; color:white;}
    &amp;lt;/style&amp;gt;
  &amp;lt;/head&amp;gt;
  &amp;lt;body&amp;gt;
    &amp;lt;ul&amp;gt;
      &amp;lt;li&amp;gt;A link &amp;lt;a class="focusable"
          href="http://www.google.com"&amp;gt;Google&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
      &amp;lt;li&amp;gt;A &amp;lt;a class="focusable"
          href="http://refresh.dk"&amp;gt;different link&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
      &amp;lt;li&amp;gt;A &amp;lt;a href="http://www.yahoo.com"&amp;gt;
          non-focusable link&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
      &amp;lt;li&amp;gt;And something &amp;lt;a class="focusable"
          href="http://xkcd.com/"&amp;gt;completely different&amp;lt;/a&amp;gt;.&amp;lt;/li&amp;gt;
    &amp;lt;/ul&amp;gt;
    &amp;lt;script&amp;gt;
      new KeyboardFocus();
    &amp;lt;/script&amp;gt;
  &amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/pre&gt;
&lt;p&gt;There&amp;#8217;s also an example with &lt;a href="/examples/keyboardfocus/random-boxes"&gt;random boxes&lt;/a&gt;.&lt;/p&gt;</description><link>http://steffentchr.dk/post/7423982416</link><guid>http://steffentchr.dk/post/7423982416</guid><pubDate>Fri, 16 Oct 2009 22:22:00 +0200</pubDate><category>tumblrize</category></item><item><title>Twune: Tweet your tunes</title><description>&lt;p&gt;A while back a spent a little time creating a simple service that allows tune-tweeting with legible, short URL. For example, &lt;a href="http://twune.net/DioDiver"&gt;twune.net/DioDiver&lt;/a&gt; will play Holy Diver by Dio. And &lt;a href="http://twune.net/BeatlesHand"&gt;twune.net/BeatlesHand&lt;/a&gt; will give you The Beatles&amp;#8217; I Want To Hold Your Hand. &lt;/p&gt;
&lt;p&gt;The scheme was inspired by some of the &lt;a href="http://blog.genstart.dk/2008/08/28/experiments-in-flash-your-own-private-mtv/"&gt;cool work&lt;/a&gt; that &lt;a href="http://www.twitter.com/mortenjust"&gt;Morten Just&lt;/a&gt; has been doing by mashing up YouTube videos with different data sources &amp;#8212; and I was happy Morten let me re-use some of his code.&lt;/p&gt;
&lt;p&gt;The service works by parsing the search string from the url (using WikiWords or whatever you&amp;#8217;d call them). It then tries to find a perfect match on Yahoo! Music which will be played in Yahoo&amp;#8217;s video player. If that doesn&amp;#8217;t work, the search is passed on to YouTube with the help of Morten&amp;#8217;s player. It&amp;#8217;s that simple.&lt;/p&gt;
&lt;p&gt;The name of the service was suggested by &lt;a href="http://twitter.com/guan"&gt;@guan&lt;/a&gt;. I had originally wanted to call it Twack. Still unsure which is best?  &lt;/p&gt;</description><link>http://steffentchr.dk/post/7423839616</link><guid>http://steffentchr.dk/post/7423839616</guid><pubDate>Mon, 06 Apr 2009 12:38:19 +0200</pubDate><category>tumblrize</category></item><item><title>Announcing TwitterEngine: Your own twitter aggregation site on AppEngine</title><description>&lt;p&gt;About a week ago &lt;a href="http://detersmart.dk"&gt;some&lt;/a&gt; &lt;a href="http://www.wemind.dk"&gt;friends&lt;/a&gt; launched &lt;a href="http://www.twittertinget.dk"&gt;Twittertinget.dk&lt;/a&gt;, a sleek app that aggregates tweets from politicians in the Danish parliament. In the name of democracy, the web application has a vital flaw though: It only lists tweets &lt;i&gt;from&lt;/i&gt; politician, not &lt;i&gt;to&lt;/i&gt; them. That makes for one-sided communication. &lt;/p&gt;
&lt;p&gt;As a friendly gesture, &lt;a href="http://www.socialsqaure.dk"&gt;Socialsquare&lt;/a&gt; asked me to create a complementary service, which does the exact opposite thing: Let&amp;#8217;s you know what people are tweeting to their elected representatives. This ended up in &lt;a href="http://www.folketwinget.dk"&gt;Folketwinget.dk&lt;/a&gt;, a simple site hosted on &lt;a href="http://code.google.com/appengine"&gt;Google AppEngine&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Now, aggregating tweets to and from the Danish Folketing seems like a faily specific, but it turns out that such an aggregator of can easily be used by any other group &amp;#8212; so we&amp;#8217;ve open sourced the code &lt;a href="http://github.com/steffentchr/TwitterEngine"&gt;over on Github&lt;/a&gt;. The code runs directly on AppEngine so it&amp;#8217;s easy to host and have running in a few minutes.&lt;/p&gt;
&lt;p&gt;For example, if you have a company called &lt;a href="http://www.23visual.com"&gt;23&lt;/a&gt; with a few employees on Twitter it might be cool to show all the incoming and outgoing tweets from the company. &lt;/p&gt;
&lt;p&gt;Get started by  &lt;a href="http://code.google.com/intl/da/appengine/downloads.html"&gt;installing the Google AppEngine SDK&lt;/a&gt;, start up a terminal and browse to the AppEngine folder on your local machine. Then&amp;#8230;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;1. Get the code&lt;/b&gt;&lt;br/&gt;
Run this command to download the code. (Obviously, you&amp;#8217;ll want to change the folder name from &lt;tt&gt;23tweets&lt;/tt&gt; to something else.)&lt;br/&gt;&lt;code&gt;git clone git://github.com/steffentchr/twitterengine.git 23tweets&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;2. Update &lt;tt&gt;app.yaml&lt;/tt&gt; and create &lt;tt&gt;config.yaml&lt;/tt&gt;&lt;/b&gt;&lt;br/&gt;
Open up the file called &lt;tt&gt;app.yaml&lt;/tt&gt; in the newly created folder and change the application name in the very first line of the file. In this example, we&amp;#8217;ll change it from &lt;tt&gt;twitterengine&lt;/tt&gt; to &lt;tt&gt;23tweets&lt;/tt&gt; &lt;/p&gt;
&lt;p&gt;Also, rename the file called &lt;tt&gt;config.yaml.sample&lt;/tt&gt; to &lt;tt&gt;config.yaml&lt;/tt&gt; &lt;/p&gt;
&lt;p&gt;&lt;b&gt;3. Create an AppEngine project&lt;/b&gt;&lt;br/&gt;
Open up GoogleAppEngineLauncher (it&amp;#8217;s called that on Mac anyway). Right-click in the window and select &amp;#8220;Add existing..&amp;#8221;. Now select the folder we&amp;#8217;ve just created and click OK. &lt;/p&gt;
&lt;p&gt;This is all you need to actually get the application up-and-running. Click the Run icon to start your development server and open up http://localhost:8000 in a browser. &lt;/p&gt;
&lt;p&gt;&lt;b&gt;4. Configure the application for your dirty purposes&lt;/b&gt;&lt;br/&gt;
Before you can import some tweets into your application you will need to update the configuration. Open up config.yaml in a text editor and change what you think is necessary. For my example, I&amp;#8217;ll use this configuration:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;
&lt;pre&gt;site_name: 23 tweets
site_tag_line: What is up with 23?
site_domain: 23tweets.appsport.com

twitter_username: 23pull
twitter_password: secretpassword

users:
- steffentchr
- mygdal
- mmmmmariaaaaa
- abemad
- guan
- burtblancher
- 23

hashes:
- 23
- 23hq
- twentythree&lt;/pre&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Basically: Use the user account of &lt;tt&gt;23pull&lt;/tt&gt; to get all tweets to and from @steffentchr, @mygdal, etc and all tweets with the hash &lt;tt&gt;#23&lt;/tt&gt;. Then call the site &amp;#8220;23 tweets&amp;#8221;.&lt;/p&gt;
&lt;p&gt;(This could just as easily have been used to create &lt;a href="http://twitter.com/sindre/status/1396304732"&gt;a Folketwinget-sibbling for the Norwegian parliament&lt;/a&gt; or for aggregating conversations of everything involved in a specific open source community.) &lt;/p&gt;
&lt;p&gt;&lt;b&gt;4b. Import the tweets&lt;/b&gt;&lt;br/&gt;
Now, go to &lt;tt&gt;http://localhost:8080/import&lt;/tt&gt; to trigger an import of everything specified in the config file. When you return to  &lt;tt&gt;http://localhost:8080/&lt;/tt&gt; you should see all a batch of the latest twitterings. &lt;/p&gt;
&lt;p&gt;When you&amp;#8217;ve finished step 5., the application will automatically import tweets every five minutes. The frequency can be changed by editing &lt;tt&gt;cron.yaml&lt;/tt&gt;.  &lt;/p&gt;
&lt;p&gt;&lt;b&gt;5. Deploy your app&lt;/b&gt;&lt;br/&gt;
Before you can deploy your new twitter aggregator to the wide web, you will need to create the application with Google. Go to &lt;a href="http://appengine.google.com/"&gt;the AppEngine dashboard&lt;/a&gt;, click the &amp;#8220;Create an application&amp;#8221; button and fill in the form. Remember to use the correct application identifier, i.e. &lt;tt&gt;23tweets&lt;/tt&gt;.&lt;/p&gt;
&lt;p&gt;When your application has been succesfully created, go back to GoogleAppEngineLauncher and right-click your project. Then select the deploy option and sign in to your Google account. That&amp;#8217;s it. It&amp;#8217;s online.&lt;/p&gt;
&lt;p&gt;Again, you&amp;#8217;ll need to visit &lt;tt&gt;http://&lt;b&gt;projectname&lt;/b&gt;.appspot.com/import&lt;/tt&gt; to import tweets into the online database and then go to &lt;tt&gt;http://&lt;b&gt;projectname&lt;/b&gt;.appspot.com/&lt;/tt&gt; to see the result.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;6. Customizing the design&lt;/b&gt;&lt;br/&gt;
You&amp;#8217;ll find that your site is in Danish and generally doesn&amp;#8217;t look the way you want it to. Changing the design though is fairly easy: Modify &lt;tt&gt;index.html&lt;/tt&gt; and &lt;tt&gt;resources/style.css&lt;/tt&gt; for your purposes. If you need anything fancy, the html file is structured using &lt;a href="http://www.djangobook.com/en/beta/chapter04/"&gt;the Django templating system&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Update April 24th 2009:&lt;/b&gt; Originally, this post contained information for running external cron jobs to import tweets. Today, the code has been updated to utilize AppEngine&amp;#8217;s new native cron feature which makes it all happend automagically..&lt;/p&gt;</description><link>http://steffentchr.dk/post/7423842109</link><guid>http://steffentchr.dk/post/7423842109</guid><pubDate>Thu, 02 Apr 2009 11:27:41 +0200</pubDate><category>tumblrize</category></item></channel></rss>

