X-Git-Url: http://pere.pagekite.me/gitweb/homepage.git/blobdiff_plain/1d0cc4e6ce01da684d86f18b95b02050dc298807..cded90eceb255184a3506b35d622eea9760ea993:/blog/index.rss
diff --git a/blog/index.rss b/blog/index.rss
index fcdddec301..770eae38cb 100644
--- a/blog/index.rss
+++ b/blog/index.rss
@@ -7,207 +7,194 @@
- Measuring the speaker frequency response using the AUDMES free software GUI - nice free software
- http://people.skolelinux.org/pere/blog/Measuring_the_speaker_frequency_response_using_the_AUDMES_free_software_GUI___nice_free_software.html
- http://people.skolelinux.org/pere/blog/Measuring_the_speaker_frequency_response_using_the_AUDMES_free_software_GUI___nice_free_software.html
- Mon, 22 Oct 2018 08:40:00 +0200
- <p><img src="http://people.skolelinux.org/pere/blog/images/2018-10-22-audmes-measure-speakers.png" align="right" width="40%"/></p>
-
-<p>My current home stereo is a patchwork of various pieces I got on
-flee markeds over the years. It is amazing what kind of equipment
-show up there. I've been wondering for a while if it was possible to
-measure how well this equipment is working together, and decided to
-see how far I could get using free software. After trawling the web I
-came across an article from DIY Audio and Video on
-<a href="https://www.diyaudioandvideo.com/Tutorial/SpeakerResponseTesting/">Speaker
-Testing and Analysis</a> describing how to test speakers, and it listing
-several software options, among them
-<a href="https://sourceforge.net/projects/audmes/">AUDio MEasurement
-System (AUDMES)</a>. It is the only free software system I could find
-focusing on measuring speakers and audio frequency response. In the
-process I also found an interesting article from NOVO on
-<a href="http://novo.press/understanding-speaker-specifications-and-frequency-response/">Understanding
-Speaker Specifications and Frequency Response</a> and an article from
-ecoustics on
-<a href="https://www.ecoustics.com/articles/understanding-speaker-frequency-response/">Understanding
-Speaker Frequency Response</a>, with a lot of information on what to
-look for and how to interpret the graphs. Armed with this knowledge,
-I set out to measure the state of my speakers.</p>
-
-<p>The first hurdle was that AUDMES hadn't seen a commit for 10 years
-and did not build with current compilers and libraries. I got in
-touch with its author, who no longer was spending time on the program
-but gave me write access to the subversion repository on Sourceforge.
-The end result is that now the code build on Linux and is capable of
-saving and loading the collected frequency response data in CSV
-format. The application is quite nice and flexible, and I was able to
-select the input and output audio interfaces independently. This made
-it possible to use a USB mixer as the input source, while sending
-output via my laptop headphone connection. I lacked the hardware and
-cabling to figure out a different way to get independent cabling to
-speakers and microphone.</p>
-
-<p>Using this setup I could see how a large range of high frequencies
-apparently were not making it out of my speakers. The picture show
-the frequency response measurement of one of the speakers. Note the
-frequency lines seem to be slightly misaligned, compared to the CSV
-output from the program. I can not hear several of these are high
-frequencies, according to measurement from
-<a href="http://freehearingtestsoftware.com">Free Hearing Test
-Software</a>, an freeware system to measure your hearing (still
-looking for a free software alternative), so I do not know if they are
-coming out out the speakers. I thus do not quite know how to figure
-out if the missing frequencies is a problem with the microphone, the
-amplifier or the speakers, but I managed to rule out the audio card in my
-PC by measuring my Bose noise canceling headset using its own
-microphone. This setup was able to see the high frequency tones, so
-the problem with my stereo had to be in the amplifier or speakers.</p>
-
-<p>Anyway, to try to role out one factor I ended up picking up a new
-set of speakers at a flee marked, and these work a lot better than the
-old speakers, so I guess the microphone and amplifier is OK. If you
-need to measure your own speakers, check out AUDMES. If more people
-get involved, perhaps the project could become good enough to
-<a href="https://bugs.debian.org/910876">include in Debian</a>? And if
-you know of some other free software to measure speakers and amplifier
-performance, please let me know. I am aware of the freeware option
-<a href="https://www.roomeqwizard.com/">REW</a>, but I want something
-that can be developed also when the vendor looses interest.</p>
+ Nikita version 0.6 released - free software archive API server
+ http://people.skolelinux.org/pere/blog/Nikita_version_0_6_released___free_software_archive_API_server.html
+ http://people.skolelinux.org/pere/blog/Nikita_version_0_6_released___free_software_archive_API_server.html
+ Thu, 10 Jun 2021 17:10:00 +0200
+ <p>I am very pleased to be able to share with you
+<a href="https://lists.nuug.no/pipermail/nikita-noark/2021-June/000576.html">the
+announcement of a new version of the archiving system Nikita</a>
+published by its lead developer Thomas Sødring:</p>
+
+<p><blockquote>
+
+<p>It is with great pleasure that we can announce a new release of
+nikita. Version 0.6
+(<a href="https://gitlab.com/OsloMet-ABI/nikita-noark5-core">https://gitlab.com/OsloMet-ABI/nikita-noark5-core</a>). This
+release makes new record keeping functionality available. This really
+is a maturity release. Both in terms of functionality but also code.
+Considerable effort has gone into refactoring the codebase and
+simplifying the code. Notable changes for this release include:</p>
-<p>As usual, if you use Bitcoin and want to show your support of my
-activities, please send Bitcoin donations to my address
-<b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
-
-
-
-
- Web browser integration of VLC with Bittorrent support
- http://people.skolelinux.org/pere/blog/Web_browser_integration_of_VLC_with_Bittorrent_support.html
- http://people.skolelinux.org/pere/blog/Web_browser_integration_of_VLC_with_Bittorrent_support.html
- Sun, 21 Oct 2018 09:50:00 +0200
- <p>Bittorrent is as far as I know, currently the most efficient way to
-distribute content on the Internet. It is used all by all sorts of
-content providers, from national TV stations like
-<a href="https://www.nrk.no/">NRK</a>, Linux distributors like
-<a href="https://www.debian.org/">Debian</a> and
-<a href="https://www.ubuntu.com/">Ubuntu</a>, and of course the
-<a href="https://archive.org/">Internet archive</A>.
-
-<p>Almost a month ago
-<a href="https://tracker.debian.org/pkg/vlc-plugin-bittorrent">a new
-package adding Bittorrent support to VLC</a> became available in
-Debian testing and unstable. To test it, simply install it like
-this:</p>
+<ul>
-<p><pre>
-apt install vlc-plugin-bittorrent
-</pre></p>
+ <li>Significantly improved OData parsing</li>
+ <li>Support for business specific metadata and national identifiers</li>
+ <li>Continued implementation of domain model and endpoints</li>
+ <li>Improved testing</li>
+ <li>Ability to export and import from arkivstruktur.xml</li>
-<p>Since the plugin was made available for the first time in Debian,
-several improvements have been made to it. In version 2.2-4, now
-available in both testing and unstable, a desktop file is provided to
-teach browsers to start VLC when the user click on torrent files or
-magnet links. The last part is thanks to me finally understanding
-what the strange x-scheme-handler style MIME types in desktop files
-are used for. By adding x-scheme-handler/magnet to the MimeType entry
-in the desktop file, at least the browsers Firefox and Chromium will
-suggest to start VLC when selecting a magnet URI on a web page. The
-end result is that now, with the plugin installed in Buster and Sid,
-one can visit any
-<a href="https://archive.org/details/CopyingIsNotTheft1080p">Internet
-Archive page with movies</a> using a web browser and click on the
-torrent link to start streaming the movie.</p>
-
-<p>Note, there is still some misfeatures in the plugin. One is the
-fact that it will hang and
-<a href="https://github.com/johang/vlc-bittorrent/issues/13">block VLC
-from exiting until the torrent streaming starts</a>. Another is the
-fact that it
-<a href="https://github.com/johang/vlc-bittorrent/issues/9">will pick
-and play a random file in a multi file torrent</a>. This is not
-always the video file you want. Combined with the first it can be a
-bit hard to get the video streaming going. But when it work, it seem
-to do a good job.</p>
-
-<p>For the Debian packaging, I would love to find a good way to test
-if the plugin work with VLC using autopkgtest. I tried, but do not
-know enough of the inner workings of VLC to get it working. For now
-the autopkgtest script is only checking if the .so file was
-successfully loaded by VLC. If you have any suggestions, please
-submit a patch to the Debian bug tracking system.</p>
+</ul>
-<p>As usual, if you use Bitcoin and want to show your support of my
-activities, please send Bitcoin donations to my address
-<b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
-
-
-
-
- Release 0.2 of free software archive system Nikita announced
- http://people.skolelinux.org/pere/blog/Release_0_2_of_free_software_archive_system_Nikita_announced.html
- http://people.skolelinux.org/pere/blog/Release_0_2_of_free_software_archive_system_Nikita_announced.html
- Thu, 18 Oct 2018 14:40:00 +0200
- <p>This morning, the new release of the
-<a href="https://gitlab.com/OsloMet-ABI/nikita-noark5-core/">Nikita
-Noark 5 core project</a> was
-<a href="https://lists.nuug.no/pipermail/nikita-noark/2018-October/000406.html">announced
-on the project mailing list</a>. The free software solution is an
-implementation of the Norwegian archive standard Noark 5 used by
-government offices in Norway. These were the changes in version 0.2
-since version 0.1.1 (from NEWS.md):
+<p>We are currently in the process of reaching an agreement with an
+archive institution to publish their picture archive using nikita with
+business specific metadata and we hope that we can share this with you
+soon. This is an interesting project as it allows the organisation to
+bring an older picture archive back to life while using the original
+metadata values stored as business specific metadata. Combined with
+OData means the scope and use of the archive is significantly
+increased and will showcase both the flexibility and power of
+Noark.</p>
+
+<p>I really think we are approaching a version 1.0 of nikita, even
+though there is still a lot of work to be done. The notable work at
+the moment is to implement access-control and full text indexing of
+documents.</p>
+
+<p>My sincere thanks to everyone who has contributed to this
+release!</p>
+
+<p>- Thomas</p>
+
+<p><strong>Release 0.6 2021-06-10 (d1ba5fc7e8bad0cfdce45ac20354b19d10ebbc7b)</strong></p>
<ul>
- <li>Fix typos in REL names</li>
- <li>Tidy up error message reporting</li>
- <li>Fix issue where we used Integer.valueOf(), not Integer.getInteger()</li>
- <li>Change some String handling to StringBuffer</li>
- <li>Fix error reporting</li>
- <li>Code tidy-up</li>
- <li>Fix issue using static non-synchronized SimpleDateFormat to avoid
- race conditions</li>
- <li>Fix problem where deserialisers were treating integers as strings</li>
- <li>Update methods to make them null-safe</li>
- <li>Fix many issues reported by coverity</li>
- <li>Improve equals(), compareTo() and hash() in domain model</li>
- <li>Improvements to the domain model for metadata classes</li>
- <li>Fix CORS issues when downloading document</li>
- <li>Implementation of case-handling with registryEntry and document upload</li>
- <li>Better support in Javascript for OPTIONS</li>
- <li>Adding concept description of mail integration</li>
- <li>Improve setting of default values for GET on ny-journalpost</li>
- <li>Better handling of required values during deserialisation </li>
- <li>Changed tilknyttetDato (M620) from date to dateTime</li>
- <li>Corrected some opprettetDato (M600) (de)serialisation errors.</li>
- <li>Improve parse error reporting.</li>
- <li>Started on OData search and filtering.</li>
- <li>Added Contributor Covenant Code of Conduct to project.</li>
- <li>Moved repository and project from Github to Gitlab.</li>
- <li>Restructured repository, moved code into src/ and web/.</li>
- <li>Updated code to use Spring Boot version 2.</li>
- <li>Added support for OAuth2 authentication.</li>
- <li>Fixed several bugs discovered by Coverity.</li>
- <li>Corrected handling of date/datetime fields.</li>
- <li>Improved error reporting when rejecting during deserializatoin.</li>
- <li>Adjusted default values provided for ny-arkivdel, ny-mappe,
- ny-saksmappe, ny-journalpost and ny-dokumentbeskrivelse.</li>
- <li>Several fixes for korrespondansepart*.</li>
- <li>Updated web GUI:
- <ul>
- <li>Now handle both file upload and download.</li>
- <li>Uses new OAuth2 authentication for login.</li>
- <li>Forms now fetches default values from API using GET.</li>
- <li>Added RFC 822 (email), TIFF and JPEG to list of possible file formats.</li>
- </ul></li>
+
+ <li>Refactor metadata entity search</li>
+ <li>Remove redundant security configuration</li>
+ <li>Make OpenAPI documentation work</li>
+ <li>Change database structure / inheritance model to a more sensible approach</li>
+ <li>Make it possible to move entities around the fonds structure</li>
+ <li>Implemented a number of missing endpoints</li>
+ <li>Make sure yml files are in sync</li>
+ <li>Implemented/finalised storing and use of
+ <ul>
+ Â Â Â <li>Business Specific Metadata</li>
+ Â Â Â <li>Norwegian National Identifiers</li>
+ Â Â Â <li>Cross Reference</li>
+ Â Â Â <li>Keyword</li>
+ Â Â Â <li>StorageLocation</li>
+ Â Â Â <li>Author</li>
+ Â Â Â <li>Screening for relevant objects</li>
+ Â Â Â <li>ChangeLog</li>
+ Â Â Â <li>EventLog</li>
+ </ul></li>
+ <li>Make generation of updated docker image part of successful CI pipeline</li>
+ <li>Implement pagination for all list requests
+ <ul>
+ Â Â Â <li>Refactor code to support lists</li>
+ Â Â Â <li>Refactor code for readability</li>
+ Â Â Â <li>Standardise the controller/service code</li>
+ </ul></li>
+ <li>Finalise File->CaseFile expansion and Record->registryEntry/recordNote
+expansion</li>
+ <li>Improved Continuous Integration (CI) approach via gitlab</li>
+ <li>Changed conversion approach to generate tagged PDF documents</li>
+ <li>Updated dependencies
+ <ul>
+ Â Â Â <li>For security reasons</li>
+ Â Â Â <li>Brought codebase to spring-boot version 2.5.0</li>
+ Â Â Â <li>Remove import of necessary dependencies</li>
+ Â Â Â <li>Remove non-used metrics classes</li>
+ </ul></li>
+ <li>Added new analysis to CI including</li>
+ <li>Implemented storing of Keyword</li>
+ <li>Implemented storing of Screening and ScreeningMetadata</li>
+ <li>Improved OData support
+ <ul>
+ Â Â Â <li>Better support for inheritance in queries where applicable</li>
+ Â Â Â <li>Brought in more OData tests</li>
+ Â Â Â <li>Improved OData/hibernate understanding of queries</li>
+ Â Â Â <li>Implement $count, $orderby</li>
+ Â Â Â <li>Finalise $top and $skip</li>
+ Â Â Â <li>Make sure & is used between query parameters</li>
+ </ul></li>
+ <li>Improved Testing in codebase
+ <ul>
+ Â Â Â <li>A new approach for integration tests to make test more readable</li>
+ Â Â Â <li>Introduce tests in parallel with code development for TDD approach</li>
+ Â Â Â <li>Remove test that required particular access to storage</li>
+ </ul></li>
+ <li>Implement case-handling process from received email to case-handler
+ <ul>
+ Â Â Â <li>Develop required GUI elements (digital postroom from email)</li>
+ Â Â Â <li>Introduced leader, quality control and postroom roles</li>
+ </ul></li>
+ <li>Make PUT requests return 200 OK not 201 CREATED</li>
+ <li>Make DELETE requests return 204 NO CONTENT not 200 OK</li>
+ <li>Replaced 'oppdatert*' with 'endret*' everywhere to match latest spec</li>
+ <li>Upgrade Gitlab CI to use python > 3 for CI scripts</li>
+ <li>Bug fixes
+ <ul>
+ Â Â Â <li>Fix missing ALLOW</li>
+ Â Â Â <li>Fix reading of objects from jar file during start-up</li>
+ Â Â Â <li>Reduce the number of warnings in the codebase</li>
+ Â Â Â <li>Fix delete problems</li>
+ Â Â Â <li>Make better use of cascade for "leaf" objects</li>
+ Â Â Â <li>Add missing annotations where relevant</li>
+ Â Â Â <li>Remove the use of ETAG for delete</li>
+ Â Â Â <li>Fix missing/wrong/broken rels discovered by runtest</li>
+ Â Â Â <li>Drop unofficial convertFil (konverterFil) end point</li>
+ Â Â Â <li>Fix regex problem for dateTime</li>
+ Â Â Â <li>Fix multiple static analysis issues discovered by coverity</li>
+ Â Â Â <li>Fix proxy problem when looking for object class names</li>
+ Â Â Â <li>Add many missing translated Norwegian to English (internal)
+attribute/entity names</li>
+ Â Â Â <li>Change UUID generation approach to allow code also set a value</li>
+ Â Â Â <li>Fix problem with Part/PartParson</li>
+ Â Â Â <li>Fix problem with empty OData search results</li>
+ Â Â Â <li>Fix metadata entity domain problem</li>
+ </ul></li>
+ <li>General Improvements
+ <ul>
+ Â Â Â <li>Makes future refactoring easier as coupling is reduced</li>
+ Â Â Â <li>Allow some constant variables to be set from property file</li>
+ Â Â Â <li>Refactor code to make reflection work better across codebase</li>
+ Â Â Â <li>Reduce the number of @Service layer classes used in @Controller
+classes</li>
+ Â Â Â <li>Be more consistent on naming of similar variable types</li>
+ Â Â Â <li>Start printing rels/href if they are applicable</li>
+ Â Â Â <li>Cleaner / standardised approach to deleting objects</li>
+ Â Â Â <li>Avoid concatenation when using StringBuilder</li>
+ Â Â Â <li>Consolidate code to avoid duplication</li>
+ Â Â Â <li>Tidy formatting for a more consistent reading style across
+similar class files</li>
+ Â Â Â <li>Make throw a log.error message not an log.info message</li>
+ Â Â Â <li>Make throw print the log value rather than printing in multiple
+places</li>
+ Â Â Â <li>Add some missing pronom codes</li>
+ Â Â Â <li>Fix time formatting issue in Gitlab CI</li>
+ Â Â Â <li>Remove stale / unused code</li>
+ Â Â Â <li>Use only UUID datatype rather than combination String/UUID for systemID</li>
+ Â Â Â <li>Mark variables final and @NotNull where relevant to indicate
+intention</li>
+ </ul></li>
+ <li>Change Date values to DateTime to maintain compliance with Noark 5
+standard</li>
+ <li>Domain model improvements using Hypersistence Optimizer
+ <ul>
+ Â Â Â <li>Move @Transactional from class to methods to avoid borrowing the JDBC Connection unnecessarily</li>
+ Â Â Â <li>Fix OneToOne performance issues</li>
+ Â Â Â <li>Fix ManyToMany performance issues</li>
+ Â Â Â <li>Add missing bidirectional synchronization support</li>
+ Â Â Â <li>Fix ManyToMany performance issue</li>
+ </ul></li>
+ <li>Make List<> and Set<> use final-keyword to avoid potential problems
+during update operations</li>
+ <li>Changed internal URLs, replaced "hateoas-api" with "api".</li>
+ <li>Implemented storing of Precedence.</li>
+ <li>Corrected handling of screening.</li>
+ <li>Corrected _links collection returned for list of mixed entity types
+to match the specific entity.</li>
+ <li>Improved several internal structures.</li>
</ul>
-<p>The changes and improvements are extensive. Running diffstat on
-the changes between git tab 0.1.1 and 0.2 show 1098 files changed,
-108666 insertions(+), 54066 deletions(-).</p>
+</blockquote></p>
<p>If free and open standardized archiving API sound interesting to
you, please contact us on IRC
-(<a href="irc://irc.freenode.net/%23nikita">#nikita on
-irc.freenode.net</a>) or email
+(<a href="irc://irc.oftc.net/%23nikita">#nikita on
+irc.oftc.net</a>) or email
(<a href="https://lists.nuug.no/mailman/listinfo/nikita-noark">nikita-noark
mailing list</a>).</p>
@@ -218,105 +205,54 @@ activities, please send Bitcoin donations to my address
- Fetching trusted timestamps using the rfc3161ng python module
- http://people.skolelinux.org/pere/blog/Fetching_trusted_timestamps_using_the_rfc3161ng_python_module.html
- http://people.skolelinux.org/pere/blog/Fetching_trusted_timestamps_using_the_rfc3161ng_python_module.html
- Mon, 8 Oct 2018 12:30:00 +0200
- <p>I have earlier covered the basics of trusted timestamping using the
-'openssl ts' client. See blog post for
-<a href="http://people.skolelinux.org/pere/blog/Public_Trusted_Timestamping_services_for_everyone.html">2014</a>,
-<a href="http://people.skolelinux.org/pere/blog/syslog_trusted_timestamp___chain_of_trusted_timestamps_for_your_syslog.html">2016</a>
-and
-<a href="http://people.skolelinux.org/pere/blog/Idea_for_storing_trusted_timestamps_in_a_Noark_5_archive.html">2017</a>
-for those stories. But some times I want to integrate the timestamping
-in other code, and recently I needed to integrate it into Python.
-After searching a bit, I found
-<a href="https://dev.entrouvert.org/projects/python-rfc3161">the
-rfc3161 library</a> which seemed like a good fit, but I soon
-discovered it only worked for python version 2, and I needed something
-that work with python version 3. Luckily I next came across
-<a href="https://github.com/trbs/rfc3161ng/">the rfc3161ng library</a>,
-a fork of the original rfc3161 library. Not only is it working with
-python 3, it have fixed a few of the bugs in the original library, and
-it has an active maintainer. I decided to wrap it up and make it
-<a href="https://tracker.debian.org/pkg/python-rfc3161ng">available in
-Debian</a>, and a few days ago it entered Debian unstable and testing.</p>
-
-<p>Using the library is fairly straight forward. The only slightly
-problematic step is to fetch the required certificates to verify the
-timestamp. For some services it is straight forward, while for others
-I have not yet figured out how to do it. Here is a small standalone
-code example based on of the integration tests in the library code:</p>
-
-<pre>
-#!/usr/bin/python3
-
-"""
-
-Python 3 script demonstrating how to use the rfc3161ng module to
-get trusted timestamps.
-
-The license of this code is the same as the license of the rfc3161ng
-library, ie MIT/BSD.
-
-"""
-
-import os
-import pyasn1.codec.der
-import rfc3161ng
-import subprocess
-import tempfile
-import urllib.request
-
-def store(f, data):
- f.write(data)
- f.flush()
- f.seek(0)
-
-def fetch(url, f=None):
- response = urllib.request.urlopen(url)
- data = response.read()
- if f:
- store(f, data)
- return data
-
-def main():
- with tempfile.NamedTemporaryFile() as cert_f,\
- tempfile.NamedTemporaryFile() as ca_f,\
- tempfile.NamedTemporaryFile() as msg_f,\
- tempfile.NamedTemporaryFile() as tsr_f:
-
- # First fetch certificates used by service
- certificate_data = fetch('https://freetsa.org/files/tsa.crt', cert_f)
- ca_data_data = fetch('https://freetsa.org/files/cacert.pem', ca_f)
-
- # Then timestamp the message
- timestamper = \
- rfc3161ng.RemoteTimestamper('http://freetsa.org/tsr',
- certificate=certificate_data)
- data = b"Python forever!\n"
- tsr = timestamper(data=data, return_tsr=True)
-
- # Finally, convert message and response to something 'openssl ts' can verify
- store(msg_f, data)
- store(tsr_f, pyasn1.codec.der.encoder.encode(tsr))
- args = ["openssl", "ts", "-verify",
- "-data", msg_f.name,
- "-in", tsr_f.name,
- "-CAfile", ca_f.name,
- "-untrusted", cert_f.name]
- subprocess.check_call(args)
-
-if '__main__' == __name__:
- main()
-</pre>
-
-<p>The code fetches the required certificates, store them as temporary
-files, timestamp a simple message, store the message and timestamp to
-disk and ask 'openssl ts' to verify the timestamp. A timestamp is
-around 1.5 kiB in size, and should be fairly easy to store for future
-use.</p>
-
+ VLC bittorrent plugin in Bullseye, saved by the bell?
+ http://people.skolelinux.org/pere/blog/VLC_bittorrent_plugin_in_Bullseye__saved_by_the_bell_.html
+ http://people.skolelinux.org/pere/blog/VLC_bittorrent_plugin_in_Bullseye__saved_by_the_bell_.html
+ Sat, 1 May 2021 11:00:00 +0200
+ <p>Yesterday morning I got a warning call from the Debian quality
+control system that
+<a href="https://tracker.debian.org/pkg/vlc-plugin-bittorrent">the VLC
+bittorrent plugin</a> was due to be removed because of a release
+critical bug in one of its dependencies. As you might remember, this
+plugin make VLC able to stream videos directly from a bittorrent
+source using both torrent files and magnet links, similar to using a
+HTTP source. I believe such protocol support is a vital feature in
+VLC, allowing efficient streaming from sources such at the almost 7
+million movies in <a href="https://archive.org/">the Internet
+Archive</a>.</p>
+
+<p>The dependency was the unmaintained
+<a href="https://tracker.debian.org/pkg/libtorrent-rasterbar">libtorrent-rasterbar</a>
+package, and <a href="https://bugs.debian.org/987306">the bug in
+question</a> blocked its python library from working properly. As I
+did not want Bullseye to release without bittorrent support in VLC, I
+set out to check out the status, and track down a fix for the problem.
+Luckily the issue had already been identified and fixed upstream,
+providing everything needed. All I needed to do was to fetch the
+Debian git repository, extract and trim the patch from upstream and
+apply it to the Debian package for upload.</p>
+
+<p>The fixed library was uploaded yesterday evening. But that is not
+enough to get it into Bullseye, as Debian is currently in package
+freeze to prepare for a new next stable release. Only non-critical
+packages with
+<a href="https://wiki.debian.org/ContinuousIntegration/autopkgtest">autopkgtest
+setup</a> included, in other words able to validate automatically that
+the package is working, are allowed to migrate automatically into the
+next release at this stage. And the unmaintained libtorrent-rasterbar
+lack such testing, and thus needed a manual override. I am happy to
+report that such manual override was approved a few minutes ago, thus
+increasing significantly the chance of VLC bittorrent streaming being
+available out of the box also for Debian/Buster users. A bit too
+close shave for my liking, as the Bullseye release is most likely just
+a few days away, and this did feel like the package was saved by the
+bell. I am so glad the warning email showed up in time for me to
+handle the issue, and a big thanks go to the Debian Release team for
+the quick feedback on
+<a href="irc://irc.debian.org/%23debian-release">#debian-release</a>
+and their <a href="https://bugs.debian.org/987865">swift
+unblocking</a>.</p>
+
<p>As usual, if you use Bitcoin and want to show your support of my
activities, please send Bitcoin donations to my address
<b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
@@ -324,61 +260,290 @@ activities, please send Bitcoin donations to my address
- Automatic Google Drive sync using grive in Debian
- http://people.skolelinux.org/pere/blog/Automatic_Google_Drive_sync_using_grive_in_Debian.html
- http://people.skolelinux.org/pere/blog/Automatic_Google_Drive_sync_using_grive_in_Debian.html
- Thu, 4 Oct 2018 15:20:00 +0200
- <p>A few days, I rescued a Windows victim over to Debian. To try to
-rescue the remains, I helped set up automatic sync with Google Drive.
-I did not find any sensible Debian package handling this
-automatically, so I rebuild the grive2 source from
-<a href="http://www.webupd8.org/">the Ubuntu UPD8 PPA</a> to do the
-task and added a autostart desktop entry and a small shell script to
-run in the background while the user is logged in to do the sync.
-Here is a sketch of the setup for future reference.</p>
-
-<p>I first created <tt>~/googledrive</tt>, entered the directory and
-ran '<tt>grive -a</tt>' to authenticate the machine/user. Next, I
-created a autostart hook in <tt>~/.config/autostart/grive.desktop</tt>
-to start the sync when the user log in:</p>
+ Updated Valutakrambod, now also with information from NBX
+ http://people.skolelinux.org/pere/blog/Updated_Valutakrambod__now_also_with_information_from_NBX.html
+ http://people.skolelinux.org/pere/blog/Updated_Valutakrambod__now_also_with_information_from_NBX.html
+ Sat, 27 Feb 2021 13:30:00 +0100
+ <p>I have neglected the Valutakrambod library for a while, but decided
+this weekend to give it a face lift. I fixed a few minor glitches in
+several of the service drivers, where the API had changed since I last
+looked at the code. I also added support for fetching the order book
+from the newcomer Norwegian Bitcoin Exchange.</p>
+
+<p>I also decided to migrate the project from github to gitlab in the
+process. If you want a python library for talking to various currency
+exchanges, check out
+<a href="https://gitlab.com/petterreinholdtsen/valutakrambod">code for
+valutakrambod</a>.</p>
+
+<p>This is what the output from '<tt>bin/btc-rates-curses -c</tt>'
+looked like a few minutes ago:</p>
<p><blockquote><pre>
-[Desktop Entry]
-Name=Google drive autosync
-Type=Application
-Exec=/home/user/bin/grive-sync
+ Name Pair Bid Ask Spread Ftcd Age Freq
+ Bitfinex BTCEUR 39229.0000 39246.0000 0.0% 44 44 nan
+ Bitmynt BTCEUR 39071.0000 41048.9000 4.8% 43 74 nan
+ Bitpay BTCEUR 39326.7000 nan nan% 39 nan nan
+ Bitstamp BTCEUR 39398.7900 39417.3200 0.0% 0 0 1
+ Bl3p BTCEUR 39158.7800 39581.9000 1.1% 0 nan 3
+ Coinbase BTCEUR 39197.3100 39621.9300 1.1% 38 nan nan
+ Kraken+BTCEUR 39432.9000 39433.0000 0.0% 0 0 0
+ Paymium BTCEUR 39437.2100 39499.9300 0.2% 0 2264 nan
+ Bitmynt BTCNOK 409750.9600 420516.8500 2.6% 43 74 nan
+ Bitpay BTCNOK 410332.4000 nan nan% 39 nan nan
+ Coinbase BTCNOK 408675.7300 412813.7900 1.0% 38 nan nan
+ MiraiEx BTCNOK 412174.1800 418396.1500 1.5% 34 nan nan
+ NBX BTCNOK 405835.9000 408921.4300 0.8% 33 nan nan
+ Bitfinex BTCUSD 47341.0000 47355.0000 0.0% 44 53 nan
+ Bitpay BTCUSD 47388.5100 nan nan% 39 nan nan
+ Coinbase BTCUSD 47153.6500 47651.3700 1.0% 37 nan nan
+ Gemini BTCUSD 47416.0900 47439.0500 0.0% 36 336 nan
+ Hitbtc BTCUSD 47429.9900 47386.7400 -0.1% 0 0 0
+ Kraken+BTCUSD 47401.7000 47401.8000 0.0% 0 0 0
+ Exchangerates EURNOK 10.4012 10.4012 0.0% 38 76236 nan
+ Norgesbank EURNOK 10.4012 10.4012 0.0% 31 76236 nan
+ Bitstamp EURUSD 1.2030 1.2045 0.1% 2 2 1
+ Exchangerates EURUSD 1.2121 1.2121 0.0% 38 76236 nan
+ Norgesbank USDNOK 8.5811 8.5811 0.0% 31 76236 nan
</pre></blockquote></p>
-<p>Finally, I wrote the <tt>~/bin/grive-sync</tt> script to sync
-~/googledrive/ with the files in Google Drive.</p>
+<p>Yes, I notice the negative spread on Hitbtc. Either I fail to
+understand their Websocket API or they are sending bogus data. I've
+seen the same with Kraken, and suspect there is something wrong with
+the data they send.</p>
-<p><blockquote><pre>
+<p>As usual, if you use Bitcoin and want to show your support of my
+activities, please send Bitcoin donations to my address
+<b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
+
+
+
+
+ Boken «Hvordan knuse overvåkningskapitalismen» lanseres på norsk
+ http://people.skolelinux.org/pere/blog/Boken__Hvordan_knuse_overv_kningskapitalismen__lanseres_p__norsk.html
+ http://people.skolelinux.org/pere/blog/Boken__Hvordan_knuse_overv_kningskapitalismen__lanseres_p__norsk.html
+ Tue, 26 Jan 2021 19:10:00 +0100
+ <p>Etter intenst arbeid over mange måneder er endelig den norske
+utgaven av «Hvordan knuse overvåkningskapitalismen» av Cory Doctorow
+ferdig og klar til å glede millioner av lesere over hele verden.
+Følgende pressemelding ble nettopp sendt ut til norske redaksjoner:
+
+<blockquote>
+
+<p><strong>Hva gjør stordata med oss, og hvordan gjør algoritmene
+«fake news» til realiter?</strong></p>
+
+<p>Nå foreligger en viktig bok om temaet også på norsk. Boken klargjør
+og foreslår hvordan vi selv som enkeltpersoner, men også nasjonalt og
+internasjonalt kan bekjempe stordatakonsentrasjonene;
+«overvåkingskapitalismen». Boken er «Hvordan knuse
+overvåkingskapitalismen» av dr. Cory Doctorow. Den engelske
+bokutgivelsen kom for noen dager siden og lanseres med et Webinar
+torsdag 2021-01-28. Doctorow besøkte Norge og NUUG i desember med sin
+presentasjon Monopoly, Not Mind Control: What's Really Happening With
+"Surveillance Capitalism".</p>
+
+<p>I funn etter funn, eksempel etter eksempel, gjennomgår og
+analyserer dr. Doctorow de utfordringer vi møter i større og større
+omfang. Ikke bare i USA, men også her hjemme.</p>
+
+<p>Cory Doctorow er en britisk-kanadisk forfatter, journalist og
+aktivist, kjent for sine science fiction-romaner, for arbeidet for
+Creative Commons-bevegelsen, og for sine bidrag til reform av
+opphavsretten. Han er både æresdoktor og gjesteforeleser i
+datavitenskap ved Open University i UK, konsulent for Electronic
+Frontier Foundation, og godt kjent for innsiktsfullt å kommentere og
+skrive om digital utvikling.</p>
+
+<p>Boken lanseres nå på norsk, både som ebok og på papir, oversatt av
+en dugnadsgjeng ledet av Petter Reinholdtsen.</p>
+
+<p>Boken reiser noen helt grunnleggende og samfunnskritiske spørsmål:
+Hva fører det til når store deler av Internettet domineres av få store
+aktører og deres styringsverktøy og algoritmer?</p>
+
+<p>Som individer bør vi være opptatt at grenser blir satt og håndhevet
+- grenser for overvåkning av individet, for utøvelse av kommersiell
+og politisk påvirkning, og for monopoldannelser i
+dataverdenen. Slik grensesetting styrker personvernet.</p>
+
+<p>Konkurransetilsynet har ansvaret for at konkurranselovens § 11 skal
+forby «et dominerende foretak for utilbørlig å utnytte og misbruke
+sin dominerende stilling». Et tilsvarende forbud omfattes også av
+EÃS-avtalens artikkel 54. Boken gÃ¥r i detalj om serien av
+innskrenkninger vi møter i valgfriheten, innskrenkninger som denne
+lovgivningen nettopp skal forhindre. HÃ¥ndhevelse av en slik lovgivning
+er også til fordel for mindre næringsdrivende som uten dette får
+begrenset sine faktiske eller potensielle muligheter for vekst og
+etablering. «Slik atferd kan utgjøre et misbruk og kan ta ulike
+former», skriver Konkurransetilsynet.</p>
+
+<p>Cory Doctorow går i sin bok lengre enn det med sine mange eksempler
+på forhold det burde vært grepet inn mot.</p>
+
+<p>«Boken bør bidra til et sterkere engasjemen fra voktere av
+InterÂnettet nasjonalt og internasjonalt - EU medregnet» sier
+oversetter Ole-Erik Yrvin og fortsetter: «Vi har derfor
+<a href="http://people.skolelinux.org/pere/blog/images/2021-01-26-knus-overvaakningskapitalismen-helleland.pdf">allerede
+tatt opp bokens forslag</a> direkte med Distrikts- og
+digitaliseringsminister Linda Hofstad Helleland (H) og
+Konkurransetilsynet slik at de kan følges opp.»</p>
+
+<p>«Også Norge bør innta en pådriverrolle i denne utviklingen», sier
+Petter Reinholdtsen. «Tiden er knapp, og tilsynsmyndighetene må få
+de verktøy og de ressurser de trenger for at vi her hjemme skal oppnå
+nødvendige resultater. Dette gjelder ikke bare vår egen generasjon;
+det gjelder alle generasjoner fremover», avslutter Petter
+Reinholdsen.</p>
+
+<p>Kontaktinformasjon:</p>
+
+<ul>
+
+<li>Ole-Erik Yrvin, oeyrvin (at) gmail.com, +47 46500450</li>
+
+<li>Petter Reinholdtsen, pere (at) hungry.com</li>
+
+</ul>
+
+<p>Relevante lenker:<p>
+
+<ul>
+
+<li>«Hvordan knuse overvåkingskapitalismen» kan bestilles på papir,
+som ebok eller leses på nett via
+<a href="http://www.hungry.com/~pere/publisher/">http://www.hungry.com/~pere/publisher/</a>.</li>
+
+<li>Opptak av NUUG-møtet Monopoly, Not Mind Control: What's Really
+Happening With "Surveillance Capitalism" med Cory Doctorow,
+<a href="https://www.nuug.no/aktiviteter/20201208-doctorow/">https://www.nuug.no/aktiviteter/20201208-doctorow/</a>.</li>
+
+<li>Påmelding til webinar som lanserer den engelske utgaven kan gjøres
+via
+<a href="https://craphound.com/category/destroy/">https://craphound.com/category/destroy/</a>.</li>
+
+<li>Cory Doctorows nettsted er
+<a href="https://craphound.com/">https://craphound.com/</a>.</li>
+
+</ul>
+
+</blockquote>
+
+<p>Som vanlig, hvis du bruker Bitcoin og ønsker å vise din støtte til
+det jeg driver med, setter jeg pris på om du sender Bitcoin-donasjoner
+til min adresse
+<b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.
+Merk, betaling med bitcoin er ikke anonymt. :)</p>
+
+
+
+
+ Latest Jami back in Debian Testing, and scriptable using dbus
+ http://people.skolelinux.org/pere/blog/Latest_Jami_back_in_Debian_Testing__and_scriptable_using_dbus.html
+ http://people.skolelinux.org/pere/blog/Latest_Jami_back_in_Debian_Testing__and_scriptable_using_dbus.html
+ Tue, 12 Jan 2021 17:00:00 +0100
+ <p>After a lot of hard work by its maintainer Alexandre Viau and
+others, the decentralized communication platform
+<a href="https://en.wikipedia.org/wiki/Jami_(software)">Jami</a>
+(earlier known as Ring), managed to get
+<a href="https://tracker.debian.org/pkg/ring">its latest version</a>
+into Debian Testing. Several of its dependencies has caused build and
+propagation problems, which all seem to be solved now.</p>
+
+<p>In addition to the fact that Jami is decentralized, similar to how
+bittorrent is decentralized, I first of all like how it is not
+connected to external IDs like phone numbers. This allow me to set up
+computers to send me notifications using Jami without having to find
+get a phone number for each computer. Automatic notification via Jami
+is also made trivial thanks to the provided client side API (as a DBus
+service). Here is my bourne shell script demonstrating how to let any
+system send a message to any Jami address. It will create a new
+identity before sending the message, if no Jami identity exist
+already:</p>
+
+<p><pre>
#!/bin/sh
-set -e
-cd ~/
-cleanup() {
- if [ "$syncpid" ] ; then
- kill $syncpid
+#
+# Usage: $0 <jami-address> <message>
+#
+# Send <message> to <jami-address>, create local jami account if
+# missing.
+#
+# License: GPL v2 or later at your choice
+# Author: Petter Reinholdtsen
+
+
+if [ -z "$HOME" ] ; then
+ echo "error: missing \$HOME, required for dbus to work"
+ exit 1
+fi
+
+# First, get dbus running if not already running
+DBUSLAUNCH=/usr/bin/dbus-launch
+PIDFILE=/run/asterisk/dbus-session.pid
+if [ -e $PIDFILE ] ; then
+ . $PIDFILE
+ if ! kill -0 $DBUS_SESSION_BUS_PID 2>/dev/null ; then
+ unset DBUS_SESSION_BUS_ADDRESS
fi
+fi
+if [ -z "$DBUS_SESSION_BUS_ADDRESS" ] && [ -x "$DBUSLAUNCH" ]; then
+ DBUS_SESSION_BUS_ADDRESS="unix:path=$HOME/.dbus"
+ dbus-daemon --session --address="$DBUS_SESSION_BUS_ADDRESS" --nofork --nopidfile --syslog-only < /dev/null > /dev/null 2>&1 3>&1 &
+ DBUS_SESSION_BUS_PID=$!
+ (
+ echo DBUS_SESSION_BUS_PID=$DBUS_SESSION_BUS_PID
+ echo DBUS_SESSION_BUS_ADDRESS=\""$DBUS_SESSION_BUS_ADDRESS"\"
+ echo export DBUS_SESSION_BUS_ADDRESS
+ ) > $PIDFILE
+ . $PIDFILE
+fi &
+
+dringop() {
+ part="$1"; shift
+ op="$1"; shift
+ dbus-send --session \
+ --dest="cx.ring.Ring" /cx/ring/Ring/$part cx.ring.Ring.$part.$op $*
+}
+
+dringopreply() {
+ part="$1"; shift
+ op="$1"; shift
+ dbus-send --session --print-reply \
+ --dest="cx.ring.Ring" /cx/ring/Ring/$part cx.ring.Ring.$part.$op $*
+}
+
+firstaccount() {
+ dringopreply ConfigurationManager getAccountList | \
+ grep string | awk -F'"' '{print $2}' | head -n 1
}
-trap cleanup EXIT INT QUIT
-/usr/lib/grive/grive-sync.sh listen googledrive 2>&1 | sed "s%^%$0:%" &
-syncpdi=$!
-while true; do
- if ! xhost >/dev/null 2>&1 ; then
- echo "no DISPLAY, exiting as the user probably logged out"
+
+account=$(firstaccount)
+
+if [ -z "$account" ] ; then
+ echo "Missing local account, trying to create it"
+ dringop ConfigurationManager addAccount \
+ dict:string:string:"Account.type","RING","Account.videoEnabled","false"
+ account=$(firstaccount)
+ if [ -z "$account" ] ; then
+ echo "unable to create local account"
exit 1
fi
- if [ ! -e /run/user/1000/grive-sync.sh_googledrive ] ; then
- /usr/lib/grive/grive-sync.sh sync googledrive
- fi
- sleep 300
-done 2>&1 | sed "s%^%$0:%"
-</pre></blockquote></p>
+fi
+
+# Not using dringopreply to ensure $2 can contain spaces
+dbus-send --print-reply --session \
+ --dest=cx.ring.Ring \
+ /cx/ring/Ring/ConfigurationManager \
+ cx.ring.Ring.ConfigurationManager.sendTextMessage \
+ string:"$account" string:"$1" \
+ dict:string:string:"text/plain","$2"
+</pre></p>
-<p>Feel free to use the setup if you want. It can be assumed to be
-GNU GPL v2 licensed (or any later version, at your leisure), but I
-doubt this code is possible to claim copyright on.</p>
+<p>If you want to check it out yourself, visit the
+<a href="https://jami.net/">the Jami system project page</a> to learn
+more, and install the latest Jami client from Debian Unstable or
+Testing.</p>
<p>As usual, if you use Bitcoin and want to show your support of my
activities, please send Bitcoin donations to my address
@@ -387,196 +552,109 @@ activities, please send Bitcoin donations to my address
- Valutakrambod - A python and bitcoin love story
- http://people.skolelinux.org/pere/blog/Valutakrambod___A_python_and_bitcoin_love_story.html
- http://people.skolelinux.org/pere/blog/Valutakrambod___A_python_and_bitcoin_love_story.html
- Sat, 29 Sep 2018 22:20:00 +0200
- <p>It would come as no surprise to anyone that I am interested in
-bitcoins and virtual currencies. I've been keeping an eye on virtual
-currencies for many years, and it is part of the reason a few months
-ago, I started writing a python library for collecting currency
-exchange rates and trade on virtual currency exchanges. I decided to
-name the end result valutakrambod, which perhaps can be translated to
-small currency shop.</p>
-
-<p>The library uses the tornado python library to handle HTTP and
-websocket connections, and provide a asynchronous system for
-connecting to and tracking several services. The code is available
-from
-<a href="http://github.com/petterreinholdtsen/valutakrambod">github</a>.</p>
-
-</p>There are two example clients of the library. One is very simple and
-list every updated buy/sell price received from the various services.
-This code is started by running bin/btc-rates and call the client code
-in valutakrambod/client.py. The simple client look like this:</p>
+ Boken «Made with Creative Commons» lanseres på norsk
+ http://people.skolelinux.org/pere/blog/Boken__Made_with_Creative_Commons__lanseres_p__norsk.html
+ http://people.skolelinux.org/pere/blog/Boken__Made_with_Creative_Commons__lanseres_p__norsk.html
+ Sun, 15 Nov 2020 23:50:00 +0100
+ <p>Endelig er den norske utgaven av «Made with Creative Commons»
+ferdig og publisert. Følgende pressemelding ble nettopp sendt ut:
+
+<blockquote>
+
+<p><strong>Boken «Made with Creative Commons» lanseres på norsk</strong></p>
+
+<p>«Gjort med Creative Commons» er en bok om gjenbruk, deling og den
+digitale allmenningen. Boken omhandler å bygge en forretningsmodell på
+Ã¥pne verdier, endringene i tankesett og filosofi, og fordelene og
+praksisen som kommer med å være «åpen».</p>
+
+<p>Forfatterne Paul Stacey og Sarah Hinchliff Pearson tar oss med inn
+i samtaler med 24 mennesker, prosjekter og organisasjoner som på ulike
+måter generere inntekter gjennom deling av sine verk. Som leser får
+man innsikt i hvordan alt fra forskere, forfattere, kunstnere og
+filmskapere tjener penger basert på åpne forretningsmodeller. En av
+referansestudiene i denne boken viser hvordan Blender Animation Studio
+lager vakre animasjonsfilmer som de publiserer under en fri lisens,
+basert på en plattform som er fri programvare.</p>
+
+<p>Utover praktiske eksempler på forskjellige forretningsmodeller berører
+også boken forskjellen mellom tradisjonelle kommersielle virksomheter og
+de som tar utgangspunkt i den globale delingskulturen.</p>
+
+<p>«Hvis du ønsker å lære mer om digital delingskultur og Creative Commons
+er dette en bok som både vil inspirere og gi grunnleggende innsikt» sier
+leder av Creative Commons Norge, Christer Solheim Gundersen. «De siste
+Ã¥rene har denne globale bevegelsen sett en betydelig vekst med totalt
+over 1,6 milliarder verk med CC-lisens tilgjengelig på nett.»
+
+Nå er den tilgjengelig på norsk takket være liten gruppe frivillige
+entusiaster ledet av Petter Reinholdtsen. «På vegne av Creative Commons
+Norge vil jeg takke hver enkelt bidragsyter. Dette prosjektet er i seg
+selv et inspirerende eksempel på at delingskulturen også har godt
+fotfeste her i Norge.», avslutter Gundersen.</p>
+
+<p>Boken er selvsagt fritt tilgjengelig under en Creative Commons lisens,
+og kan også kjøpes som ebok og papirutgave på blant annet Lulu.com og
+Amazon.</p>
+
+<p><strong>Lenker og kontaktinformasjon</strong></p>
-<p><blockquote><pre>
-import functools
-import tornado.ioloop
-import valutakrambod
-class SimpleClient(object):
- def __init__(self):
- self.services = []
- self.streams = []
- pass
- def newdata(self, service, pair, changed):
- print("%-15s %s-%s: %8.3f %8.3f" % (
- service.servicename(),
- pair[0],
- pair[1],
- service.rates[pair]['ask'],
- service.rates[pair]['bid'])
- )
- async def refresh(self, service):
- await service.fetchRates(service.wantedpairs)
- def run(self):
- self.ioloop = tornado.ioloop.IOLoop.current()
- self.services = valutakrambod.service.knownServices()
- for e in self.services:
- service = e()
- service.subscribe(self.newdata)
- stream = service.websocket()
- if stream:
- self.streams.append(stream)
- else:
- # Fetch information from non-streaming services immediately
- self.ioloop.call_later(len(self.services),
- functools.partial(self.refresh, service))
- # as well as regularly
- service.periodicUpdate(60)
- for stream in self.streams:
- stream.connect()
- try:
- self.ioloop.start()
- except KeyboardInterrupt:
- print("Interrupted by keyboard, closing all connections.")
- pass
- for stream in self.streams:
- stream.close()
-</pre></blockquote></p>
+<ul>
-<p>The library client loops over all known "public" services,
-initialises it, subscribes to any updates from the service, checks and
-activates websocket streaming if the service provide it, and if no
-streaming is supported, fetches information from the service and sets
-up a periodic update every 60 seconds. The output from this client
-can look like this:</p>
+<li>Kontaktpunkt:
+<br>Ole-Erik Yrvin (oeyrvin@gmail.com) og
+<br>Christer Solheim Gundersen (christer@goopen.no), +47 9341 1360</li>
-<p><blockquote><pre>
-Bl3p BTC-EUR: 5687.110 5653.690
-Bl3p BTC-EUR: 5687.110 5653.690
-Bl3p BTC-EUR: 5687.110 5653.690
-Hitbtc BTC-USD: 6594.560 6593.690
-Hitbtc BTC-USD: 6594.560 6593.690
-Bl3p BTC-EUR: 5687.110 5653.690
-Hitbtc BTC-USD: 6594.570 6593.690
-Bitstamp EUR-USD: 1.159 1.154
-Hitbtc BTC-USD: 6594.570 6593.690
-Hitbtc BTC-USD: 6594.580 6593.690
-Hitbtc BTC-USD: 6594.580 6593.690
-Hitbtc BTC-USD: 6594.580 6593.690
-Bl3p BTC-EUR: 5687.110 5653.690
-Paymium BTC-EUR: 5680.000 5620.240
-</pre></blockquote></p>
+<li>Bokens <a href="https://madewith.cc/">engelske nettside</a></li>
-<p>The exchange order book is tracked in addition to the best buy/sell
-price, for those that need to know the details.</p>
+<li>Den <a href="http://www.hungry.com/~pere/publisher/">norske utgavens nettside</a></li>
-<p>The other example client is focusing on providing a curses view
-with updated buy/sell prices as soon as they are received from the
-services. This code is located in bin/btc-rates-curses and activated
-by using the '-c' argument. Without the argument the "curses" output
-is printed without using curses, which is useful for debugging. The
-curses view look like this:</p>
+<li><a href="https://www.lulu.com/en/us/shop/sarah-hinchliff-pearson-and-paul-stacey-and-bryan-mathers-and-ryan-merkley/gjort-med-creative-commons/paperback/product-m5jy75.html">Papirutgaven fra Lulu</a></li>
-<p><blockquote><pre>
- Name Pair Bid Ask Spr Ftcd Age
- BitcoinsNorway BTCEUR 5591.8400 5711.0800 2.1% 16 nan 60
- Bitfinex BTCEUR 5671.0000 5671.2000 0.0% 16 22 59
- Bitmynt BTCEUR 5580.8000 5807.5200 3.9% 16 41 60
- Bitpay BTCEUR 5663.2700 nan nan% 15 nan 60
- Bitstamp BTCEUR 5664.8400 5676.5300 0.2% 0 1 1
- Bl3p BTCEUR 5653.6900 5684.9400 0.5% 0 nan 19
- Coinbase BTCEUR 5600.8200 5714.9000 2.0% 15 nan nan
- Kraken BTCEUR 5670.1000 5670.2000 0.0% 14 17 60
- Paymium BTCEUR 5620.0600 5680.0000 1.1% 1 7515 nan
- BitcoinsNorway BTCNOK 52898.9700 54034.6100 2.1% 16 nan 60
- Bitmynt BTCNOK 52960.3200 54031.1900 2.0% 16 41 60
- Bitpay BTCNOK 53477.7833 nan nan% 16 nan 60
- Coinbase BTCNOK 52990.3500 54063.0600 2.0% 15 nan nan
- MiraiEx BTCNOK 52856.5300 54100.6000 2.3% 16 nan nan
- BitcoinsNorway BTCUSD 6495.5300 6631.5400 2.1% 16 nan 60
- Bitfinex BTCUSD 6590.6000 6590.7000 0.0% 16 23 57
- Bitpay BTCUSD 6564.1300 nan nan% 15 nan 60
- Bitstamp BTCUSD 6561.1400 6565.6200 0.1% 0 2 1
- Coinbase BTCUSD 6504.0600 6635.9700 2.0% 14 nan 117
- Gemini BTCUSD 6567.1300 6573.0700 0.1% 16 89 nan
- Hitbtc+BTCUSD 6592.6200 6594.2100 0.0% 0 0 0
- Kraken BTCUSD 6565.2000 6570.9000 0.1% 15 17 58
- Exchangerates EURNOK 9.4665 9.4665 0.0% 16 107789 nan
- Norgesbank EURNOK 9.4665 9.4665 0.0% 16 107789 nan
- Bitstamp EURUSD 1.1537 1.1593 0.5% 4 5 1
- Exchangerates EURUSD 1.1576 1.1576 0.0% 16 107789 nan
- BitcoinsNorway LTCEUR 1.0000 49.0000 98.0% 16 nan nan
- BitcoinsNorway LTCNOK 492.4800 503.7500 2.2% 16 nan 60
- BitcoinsNorway LTCUSD 1.0221 49.0000 97.9% 15 nan nan
- Norgesbank USDNOK 8.1777 8.1777 0.0% 16 107789 nan
-</pre></blockquote></p>
+<li><a href="https://www.lulu.com/en/us/shop/sarah-hinchliff-pearson-and-paul-stacey-and-bryan-mathers-and-ryan-merkley/gjort-med-creative-commons/ebook/product-zw2r4k.html">Epub-utgaven fra lulu</a></li>
-<p>The code for this client is too complex for a simple blog post, so
-you will have to check out the git repository to figure out how it
-work. What I can tell is how the three last numbers on each line
-should be interpreted. The first is how many seconds ago information
-was received from the service. The second is how long ago, according
-to the service, the provided information was updated. The last is an
-estimate on how often the buy/sell values change.</p>
+</ul>
-<p>If you find this library useful, or would like to improve it, I
-would love to hear from you. Note that for some of the services I've
-implemented a trading API. It might be the topic of a future blog
-post.</p>
+</blockquote>
-<p>As usual, if you use Bitcoin and want to show your support of my
-activities, please send Bitcoin donations to my address
-<b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
+<p>Nå håper jeg bare den får mange lesere, og finner veien under mange
+juletrær.</p>
+
+<p>Som vanlig, hvis du bruker Bitcoin og ønsker å vise din støtte til
+det jeg driver med, setter jeg pris på om du sender Bitcoin-donasjoner
+til min adresse
+<b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.
+Merk, betaling med bitcoin er ikke anonymt. :)</p>
- VLC in Debian now can do bittorrent streaming
- http://people.skolelinux.org/pere/blog/VLC_in_Debian_now_can_do_bittorrent_streaming.html
- http://people.skolelinux.org/pere/blog/VLC_in_Debian_now_can_do_bittorrent_streaming.html
- Mon, 24 Sep 2018 21:20:00 +0200
- <p>Back in February, I got curious to see
-<a href="http://people.skolelinux.org/pere/blog/Using_VLC_to_stream_bittorrent_sources.html">if
-VLC now supported Bittorrent streaming</a>. It did not, despite the
-fact that the idea and code to handle such streaming had been floating
-around for years. I did however find
-<a href="https://github.com/johang/vlc-bittorrent">a standalone plugin
-for VLC</a> to do it, and half a year later I decided to wrap up the
-plugin and get it into Debian. I uploaded it to NEW a few days ago,
-and am very happy to report that it
-<a href="https://tracker.debian.org/pkg/vlc-plugin-bittorrent">entered
-Debian</a> a few hours ago, and should be available in Debian/Unstable
-tomorrow, and Debian/Testing in a few days.</p>
-
-<p>With the vlc-plugin-bittorrent package installed you should be able
-to stream videos using a simple call to</p>
-
-<p><blockquote><pre>
-vlc https://archive.org/download/TheGoat/TheGoat_archive.torrent
-</pre></blockquote></p>
-
-</p>It can handle magnet links too. Now if only native vlc had
-bittorrent support. Then a lot more would be helping each other to
-share public domain and creative commons movies. The plugin need some
-stability work with seeking and picking the right file in a torrent
-with many files, but is already usable. Please note that the plugin
-is not removing downloaded files when vlc is stopped, so it can fill
-up your disk if you are not careful. Have fun. :)</p>
-
-<p>I would love to get help maintaining this package. Get in touch if
-you are interested.</p>
+ Buster based Bokmål edition of Debian Administrator's Handbook
+ http://people.skolelinux.org/pere/blog/Buster_based_Bokm_l_edition_of_Debian_Administrator_s_Handbook.html
+ http://people.skolelinux.org/pere/blog/Buster_based_Bokm_l_edition_of_Debian_Administrator_s_Handbook.html
+ Tue, 20 Oct 2020 18:35:00 +0200
+ <p align="center"><img align="center" src="http://people.skolelinux.org/pere/blog/images/2020-10-20-debian-handbook-nb-testprint.jpeg" width="60%"/></p>
+
+<p>I am happy to report that we finally made it! Norwegian Bokmål
+became the first translation published on paper of the new Buster
+based edition of "<a href="https://debian-handbook.info/">The Debian
+Administrator's Handbook</a>". The print proof reading copy arrived
+some days ago, and it looked good, so now the book is approved for
+general distribution. This updated paperback edition <a
+href="https://debian-handbook.info/get/#norwegian">is available from
+lulu.com</a>. The book is also available for download in electronic
+form as PDF, EPUB and Mobipocket, and can also be
+<a href="https://debian-handbook.info/browse/nb-NO/stable/">read online</a>.</p>
+
+<p>I am very happy to wrap up this Creative Common licensed project,
+which concludes several months of work by several volunteers. The
+number of Linux related books published in Norwegian are few, and I
+really hope this one will gain many readers, as it is packed with deep
+knowledge on Linux and the Debian ecosystem. The book will be
+available for various Internet book stores like Amazon and Barnes &
+Noble soon, but I recommend buying
+"<a href="https://www.lulu.com/en/us/shop/roland-mas-and-rapha%C3%ABl-hertzog/h%C3%A5ndbok-for-debian-administratoren/paperback/product-9j7qwq.html">HÃ¥ndbok
+for Debian-administratoren</a>" directly from the source at Lulu.
<p>As usual, if you use Bitcoin and want to show your support of my
activities, please send Bitcoin donations to my address
@@ -585,28 +663,26 @@ activities, please send Bitcoin donations to my address
- Using the Kodi API to play Youtube videos
- http://people.skolelinux.org/pere/blog/Using_the_Kodi_API_to_play_Youtube_videos.html
- http://people.skolelinux.org/pere/blog/Using_the_Kodi_API_to_play_Youtube_videos.html
- Sun, 2 Sep 2018 23:40:00 +0200
- <p>I continue to explore my Kodi installation, and today I wanted to
-tell it to play a youtube URL I received in a chat, without having to
-insert search terms using the on-screen keyboard. After searching the
-web for API access to the Youtube plugin and testing a bit, I managed
-to find a recipe that worked. If you got a kodi instance with its API
-available from http://kodihost/jsonrpc, you can try the following to
-have check out a nice cover band.</p>
-
-<p><blockquote><pre>curl --silent --header 'Content-Type: application/json' \
- --data-binary '{ "id": 1, "jsonrpc": "2.0", "method": "Player.Open",
- "params": {"item": { "file":
- "plugin://plugin.video.youtube/play/?video_id=LuRGVM9O0qg" } } }' \
- http://projector.local/jsonrpc</pre></blockquote></p>
-
-<p>I've extended kodi-stream program to take a video source as its
-first argument. It can now handle direct video links, youtube links
-and 'desktop' to stream my desktop to Kodi. It is almost like a
-Chromecast. :)</p>
+ Buster update of Norwegian Bokmål edition of Debian Administrator's Handbook almost done
+ http://people.skolelinux.org/pere/blog/Buster_update_of_Norwegian_Bokm_l_edition_of_Debian_Administrator_s_Handbook_almost_done.html
+ http://people.skolelinux.org/pere/blog/Buster_update_of_Norwegian_Bokm_l_edition_of_Debian_Administrator_s_Handbook_almost_done.html
+ Fri, 11 Sep 2020 09:45:00 +0200
+ <p>Thanks to the good work of several volunteers, the updated edition
+of the Norwegian translation for
+"<a href="https://debian-handbook.info/">The Debian Administrator's
+Handbook</a>" is now almost completed. After many months of proof
+reading, I consider the proof reading complete enough for us to move
+to the next step, and have asked for the print version to be prepared
+and sent of to the print on demand service lulu.com. While it is
+still not to late if you find any incorrect translations on
+<a href="https://hosted.weblate.org/languages/nb_NO/debian-handbook/">the
+hosted Weblate service</a>, but it will be soon. :) You can check out
+<a href=" https://debian-handbook.info/browse/nb-NO/stable/">the Buster
+edition on the web</a> until the print edition is ready.</p>
+
+<p>The book will be for sale on lulu.com and various web book stores,
+with links available from the web site for the book linked to above.
+I hope a lot of readers find it useful.</p>
<p>As usual, if you use Bitcoin and want to show your support of my
activities, please send Bitcoin donations to my address
@@ -615,78 +691,94 @@ activities, please send Bitcoin donations to my address
- Software created using taxpayersâ money should be Free Software
- http://people.skolelinux.org/pere/blog/Software_created_using_taxpayers__money_should_be_Free_Software.html
- http://people.skolelinux.org/pere/blog/Software_created_using_taxpayers__money_should_be_Free_Software.html
- Thu, 30 Aug 2018 13:50:00 +0200
- <p>It might seem obvious that software created using tax money should
-be available for everyone to use and improve. Free Software
-Foundation Europe recentlystarted a campaign to help get more people
-to understand this, and I just signed the petition on
-<a href="https://publiccode.eu/">Public Money, Public Code</a> to help
-them. I hope you too will do the same.</p>
+ Working on updated Norwegian Bokmål edition of Debian Administrator's Handbook
+ http://people.skolelinux.org/pere/blog/Working_on_updated_Norwegian_Bokm_l_edition_of_Debian_Administrator_s_Handbook.html
+ http://people.skolelinux.org/pere/blog/Working_on_updated_Norwegian_Bokm_l_edition_of_Debian_Administrator_s_Handbook.html
+ Sat, 4 Jul 2020 23:55:00 +0200
+ <p>Three years ago, the first Norwegian Bokmål edition of
+"<a href="https://debian-handbook.info/">The Debian Administrator's
+Handbook</a>" was published. This was based on Debian Jessie. Now a
+new and updated version based on Buster is getting ready. Work on the
+updated Norwegian Bokmål edition has been going on for a few months
+now, and yesterday, we reached the first mile stone, with 100% of the
+texts being translated. A lot of proof reading remains, of course,
+but a major step towards a new edition has been taken.</p>
+
+<p>The book is translated by volunteers, and we would love to get some
+help with the proof reading. The translation uses
+<a href="https://hosted.weblate.org/languages/nb_NO/debian-handbook/">the
+hosted Weblate service</a>, and we welcome everyone to have a look and
+submit improvements and suggestions. There is also a proof readers
+PDF available on request, get in touch if you want to help out that
+way.</p>
+
+<p>As usual, if you use Bitcoin and want to show your support of my
+activities, please send Bitcoin donations to my address
+<b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
- A bit more on privacy respecting health monitor / fitness tracker
- http://people.skolelinux.org/pere/blog/A_bit_more_on_privacy_respecting_health_monitor___fitness_tracker.html
- http://people.skolelinux.org/pere/blog/A_bit_more_on_privacy_respecting_health_monitor___fitness_tracker.html
- Mon, 13 Aug 2018 09:00:00 +0200
- <p>A few days ago, I wondered if there are any privacy respecting
-health monitors and/or fitness trackers available for sale these days.
-I would like to buy one, but do not want to share my personal data
-with strangers, nor be forced to have a mobile phone to get data out
-of the unit. I've received some ideas, and would like to share them
-with you.
-
-One interesting data point was a pointer to a Free Software app for
-Android named
-<a href="https://github.com/Freeyourgadget/Gadgetbridge/">Gadgetbridge</a>.
-It provide cloudless collection and storing of data from a variety of
-trackers. Its
-<a href="https://github.com/Freeyourgadget/Gadgetbridge/#supported-devices">list
-of supported devices</a> is a good indicator for units where the
-protocol is fairly open, as it is obviously being handled by Free
-Software. Other units are reportedly encrypting the collected
-information with their own public key, making sure only the vendor
-cloud service is able to extract data from the unit. The people
-contacting me about Gadgetbirde said they were using
-<a href="https://us.amazfit.com/shop/bip?variant=336750">Amazfit
-Bip</a> and
-<a href="http://www.xiaomimi6phone.com/xiaomi-mi-band-3-features-release-date-rumors/">Xiaomi
-Band 3</a>.</p>
-
-<p>I also got a suggestion to look at some of the units from Garmin.
-I was told their GPS watches can be connected via USB and show up as a
-USB storage device with
-<a href="https://www.gpsbabel.org/htmldoc-development/fmt_garmin_fit.html">Garmin
-FIT files</a> containing the collected measurements. While
-proprietary, FIT files apparently can be read at least by
-<a href="https://www.gpsbabel.org">GPSBabel</a> and the
-<a href="https://apps.nextcloud.com/apps/gpxpod">GpxPod</a> Nextcloud
-app. It is unclear to me if they can read step count and heart rate
-data. The person I talked to was using a
-<a href="https://buy.garmin.com/en-US/US/p/564291">Garmin Forerunner
-935</a>, which is a fairly expensive unit. I doubt it is worth it for
-a unit where the vendor clearly is trying its best to move from open
-to closed systems. I still remember when Garmin dropped NMEA support
-in its GPSes.</p>
-
-<p>A final idea was to build ones own unit, perhaps by basing it on a
-wearable hardware platforms like
-<a href="https://learn.adafruit.com/flora-geo-watch">the Flora Geo
-Watch</a>. Sound like fun, but I had more money than time to spend on
-the topic, so I suspect it will have to wait for another time.</p>
-
-<p>While I was working on tracking down links, I came across an
-inspiring TED talk by Dave Debronkart about
-<a href="https://archive.org/details/DavedeBronkart_2010X">being a
-e-patient</a>, and discovered the web site
-<a href="https://participatorymedicine.org/epatients/">Participatory
-Medicine</a>. If you too want to track your own health and fitness
-without having information about your private life floating around on
-computers owned by others, I recommend checking it out.</p>
+ Secure Socket API - a simple and powerful approach for TLS support in software
+ http://people.skolelinux.org/pere/blog/Secure_Socket_API___a_simple_and_powerful_approach_for_TLS_support_in_software.html
+ http://people.skolelinux.org/pere/blog/Secure_Socket_API___a_simple_and_powerful_approach_for_TLS_support_in_software.html
+ Sat, 6 Jun 2020 12:40:00 +0200
+ <p>As a member of the <a href="https://www.nuug.no/">Norwegian Unix
+User Group</a>, I have the pleasure of receiving the
+<a href="https://www.usenix.org/">USENIX</a> magazine
+<a href="https://www.usenix.org/publications/login/">;login:</a>
+several times a year. I rarely have time to read all the articles,
+but try to at least skim through them all as there is a lot of nice
+knowledge passed on there. I even carry the latest issue with me most
+of the time to try to get through all the articles when I have a few
+spare minutes.</p>
+
+<p>The other day I came across a nice article titled
+"<a href="https://www.usenix.org/publications/login/winter2018/oneill">The
+Secure Socket API: TLS as an Operating System Service</a>" with a
+marvellous idea I hope can make it all the way into the POSIX standard.
+The idea is as simple as it is powerful. By introducing a new
+socket() option IPPROTO_TLS to use TLS, and a system wide service to
+handle setting up TLS connections, one both make it trivial to add TLS
+support to any program currently using the POSIX socket API, and gain
+system wide control over certificates, TLS versions and encryption
+systems used. Instead of doing this:</p>
+
+<p><blockquote><pre>
+int socket = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
+</pre></blockquote></p>
+
+<p>the program code would be doing this:<p>
+
+<p><blockquote><pre>
+int socket = socket(PF_INET, SOCK_STREAM, IPPROTO_TLS);
+</pre></blockquote></p>
+
+<p>According to the ;login: article, converting a C program to use TLS
+would normally modify only 5-10 lines in the code, which is amazing
+when compared to using for example the OpenSSL API.</p>
+
+<p>The project has set up the
+<a href="https://securesocketapi.org/">https://securesocketapi.org/</a>
+web site to spread the idea, and the code for a kernel module and the
+associated system daemon is available from two github repositories:
+<a href="https://github.com/markoneill/ssa">ssa</a> and
+<a href="https://github.com/markoneill/ssa-daemon">ssa-daemon</a>.
+Unfortunately there is no explicit license information with the code,
+so its copyright status is unclear. A
+<a href="https://github.com/markoneill/ssa/issues/2">request to solve
+this</a> about it has been unsolved since 2018-08-17.</p>
+
+<p>I love the idea of extending socket() to gain TLS support, and
+understand why it is an advantage to implement this as a kernel module
+and system wide service daemon, but can not help to think that it
+would be a lot easier to get projects to move to this way of setting
+up TLS if it was done with a user space approach where programs
+wanting to use this API approach could just link with a wrapper
+library.</p>
+
+<p>I recommend you check out this simple and powerful approach to more
+secure network connections. :)</p>
<p>As usual, if you use Bitcoin and want to show your support of my
activities, please send Bitcoin donations to my address