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/Official_MIME_type__text_vnd_sosi__for_SOSI_map_data.html">Official MIME type "text/vnd.sosi" for SOSI map data
</a></div>
24 <div class=
"date"> 4th June
2019</div>
25 <div class=
"body"><p>Just
15 days ago,
26 <ahref=
"http://people.skolelinux.org/pere/blog/MIME_type__text_vnd_sosi__for_SOSI_map_data.html">I
27 mentioned
</a> my submission to IANA to register an official MIME type
28 for the SOSI vector map format. This morning, just an hour ago, I was
30 <a href=
"https://www.iana.org/assignments/media-types/text/vnd.sosi">the
31 MIME type "text/vnd.sosi"
</a> is registered for this format. In
32 addition to this registration, my
33 <a href=
"https://github.com/file/file/blob/master/magic/Magdir/sosi">file(
1)
34 patch for a pattern matching rule for SOSI files
</a> has been accepted
35 into the official source of that program (pending a new release), and
36 I've been told by the team behind
37 <a href=
"https://www.nationalarchives.gov.uk/PRONOM/">PRONOM
</a> that
38 the SOSI format will be included in the next release of PRONOM, which
39 they plan to release this summer around July.
</p>
41 <p>I am very happy to see all of this fall into place, for use by
42 <a href=
"https://github.com/arkivverket/noark5-tjenestegrensesnitt-standard/">the
43 Noark
5 Tjenestegrensesnitt
</a> implementations.
</p>
45 <p>As usual, if you use Bitcoin and want to show your support of my
46 activities, please send Bitcoin donations to my address
47 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
52 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>.
57 <div class=
"padding"></div>
60 <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>
61 <div class=
"date"> 2nd June
2019</div>
62 <div class=
"body"><p>A while back a college and friend from Debian and the Skolelinux /
63 Debian Edu project approached me, asking if I knew someone that might
64 be interested in helping out with a technology project he was running
65 as a teacher at
<a href=
"https://www.ecolefrancodanoise.dk/">L'école
66 franco-danoise
</a> - the Danish-French school and kindergarden. The
67 kids were building robots, rovers. The story behind it is to build a
69 <a href=
"http://blog.ecolefrancodanoise.dk/first-week-on-the-dark-side">on
70 the dark side of the moon
</a>, and remote control it. As travel cost
71 was a bit high for the final destination, and they wanted to test the
72 concept first, he was looking for volunteers to host a rover for the
73 kids to control in a foreign country. I ended up volunteering as a
74 host, and last week the rover arrived. It took a while to arrive
75 after
<a href=
"http://blog.ecolefrancodanoise.dk/model-moms">it was
76 built and shipped
</a>, because of customs confusion. Luckily we were
77 able fix it quickly with help from my colleges at work.
</p>
79 <p>This is what it looked like when the rover arrived. Note the cute
80 eyes looking up on me from the wrapping
</p>
82 <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"/>
83 <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"/>
84 <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"/>
86 <p style=
"text-align:left">Once the robot arrived, we needed to track
87 down batteries and figure out how to build custom firmware for it with
88 the appropriate wifi settings. I asked a friend if I could get two
89 18650 batteries from his pile of Tesla batteries (he had them from the
90 wrack of a crashed Tesla), so now the rover is running on Tesla
94 <a href=
"https://gitlab.com/ecolefrancodanoise/arduino-efd/">the rover
95 firmware
</a> proved a bit harder, as the code did not work out of the
96 box with the Arduino IDE package in Debian Buster. I suspect this is
98 <a href=
"https://github.com/arduino/Arduino/pull/2703"> license problem
99 with arduino
</a> blocking Debian from upgrading to the latest version.
100 In the end we gave up debugging why the IDE failed to find the
101 required libraries, and ended up using the Arduino Makefile from the
102 <a href=
"https://tracker.debian.org/pkg/arduino-mk">arduino-mk Debian
103 package
</a> instead. Unfortunately the camera library is missing from
104 the Arduino environment in Debian, so we disabled the camera support
105 for the first firmware build, to get something up and running. With
106 this reduced firmware, the robot could be controlled via the
107 controller server, driving around and measuring distance using its
108 internal acoustic sensor.
</p>
110 <p>Next, With some help from my friend in Denmark, which checked in the
111 camera library into the gitlab repository for me to use, we were able
112 to build a new and more complete version of the firmware, and the
113 robot is now up and running. This is what the "commander" web page
114 look like after taking a measurement and a snapshot:
</p>
116 <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"/>
118 <p>If you want to learn more about this project, you can check out the
119 <a href=
"https://hackaday.io/project/164082-the-dark-side-challenge">The
120 Dark Side Challenge
</a> Hackaday web pages.
</p>
122 <p>As usual, if you use Bitcoin and want to show your support of my
123 activities, please send Bitcoin donations to my address
124 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
129 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>.
134 <div class=
"padding"></div>
137 <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>
138 <div class=
"date">22nd May
2019</div>
139 <div class=
"body"><p>This morning, a new release of
140 <a href=
"https://gitlab.com/OsloMet-ABI/nikita-noark5-core/">Nikita
141 Noark
5 core project
</a> was
142 <a href=
"https://lists.nuug.no/pipermail/nikita-noark/2019-May/000468.html">announced
143 on the project mailing list
</a>. The Nikita free software solution is
144 an implementation of the Norwegian archive standard Noark
5 used by
145 government offices in Norway. These were the changes in version
0.4
146 since version
0.3, see the email link above for links to a demo site:
</p>
150 <li>Roll out OData handling to all endpoints where applicable
</li>
151 <li>Changed the relation key for "ny-journalpost" to the official one.
</li>
152 <li>Better link generation on outgoing links.
</li>
153 <li>Tidy up code and make code and approaches more consistent throughout
155 <li>Update rels to be in compliance with updated version in the
156 interface standard
</li>
157 <li>Avoid printing links on empty objects as they can't have links
</li>
158 <li>Small bug fixes and improvements
</li>
159 <li>Start moving generation of outgoing links to @Service layer so access
160 control can be used when generating links
</li>
161 <li>Log exception that was being swallowed so it's traceable
</li>
162 <li>Fix name mapping problem
</li>
163 <li>Update templated printing so templated should only be printed if it
164 is set true. Requires more work to roll out across entire
166 <li>Remove Record-
>DocumentObject as per domain model of n5v4
</li>
167 <li>Add ability to delete lists filtered with OData
</li>
168 <li>Return NO_CONTENT (
204) on delete as per interface standard
</li>
169 <li>Introduce support for ConstraintViolationException exception
</li>
170 <li>Make Service classes extend NoarkService
</li>
171 <li>Make code base respect X-Forwarded-Host, X-Forwarded-Proto and
172 X-Forwarded-Port
</li>
173 <li>Update CorrespondencePart* code to be more in line with Single
174 Responsibility Principle
</li>
175 <li>Make package name follow directory structure
</li>
176 <li>Make sure Document number starts at
1, not
0</li>
177 <li>Fix isues discovered by FindBugs
</li>
178 <li>Update from Date to ZonedDateTime
</li>
179 <li>Fix wrong tablename
</li>
180 <li>Introduce Service layer tests
</li>
181 <li>Improvements to CorrespondencePart
</li>
182 <li>Continued work on Class / Classificationsystem
</li>
183 <li>Fix feature where authors were stored as storageLocations
</li>
184 <li>Update HQL builder for OData
</li>
185 <li>Update OData search capability from webpage
</li>
189 <p>If free and open standardized archiving API sound interesting to
190 you, please contact us on IRC
191 (
<a href=
"irc://irc.freenode.net/%23nikita">#nikita on
192 irc.freenode.net
</a>) or email
193 (
<a href=
"https://lists.nuug.no/mailman/listinfo/nikita-noark">nikita-noark
194 mailing list
</a>).
</p>
196 <p>As usual, if you use Bitcoin and want to show your support of my
197 activities, please send Bitcoin donations to my address
198 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
203 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>.
208 <div class=
"padding"></div>
211 <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>
212 <div class=
"date">20th May
2019</div>
213 <div class=
"body"><p>As part of my involvement in the work to
214 <a href=
"https://github.com/arkivverket/noark5-tjenestegrensesnitt-standard">standardise
215 a REST based API for Noark
5</a>, the Norwegian archiving standard, I
216 spent some time the last few months to try to register a
217 <a href=
"https://www.iana.org/assignments/media-types/">MIME type
</a>
218 and
<a href=
"https://www.nationalarchives.gov.uk/PRONOM/">PRONOM
219 code
</a> for the SOSI file format. The background is that there is a
220 set of formats approved for long term storage and archiving in Norway,
221 and among these formats, SOSI is the only format missing a MIME type
224 <p>What is SOSI, you might ask? To quote Wikipedia: SOSI is short for
225 Samordnet Opplegg for Stedfestet Informasjon (literally "Coordinated
226 Approach for Spatial Information", but more commonly expanded in
227 English to Systematic Organization of Spatial Information). It is a
228 text based file format for geo-spatial vector information used in
229 Norway. Information about the SOSI format can be found in English
230 from
<a href=
"https://en.wikipedia.org/wiki/SOSI">Wikipedia
</a>. The
231 specification is available in Norwegian from
232 <a href=
"https://www.kartverket.no/geodataarbeid/Standarder/SOSI/">the
233 Norwegian mapping authority
</a>. The SOSI standard, which originated
234 in the beginning of nineteen eighties, was the inspiration and formed the
235 basis for the XML based
236 <a href=
"https://en.wikipedia.org/wiki/Geography_Markup_Language">Geography
237 Markup Language
</a>.
</p>
239 <p>I have so far written
240 <a href=
"https://github.com/file/file/pull/67">a pattern matching
241 rule
</a> for the file(
1) unix tool to recognize SOSI files, submitted
242 a request to the PRONOM project to have a PRONOM ID assigned to the
243 format (reference TNA1555078202S60), and today send a request to IANA
244 to register the "text/vnd.sosi" MIME type for this format (referanse
245 <a href=
"https://tools.iana.org/public-view/viewticket/1143144">IANA
246 #
1143144</a>). If all goes well, in a few months, anyone implementing
247 the Noark
5 Tjenestegrensesnitt API spesification should be able to
248 use an official MIME type and PRONOM code for SOSI files. In
249 addition, anyone using SOSI files on Linux should be able to
250 automatically recognise the format and web sites handing out SOSI
251 files can begin providing a more specific MIME type. So far, SOSI
252 files has been handed out from web sites using the
253 "application/octet-stream" MIME type, which is just a nice way of
254 stating "I do not know". Soon, we will know. :)
</p>
256 <p>As usual, if you use Bitcoin and want to show your support of my
257 activities, please send Bitcoin donations to my address
258 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
263 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>.
268 <div class=
"padding"></div>
271 <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>
272 <div class=
"date">25th March
2019</div>
273 <div class=
"body"><p>As part of my involvement with the
274 <a href=
"https://gitlab.com/OsloMet-ABI/nikita-noark5-core/">Nikita
275 Noark
5 core project
</a>, I have been proposing improvements to the
276 API specification created by
<a href=
"https://www.arkivverket.no/">The
277 National Archives of Norway
</a> and helped migrating the text from a
278 version control system unfriendly binary format (docx) to Markdown in
279 git. Combined with the migration to a public git repository (on
280 github), this has made it possible for anyone to suggest improvement
283 <p>The specification is filled with UML diagrams. I believe the
284 original diagrams were modelled using Sparx Systems Enterprise
285 Architect, and exported as EMF files for import into docx. This
286 approach make it very hard to track changes using a version control
287 system. To improve the situation I have been looking for a good text
288 based UML format with associated command line free software tools on
289 Linux and Windows, to allow anyone to send in corrections to the UML
290 diagrams in the specification. The tool must be text based to work
291 with git, and command line to be able to run it automatically to
292 generate the diagram images. Finally, it must be free software to
293 allow anyone, even those that can not accept a non-free software
294 license, to contribute.
</p>
296 <p>I did not know much about free software UML modelling tools when I
297 started. I have used dia and inkscape for simple modelling in the
298 past, but neither are available on Windows, as far as I could tell. I
300 <a href=
"https://modeling-languages.com/text-uml-tools-complete-list/">list
301 of text mode uml tools
</a>, and tested out a few of the tools listed
302 there.
<a href=
"http://plantuml.com/">The PlantUML tool
</a> seemed
303 most promising. After verifying that the packages
304 <a href=
"https://tracker.debian.org/pkg/plantuml">is available in
305 Debian
</a> and found
<a href=
"https://github.com/plantuml/plantuml">its
306 Java source
</a> under a GPL license on github, I set out to test if it
307 could represent the diagrams we needed, ie the ones currently in
308 <a href=
"https://github.com/arkivverket/noark5-tjenestegrensesnitt-standard/">the
309 Noark
5 Tjenestegrensesnitt specification
</a>. I am happy to report
310 that it could represent them, even thought it have a few warts here
313 <p>After a few days of modelling I completed the task this weekend. A
314 temporary link to the complete set of diagrams (original and from
315 PlantUML) is available in
316 <a href=
"https://github.com/arkivverket/noark5-tjenestegrensesnitt-standard/issues/76">the
317 github issue discussing the need for a text based UML format
</a>, but
318 please note I lack a sensible tool to convert EMF files to PNGs, so
319 the "original" rendering is not as good as the original was in the
322 <p>Here is an example UML diagram, showing the core classes for
323 keeping metadata about archived documents:
</p>
327 skinparam classAttributeIconSize
0
329 !include media/uml-class-arkivskaper.iuml
330 !include media/uml-class-arkiv.iuml
331 !include media/uml-class-klassifikasjonssystem.iuml
332 !include media/uml-class-klasse.iuml
333 !include media/uml-class-arkivdel.iuml
334 !include media/uml-class-mappe.iuml
335 !include media/uml-class-merknad.iuml
336 !include media/uml-class-registrering.iuml
337 !include media/uml-class-basisregistrering.iuml
338 !include media/uml-class-dokumentbeskrivelse.iuml
339 !include media/uml-class-dokumentobjekt.iuml
340 !include media/uml-class-konvertering.iuml
341 !include media/uml-datatype-elektronisksignatur.iuml
343 Arkivstruktur.Arkivskaper "+arkivskaper
1..*"
<-o "+arkiv 0..*" Arkivstruktur.Arkiv
344 Arkivstruktur.Arkiv o-->
"+underarkiv 0..*" Arkivstruktur.Arkiv
345 Arkivstruktur.Arkiv
"+arkiv 1" o-->
"+arkivdel 0..*" Arkivstruktur.Arkivdel
346 Arkivstruktur.Klassifikasjonssystem
"+klassifikasjonssystem [0..1]" <--o
"+arkivdel 1..*" Arkivstruktur.Arkivdel
347 Arkivstruktur.Klassifikasjonssystem
"+klassifikasjonssystem [0..1]" o-->
"+klasse 0..*" Arkivstruktur.Klasse
348 Arkivstruktur.Arkivdel
"+arkivdel 0..1" o-->
"+mappe 0..*" Arkivstruktur.Mappe
349 Arkivstruktur.Arkivdel
"+arkivdel 0..1" o-->
"+registrering 0..*" Arkivstruktur.Registrering
350 Arkivstruktur.Klasse
"+klasse 0..1" o-->
"+mappe 0..*" Arkivstruktur.Mappe
351 Arkivstruktur.Klasse
"+klasse 0..1" o-->
"+registrering 0..*" Arkivstruktur.Registrering
352 Arkivstruktur.Mappe -->
"+undermappe 0..*" Arkivstruktur.Mappe
353 Arkivstruktur.Mappe
"+mappe 0..1" o-->
"+registrering 0..*" Arkivstruktur.Registrering
354 Arkivstruktur.Merknad
"+merknad 0..*" <--* Arkivstruktur.Mappe
355 Arkivstruktur.Merknad
"+merknad 0..*" <--* Arkivstruktur.Dokumentbeskrivelse
356 Arkivstruktur.Basisregistrering -|
> Arkivstruktur.Registrering
357 Arkivstruktur.Merknad "+merknad
0..*" <--* Arkivstruktur.Basisregistrering
358 Arkivstruktur.Registrering "+registrering
1..*" o--> "+dokumentbeskrivelse
0..*" Arkivstruktur.Dokumentbeskrivelse
359 Arkivstruktur.Dokumentbeskrivelse "+dokumentbeskrivelse
1" o-
> "+dokumentobjekt 0..*" Arkivstruktur.Dokumentobjekt
360 Arkivstruktur.Dokumentobjekt *-
> "+konvertering 0..*" Arkivstruktur.Konvertering
361 Arkivstruktur.ElektroniskSignatur -[hidden]-
> Arkivstruktur.Dokumentobjekt
365 <p><a href=
"http://plantuml.com/class-diagram">The format
</a> is quite
366 compact, with little redundant information. The text expresses
367 entities and relations, and there is little layout related fluff. One
368 can reuse content by using include files, allowing for consistent
369 naming across several diagrams. The include files can be standalone
370 PlantUML too. Here is the content of
371 <tt>media/uml-class-arkivskaper.iuml
<tt>:
</p>
375 class Arkivstruktur.Arkivskaper
<Arkivenhet> {
376 +arkivskaperID : string
377 +arkivskaperNavn : string
378 +beskrivelse : string [
0.
.1]
383 <p>This is what the complete diagram for the PlantUML notation above
386 <p><img width=
"80%" src=
"http://people.skolelinux.org/pere/blog/images/2019-03-25-noark5-plantuml-diagrameksempel.png"></p>
388 <p>A cool feature of PlantUML is that the generated PNG files include
389 the entire original source diagram as text. The source (with include
390 statements expanded) can be extracted using for example
391 <tt>exiftool
</tt>. Another cool feature is that parts of the entities
392 can be hidden after inclusion. This allow to use include files with
393 all attributes listed, even for UML diagrams that should not list any
396 <p>The diagram also show some of the warts. Some times the layout
397 engine place text labels on top of each other, and some times it place
398 the class boxes too close to each other, not leaving room for the
399 labels on the relationship arrows. The former can be worked around by
400 placing extra newlines in the labes (ie "\n"). I did not do it here
401 to be able to demonstrate the issue. I have not found a good way
402 around the latter, so I normally try to reduce the problem by changing
403 from vertical to horizontal links to improve the layout.
</p>
405 <p>All in all, I am quite happy with PlantUML, and very impressed with
406 how quickly its lead developer responds to questions. So far I got an
407 answer to my questions in a few hours when I send an email. I
408 definitely recommend looking at PlantUML if you need to make UML
409 diagrams. Note, PlantUML can draw a lot more than class relations.
410 Check out the documention for a complete list. :)
</p>
412 <p>As usual, if you use Bitcoin and want to show your support of my
413 activities, please send Bitcoin donations to my address
414 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
419 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>.
424 <div class=
"padding"></div>
427 <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>
428 <div class=
"date">24th March
2019</div>
429 <div class=
"body"><p>Yesterday, a new release of
430 <a href=
"https://gitlab.com/OsloMet-ABI/nikita-noark5-core/">Nikita
431 Noark
5 core project
</a> was
432 <a href=
"https://lists.nuug.no/pipermail/nikita-noark/2019-March/000451.html">announced
433 on the project mailing list
</a>. The free software solution is an
434 implementation of the Norwegian archive standard Noark
5 used by
435 government offices in Norway. These were the changes in version
0.3
436 since version
0.2.1 (from NEWS.md):
</p>
439 <li>Improved ClassificationSystem and Class behaviour.
</li>
440 <li>Tidied up known inconsistencies between domain model and hateaos links.
</li>
441 <li>Added experimental code for blockchain integration.
</li>
442 <li>Make token expiry time configurable at upstart from properties file.
</li>
443 <li>Continued work on OData search syntax.
</li>
444 <li>Started work on pagination for entities, partly implemented for Saksmappe.
</li>
445 <li>Finalise ClassifiedCode Metadata entity.
</li>
446 <li>Implement mechanism to check if authentication token is still
447 valid. This allow the GUI to return a more sensible message to the
448 user if the token is expired.
</li>
449 <li>Reintroduce browse.html page to allow user to browse JSON API using
451 <li>Fix bug in handling file/mappe sequence number. Year change was
452 not properly handled.
</li>
453 <li>Update application yml files to be in sync with current development.
</li>
454 <li>Stop 'converting' everything to PDF using libreoffice. Only
455 convert the file formats doc, ppt, xls, docx, pptx, xlsx, odt, odp
457 <li>Continued code style fixing, making code more readable.
</li>
458 <li>Minor bug fixes.
</li>
462 <p>If free and open standardized archiving API sound interesting to
463 you, please contact us on IRC
464 (
<a href=
"irc://irc.freenode.net/%23nikita">#nikita on
465 irc.freenode.net
</a>) or email
466 (
<a href=
"https://lists.nuug.no/mailman/listinfo/nikita-noark">nikita-noark
467 mailing list
</a>).
</p>
469 <p>As usual, if you use Bitcoin and want to show your support of my
470 activities, please send Bitcoin donations to my address
471 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
476 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>.
481 <div class=
"padding"></div>
484 <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>
485 <div class=
"date">11th March
2019</div>
486 <div class=
"body"><p>Et virksomhetsarkiv for meg, er et arbeidsverktøy der en enkelt kan
487 finne informasjonen en trenger når en trenger det, og der
488 virksomhetens samlede kunnskap er tilgjengelig. Det må være greit å
489 finne frem i, litt som en bibliotek. Men der et bibliotek gjerne tar
490 vare på offentliggjort informasjon som er tilgjengelig flere steder,
491 tar et arkiv vare på virksomhetsintern og til tider personlig
492 informasjon som ofte kun er tilgjengelig fra et sted.
</p>
494 <p>Jeg mistenker den eneste måten å sikre at arkivet inneholder den
495 samlede kunnskapen i en virksomhet, er å bruke det som virksomhetens
496 kunnskapslager. Det innebærer å automatisk kopiere (brev, epost,
497 SMS-er etc) inn i arkivet når de sendes og mottas, og der filtrere
498 vekk det en ikke vil ta vare på, og legge på metadata om det som er
499 samlet inn for enkel gjenfinning. En slik bruk av arkivet innebærer at
500 arkivet er en del av daglig virke, ikke at det er siste hvilested for
501 informasjon ingen lenger har daglig bruk for. For å kunne være en del
502 av det daglige virket må arkivet enkelt kunne integreres med andre
503 systemer. I disse dager betyr det å tilby arkivet som en
504 nett-tjeneste til hele virksomheten, tilgjengelig for både mennesker
505 og datamaskiner. Det betyr i tur å både tilby nettsider og et
506 maskinlesbart grensesnitt.
</p>
508 <p>For noen år siden erkjente visjonære arkivarer fordelene med et
509 standardisert maskinlesbart grensesnitt til organisasjonens arkiv. De
510 gikk igang med å lage noe de kalte
511 <a href=
"https://github.com/arkivverket/noark5-tjenestegrensesnitt-standard/">Noark
512 5 Tjenestegrensesnitt
</a>. Gjort riktig, så åpner slike maskinlesbare
513 grensesnitt for samvirke på tvers av uavhengige programvaresystemer.
514 Gjort feil, vil det blokkere for samvirke og bidra til
515 leverandørinnlåsing. For å gjøre det riktig så må grensesnittet være
516 klart og entydig beskrevet i en spesifikasjon som gjør at
517 spesifikasjonen tolkes på samme måte uavhengig av hvem som leser den,
518 og uavhengig av hvem som tar den i bruk.
</p>
520 <p>For å oppnå klare og entydige beskrivelser i en spesifikasjon, som
521 trengs for å kunne få en fri og åpen standard (se
522 <a href=
"http://people.skolelinux.org/pere/blog/Fri_og__pen_standard__slik_Digistan_ser_det.html">Digistan-definisjon
</a>),
523 så trengs det en åpen og gjennomsiktig inngangsport med lav terskel,
524 der de som forsøker å ta den i bruk enkelt kan få inn korreksjoner,
525 etterlyse klargjøringer og rapportere uklarheter i spesifikasjonen.
526 En trenger også automatiserte datasystemer som måler og sjekker at et
527 gitt grensesnitt fungerer i tråd med spesifikasjonen.
</p>
529 <p>For Noark
5 Tjenestegrensesnittet er det nå etablert en slik åpen
530 og gjennomsiktig inngangsport på prosjekttjenesten github. Denne
531 inngangsporten består først og fremst av en åpen portal som lar enhver
532 se hva som er gjort av endringer i spesifikasjonsteksten over tid, men
533 det hører også med et åpent
"diskusjonsforum
" der en kan
534 komme med endringsforslag og forespørsler om klargjøringer. Alle
535 registrerte brukere på github kan bidra med innspill til disse
538 <p>I samarbeide med Arkivverket har jeg fått opprettet et git-depot
539 med spesifikasjonsteksten for tjenestegrensesnittet, der det er lagt
540 inn historikk for endringer i teksten de siste årene, samt lagt inn
541 endringsforslag og forespørsler om klargjøring av teksten. Bakgrunnen
542 for at jeg bidro med dette er at jeg er involvert i
543 <a href=
"https://gitlab.com/OsloMet-ABI/nikita-noark5-core">Nikita-prosjektet
</a>,
544 som lager en fri programvare-utgave av Noark
5 Tjenestegrensesnitt.
545 Det er først når en forsøker å lage noe i tråd med en spesifikasjon at
546 en oppdager hvor mange detaljer som må beskrives i spesifikasjonen for
547 å sikre samhandling.
</p>
549 <p>Spesifikasjonen vedlikeholdes i et rent tekstformat, for å ha et
550 format egnet for versjonskontroll via versjontrollsystemet git. Dette
551 gjør det både enkelt å se konkret hvilke endringer som er gjort når,
552 samt gjør det praktisk mulig for enhver med github-konto å sende inn
553 endringsforslag med formuleringer til spesifikasjonsteksten. Dette
554 tekstformatet vises frem som nettsider på github, slik at en ikke
555 trenger spesielle verktøy for å se på siste utgave av
558 <p>Fra dette rene tekstformatet kan det så avledes ulike formater, som
559 HTML for websider, PDF for utskrift på papir og ePub for lesing med
560 ebokleser. Avlednings-systemet (byggesystemet) bruker i dag
561 verktøyene pandoc, latex, docbook-xsl og GNU make til
562 transformasjonen. Tekstformatet som brukes dag er
563 <a href=
"https://www.markdownguide.org/">Markdown
</a>, men det vurderes
565 <a href=
"https://github.com/arkivverket/noark5-tjenestegrensesnitt-standard/issues/9">endre
566 til formatet RST
</a> i fremtiden for bedre styring av utseende på
569 <p>Versjonskontrollsystemet git ble valgt da det er både fleksibelt,
570 avansert og enkelt å ta i bruk. Github ble valgt (foran f.eks. Gitlab
571 som vi bruker i Nikita), da Arkivverket allerede hadde tatt i bruk
572 Github i andre sammenhenger.
</p>
574 <p>Enkle endringer i teksten kan gjøres av priviligerte brukere
575 direkte i nettsidene til Github, ved å finne aktuell fil som skal
576 endres (f.eks. kapitler/
03-konformitet.md), klikke på den lille
577 bokstaven i høyre hjørne over teksten. Det kommer opp en nettside der
578 en kan endre teksten slik en ønsker. Når en er fornøyd med endringen
579 så må endringen
"sjekkes inn
" i historikken. Det gjøres ved
580 å gi en kort beskrivelse av endringen (beskriv helst hvorfor endringen
581 trengs, ikke hva som er endret), under overskriften
"Commit
582 changes
". En kan og bør legge inn en lengre forklaring i det
583 større skrivefeltet, før en velger om endringen skal sendes direkte
584 til 'master'-grenen (dvs. autorativ utgave av spesifikasjonen) eller
585 om en skal lage en ny gren for denne endringen og opprette en
586 endringsforespørsel (aka
"Pull Request
"/PR). Når alt dette
587 er gjort kan en velge
"Commit changes
" for å sende inn
588 endringen. Hvis den er lagt inn i
"master
"-grenen så er den
589 en offisiell del av spesifikasjonen med en gang. Hvis den derimot er
590 en endringsforespørsel, så legges den inn i
591 <a href=
"https://github.com/arkivverket/noark5-tjenestegrensesnitt-standard/pulls">listen
592 over forslag til endringer
</a> som venter på korrekturlesing og
595 <p>Større endringer (for eksempel samtidig endringer i flere filer)
596 gjøres enklest ved å hente ned en kopi av git-depoet lokalt og gjøre
597 endringene der før endringsforslaget sendes inn. Denne prosessen er
598 godt beskrivet i dokumentasjon fra github. Git-prosjektet som skal
599 "klones
" er
600 <a href=
"https://github.com/arkivverket/noark5-tjenestegrensesnitt-standard/">https://github.com/arkivverket/noark5-tjenestegrensesnitt-standard/
</a>.
</p>
602 <p>For å registrere nye utfordringer (issues) eller kommentere på
603 eksisterende utfordringer benyttes nettsiden
604 <a href=
"https://github.com/arkivverket/noark5-tjenestegrensesnitt-standard/issues">https://github.com/arkivverket/noark5-tjenestegrensesnitt-standard/issues
</a>.
605 I skrivende stund er det
48 åpne og
11 avsluttede utfordringer. Et
606 forslag til hva som bør være med når en beskriver en utfordring er
607 tilgjengelig som utfordring
608 <a href=
"https://github.com/arkivverket/noark5-tjenestegrensesnitt-standard/issues/14">#
14</a>.
</p>
610 <p>For å bygge en PDF-utgave av spesifikasjonen så bruker jeg i dag en
611 Debian GNU/Linux-maskin med en rekke programpakker installert. Når
612 dette er på plass, så holder det å kjøre kommandoen 'make pdf html' på
613 kommandolinjen, vente ca.
20 sekunder, før spesifikasjon.pdf og
614 spesifikasjon.html ligger klar på disken. Verktøyene for bygging av
615 PDF, HTML og ePub-utgave er også tilgjengelig på Windows og
618 <p>Github bidrar med rammeverket. Men for at åpent vedlikehold av
619 spesifikasjonen skal fungere, så trengs det folk som bidrar med sin
620 tid og kunnskap. Arkivverket har sagt de skal bidra med innspill og
621 godkjenne forslag til endringer, men det blir størst suksess hvis alle
622 som bruker og lager systemer basert på Noark
5 Tjenestegrensesnitt
623 bidrar med sin kunnskap og kommer med forslag til forebedringer. Jeg
624 stiller. Blir du med?
</p>
626 <p>Det er viktig å legge til rette for åpen diskusjon blant alle
627 interesserte, som ikke krever at en må godta lange kontrakter med
628 vilkår for deltagelse. Inntil Arkivverket dukker opp på IRC har vi
629 laget en IRC-kanal der interesserte enkelt kan orientere seg og
630 diskutere tjenestegrensesnittet. Alle er velkommen til å ta turen
632 <a href=
"https://webchat.freenode.net/?channels=nikita">#nikita
</a>
633 (f.eks. via irc.freenode.net) for å møte likesinnede.
</p>
635 <p>Det holder dog ikke å ha en god spesifikasjon, hvis ikke de som tar
636 den i bruk gjør en like god jobb. For å automatisk teste om et konkret
637 tjenestegrensesnitt følger (min) forståelse av
638 spesifikasjonsdokumentet, har jeg skrevet et program som kobler seg
639 opp til et Noark
5v4 REST-tjeneste og tester alt den finner for å se
640 om det er i henhold til min tolkning av spesifikasjonen. Dette
641 verktøyet er tilgjengelig fra
642 <a href=
"https://github.com/petterreinholdtsen/noark5-tester">https://github.com/petterreinholdtsen/noark5-tester
</a>,
643 og brukes daglig mens vi utvikler Nikita for å sikre at vi ikke
644 introduserer nye feil. Hvis en skal sikre samvirke på tvers av ulike
645 systemer er det helt essensielt å kunne raskt og automatisk sjekke at
646 tjenestegrensesnittet oppfører seg som forventet. Jeg håper andre som
647 lager sin utgave av tjenestegrensesnittet vi bruke dette verktøyet,
648 slik at vi tidlig og raskt kan oppdage hvor vi har tolket
649 spesifikasjonen ulikt, og dermed få et godt grunnlag for å gjøre
650 spesifikasjonsteksten enda klarere og bedre.
</p>
652 <p>Dagens beskrivelse av Noark
5 Tjenestegrensesnitt er et svært godt
653 utgangspunkt for å gjøre virksomhetens arkiv til et dynamisk og
654 sentralt arbeidsverktøy i organisasjonen. Blir du med å gjøre den
660 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>.
665 <div class=
"padding"></div>
668 <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>
669 <div class=
"date">13th February
2019</div>
670 <div class=
"body"><p><a href=
"http://people.skolelinux.org/pere/blog/Er_billettautomatene_til_kollektivtrafikken_i_Oslo_uten_sikkerhetsoppdateringer_.html">For
671 syv år siden
</a> oppdaget jeg at billettautomater for
672 kollektivtrafikken i Oslo kjørte
673 <a href=
"http://en.wikipedia.org/wiki/Windows_2000">Windows
2000
674 Professional
</a>. Operativsystemet har ikke fått sikkerhetsfikser fra
675 Microsoft siden
2010-
07-
13 i følge dem selv. Den samme versjonen av
676 operativsystemet var i bruk
677 <a href=
"http://people.skolelinux.org/pere/blog/Fortsatt_ingen_sikkerhetsoppdateringer_for_billettautomatene_til_kollektivtrafikken_i_Oslo_.html">for
678 to og et halvt år siden
</a>, og jammen er det ikke også i bruk den dag
681 <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>
683 <p>Bildet er tatt i dag av Kirill Miazine og tilgjengelig for bruk med
685 <a href=
"http://creativecommons.org/licenses/by/4.0/">Creative
686 Commons Attribution
4.0 International (CC BY
4.0)
</a>.
</p>
688 <p>Kanskje det hadde vært
689 <a href=
"https://www.aftenposten.no/osloby/i/awqgO/Her-kjorer-du-gratis-trikk-og-buss">bedre
690 med gratis kollektivtrafikk
</A>, slik at vi slapp å stole på
691 datakompetansen til Ruter for å verne våre privatliv samt holde
692 personopplysninger og betalingsinformasjon unna uvedkommende. Eneste
693 måten å sikre at hvor en befinner seg ikke kan hentes ut fra Ruters
694 systemer er å betale enkeltbilletter med kontanter. Jeg vet at Ruter
695 har en god historie om hvor personvernvennlige mobil-app og
696 RFID-kortene er, men den historien er ikke mulig å uavhengig
697 kontrollere uten priviligert tilgang til interne system og blir dermed
698 bare nok en god historie basert på tillit til de som forteller
699 historien. Det er ikke slik en sikrer privatsfæren. Det gjør en ved
700 å sikre at det ikke (kan) registreres informasjon om ens person.
</p>
702 <p>Som vanlig, hvis du bruker Bitcoin og ønsker å vise din støtte til
703 det jeg driver med, setter jeg pris på om du sender Bitcoin-donasjoner
705 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
706 Merk, betaling med bitcoin er ikke anonymt. :)
</p>
711 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>.
716 <div class=
"padding"></div>
719 <div class=
"title"><a href=
"http://people.skolelinux.org/pere/blog/Stortinget_vedtar_maskinlesbart_register_over_20__av_selskapseierne_i_Norge.html">Stortinget vedtar maskinlesbart register over
20% av selskapseierne i Norge
</a></div>
720 <div class=
"date"> 7th February
2019</div>
721 <div class=
"body"><p>Jeg registrerer med glede at Stortinget i dag har
722 <a href=
"https://www.stortinget.no/no/Saker-og-publikasjoner/Saker/Sak/?p=72826">vedtatt
723 at det skal vedlikeholdes et åpent og maskinlesbart register over
724 reelle rettighetshavere i Norge
</a>. Her kan en kanskje få et
725 register som kan brukes til å analysere eierskap og kontroll i Norge
726 maskinelt og knytte det til internasjonale databaser som
727 <a href=
"https://opencorporates.com/">OpenCorporates
</a>. Det liker
730 <p>Den vedtatte grense på
25 prosents eierandel fikk stor
731 oppmerksomhet i debatten. Jeg ser fra enkel analyse av skatteetatens
732 eierskapsregister at
80.4% av alle selskapseiere i registeret har
733 mindre enn
25% eierandel, mot
73.8% som har mindre enn
5% eierandel.
734 En grense på
25% vil altså utelukke
80.4% av selskapseierne fra det
735 vedtatte registeret, og en grense på
5% vil skjule
73.8%. En må helt
736 ned i registrering av eierandeler over circa
0.002% for å få mer enn
737 halvparten av selskapseierne i Norge. Mon tro hvor langt ned en må i
738 eierprosent for å få med alle eierskapene til politisk valgte
741 <p>Jeg biter meg også merke i at Sivert Bjørnstad fra FrP
742 tilsynelatende tror at aksjonærregisteret er et eksisterende åpent
743 register, på tross av at det så vidt jeg vet kun deles ved personlig
744 oppmøte hos skatteetaten og ikke er tilgjengelig i maskinlesbart
745 format for enhver, og dermed så langt ikke er importert inn i
746 OpenCorporates. Det anser jeg ikke for et spesielt åpent register.
747 Debatten ga ellers lite håp om at situasjonen bedrer seg, da
748 finansministeren bare henviste til en fraværende næringsministeren og
749 ikke ville uttale seg om et skikkelig aksjonærregister snart dukker
752 <p>Som vanlig, hvis du bruker Bitcoin og ønsker å vise din støtte til
753 det jeg driver med, setter jeg pris på om du sender Bitcoin-donasjoner
755 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
756 Merk, betaling med bitcoin er ikke anonymt. :)
</p>
761 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/norsk">norsk
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/offentlig innsyn">offentlig innsyn
</a>.
766 <div class=
"padding"></div>
769 <div class=
"title"><a href=
"http://people.skolelinux.org/pere/blog/Websocket_from_Kraken_in_Valutakrambod.html">Websocket from Kraken in Valutakrambod
</a></div>
770 <div class=
"date"> 1st February
2019</div>
771 <div class=
"body"><p>Yesterday, the Kraken virtual currency exchange announced
772 <a href=
"https://blog.kraken.com/post/2019/websockets-public-api-launching-soon/">their
773 Websocket service
</a>, providing a stream of exchange updates to its
774 clients. Getting updated rates quickly is a good idea, so I used
775 their
<a href=
"https://www.kraken.com/en-us/help/websocket-api">API
776 documentation
</a> and added Websocket support to the Kraken service in
777 Valutakrambod today. The python library can now get updates
778 from Kraken several times per second, instead of every time the
779 information is polled from the REST API.
</p>
781 <p>If this sound interesting to you, the code for valutakrambod is
783 <a href=
"http://github.com/petterreinholdtsen/valutakrambod">github
</a>.
784 Here is example output from the example client displaying rates in a
788 Name Pair Bid Ask Spr Ftcd Age
789 BitcoinsNorway BTCEUR
2959.2800 3021.0500 2.0%
36 nan nan
790 Bitfinex BTCEUR
3087.9000 3088.0000 0.0%
36 37 nan
791 Bitmynt BTCEUR
3001.8700 3135.4600 4.3%
36 52 nan
792 Bitpay BTCEUR
3003.8659 nan nan%
35 nan nan
793 Bitstamp BTCEUR
3008.0000 3010.2300 0.1%
0 1 1
794 Bl3p BTCEUR
3000.6700 3010.9300 0.3%
1 nan nan
795 Coinbase BTCEUR
2992.1800 3023.2500 1.0%
34 nan nan
796 Kraken+BTCEUR
3005.7000 3006.6000 0.0%
0 1 0
797 Paymium BTCEUR
2940.0100 2993.4400 1.8%
0 2688 nan
798 BitcoinsNorway BTCNOK
29000.0000 29360.7400 1.2%
36 nan nan
799 Bitmynt BTCNOK
29115.6400 29720.7500 2.0%
36 52 nan
800 Bitpay BTCNOK
29029.2512 nan nan%
36 nan nan
801 Coinbase BTCNOK
28927.6000 29218.5900 1.0%
35 nan nan
802 MiraiEx BTCNOK
29097.7000 29741.4200 2.2%
36 nan nan
803 BitcoinsNorway BTCUSD
3385.4200 3456.0900 2.0%
36 nan nan
804 Bitfinex BTCUSD
3538.5000 3538.6000 0.0%
36 45 nan
805 Bitpay BTCUSD
3443.4600 nan nan%
34 nan nan
806 Bitstamp BTCUSD
3443.0100 3445.0500 0.1%
0 2 1
807 Coinbase BTCUSD
3428.1600 3462.6300 1.0%
33 nan nan
808 Gemini BTCUSD
3445.8800 3445.8900 0.0%
36 326 nan
809 Hitbtc BTCUSD
3473.4700 3473.0700 -
0.0%
0 0 0
810 Kraken+BTCUSD
3444.4000 3445.6000 0.0%
0 1 0
811 Exchangerates EURNOK
9.6685 9.6685 0.0%
36 22226 nan
812 Norgesbank EURNOK
9.6685 9.6685 0.0%
36 22226 nan
813 Bitstamp EURUSD
1.1440 1.1462 0.2%
0 1 2
814 Exchangerates EURUSD
1.1471 1.1471 0.0%
36 22226 nan
815 BitcoinsNorway LTCEUR
1.0009 22.6538 95.6%
35 nan nan
816 BitcoinsNorway LTCNOK
259.0900 264.9300 2.2%
35 nan nan
817 BitcoinsNorway LTCUSD
0.0000 29.0000 100.0%
35 nan nan
818 Norgesbank USDNOK
8.4286 8.4286 0.0%
36 22226 nan
819 </pre></blockquote></p>
821 <p>Yes, I notice the strange negative spread on Hitbtc. I've seen the
822 same on Kraken. Another strange observation is that Kraken some times
823 announce trade orders a fraction of a second in the future. I really
824 wonder what is going on there.
</p>
826 <p>As usual, if you use Bitcoin and want to show your support of my
827 activities, please send Bitcoin donations to my address
828 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
833 Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/bitcoin">bitcoin
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
838 <div class=
"padding"></div>
840 <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>
851 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2019/01/">January (
4)
</a></li>
853 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2019/02/">February (
3)
</a></li>
855 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2019/03/">March (
3)
</a></li>
857 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2019/05/">May (
2)
</a></li>
859 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2019/06/">June (
2)
</a></li>
866 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2018/01/">January (
1)
</a></li>
868 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2018/02/">February (
5)
</a></li>
870 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2018/03/">March (
5)
</a></li>
872 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2018/04/">April (
3)
</a></li>
874 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2018/06/">June (
2)
</a></li>
876 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2018/07/">July (
5)
</a></li>
878 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2018/08/">August (
3)
</a></li>
880 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2018/09/">September (
3)
</a></li>
882 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2018/10/">October (
5)
</a></li>
884 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2018/11/">November (
2)
</a></li>
886 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2018/12/">December (
4)
</a></li>
893 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2017/01/">January (
4)
</a></li>
895 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2017/02/">February (
3)
</a></li>
897 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2017/03/">March (
5)
</a></li>
899 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2017/04/">April (
2)
</a></li>
901 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2017/06/">June (
5)
</a></li>
903 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2017/07/">July (
1)
</a></li>
905 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2017/08/">August (
1)
</a></li>
907 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2017/09/">September (
3)
</a></li>
909 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2017/10/">October (
5)
</a></li>
911 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2017/11/">November (
3)
</a></li>
913 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2017/12/">December (
4)
</a></li>
920 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/01/">January (
3)
</a></li>
922 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/02/">February (
2)
</a></li>
924 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/03/">March (
3)
</a></li>
926 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/04/">April (
8)
</a></li>
928 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/05/">May (
8)
</a></li>
930 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/06/">June (
2)
</a></li>
932 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/07/">July (
2)
</a></li>
934 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/08/">August (
5)
</a></li>
936 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/09/">September (
2)
</a></li>
938 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/10/">October (
3)
</a></li>
940 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/11/">November (
8)
</a></li>
942 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2016/12/">December (
5)
</a></li>
949 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/01/">January (
7)
</a></li>
951 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/02/">February (
6)
</a></li>
953 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/03/">March (
1)
</a></li>
955 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/04/">April (
4)
</a></li>
957 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/05/">May (
3)
</a></li>
959 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/06/">June (
4)
</a></li>
961 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/07/">July (
6)
</a></li>
963 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/08/">August (
2)
</a></li>
965 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/09/">September (
2)
</a></li>
967 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/10/">October (
9)
</a></li>
969 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/11/">November (
6)
</a></li>
971 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2015/12/">December (
3)
</a></li>
978 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/01/">January (
2)
</a></li>
980 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/02/">February (
3)
</a></li>
982 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/03/">March (
8)
</a></li>
984 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/04/">April (
7)
</a></li>
986 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/05/">May (
1)
</a></li>
988 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/06/">June (
2)
</a></li>
990 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/07/">July (
2)
</a></li>
992 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/08/">August (
2)
</a></li>
994 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/09/">September (
5)
</a></li>
996 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/10/">October (
6)
</a></li>
998 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/11/">November (
3)
</a></li>
1000 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2014/12/">December (
5)
</a></li>
1007 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/01/">January (
11)
</a></li>
1009 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/02/">February (
9)
</a></li>
1011 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/03/">March (
9)
</a></li>
1013 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/04/">April (
6)
</a></li>
1015 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/05/">May (
9)
</a></li>
1017 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/06/">June (
10)
</a></li>
1019 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/07/">July (
7)
</a></li>
1021 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/08/">August (
3)
</a></li>
1023 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/09/">September (
5)
</a></li>
1025 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/10/">October (
7)
</a></li>
1027 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/11/">November (
9)
</a></li>
1029 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2013/12/">December (
3)
</a></li>
1036 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/01/">January (
7)
</a></li>
1038 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/02/">February (
10)
</a></li>
1040 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/03/">March (
17)
</a></li>
1042 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/04/">April (
12)
</a></li>
1044 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/05/">May (
12)
</a></li>
1046 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/06/">June (
20)
</a></li>
1048 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/07/">July (
17)
</a></li>
1050 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/08/">August (
6)
</a></li>
1052 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/09/">September (
9)
</a></li>
1054 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/10/">October (
17)
</a></li>
1056 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/11/">November (
10)
</a></li>
1058 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2012/12/">December (
7)
</a></li>
1065 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/01/">January (
16)
</a></li>
1067 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/02/">February (
6)
</a></li>
1069 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/03/">March (
6)
</a></li>
1071 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/04/">April (
7)
</a></li>
1073 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/05/">May (
3)
</a></li>
1075 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/06/">June (
2)
</a></li>
1077 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/07/">July (
7)
</a></li>
1079 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/08/">August (
6)
</a></li>
1081 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/09/">September (
4)
</a></li>
1083 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/10/">October (
2)
</a></li>
1085 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/11/">November (
3)
</a></li>
1087 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/12/">December (
1)
</a></li>
1094 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/01/">January (
2)
</a></li>
1096 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/02/">February (
1)
</a></li>
1098 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/03/">March (
3)
</a></li>
1100 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/04/">April (
3)
</a></li>
1102 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/05/">May (
9)
</a></li>
1104 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/06/">June (
14)
</a></li>
1106 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/07/">July (
12)
</a></li>
1108 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/08/">August (
13)
</a></li>
1110 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/09/">September (
7)
</a></li>
1112 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/10/">October (
9)
</a></li>
1114 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/11/">November (
13)
</a></li>
1116 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/12/">December (
12)
</a></li>
1123 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/01/">January (
8)
</a></li>
1125 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/02/">February (
8)
</a></li>
1127 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/03/">March (
12)
</a></li>
1129 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/04/">April (
10)
</a></li>
1131 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/05/">May (
9)
</a></li>
1133 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/06/">June (
3)
</a></li>
1135 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/07/">July (
4)
</a></li>
1137 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/08/">August (
3)
</a></li>
1139 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/09/">September (
1)
</a></li>
1141 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/10/">October (
2)
</a></li>
1143 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/11/">November (
3)
</a></li>
1145 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/12/">December (
3)
</a></li>
1152 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2008/11/">November (
5)
</a></li>
1154 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2008/12/">December (
7)
</a></li>
1165 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/3d-printer">3d-printer (
16)
</a></li>
1167 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/amiga">amiga (
1)
</a></li>
1169 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/aros">aros (
1)
</a></li>
1171 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/bankid">bankid (
4)
</a></li>
1173 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/betalkontant">betalkontant (
8)
</a></li>
1175 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/bitcoin">bitcoin (
11)
</a></li>
1177 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem (
17)
</a></li>
1179 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/bsa">bsa (
2)
</a></li>
1181 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/chrpath">chrpath (
2)
</a></li>
1183 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian (
167)
</a></li>
1185 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu (
158)
</a></li>
1187 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/debian-handbook">debian-handbook (
4)
</a></li>
1189 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/digistan">digistan (
11)
</a></li>
1191 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/dld">dld (
17)
</a></li>
1193 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/docbook">docbook (
25)
</a></li>
1195 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/drivstoffpriser">drivstoffpriser (
4)
</a></li>
1197 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/english">english (
404)
</a></li>
1199 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/fiksgatami">fiksgatami (
23)
</a></li>
1201 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/fildeling">fildeling (
14)
</a></li>
1203 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/freeculture">freeculture (
33)
</a></li>
1205 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/freedombox">freedombox (
9)
</a></li>
1207 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/frikanalen">frikanalen (
20)
</a></li>
1209 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/h264">h264 (
20)
</a></li>
1211 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/intervju">intervju (
42)
</a></li>
1213 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/isenkram">isenkram (
16)
</a></li>
1215 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/kart">kart (
22)
</a></li>
1217 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/kodi">kodi (
4)
</a></li>
1219 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/ldap">ldap (
9)
</a></li>
1221 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/lego">lego (
4)
</a></li>
1223 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/lenker">lenker (
8)
</a></li>
1225 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/lsdvd">lsdvd (
2)
</a></li>
1227 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/ltsp">ltsp (
1)
</a></li>
1229 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/mesh network">mesh network (
8)
</a></li>
1231 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia (
42)
</a></li>
1233 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/nice free software">nice free software (
12)
</a></li>
1235 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/noark5">noark5 (
15)
</a></li>
1237 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/norsk">norsk (
305)
</a></li>
1239 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/nuug">nuug (
195)
</a></li>
1241 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/offentlig innsyn">offentlig innsyn (
37)
</a></li>
1243 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/open311">open311 (
2)
</a></li>
1245 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/opphavsrett">opphavsrett (
73)
</a></li>
1247 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/personvern">personvern (
108)
</a></li>
1249 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/raid">raid (
2)
</a></li>
1251 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/reactos">reactos (
1)
</a></li>
1253 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/reprap">reprap (
11)
</a></li>
1255 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/rfid">rfid (
3)
</a></li>
1257 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/robot">robot (
12)
</a></li>
1259 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/rss">rss (
1)
</a></li>
1261 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/ruter">ruter (
7)
</a></li>
1263 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/scraperwiki">scraperwiki (
2)
</a></li>
1265 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet (
55)
</a></li>
1267 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/sitesummary">sitesummary (
4)
</a></li>
1269 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/skepsis">skepsis (
5)
</a></li>
1271 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/standard">standard (
64)
</a></li>
1273 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/stavekontroll">stavekontroll (
6)
</a></li>
1275 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/stortinget">stortinget (
12)
</a></li>
1277 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/surveillance">surveillance (
55)
</a></li>
1279 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/sysadmin">sysadmin (
4)
</a></li>
1281 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/usenix">usenix (
2)
</a></li>
1283 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/valg">valg (
9)
</a></li>
1285 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/verkidetfri">verkidetfri (
15)
</a></li>
1287 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/video">video (
73)
</a></li>
1289 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/vitenskap">vitenskap (
4)
</a></li>
1291 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/web">web (
42)
</a></li>
1297 <p style=
"text-align: right">
1298 Created by
<a href=
"http://steve.org.uk/Software/chronicle">Chronicle v4.6
</a>