1 <!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Strict//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns=
"http://www.w3.org/1999/xhtml" dir=
"ltr">
5 <meta http-equiv=
"Content-Type" content=
"text/html;charset=utf-8" />
6 <title>Petter Reinholdtsen
</title>
7 <link rel=
"stylesheet" type=
"text/css" media=
"screen" href=
"http://people.skolelinux.org/pere/blog/style.css" />
8 <link rel=
"stylesheet" type=
"text/css" media=
"screen" href=
"http://people.skolelinux.org/pere/blog/vim.css" />
9 <link rel=
"alternate" title=
"RSS Feed" href=
"http://people.skolelinux.org/pere/blog/index.rss" type=
"application/rss+xml" />
14 <a href=
"http://people.skolelinux.org/pere/blog/">Petter Reinholdtsen
</a>
23 <div class=
"title"><a href=
"http://people.skolelinux.org/pere/blog/Jami_Ring__finally_functioning_peer_to_peer_communication_client.html">Jami/Ring, finally functioning peer to peer communication client
</a></div>
24 <div class=
"date">19th June
2019</div>
25 <div class=
"body"><p>Some years ago, in
2016, I
26 <a href=
"http://people.skolelinux.org/pere/blog/Experience_and_updated_recipe_for_using_the_Signal_app_without_a_mobile_phone.html">wrote
27 for the first time about
</a> the Ring peer to peer messaging system.
28 It would provide messaging without any central server coordinating the
29 system and without requiring all users to register a phone number or
30 own a mobile phone. Back then, I could not get it to work, and put it
31 aside until it had seen more development. A few days ago I decided to
32 give it another try, and am happy to report that this time I am able
33 to not only send and receive messages, but also place audio and video
34 calls. But only if UDP is not blocked into your network.
</p>
36 <p>The Ring system changed name earlier this year to
37 <a href=
"https://en.wikipedia.org/wiki/Jami_(software)">Jami
</a>. I
38 tried doing web search for 'ring' when I discovered it for the first
39 time, and can only applaud this change as it is impossible to find
40 something called Ring among the noise of other uses of that word. Now
41 you can search for 'jami' and this client and
42 <a href=
"https://jami.net/">the Jami system
</a> is the first hit at
43 least on duckduckgo.
</p>
45 <p>Jami will by default encrypt messages as well as audio and video
46 calls, and try to send them directly between the communicating parties
47 if possible. If this proves impossible (for example if both ends are
48 behind NAT), it will use a central SIP TURN server maintained by the
49 Jami project. Jami can also be a normal SIP client. If the SIP
50 server is unencrypted, the audio and video calls will also be
51 unencrypted. This is as far as I know the only case where Jami will
52 do anything without encryption.
</p>
54 <p>Jami is available for several platforms: Linux, Windows, MacOSX,
55 Android, iOS, and Android TV. It is included in Debian already. Jami
56 also work for those using F-Droid without any Google connections,
58 <a href=
"https://git.jami.net/savoirfairelinux/ring-project/wikis/technical/Protocol">The
59 protocol
</a> is described in the Ring project wiki. The system uses a
60 distributed hash table (DHT) system (similar to BitTorrent) running
61 over UDP. On one of the networks I use, I discovered Jami failed to
62 work. I tracked this down to the fact that incoming UDP packages
63 going to ports
1-
49999 were blocked, and the DHT would pick a random
64 port and end up in the low range most of the time. After talking to
65 the developers, I solved this by enabling the dhtproxy in the
66 settings, thus using TCP to talk to a central DHT proxy instead of
68 peering directly with others. I've been told the developers are
69 working on allowing DHT to use TCP to avoid this problem. I also ran
70 into a problem when trying to talk to the version of Ring included in
71 Debian Stable (Stretch). Apparently the protocol changed between
72 beta2 and the current version, making these clients incompatible.
73 Hopefully the protocol will not be made incompatible in the
76 <p>It is worth noting that while looking at Jami and its features, I
77 came across another communication platform I have not tested yet. The
78 <a href=
"https://en.wikipedia.org/wiki/Tox_(protocol)">Tox protocol
</a>
79 and
<a href=
"https://tox.chat/">family of Tox clients
</a>. It might
80 become the topic of a future blog post.
</p>
82 <p>As usual, if you use Bitcoin and want to show your support of my
83 activities, please send Bitcoin donations to my address
84 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
89 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/surveillance">surveillance
</a>.
94 <div class=
"padding"></div>
97 <div class=
"title"><a href=
"http://people.skolelinux.org/pere/blog/More_sales_number_for_my_Free_Culture_paper_editions__2019_edition_.html">More sales number for my Free Culture paper editions (
2019-edition)
</a></div>
98 <div class=
"date">11th June
2019</div>
99 <div class=
"body"><p>The first book I published,
100 <a href=
"http://www.free-culture.cc/">Free Culture by Lawrence
101 Lessig
</a>, is still selling a few copies. Not a lot, but enough to
102 have contributed slightly over $
500 to the
<a
103 href=
"https://creativecommons.org/">Creative Commons Corporation
</a>
104 so far. All the profit is sent there. Most books are still sold via
105 Amazon (
83 copies), with Ingram second (
49) and Lulu (
12) and Machette (
7) as
106 minor channels. Bying directly from Lulu bring the largest cut to
107 Creative Commons. The English Edition sold
80 copies so far, the
108 French
59 copies, and Norwegian only
8 copies. Nothing impressive,
109 but nice to see the work we put down is still being appreciated. The
110 ebook edition is available for free from
111 <a href=
"https://github.com/petterreinholdtsen/free-culture-lessig">Github
</a>.
</p>
114 <tr><th rowspan=
"2" valign=
"bottom">Title / language
</th>
115 <th colspan=
"7">Quantity
</th></tr>
117 <th>2016 jan-jun
</th>
118 <th>2016 jul-dec
</th>
119 <th>2017 jan-jun
</th>
120 <th>2017 jul-dec
</th>
121 <th>2018 jan-jun
</th>
122 <th>2018 jul-dec
</th>
123 <th>2019 jan-may
</th>
127 <td><a href=
"http://www.lulu.com/shop/lawrence-lessig/culture-libre/paperback/product-22645082.html">Culture Libre / French
</a></td>
128 <td align=
"right">3</td>
129 <td align=
"right">6</td>
130 <td align=
"right">19</td>
131 <td align=
"right">11</td>
132 <td align=
"right">7</td>
133 <td align=
"right">6</td>
134 <td align=
"right">7</td>
138 <td><a href=
"http://www.lulu.com/shop/lawrence-lessig/fri-kultur/paperback/product-22441576.html">Fri kultur / Norwegian
</a></td>
139 <td align=
"right">7</td>
140 <td align=
"right">1</td>
141 <td align=
"right">0</td>
142 <td align=
"right">0</td>
143 <td align=
"right">0</td>
144 <td align=
"right">0</td>
145 <td align=
"right">0</td>
149 <td><a href=
"http://www.lulu.com/shop/lawrence-lessig/free-culture/paperback/product-22440520.html">Free Culture / English
</a></td>
150 <td align=
"right">14</td>
151 <td align=
"right">27</td>
152 <td align=
"right">16</td>
153 <td align=
"right">9</td>
154 <td align=
"right">3</td>
155 <td align=
"right">7</td>
156 <td align=
"right">3</td>
161 <td align=
"right">24</td>
162 <td align=
"right">34</td>
163 <td align=
"right">35</td>
164 <td align=
"right">20</td>
165 <td align=
"right">10</td>
166 <td align=
"right">13</td>
167 <td align=
"right">10</td>
172 <p>It is fun to see the French edition being more popular than the
175 <p>If you would like to translate and publish the book in your native
176 language, I would be happy to help make it happen. Please get in
182 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/docbook">docbook
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/freeculture">freeculture
</a>.
187 <div class=
"padding"></div>
190 <div class=
"title"><a href=
"http://people.skolelinux.org/pere/blog/Official_MIME_type__text_vnd_sosi__for_SOSI_map_data.html">Official MIME type "text/vnd.sosi" for SOSI map data
</a></div>
191 <div class=
"date"> 4th June
2019</div>
192 <div class=
"body"><p>Just
15 days ago,
193 <ahref=
"http://people.skolelinux.org/pere/blog/MIME_type__text_vnd_sosi__for_SOSI_map_data.html">I
194 mentioned
</a> my submission to IANA to register an official MIME type
195 for the SOSI vector map format. This morning, just an hour ago, I was
197 <a href=
"https://www.iana.org/assignments/media-types/text/vnd.sosi">the
198 MIME type "text/vnd.sosi"
</a> is registered for this format. In
199 addition to this registration, my
200 <a href=
"https://github.com/file/file/blob/master/magic/Magdir/sosi">file(
1)
201 patch for a pattern matching rule for SOSI files
</a> has been accepted
202 into the official source of that program (pending a new release), and
203 I've been told by the team behind
204 <a href=
"https://www.nationalarchives.gov.uk/PRONOM/">PRONOM
</a> that
205 the SOSI format will be included in the next release of PRONOM, which
206 they plan to release this summer around July.
</p>
208 <p>I am very happy to see all of this fall into place, for use by
209 <a href=
"https://github.com/arkivverket/noark5-tjenestegrensesnitt-standard/">the
210 Noark
5 Tjenestegrensesnitt
</a> implementations.
</p>
212 <p>As usual, if you use Bitcoin and want to show your support of my
213 activities, please send Bitcoin donations to my address
214 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
219 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/kart">kart
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/noark5">noark5
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/standard">standard
</a>.
224 <div class=
"padding"></div>
227 <div class=
"title"><a href=
"http://people.skolelinux.org/pere/blog/The_space_rover_coquine__or_how_I_ended_up_on_the_dark_side_of_the_moon.html">The space rover coquine, or how I ended up on the dark side of the moon
</a></div>
228 <div class=
"date"> 2nd June
2019</div>
229 <div class=
"body"><p>A while back a college and friend from Debian and the Skolelinux /
230 Debian Edu project approached me, asking if I knew someone that might
231 be interested in helping out with a technology project he was running
232 as a teacher at
<a href=
"https://www.ecolefrancodanoise.dk/">L'école
233 franco-danoise
</a> - the Danish-French school and kindergarden. The
234 kids were building robots, rovers. The story behind it is to build a
236 <a href=
"http://blog.ecolefrancodanoise.dk/first-week-on-the-dark-side">on
237 the dark side of the moon
</a>, and remote control it. As travel cost
238 was a bit high for the final destination, and they wanted to test the
239 concept first, he was looking for volunteers to host a rover for the
240 kids to control in a foreign country. I ended up volunteering as a
241 host, and last week the rover arrived. It took a while to arrive
242 after
<a href=
"http://blog.ecolefrancodanoise.dk/model-moms">it was
243 built and shipped
</a>, because of customs confusion. Luckily we were
244 able fix it quickly with help from my colleges at work.
</p>
246 <p>This is what it looked like when the rover arrived. Note the cute
247 eyes looking up on me from the wrapping
</p>
249 <img src=
"http://people.skolelinux.org/pere/blog/images/2019-06-02-robot-dark-side-of-moon-esken-med-det-rare-i.jpeg" width=
"32%" style=
"clear:left"/>
250 <img src=
"http://people.skolelinux.org/pere/blog/images/2019-06-02-robot-dark-side-of-moon-den-ser-meg.jpeg" width=
"32%" style=
"clear:left"/>
251 <img src=
"http://people.skolelinux.org/pere/blog/images/2019-06-02-robot-dark-side-of-moon-en-skrue-loes.jpeg" width=
"32%" style=
"clear:left"/>
253 <p style=
"text-align:left">Once the robot arrived, we needed to track
254 down batteries and figure out how to build custom firmware for it with
255 the appropriate wifi settings. I asked a friend if I could get two
256 18650 batteries from his pile of Tesla batteries (he had them from the
257 wrack of a crashed Tesla), so now the rover is running on Tesla
261 <a href=
"https://gitlab.com/ecolefrancodanoise/arduino-efd/">the rover
262 firmware
</a> proved a bit harder, as the code did not work out of the
263 box with the Arduino IDE package in Debian Buster. I suspect this is
265 <a href=
"https://github.com/arduino/Arduino/pull/2703"> license problem
266 with arduino
</a> blocking Debian from upgrading to the latest version.
267 In the end we gave up debugging why the IDE failed to find the
268 required libraries, and ended up using the Arduino Makefile from the
269 <a href=
"https://tracker.debian.org/pkg/arduino-mk">arduino-mk Debian
270 package
</a> instead. Unfortunately the camera library is missing from
271 the Arduino environment in Debian, so we disabled the camera support
272 for the first firmware build, to get something up and running. With
273 this reduced firmware, the robot could be controlled via the
274 controller server, driving around and measuring distance using its
275 internal acoustic sensor.
</p>
277 <p>Next, With some help from my friend in Denmark, which checked in the
278 camera library into the gitlab repository for me to use, we were able
279 to build a new and more complete version of the firmware, and the
280 robot is now up and running. This is what the "commander" web page
281 look like after taking a measurement and a snapshot:
</p>
283 <img src=
"http://people.skolelinux.org/pere/blog/images/2019-06-02-robot-dark-side-of-moon-commander.png" width=
"40%" border=
"1" align=
"center"/>
285 <p>If you want to learn more about this project, you can check out the
286 <a href=
"https://hackaday.io/project/164082-the-dark-side-challenge">The
287 Dark Side Challenge
</a> Hackaday web pages.
</p>
289 <p>As usual, if you use Bitcoin and want to show your support of my
290 activities, please send Bitcoin donations to my address
291 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
296 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/robot">robot
</a>.
301 <div class=
"padding"></div>
304 <div class=
"title"><a href=
"http://people.skolelinux.org/pere/blog/Nikita_version_0_4_released___free_software_archive_API_server.html">Nikita version
0.4 released - free software archive API server
</a></div>
305 <div class=
"date">22nd May
2019</div>
306 <div class=
"body"><p>This morning, a new release of
307 <a href=
"https://gitlab.com/OsloMet-ABI/nikita-noark5-core/">Nikita
308 Noark
5 core project
</a> was
309 <a href=
"https://lists.nuug.no/pipermail/nikita-noark/2019-May/000468.html">announced
310 on the project mailing list
</a>. The Nikita free software solution is
311 an implementation of the Norwegian archive standard Noark
5 used by
312 government offices in Norway. These were the changes in version
0.4
313 since version
0.3, see the email link above for links to a demo site:
</p>
317 <li>Roll out OData handling to all endpoints where applicable
</li>
318 <li>Changed the relation key for "ny-journalpost" to the official one.
</li>
319 <li>Better link generation on outgoing links.
</li>
320 <li>Tidy up code and make code and approaches more consistent throughout
322 <li>Update rels to be in compliance with updated version in the
323 interface standard
</li>
324 <li>Avoid printing links on empty objects as they can't have links
</li>
325 <li>Small bug fixes and improvements
</li>
326 <li>Start moving generation of outgoing links to @Service layer so access
327 control can be used when generating links
</li>
328 <li>Log exception that was being swallowed so it's traceable
</li>
329 <li>Fix name mapping problem
</li>
330 <li>Update templated printing so templated should only be printed if it
331 is set true. Requires more work to roll out across entire
333 <li>Remove Record-
>DocumentObject as per domain model of n5v4
</li>
334 <li>Add ability to delete lists filtered with OData
</li>
335 <li>Return NO_CONTENT (
204) on delete as per interface standard
</li>
336 <li>Introduce support for ConstraintViolationException exception
</li>
337 <li>Make Service classes extend NoarkService
</li>
338 <li>Make code base respect X-Forwarded-Host, X-Forwarded-Proto and
339 X-Forwarded-Port
</li>
340 <li>Update CorrespondencePart* code to be more in line with Single
341 Responsibility Principle
</li>
342 <li>Make package name follow directory structure
</li>
343 <li>Make sure Document number starts at
1, not
0</li>
344 <li>Fix isues discovered by FindBugs
</li>
345 <li>Update from Date to ZonedDateTime
</li>
346 <li>Fix wrong tablename
</li>
347 <li>Introduce Service layer tests
</li>
348 <li>Improvements to CorrespondencePart
</li>
349 <li>Continued work on Class / Classificationsystem
</li>
350 <li>Fix feature where authors were stored as storageLocations
</li>
351 <li>Update HQL builder for OData
</li>
352 <li>Update OData search capability from webpage
</li>
356 <p>If free and open standardized archiving API sound interesting to
357 you, please contact us on IRC
358 (
<a href=
"irc://irc.freenode.net/%23nikita">#nikita on
359 irc.freenode.net
</a>) or email
360 (
<a href=
"https://lists.nuug.no/mailman/listinfo/nikita-noark">nikita-noark
361 mailing list
</a>).
</p>
363 <p>As usual, if you use Bitcoin and want to show your support of my
364 activities, please send Bitcoin donations to my address
365 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
370 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/noark5">noark5
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/nuug">nuug
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/offentlig innsyn">offentlig innsyn
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/standard">standard
</a>.
375 <div class=
"padding"></div>
378 <div class=
"title"><a href=
"http://people.skolelinux.org/pere/blog/MIME_type__text_vnd_sosi__for_SOSI_map_data.html">MIME type "text/vnd.sosi" for SOSI map data
</a></div>
379 <div class=
"date">20th May
2019</div>
380 <div class=
"body"><p>As part of my involvement in the work to
381 <a href=
"https://github.com/arkivverket/noark5-tjenestegrensesnitt-standard">standardise
382 a REST based API for Noark
5</a>, the Norwegian archiving standard, I
383 spent some time the last few months to try to register a
384 <a href=
"https://www.iana.org/assignments/media-types/">MIME type
</a>
385 and
<a href=
"https://www.nationalarchives.gov.uk/PRONOM/">PRONOM
386 code
</a> for the SOSI file format. The background is that there is a
387 set of formats approved for long term storage and archiving in Norway,
388 and among these formats, SOSI is the only format missing a MIME type
391 <p>What is SOSI, you might ask? To quote Wikipedia: SOSI is short for
392 Samordnet Opplegg for Stedfestet Informasjon (literally "Coordinated
393 Approach for Spatial Information", but more commonly expanded in
394 English to Systematic Organization of Spatial Information). It is a
395 text based file format for geo-spatial vector information used in
396 Norway. Information about the SOSI format can be found in English
397 from
<a href=
"https://en.wikipedia.org/wiki/SOSI">Wikipedia
</a>. The
398 specification is available in Norwegian from
399 <a href=
"https://www.kartverket.no/geodataarbeid/Standarder/SOSI/">the
400 Norwegian mapping authority
</a>. The SOSI standard, which originated
401 in the beginning of nineteen eighties, was the inspiration and formed the
402 basis for the XML based
403 <a href=
"https://en.wikipedia.org/wiki/Geography_Markup_Language">Geography
404 Markup Language
</a>.
</p>
406 <p>I have so far written
407 <a href=
"https://github.com/file/file/pull/67">a pattern matching
408 rule
</a> for the file(
1) unix tool to recognize SOSI files, submitted
409 a request to the PRONOM project to have a PRONOM ID assigned to the
410 format (reference TNA1555078202S60), and today send a request to IANA
411 to register the "text/vnd.sosi" MIME type for this format (referanse
412 <a href=
"https://tools.iana.org/public-view/viewticket/1143144">IANA
413 #
1143144</a>). If all goes well, in a few months, anyone implementing
414 the Noark
5 Tjenestegrensesnitt API spesification should be able to
415 use an official MIME type and PRONOM code for SOSI files. In
416 addition, anyone using SOSI files on Linux should be able to
417 automatically recognise the format and web sites handing out SOSI
418 files can begin providing a more specific MIME type. So far, SOSI
419 files has been handed out from web sites using the
420 "application/octet-stream" MIME type, which is just a nice way of
421 stating "I do not know". Soon, we will know. :)
</p>
423 <p>As usual, if you use Bitcoin and want to show your support of my
424 activities, please send Bitcoin donations to my address
425 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
430 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/kart">kart
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/noark5">noark5
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/standard">standard
</a>.
435 <div class=
"padding"></div>
438 <div class=
"title"><a href=
"http://people.skolelinux.org/pere/blog/PlantUML_for_text_based_UML_diagram_modelling___nice_free_software.html">PlantUML for text based UML diagram modelling - nice free software
</a></div>
439 <div class=
"date">25th March
2019</div>
440 <div class=
"body"><p>As part of my involvement with the
441 <a href=
"https://gitlab.com/OsloMet-ABI/nikita-noark5-core/">Nikita
442 Noark
5 core project
</a>, I have been proposing improvements to the
443 API specification created by
<a href=
"https://www.arkivverket.no/">The
444 National Archives of Norway
</a> and helped migrating the text from a
445 version control system unfriendly binary format (docx) to Markdown in
446 git. Combined with the migration to a public git repository (on
447 github), this has made it possible for anyone to suggest improvement
450 <p>The specification is filled with UML diagrams. I believe the
451 original diagrams were modelled using Sparx Systems Enterprise
452 Architect, and exported as EMF files for import into docx. This
453 approach make it very hard to track changes using a version control
454 system. To improve the situation I have been looking for a good text
455 based UML format with associated command line free software tools on
456 Linux and Windows, to allow anyone to send in corrections to the UML
457 diagrams in the specification. The tool must be text based to work
458 with git, and command line to be able to run it automatically to
459 generate the diagram images. Finally, it must be free software to
460 allow anyone, even those that can not accept a non-free software
461 license, to contribute.
</p>
463 <p>I did not know much about free software UML modelling tools when I
464 started. I have used dia and inkscape for simple modelling in the
465 past, but neither are available on Windows, as far as I could tell. I
467 <a href=
"https://modeling-languages.com/text-uml-tools-complete-list/">list
468 of text mode uml tools
</a>, and tested out a few of the tools listed
469 there.
<a href=
"http://plantuml.com/">The PlantUML tool
</a> seemed
470 most promising. After verifying that the packages
471 <a href=
"https://tracker.debian.org/pkg/plantuml">is available in
472 Debian
</a> and found
<a href=
"https://github.com/plantuml/plantuml">its
473 Java source
</a> under a GPL license on github, I set out to test if it
474 could represent the diagrams we needed, ie the ones currently in
475 <a href=
"https://github.com/arkivverket/noark5-tjenestegrensesnitt-standard/">the
476 Noark
5 Tjenestegrensesnitt specification
</a>. I am happy to report
477 that it could represent them, even thought it have a few warts here
480 <p>After a few days of modelling I completed the task this weekend. A
481 temporary link to the complete set of diagrams (original and from
482 PlantUML) is available in
483 <a href=
"https://github.com/arkivverket/noark5-tjenestegrensesnitt-standard/issues/76">the
484 github issue discussing the need for a text based UML format
</a>, but
485 please note I lack a sensible tool to convert EMF files to PNGs, so
486 the "original" rendering is not as good as the original was in the
489 <p>Here is an example UML diagram, showing the core classes for
490 keeping metadata about archived documents:
</p>
494 skinparam classAttributeIconSize
0
496 !include media/uml-class-arkivskaper.iuml
497 !include media/uml-class-arkiv.iuml
498 !include media/uml-class-klassifikasjonssystem.iuml
499 !include media/uml-class-klasse.iuml
500 !include media/uml-class-arkivdel.iuml
501 !include media/uml-class-mappe.iuml
502 !include media/uml-class-merknad.iuml
503 !include media/uml-class-registrering.iuml
504 !include media/uml-class-basisregistrering.iuml
505 !include media/uml-class-dokumentbeskrivelse.iuml
506 !include media/uml-class-dokumentobjekt.iuml
507 !include media/uml-class-konvertering.iuml
508 !include media/uml-datatype-elektronisksignatur.iuml
510 Arkivstruktur.Arkivskaper "+arkivskaper
1..*"
<-o "+arkiv 0..*" Arkivstruktur.Arkiv
511 Arkivstruktur.Arkiv o-->
"+underarkiv 0..*" Arkivstruktur.Arkiv
512 Arkivstruktur.Arkiv
"+arkiv 1" o-->
"+arkivdel 0..*" Arkivstruktur.Arkivdel
513 Arkivstruktur.Klassifikasjonssystem
"+klassifikasjonssystem [0..1]" <--o
"+arkivdel 1..*" Arkivstruktur.Arkivdel
514 Arkivstruktur.Klassifikasjonssystem
"+klassifikasjonssystem [0..1]" o-->
"+klasse 0..*" Arkivstruktur.Klasse
515 Arkivstruktur.Arkivdel
"+arkivdel 0..1" o-->
"+mappe 0..*" Arkivstruktur.Mappe
516 Arkivstruktur.Arkivdel
"+arkivdel 0..1" o-->
"+registrering 0..*" Arkivstruktur.Registrering
517 Arkivstruktur.Klasse
"+klasse 0..1" o-->
"+mappe 0..*" Arkivstruktur.Mappe
518 Arkivstruktur.Klasse
"+klasse 0..1" o-->
"+registrering 0..*" Arkivstruktur.Registrering
519 Arkivstruktur.Mappe -->
"+undermappe 0..*" Arkivstruktur.Mappe
520 Arkivstruktur.Mappe
"+mappe 0..1" o-->
"+registrering 0..*" Arkivstruktur.Registrering
521 Arkivstruktur.Merknad
"+merknad 0..*" <--* Arkivstruktur.Mappe
522 Arkivstruktur.Merknad
"+merknad 0..*" <--* Arkivstruktur.Dokumentbeskrivelse
523 Arkivstruktur.Basisregistrering -|
> Arkivstruktur.Registrering
524 Arkivstruktur.Merknad "+merknad
0..*" <--* Arkivstruktur.Basisregistrering
525 Arkivstruktur.Registrering "+registrering
1..*" o--> "+dokumentbeskrivelse
0..*" Arkivstruktur.Dokumentbeskrivelse
526 Arkivstruktur.Dokumentbeskrivelse "+dokumentbeskrivelse
1" o-
> "+dokumentobjekt 0..*" Arkivstruktur.Dokumentobjekt
527 Arkivstruktur.Dokumentobjekt *-
> "+konvertering 0..*" Arkivstruktur.Konvertering
528 Arkivstruktur.ElektroniskSignatur -[hidden]-
> Arkivstruktur.Dokumentobjekt
532 <p><a href=
"http://plantuml.com/class-diagram">The format
</a> is quite
533 compact, with little redundant information. The text expresses
534 entities and relations, and there is little layout related fluff. One
535 can reuse content by using include files, allowing for consistent
536 naming across several diagrams. The include files can be standalone
537 PlantUML too. Here is the content of
538 <tt>media/uml-class-arkivskaper.iuml
<tt>:
</p>
542 class Arkivstruktur.Arkivskaper
<Arkivenhet> {
543 +arkivskaperID : string
544 +arkivskaperNavn : string
545 +beskrivelse : string [
0.
.1]
550 <p>This is what the complete diagram for the PlantUML notation above
553 <p><img width=
"80%" src=
"http://people.skolelinux.org/pere/blog/images/2019-03-25-noark5-plantuml-diagrameksempel.png"></p>
555 <p>A cool feature of PlantUML is that the generated PNG files include
556 the entire original source diagram as text. The source (with include
557 statements expanded) can be extracted using for example
558 <tt>exiftool
</tt>. Another cool feature is that parts of the entities
559 can be hidden after inclusion. This allow to use include files with
560 all attributes listed, even for UML diagrams that should not list any
563 <p>The diagram also show some of the warts. Some times the layout
564 engine place text labels on top of each other, and some times it place
565 the class boxes too close to each other, not leaving room for the
566 labels on the relationship arrows. The former can be worked around by
567 placing extra newlines in the labes (ie "\n"). I did not do it here
568 to be able to demonstrate the issue. I have not found a good way
569 around the latter, so I normally try to reduce the problem by changing
570 from vertical to horizontal links to improve the layout.
</p>
572 <p>All in all, I am quite happy with PlantUML, and very impressed with
573 how quickly its lead developer responds to questions. So far I got an
574 answer to my questions in a few hours when I send an email. I
575 definitely recommend looking at PlantUML if you need to make UML
576 diagrams. Note, PlantUML can draw a lot more than class relations.
577 Check out the documention for a complete list. :)
</p>
579 <p>As usual, if you use Bitcoin and want to show your support of my
580 activities, please send Bitcoin donations to my address
581 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
586 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/nice free software">nice free software
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/noark5">noark5
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/nuug">nuug
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/standard">standard
</a>.
591 <div class=
"padding"></div>
594 <div class=
"title"><a href=
"http://people.skolelinux.org/pere/blog/Release_0_3_of_free_software_archive_API_system_Nikita_announced.html">Release
0.3 of free software archive API system Nikita announced
</a></div>
595 <div class=
"date">24th March
2019</div>
596 <div class=
"body"><p>Yesterday, a new release of
597 <a href=
"https://gitlab.com/OsloMet-ABI/nikita-noark5-core/">Nikita
598 Noark
5 core project
</a> was
599 <a href=
"https://lists.nuug.no/pipermail/nikita-noark/2019-March/000451.html">announced
600 on the project mailing list
</a>. The free software solution is an
601 implementation of the Norwegian archive standard Noark
5 used by
602 government offices in Norway. These were the changes in version
0.3
603 since version
0.2.1 (from NEWS.md):
</p>
606 <li>Improved ClassificationSystem and Class behaviour.
</li>
607 <li>Tidied up known inconsistencies between domain model and hateaos links.
</li>
608 <li>Added experimental code for blockchain integration.
</li>
609 <li>Make token expiry time configurable at upstart from properties file.
</li>
610 <li>Continued work on OData search syntax.
</li>
611 <li>Started work on pagination for entities, partly implemented for Saksmappe.
</li>
612 <li>Finalise ClassifiedCode Metadata entity.
</li>
613 <li>Implement mechanism to check if authentication token is still
614 valid. This allow the GUI to return a more sensible message to the
615 user if the token is expired.
</li>
616 <li>Reintroduce browse.html page to allow user to browse JSON API using
618 <li>Fix bug in handling file/mappe sequence number. Year change was
619 not properly handled.
</li>
620 <li>Update application yml files to be in sync with current development.
</li>
621 <li>Stop 'converting' everything to PDF using libreoffice. Only
622 convert the file formats doc, ppt, xls, docx, pptx, xlsx, odt, odp
624 <li>Continued code style fixing, making code more readable.
</li>
625 <li>Minor bug fixes.
</li>
629 <p>If free and open standardized archiving API sound interesting to
630 you, please contact us on IRC
631 (
<a href=
"irc://irc.freenode.net/%23nikita">#nikita on
632 irc.freenode.net
</a>) or email
633 (
<a href=
"https://lists.nuug.no/mailman/listinfo/nikita-noark">nikita-noark
634 mailing list
</a>).
</p>
636 <p>As usual, if you use Bitcoin and want to show your support of my
637 activities, please send Bitcoin donations to my address
638 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
643 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/noark5">noark5
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/nuug">nuug
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/offentlig innsyn">offentlig innsyn
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/standard">standard
</a>.
648 <div class=
"padding"></div>
651 <div class=
"title"><a href=
"http://people.skolelinux.org/pere/blog/_pen_og_gjennomsiktig_vedlikehold_av_spesifikasjonen_for_Noark_5_Tjenestegrensesnitt.html">Ã…pen og gjennomsiktig vedlikehold av spesifikasjonen for Noark
5 Tjenestegrensesnitt
</a></div>
652 <div class=
"date">11th March
2019</div>
653 <div class=
"body"><p>Et virksomhetsarkiv for meg, er et arbeidsverktøy der en enkelt kan
654 finne informasjonen en trenger når en trenger det, og der
655 virksomhetens samlede kunnskap er tilgjengelig. Det må være greit å
656 finne frem i, litt som en bibliotek. Men der et bibliotek gjerne tar
657 vare på offentliggjort informasjon som er tilgjengelig flere steder,
658 tar et arkiv vare på virksomhetsintern og til tider personlig
659 informasjon som ofte kun er tilgjengelig fra et sted.
</p>
661 <p>Jeg mistenker den eneste måten å sikre at arkivet inneholder den
662 samlede kunnskapen i en virksomhet, er å bruke det som virksomhetens
663 kunnskapslager. Det innebærer å automatisk kopiere (brev, epost,
664 SMS-er etc) inn i arkivet når de sendes og mottas, og der filtrere
665 vekk det en ikke vil ta vare på, og legge på metadata om det som er
666 samlet inn for enkel gjenfinning. En slik bruk av arkivet innebærer at
667 arkivet er en del av daglig virke, ikke at det er siste hvilested for
668 informasjon ingen lenger har daglig bruk for. For å kunne være en del
669 av det daglige virket må arkivet enkelt kunne integreres med andre
670 systemer. I disse dager betyr det å tilby arkivet som en
671 nett-tjeneste til hele virksomheten, tilgjengelig for både mennesker
672 og datamaskiner. Det betyr i tur å både tilby nettsider og et
673 maskinlesbart grensesnitt.
</p>
675 <p>For noen år siden erkjente visjonære arkivarer fordelene med et
676 standardisert maskinlesbart grensesnitt til organisasjonens arkiv. De
677 gikk igang med å lage noe de kalte
678 <a href=
"https://github.com/arkivverket/noark5-tjenestegrensesnitt-standard/">Noark
679 5 Tjenestegrensesnitt
</a>. Gjort riktig, så åpner slike maskinlesbare
680 grensesnitt for samvirke på tvers av uavhengige programvaresystemer.
681 Gjort feil, vil det blokkere for samvirke og bidra til
682 leverandørinnlåsing. For å gjøre det riktig så må grensesnittet være
683 klart og entydig beskrevet i en spesifikasjon som gjør at
684 spesifikasjonen tolkes på samme måte uavhengig av hvem som leser den,
685 og uavhengig av hvem som tar den i bruk.
</p>
687 <p>For å oppnå klare og entydige beskrivelser i en spesifikasjon, som
688 trengs for å kunne få en fri og åpen standard (se
689 <a href=
"http://people.skolelinux.org/pere/blog/Fri_og__pen_standard__slik_Digistan_ser_det.html">Digistan-definisjon
</a>),
690 så trengs det en åpen og gjennomsiktig inngangsport med lav terskel,
691 der de som forsøker å ta den i bruk enkelt kan få inn korreksjoner,
692 etterlyse klargjøringer og rapportere uklarheter i spesifikasjonen.
693 En trenger også automatiserte datasystemer som måler og sjekker at et
694 gitt grensesnitt fungerer i tråd med spesifikasjonen.
</p>
696 <p>For Noark
5 Tjenestegrensesnittet er det nå etablert en slik åpen
697 og gjennomsiktig inngangsport på prosjekttjenesten github. Denne
698 inngangsporten består først og fremst av en åpen portal som lar enhver
699 se hva som er gjort av endringer i spesifikasjonsteksten over tid, men
700 det hører også med et åpent
"diskusjonsforum
" der en kan
701 komme med endringsforslag og forespørsler om klargjøringer. Alle
702 registrerte brukere på github kan bidra med innspill til disse
705 <p>I samarbeide med Arkivverket har jeg fått opprettet et git-depot
706 med spesifikasjonsteksten for tjenestegrensesnittet, der det er lagt
707 inn historikk for endringer i teksten de siste årene, samt lagt inn
708 endringsforslag og forespørsler om klargjøring av teksten. Bakgrunnen
709 for at jeg bidro med dette er at jeg er involvert i
710 <a href=
"https://gitlab.com/OsloMet-ABI/nikita-noark5-core">Nikita-prosjektet
</a>,
711 som lager en fri programvare-utgave av Noark
5 Tjenestegrensesnitt.
712 Det er først når en forsøker å lage noe i tråd med en spesifikasjon at
713 en oppdager hvor mange detaljer som må beskrives i spesifikasjonen for
714 å sikre samhandling.
</p>
716 <p>Spesifikasjonen vedlikeholdes i et rent tekstformat, for å ha et
717 format egnet for versjonskontroll via versjontrollsystemet git. Dette
718 gjør det både enkelt å se konkret hvilke endringer som er gjort når,
719 samt gjør det praktisk mulig for enhver med github-konto å sende inn
720 endringsforslag med formuleringer til spesifikasjonsteksten. Dette
721 tekstformatet vises frem som nettsider på github, slik at en ikke
722 trenger spesielle verktøy for å se på siste utgave av
725 <p>Fra dette rene tekstformatet kan det så avledes ulike formater, som
726 HTML for websider, PDF for utskrift på papir og ePub for lesing med
727 ebokleser. Avlednings-systemet (byggesystemet) bruker i dag
728 verktøyene pandoc, latex, docbook-xsl og GNU make til
729 transformasjonen. Tekstformatet som brukes dag er
730 <a href=
"https://www.markdownguide.org/">Markdown
</a>, men det vurderes
732 <a href=
"https://github.com/arkivverket/noark5-tjenestegrensesnitt-standard/issues/9">endre
733 til formatet RST
</a> i fremtiden for bedre styring av utseende på
736 <p>Versjonskontrollsystemet git ble valgt da det er både fleksibelt,
737 avansert og enkelt å ta i bruk. Github ble valgt (foran f.eks. Gitlab
738 som vi bruker i Nikita), da Arkivverket allerede hadde tatt i bruk
739 Github i andre sammenhenger.
</p>
741 <p>Enkle endringer i teksten kan gjøres av priviligerte brukere
742 direkte i nettsidene til Github, ved å finne aktuell fil som skal
743 endres (f.eks. kapitler/
03-konformitet.md), klikke på den lille
744 bokstaven i høyre hjørne over teksten. Det kommer opp en nettside der
745 en kan endre teksten slik en ønsker. Når en er fornøyd med endringen
746 så må endringen
"sjekkes inn
" i historikken. Det gjøres ved
747 å gi en kort beskrivelse av endringen (beskriv helst hvorfor endringen
748 trengs, ikke hva som er endret), under overskriften
"Commit
749 changes
". En kan og bør legge inn en lengre forklaring i det
750 større skrivefeltet, før en velger om endringen skal sendes direkte
751 til 'master'-grenen (dvs. autorativ utgave av spesifikasjonen) eller
752 om en skal lage en ny gren for denne endringen og opprette en
753 endringsforespørsel (aka
"Pull Request
"/PR). NÃ¥r alt dette
754 er gjort kan en velge
"Commit changes
" for å sende inn
755 endringen. Hvis den er lagt inn i
"master
"-grenen så er den
756 en offisiell del av spesifikasjonen med en gang. Hvis den derimot er
757 en endringsforespørsel, så legges den inn i
758 <a href=
"https://github.com/arkivverket/noark5-tjenestegrensesnitt-standard/pulls">listen
759 over forslag til endringer
</a> som venter på korrekturlesing og
762 <p>Større endringer (for eksempel samtidig endringer i flere filer)
763 gjøres enklest ved å hente ned en kopi av git-depoet lokalt og gjøre
764 endringene der før endringsforslaget sendes inn. Denne prosessen er
765 godt beskrivet i dokumentasjon fra github. Git-prosjektet som skal
766 "klones
" er
767 <a href=
"https://github.com/arkivverket/noark5-tjenestegrensesnitt-standard/">https://github.com/arkivverket/noark5-tjenestegrensesnitt-standard/
</a>.
</p>
769 <p>For å registrere nye utfordringer (issues) eller kommentere på
770 eksisterende utfordringer benyttes nettsiden
771 <a href=
"https://github.com/arkivverket/noark5-tjenestegrensesnitt-standard/issues">https://github.com/arkivverket/noark5-tjenestegrensesnitt-standard/issues
</a>.
772 I skrivende stund er det
48 åpne og
11 avsluttede utfordringer. Et
773 forslag til hva som bør være med når en beskriver en utfordring er
774 tilgjengelig som utfordring
775 <a href=
"https://github.com/arkivverket/noark5-tjenestegrensesnitt-standard/issues/14">#
14</a>.
</p>
777 <p>For å bygge en PDF-utgave av spesifikasjonen så bruker jeg i dag en
778 Debian GNU/Linux-maskin med en rekke programpakker installert. NÃ¥r
779 dette er på plass, så holder det å kjøre kommandoen 'make pdf html' på
780 kommandolinjen, vente ca.
20 sekunder, før spesifikasjon.pdf og
781 spesifikasjon.html ligger klar på disken. Verktøyene for bygging av
782 PDF, HTML og ePub-utgave er også tilgjengelig på Windows og
785 <p>Github bidrar med rammeverket. Men for at åpent vedlikehold av
786 spesifikasjonen skal fungere, så trengs det folk som bidrar med sin
787 tid og kunnskap. Arkivverket har sagt de skal bidra med innspill og
788 godkjenne forslag til endringer, men det blir størst suksess hvis alle
789 som bruker og lager systemer basert på Noark
5 Tjenestegrensesnitt
790 bidrar med sin kunnskap og kommer med forslag til forebedringer. Jeg
791 stiller. Blir du med?
</p>
793 <p>Det er viktig å legge til rette for åpen diskusjon blant alle
794 interesserte, som ikke krever at en må godta lange kontrakter med
795 vilkår for deltagelse. Inntil Arkivverket dukker opp på IRC har vi
796 laget en IRC-kanal der interesserte enkelt kan orientere seg og
797 diskutere tjenestegrensesnittet. Alle er velkommen til å ta turen
799 <a href=
"https://webchat.freenode.net/?channels=nikita">#nikita
</a>
800 (f.eks. via irc.freenode.net) for å møte likesinnede.
</p>
802 <p>Det holder dog ikke å ha en god spesifikasjon, hvis ikke de som tar
803 den i bruk gjør en like god jobb. For å automatisk teste om et konkret
804 tjenestegrensesnitt følger (min) forståelse av
805 spesifikasjonsdokumentet, har jeg skrevet et program som kobler seg
806 opp til et Noark
5v4 REST-tjeneste og tester alt den finner for å se
807 om det er i henhold til min tolkning av spesifikasjonen. Dette
808 verktøyet er tilgjengelig fra
809 <a href=
"https://github.com/petterreinholdtsen/noark5-tester">https://github.com/petterreinholdtsen/noark5-tester
</a>,
810 og brukes daglig mens vi utvikler Nikita for å sikre at vi ikke
811 introduserer nye feil. Hvis en skal sikre samvirke på tvers av ulike
812 systemer er det helt essensielt å kunne raskt og automatisk sjekke at
813 tjenestegrensesnittet oppfører seg som forventet. Jeg håper andre som
814 lager sin utgave av tjenestegrensesnittet vi bruke dette verktøyet,
815 slik at vi tidlig og raskt kan oppdage hvor vi har tolket
816 spesifikasjonen ulikt, og dermed få et godt grunnlag for å gjøre
817 spesifikasjonsteksten enda klarere og bedre.
</p>
819 <p>Dagens beskrivelse av Noark
5 Tjenestegrensesnitt er et svært godt
820 utgangspunkt for å gjøre virksomhetens arkiv til et dynamisk og
821 sentralt arbeidsverktøy i organisasjonen. Blir du med å gjøre den
827 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/digistan">digistan
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/noark5">noark5
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/norsk">norsk
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/standard">standard
</a>.
832 <div class=
"padding"></div>
835 <div class=
"title"><a href=
"http://people.skolelinux.org/pere/blog/D_rlig_med_sikkerhetsoppdateringer_for_Ruters_billettautomater_i_Oslo_.html">DÃ¥rlig med sikkerhetsoppdateringer for Ruters billettautomater i Oslo?
</a></div>
836 <div class=
"date">13th February
2019</div>
837 <div class=
"body"><p><a href=
"http://people.skolelinux.org/pere/blog/Er_billettautomatene_til_kollektivtrafikken_i_Oslo_uten_sikkerhetsoppdateringer_.html">For
838 syv år siden
</a> oppdaget jeg at billettautomater for
839 kollektivtrafikken i Oslo kjørte
840 <a href=
"http://en.wikipedia.org/wiki/Windows_2000">Windows
2000
841 Professional
</a>. Operativsystemet har ikke fått sikkerhetsfikser fra
842 Microsoft siden
2010-
07-
13 i følge dem selv. Den samme versjonen av
843 operativsystemet var i bruk
844 <a href=
"http://people.skolelinux.org/pere/blog/Fortsatt_ingen_sikkerhetsoppdateringer_for_billettautomatene_til_kollektivtrafikken_i_Oslo_.html">for
845 to og et halvt år siden
</a>, og jammen er det ikke også i bruk den dag
848 <p align=
"center"><a href=
"http://people.skolelinux.org/pere/blog/images/2019-02-13-ruter-win2000pro.jpeg"><img width=
"40%" src=
"http://people.skolelinux.org/pere/blog/images/2019-02-13-ruter-win2000pro.jpeg" alt=
"[Bilde av Ruters billettautomat med Windows 2000-feilmelding]"></a></p>
850 <p>Bildet er tatt i dag av Kirill Miazine og tilgjengelig for bruk med
852 <a href=
"http://creativecommons.org/licenses/by/4.0/">Creative
853 Commons Attribution
4.0 International (CC BY
4.0)
</a>.
</p>
855 <p>Kanskje det hadde vært
856 <a href=
"https://www.aftenposten.no/osloby/i/awqgO/Her-kjorer-du-gratis-trikk-og-buss">bedre
857 med gratis kollektivtrafikk
</A>, slik at vi slapp å stole på
858 datakompetansen til Ruter for å verne våre privatliv samt holde
859 personopplysninger og betalingsinformasjon unna uvedkommende. Eneste
860 måten å sikre at hvor en befinner seg ikke kan hentes ut fra Ruters
861 systemer er å betale enkeltbilletter med kontanter. Jeg vet at Ruter
862 har en god historie om hvor personvernvennlige mobil-app og
863 RFID-kortene er, men den historien er ikke mulig å uavhengig
864 kontrollere uten priviligert tilgang til interne system og blir dermed
865 bare nok en god historie basert på tillit til de som forteller
866 historien. Det er ikke slik en sikrer privatsfæren. Det gjør en ved
867 å sikre at det ikke (kan) registreres informasjon om ens person.
</p>
869 <p>Som vanlig, hvis du bruker Bitcoin og ønsker å vise din støtte til
870 det jeg driver med, setter jeg pris på om du sender Bitcoin-donasjoner
872 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
873 Merk, betaling med bitcoin er ikke anonymt. :)
</p>
878 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/betalkontant">betalkontant
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/norsk">norsk
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/ruter">ruter
</a>.
883 <div class=
"padding"></div>
885 <p style=
"text-align: right;"><a href=
"index.rss"><img src=
"http://people.skolelinux.org/pere/blog/xml.gif" alt=
"RSS feed" width=
"36" height=
"14" /></a></p>
896 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2019/01/">January (
4)
</a></li>
898 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2019/02/">February (
3)
</a></li>
900 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2019/03/">March (
3)
</a></li>
902 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2019/05/">May (
2)
</a></li>
904 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2019/06/">June (
4)
</a></li>
911 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2018/01/">January (
1)
</a></li>
913 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2018/02/">February (
5)
</a></li>
915 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2018/03/">March (
5)
</a></li>
917 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2018/04/">April (
3)
</a></li>
919 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2018/06/">June (
2)
</a></li>
921 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2018/07/">July (
5)
</a></li>
923 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2018/08/">August (
3)
</a></li>
925 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2018/09/">September (
3)
</a></li>
927 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2018/10/">October (
5)
</a></li>
929 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2018/11/">November (
2)
</a></li>
931 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2018/12/">December (
4)
</a></li>
938 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2017/01/">January (
4)
</a></li>
940 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2017/02/">February (
3)
</a></li>
942 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2017/03/">March (
5)
</a></li>
944 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2017/04/">April (
2)
</a></li>
946 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2017/06/">June (
5)
</a></li>
948 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2017/07/">July (
1)
</a></li>
950 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2017/08/">August (
1)
</a></li>
952 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2017/09/">September (
3)
</a></li>
954 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2017/10/">October (
5)
</a></li>
956 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2017/11/">November (
3)
</a></li>
958 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2017/12/">December (
4)
</a></li>
965 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/01/">January (
3)
</a></li>
967 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/02/">February (
2)
</a></li>
969 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/03/">March (
3)
</a></li>
971 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/04/">April (
8)
</a></li>
973 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/05/">May (
8)
</a></li>
975 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/06/">June (
2)
</a></li>
977 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/07/">July (
2)
</a></li>
979 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/08/">August (
5)
</a></li>
981 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/09/">September (
2)
</a></li>
983 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/10/">October (
3)
</a></li>
985 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/11/">November (
8)
</a></li>
987 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/12/">December (
5)
</a></li>
994 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/01/">January (
7)
</a></li>
996 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/02/">February (
6)
</a></li>
998 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/03/">March (
1)
</a></li>
1000 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/04/">April (
4)
</a></li>
1002 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/05/">May (
3)
</a></li>
1004 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/06/">June (
4)
</a></li>
1006 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/07/">July (
6)
</a></li>
1008 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/08/">August (
2)
</a></li>
1010 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/09/">September (
2)
</a></li>
1012 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/10/">October (
9)
</a></li>
1014 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/11/">November (
6)
</a></li>
1016 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/12/">December (
3)
</a></li>
1023 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/01/">January (
2)
</a></li>
1025 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/02/">February (
3)
</a></li>
1027 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/03/">March (
8)
</a></li>
1029 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/04/">April (
7)
</a></li>
1031 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/05/">May (
1)
</a></li>
1033 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/06/">June (
2)
</a></li>
1035 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/07/">July (
2)
</a></li>
1037 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/08/">August (
2)
</a></li>
1039 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/09/">September (
5)
</a></li>
1041 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/10/">October (
6)
</a></li>
1043 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/11/">November (
3)
</a></li>
1045 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/12/">December (
5)
</a></li>
1052 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/01/">January (
11)
</a></li>
1054 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/02/">February (
9)
</a></li>
1056 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/03/">March (
9)
</a></li>
1058 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/04/">April (
6)
</a></li>
1060 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/05/">May (
9)
</a></li>
1062 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/06/">June (
10)
</a></li>
1064 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/07/">July (
7)
</a></li>
1066 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/08/">August (
3)
</a></li>
1068 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/09/">September (
5)
</a></li>
1070 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/10/">October (
7)
</a></li>
1072 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/11/">November (
9)
</a></li>
1074 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/12/">December (
3)
</a></li>
1081 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/01/">January (
7)
</a></li>
1083 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/02/">February (
10)
</a></li>
1085 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/03/">March (
17)
</a></li>
1087 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/04/">April (
12)
</a></li>
1089 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/05/">May (
12)
</a></li>
1091 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/06/">June (
20)
</a></li>
1093 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/07/">July (
17)
</a></li>
1095 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/08/">August (
6)
</a></li>
1097 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/09/">September (
9)
</a></li>
1099 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/10/">October (
17)
</a></li>
1101 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/11/">November (
10)
</a></li>
1103 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/12/">December (
7)
</a></li>
1110 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/01/">January (
16)
</a></li>
1112 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/02/">February (
6)
</a></li>
1114 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/03/">March (
6)
</a></li>
1116 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/04/">April (
7)
</a></li>
1118 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/05/">May (
3)
</a></li>
1120 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/06/">June (
2)
</a></li>
1122 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/07/">July (
7)
</a></li>
1124 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/08/">August (
6)
</a></li>
1126 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/09/">September (
4)
</a></li>
1128 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/10/">October (
2)
</a></li>
1130 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/11/">November (
3)
</a></li>
1132 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/12/">December (
1)
</a></li>
1139 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/01/">January (
2)
</a></li>
1141 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/02/">February (
1)
</a></li>
1143 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/03/">March (
3)
</a></li>
1145 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/04/">April (
3)
</a></li>
1147 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/05/">May (
9)
</a></li>
1149 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/06/">June (
14)
</a></li>
1151 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/07/">July (
12)
</a></li>
1153 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/08/">August (
13)
</a></li>
1155 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/09/">September (
7)
</a></li>
1157 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/10/">October (
9)
</a></li>
1159 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/11/">November (
13)
</a></li>
1161 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/12/">December (
12)
</a></li>
1168 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/01/">January (
8)
</a></li>
1170 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/02/">February (
8)
</a></li>
1172 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/03/">March (
12)
</a></li>
1174 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/04/">April (
10)
</a></li>
1176 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/05/">May (
9)
</a></li>
1178 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/06/">June (
3)
</a></li>
1180 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/07/">July (
4)
</a></li>
1182 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/08/">August (
3)
</a></li>
1184 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/09/">September (
1)
</a></li>
1186 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/10/">October (
2)
</a></li>
1188 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/11/">November (
3)
</a></li>
1190 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/12/">December (
3)
</a></li>
1197 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2008/11/">November (
5)
</a></li>
1199 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2008/12/">December (
7)
</a></li>
1210 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/3d-printer">3d-printer (
16)
</a></li>
1212 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/amiga">amiga (
1)
</a></li>
1214 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/aros">aros (
1)
</a></li>
1216 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/bankid">bankid (
4)
</a></li>
1218 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/betalkontant">betalkontant (
8)
</a></li>
1220 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/bitcoin">bitcoin (
11)
</a></li>
1222 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem (
17)
</a></li>
1224 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/bsa">bsa (
2)
</a></li>
1226 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/chrpath">chrpath (
2)
</a></li>
1228 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian (
168)
</a></li>
1230 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu (
158)
</a></li>
1232 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/debian-handbook">debian-handbook (
4)
</a></li>
1234 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/digistan">digistan (
11)
</a></li>
1236 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/dld">dld (
17)
</a></li>
1238 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/docbook">docbook (
26)
</a></li>
1240 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/drivstoffpriser">drivstoffpriser (
4)
</a></li>
1242 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/english">english (
406)
</a></li>
1244 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/fiksgatami">fiksgatami (
23)
</a></li>
1246 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/fildeling">fildeling (
14)
</a></li>
1248 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/freeculture">freeculture (
34)
</a></li>
1250 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/freedombox">freedombox (
9)
</a></li>
1252 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/frikanalen">frikanalen (
20)
</a></li>
1254 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/h264">h264 (
20)
</a></li>
1256 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/intervju">intervju (
42)
</a></li>
1258 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/isenkram">isenkram (
16)
</a></li>
1260 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/kart">kart (
22)
</a></li>
1262 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/kodi">kodi (
4)
</a></li>
1264 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/ldap">ldap (
9)
</a></li>
1266 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/lego">lego (
4)
</a></li>
1268 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/lenker">lenker (
8)
</a></li>
1270 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/lsdvd">lsdvd (
2)
</a></li>
1272 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/ltsp">ltsp (
1)
</a></li>
1274 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/mesh network">mesh network (
8)
</a></li>
1276 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia (
42)
</a></li>
1278 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/nice free software">nice free software (
12)
</a></li>
1280 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/noark5">noark5 (
15)
</a></li>
1282 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/norsk">norsk (
305)
</a></li>
1284 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/nuug">nuug (
195)
</a></li>
1286 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/offentlig innsyn">offentlig innsyn (
37)
</a></li>
1288 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/open311">open311 (
2)
</a></li>
1290 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/opphavsrett">opphavsrett (
73)
</a></li>
1292 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/personvern">personvern (
108)
</a></li>
1294 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/raid">raid (
2)
</a></li>
1296 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/reactos">reactos (
1)
</a></li>
1298 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/reprap">reprap (
11)
</a></li>
1300 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/rfid">rfid (
3)
</a></li>
1302 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/robot">robot (
12)
</a></li>
1304 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/rss">rss (
1)
</a></li>
1306 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/ruter">ruter (
7)
</a></li>
1308 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/scraperwiki">scraperwiki (
2)
</a></li>
1310 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet (
56)
</a></li>
1312 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/sitesummary">sitesummary (
4)
</a></li>
1314 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/skepsis">skepsis (
5)
</a></li>
1316 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/standard">standard (
64)
</a></li>
1318 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/stavekontroll">stavekontroll (
6)
</a></li>
1320 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/stortinget">stortinget (
12)
</a></li>
1322 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/surveillance">surveillance (
56)
</a></li>
1324 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/sysadmin">sysadmin (
4)
</a></li>
1326 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/usenix">usenix (
2)
</a></li>
1328 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/valg">valg (
9)
</a></li>
1330 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/verkidetfri">verkidetfri (
15)
</a></li>
1332 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/video">video (
73)
</a></li>
1334 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/vitenskap">vitenskap (
4)
</a></li>
1336 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/web">web (
42)
</a></li>
1342 <p style=
"text-align: right">
1343 Created by
<a href=
"http://steve.org.uk/Software/chronicle">Chronicle v4.6
</a>