From 610799bc2c2365a1bd2afba4ae2c11c1acb613b1 Mon Sep 17 00:00:00 2001 From: Jonas Smedegaard Date: Mon, 2 May 2011 01:18:31 +0200 Subject: Add initial msg pages. --- msg/gateway.da.po | 378 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ msg/gateway.mdwn | 145 +++++++++++++++++++++ 2 files changed, 523 insertions(+) create mode 100644 msg/gateway.da.po create mode 100644 msg/gateway.mdwn (limited to 'msg') diff --git a/msg/gateway.da.po b/msg/gateway.da.po new file mode 100644 index 0000000..fc96bfd --- /dev/null +++ b/msg/gateway.da.po @@ -0,0 +1,378 @@ +# SOME DESCRIPTIVE TITLE +# Copyright (C) YEAR Free Software Foundation, Inc. +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2011-05-02 01:06+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. type: Title # +#, no-wrap +msgid "Building a remote-control for real cars" +msgstr "Bygger en fjernbetjening til rigtige biler" + +#. type: Plain text +#, no-wrap +msgid "[[!meta date=\"2011-05-01\"]]\n" +msgstr "[[!meta date=\"2011-05-01\"]]\n" + +#. type: Plain text +#, no-wrap +msgid "[[!tag debian msg blog editorial]]\n" +msgstr "[[!tag debian msg blog editorial]]\n" + +#. type: Title ## +#, no-wrap +msgid "SMS is used to lock car doors" +msgstr "SMS bruges til at låse bildørene" + +#. type: Plain text +msgid "" +"[Copenhagen Carpool][] soon receive a new batch of electric cars. The new " +"cars will contain a cellphone tied to the door locks, to only let into the " +"car the member who booked its current timeslot." +msgstr "" +"[Københavns Delebiler][] modtager snart et nyt parti elbiler. De nye biler " +"indeholder en mobiltelefon knyttet til dørlåsen, så den kun lukker medlemmer " +"ind der har reserveret tid nu." + +#. type: Plain text +msgid "" +"I am setting up the system to connect the cars with their booking calendar." +msgstr "" +"Jeg sætter systemet op som forbinder bilerne med deres reservationskalender." + +#. type: Plain text +msgid "The general idea is to..." +msgstr "Overordnet er ideen at..." + +#. type: Bullet: ' 1. ' +msgid "Connect a standard cellphone to a computer." +msgstr "Forbinde en normal mobiltelefon til en computer." + +#. type: Bullet: ' 1. ' +msgid "Forward sms messages received on the phone to the calendar." +msgstr "Overføre sms beskeder modtaget på telefonen til kalenderen." + +#. type: Bullet: ' 1. ' +msgid "Send messages from the calendar through the phone." +msgstr "Sende beskeder fra kalenderen gennem telefonen." + +#. type: Bullet: ' 1. ' +msgid "Leave the system in a corner, turned on 24/7." +msgstr "Lade systemet stå i et hjørne, tændt døgnet rundt." + +#. type: Plain text +#, no-wrap +msgid "[[!graph src=\"\"\"\n" +msgstr "[[!graph src=\"\"\"\n" + +#. type: Plain text +#, no-wrap +msgid "" +"rankdir=LR\n" +"phone -> computer -> \"calendar\" [dir=\"both\"];\n" +msgstr "" +"rankdir=LR\n" +"telefon -> computer -> \"kalender\" [dir=\"both\"];\n" + +#. type: Plain text +msgid "" +"Most of my work is in trying to avoid ways things might go wrong -- which so " +"often happens when computers are involved." +msgstr "" +"Det meste af mit arbejde går ud på at undgå måder ting kan gå galt på -- som " +"så ofte sker når computere er involveret." + +#. type: Plain text +#, no-wrap +msgid "" +"What if...\n" +" * messages are delayed or lost?\n" +" * a chain of messages arrive out of order?\n" +" * messages are sent faster than they can be delivered?\n" +msgstr "" +"Hvad nu hvis...\n" +" * beskeder bliver forsinkede eller går tabt?\n" +" * en kæde af beskeder dukker op i forkert rækkefølge?\n" +" * beskeder sendes hurtigere end de kan ekspederes?\n" + +#. type: Plain text +#, no-wrap +msgid "" +"[Copenhagen Carpool]: http://www.kobenhavnsdelebiler.dk/\n" +" \"Københavns Delebiler\"\n" +msgstr "" +"[Københavns Delebiler]: http://www.kobenhavnsdelebiler.dk/\n" +" \"Københavns Delebiler\"\n" + +#. type: Title ## +#, no-wrap +msgid "Reliable conversation" +msgstr "Robust snak" + +#. type: Plain text +msgid "" +"Human conversation is most reliable when using plain speak. Slang, sarcasm " +"or jokes raise the risk of misunderstandings. This is quite similar in " +"computer conversation." +msgstr "" +"Menneskesnak er mest robust med jævn tale. Slang, sarkasme eller " +"vittigheder øger risiko for misforståelser. Dette minder meget om " +"computersnak." + +#. type: Plain text +msgid "" +"When surfing the Web, you normally \"GET\" a web page or \"POST\" new data " +"like a search query. The words \"GET\" and \"POST\" are \"plain speak\" of " +"the World Wide Web -- defined as a principle called \"[REST][]\" or " +"\"RESTful design\"." +msgstr "" +"Når du surfer på nettet, henter din webbrowser websider med \"GET\" (hent), " +"og en søgning eller anden formular sendes den med \"POST\" (send). Ordene " +"\"GET\" og \"POST\" er \"jævn tale\" på Spindet - World Wide Web - defineret " +"som et princip kaldet \"[REST][]\" eller \"RESTfuldt design\"." + +#. type: Plain text +#, no-wrap +msgid "" +"rankdir=LR\n" +"\"fetch document\" -> website [label=\"GET\", dir=\"back\"];\n" +"\"provide info\" -> website [label=\"POST\"];\n" +msgstr "" +"rankdir=LR\n" +"\"hent dokument\" -> websted [label=\"GET\", dir=\"back\"];\n" +"\"levér information\" -> websted [label=\"POST\"];\n" + +#. type: Plain text +msgid "" +"I use the [Kannel][] tool to talk directly to the phones. When an sms " +"arrives on the phone, Kannel \"GET\"s it to the calendar. That's weakly " +"expressed -- better if it had \"POST\"ed the message instead." +msgstr "" +"Jeg brugere værtøjet [Kannel][] til at snakke direkte med telefonerne. Når " +"en sms modtages på telefonen, \"GET\"'er Kannel den til kalenderen. Det er " +"svagt formuleret -- den burde have \"POST\"et beskeden i stedet." + +#. type: Plain text +#, no-wrap +msgid "" +"rankdir=LR\n" +"\"provide sms info\" -> \"calendar\" [label=\"GET\" style=\"dotted\"];\n" +msgstr "" +"rankdir=LR\n" +"\"levér sms information\" -> \"kalender\" [label=\"GET\" style=\"dotted\"];\n" + +#. type: Plain text +msgid "" +"Kannel is a quite reliable tool, but not RESTful in conversations. That " +"requires extra attention at other parts of the setup to avoid breakage in " +"special situations." +msgstr "" +"Kannel er et ret stabilt værktøj, men snakker ikke RESTfuldt. Det kræver " +"ekstra opmærksomhed andre steder i systemet for at undgå fejl i særlige " +"situationer." + +#. type: Plain text +msgid "That worries me." +msgstr "Det bekymrer mig." + +#. type: Plain text +#, no-wrap +msgid "" +"[Kannel]: http://www.kannel.org/\n" +" \"Kannel: Open Source WAP and SMS Gateway\"\n" +msgstr "" +"[Kannel]: http://www.kannel.org/\n" +" \"Kannel: Open Source WAP og SMS bro\"\n" + +#. type: Plain text +#, no-wrap +msgid "" +"[REST]: http://en.wikipedia.org/wiki/REST\n" +" \"Representational State Transfer\"\n" +msgstr "" +"[REST]: http://en.wikipedia.org/wiki/REST\n" +" \"Representational State Transfer\"\n" + +#. type: Title ## +#, no-wrap +msgid "Each car has a blog" +msgstr "Hver bil har en dagbog" + +#. type: Plain text +msgid "" +"So I setup a gateway from Kannel to RESTful conversation. And choose " +"classic blogging as style of conversation:" +msgstr "" +"Jeg opsætter derfor en \"bro\" fra Kannel til RESTfuld snak. Og vælger den " +"klassiske blogging (web-dagbog) som samtalestil:" + +#. type: Bullet: ' * ' +msgid "The carpool fleet is a blogroll" +msgstr "Delebilsflåden er en blogroll (dagbogssamling)" + +#. type: Bullet: ' * ' +msgid "each car has a blog" +msgstr "hver bil har en blog (dagbog)" + +#. type: Bullet: ' * ' +msgid "each sms emitted from a car is a blog entry" +msgstr "hver sms sendt fra en bil er et blog (dagbogs)indlæg" + +#. type: Plain text +msgid "" +"Blogging comes in two flavors, -- [RSS][] and [Atom][]. Both cover " +"distribution of messages. I use Atom because it is newest and coolest, and " +"because it also covers creating and editing meesages with the [AtomPub][] " +"extension." +msgstr "" +"Der er to typer blogging (dagbøger) -- [RSS][] og [Atom][]. Begge dækker " +"distribution af beskeder. Jeg bruger Atom fordi det er nyest og smartest, " +"og fordi det også dækker oprettelse og redigering af beskeder, gennem " +"udvidelsen [AtomPub][]." + +#. type: Plain text +msgid "" +"AtomPub allows the calendar to create an empty message -- which then " +"triggers an sms from the car which \"fills it in.\"" +msgstr "" +"AtomPub kan tillade kalenderen at oprette en tom besked -- som så udløser at " +"en sms fra bilen fylder indhold ind i den." + +#. type: Plain text +msgid "" +"AtomPub also let the calendar \"PUT\" tags onto existing messages, to mark " +"them as processed, read etc., and let an admin or a cleanup script \"DELETE" +"\" outdated entries or blogs. The words \"PUT\" and \"DELETE\" are RESTful " +"conversation as well." +msgstr "" +"AtomPub kan også lade kalenderen \"PUT\"te mærkater på eksisterende " +"beskeder, for at notere dem som behandlet, læst osv., og lade en " +"administrator eller en oprydningsrutine \"DELETE\" (slette) forældede " +"beskeder eller hele blogs. Ordene \"PUT\" og \"DELETE\" er også RESTfuld " +"snak." + +#. type: Plain text +#, no-wrap +msgid "" +"[Atom]: http://en.wikipedia.org/wiki/Atom\n" +" \"Atom\"\n" +msgstr "" +"[Atom]: http://en.wikipedia.org/wiki/Atom\n" +" \"Atom\"\n" + +#. type: Plain text +#, no-wrap +msgid "" +"[RSS]: http://en.wikipedia.org/wiki/RSS\n" +" \"RSS\"\n" +msgstr "" +"[RSS]: http://en.wikipedia.org/wiki/RSS\n" +" \"RSS\"\n" + +#. type: Plain text +#, no-wrap +msgid "" +"[AtomPub]: http://en.wikipedia.org/wiki/AtomPub\n" +" \"AtomPub\"\n" +msgstr "" +"[AtomPub]: http://en.wikipedia.org/wiki/AtomPub\n" +" \"AtomPub\"\n" + +#. type: Title ## +#, no-wrap +msgid "The system is dancing!" +msgstr "Systemet danser!" + +#. type: Plain text +msgid "" +"My sms-to-blog gateway is written in [Perl][], using the [Dancer][] toolkit." +msgstr "" +"Min sms-til-blog bro er skrevet i [Perl][], med hjælpesystemet [Dancer][]." + +#. type: Plain text +msgid "" +"Dancer makes it simple to setup a RESTful web conversation, and when I " +"contacted the authors on [IRC][], they swiftly added support for the non-" +"RESTful quirk that I needed." +msgstr "" +"Dancer (danser) gør det nemt at opsætte RESTfuld web-snak, og da jeg " +"kontaktede forfatterne på [IRC][], udvidede de hurtigt til at understøtte " +"den ikke-RESTfulde finurlighed jeg havde brug for." + +#. type: Plain text +#, no-wrap +msgid "" +"rankdir=LR\n" +"phone -> \"sms gateway\" [dir=\"both\"];\n" +"\"sms gateway\" -> \"blog gateway\" [dir=\"both\", style=\"dotted\"];\n" +"\"blog gateway\" -> calendar [dir=\"both\"];\n" +msgstr "" +"rankdir=LR\n" +"telefon -> \"sms bro\" [dir=\"both\"];\n" +"\"sms bro\" -> dagbogsbro [dir=\"both\", style=\"dotted\"];\n" +"dagbogsbro -> kalender [dir=\"both\"];\n" + +#. type: Plain text +msgid "" +"My sms-to-blog gateway is not yet ready, but basic routines work. The " +"[project is public][], and code is [Free Software][]." +msgstr "" +"Min sms-til-dagbogsbro er endnu ikke færdig, men basale rutiner fungerer. " +"[projektet er offentligt][], og koden er [Fri Software][]." + +#. type: Plain text +#, no-wrap +msgid "" +"[Perl]: http://en.wikipedia.org/wiki/Perl\n" +" \"Perl\"\n" +msgstr "" +"[Perl]: http://en.wikipedia.org/wiki/Perl\n" +" \"Perl\"\n" + +#. type: Plain text +#, no-wrap +msgid "" +"[Dancer]: http://www.perldancer.org/\n" +" \"Dancer: Perl web development framework\"\n" +msgstr "" +"[Dancer]: http://www.perldancer.org/\n" +" \"Dancer: Perl web-udviklingsmiljø\"\n" + +#. type: Plain text +#, no-wrap +msgid "" +"[IRC]: http://www.perldancer.org/irc\n" +" \"IRC Chat system (Internet Relay Chat)\"\n" +msgstr "" +"[IRC]: http://www.perldancer.org/irc\n" +" \"IRC Chat-system (Internet Relay Chat)\"\n" + +#. type: Plain text +#, no-wrap +msgid "" +"[project is public]: git://source.delebilfonden.dk/msg/\n" +" \"Kannel-to-AtomPub Gateway\"\n" +msgstr "" +"[projektet er offentligt]: git://source.delebilfonden.dk/msg/\n" +" \"Kannel-til-AtomPub bro\"\n" + +#. type: Plain text +#, no-wrap +msgid "" +"[Free Software]: http://www.debian.org/social_contract#guidelines\n" +" \"The Debian Free Software Guidelines (DFSG)\"\n" +msgstr "" +"[Fri Software]: http://www.debian.org/social_contract#guidelines\n" +" \"Debians retningslinjer for fri software (DFSG)\"\n" diff --git a/msg/gateway.mdwn b/msg/gateway.mdwn new file mode 100644 index 0000000..8cb979a --- /dev/null +++ b/msg/gateway.mdwn @@ -0,0 +1,145 @@ +# Building a remote-control for real cars + +[[!meta date="2011-05-01"]] +[[!tag debian msg blog editorial]] + +## SMS is used to lock car doors + +[Copenhagen Carpool][] soon receive a new batch of electric cars. +The new cars will contain a cellphone tied to the door locks, +to only let into the car the member who booked its current timeslot. + +I am setting up the system to connect the cars with their booking calendar. + +The general idea is to... + + 1. Connect a standard cellphone to a computer. + 1. Forward sms messages received on the phone to the calendar. + 1. Send messages from the calendar through the phone. + 1. Leave the system in a corner, turned on 24/7. + +[[!graph src=""" +rankdir=LR +phone -> computer -> "calendar" [dir="both"]; +"""]] + +Most of my work is in trying to avoid ways things might go wrong +-- which so often happens when computers are involved. + +What if... + * messages are delayed or lost? + * a chain of messages arrive out of order? + * messages are sent faster than they can be delivered? + +[Copenhagen Carpool]: http://www.kobenhavnsdelebiler.dk/ + "Københavns Delebiler" + + +## Reliable conversation + +Human conversation is most reliable when using plain speak. +Slang, sarcasm or jokes raise the risk of misunderstandings. +This is quite similar in computer conversation. + +When surfing the Web, +you normally "GET" a web page or "POST" new data like a search query. +The words "GET" and "POST" are "plain speak" of the World Wide Web +-- defined as a principle called "[REST][]" or "RESTful design". + +[[!graph src=""" +rankdir=LR +"fetch document" -> website [label="GET", dir="back"]; +"provide info" -> website [label="POST"]; +"""]] + +I use the [Kannel][] tool to talk directly to the phones. +When an sms arrives on the phone, +Kannel "GET"s it to the calendar. +That's weakly expressed +-- better if it had "POST"ed the message instead. + +[[!graph src=""" +rankdir=LR +"provide sms info" -> "calendar" [label="GET" style="dotted"]; +"""]] + +Kannel is a quite reliable tool, but not RESTful in conversations. +That requires extra attention at other parts of the setup +to avoid breakage in special situations. + +That worries me. + +[Kannel]: http://www.kannel.org/ + "Kannel: Open Source WAP and SMS Gateway" + +[REST]: http://en.wikipedia.org/wiki/REST + "Representational State Transfer" + + +## Each car has a blog + +So I setup a gateway from Kannel to RESTful conversation. +And choose classic blogging as style of conversation: + + * The carpool fleet is a blogroll + * each car has a blog + * each sms emitted from a car is a blog entry + +Blogging comes in two flavors, +-- [RSS][] and [Atom][]. +Both cover distribution of messages. +I use Atom because it is newest and coolest, +and because it also covers creating and editing meesages +with the [AtomPub][] extension. + +AtomPub allows the calendar to create an empty message +-- which then triggers an sms from the car which "fills it in." + +AtomPub also let the calendar "PUT" tags onto existing messages, +to mark them as processed, read etc., +and let an admin or a cleanup script "DELETE" outdated entries or blogs. +The words "PUT" and "DELETE" are RESTful conversation as well. + +[Atom]: http://en.wikipedia.org/wiki/Atom + "Atom" + +[RSS]: http://en.wikipedia.org/wiki/RSS + "RSS" + +[AtomPub]: http://en.wikipedia.org/wiki/AtomPub + "AtomPub" + + +## The system is dancing! + +My sms-to-blog gateway is written in [Perl][], +using the [Dancer][] toolkit. + +Dancer makes it simple to setup a RESTful web conversation, +and when I contacted the authors on [IRC][], +they swiftly added support for the non-RESTful quirk that I needed. + +[[!graph src=""" +rankdir=LR +phone -> "sms gateway" [dir="both"]; +"sms gateway" -> "blog gateway" [dir="both", style="dotted"]; +"blog gateway" -> calendar [dir="both"]; +"""]] + +My sms-to-blog gateway is not yet ready, but basic routines work. +The [project is public][], and code is [Free Software][]. + +[Perl]: http://en.wikipedia.org/wiki/Perl + "Perl" + +[Dancer]: http://www.perldancer.org/ + "Dancer: Perl web development framework" + +[IRC]: http://www.perldancer.org/irc + "IRC Chat system (Internet Relay Chat)" + +[project is public]: git://source.delebilfonden.dk/msg/ + "Kannel-to-AtomPub Gateway" + +[Free Software]: http://www.debian.org/social_contract#guidelines + "The Debian Free Software Guidelines (DFSG)" -- cgit v1.2.3