The leaders of the worlds have started to congratulate the -re-elected Russian head of state, and this causes some criticism. I -am though a little fascinated by a comment from USA senator John McCain, -sited -by The Hill and others: - -
-- -"An American president does not lead the Free World by -congratulating dictators on winning sham elections."
-
While I totally agree with the senator here, the way the quote is -phrased make me suspect that he is unaware of the simple fact that USA -have not lead the Free World since at least before its government -kidnapped a -completely innocent Canadian citizen in transit on his way home to -Canada via John F. Kennedy International Airport in September 2002 and -sent him to be tortured in Syria for a year.
- -USA might be running ahead, but the path they are taking is not the -one taken by any Free World.
+ +As part of my involvement in +the Nikita +archive API project, I've been importing a fairly large lump of +emails into a test instance of the archive to see how well this would +go. I picked a subset of my +notmuch email database, all public emails sent to me via +@lists.debian.org, giving me a set of around 216 000 emails to import. +In the process, I had a look at the various attachments included in +these emails, to figure out what to do with attachments, and noticed +that one of the most common attachment formats do not have +an +official MIME type registered with IANA/IETF. The output from +diff, ie the input for patch, is on the top 10 list of formats +included in these emails. At the moment people seem to use either +text/x-patch or text/x-diff, but neither is officially registered. It +would be better if one official MIME type were registered and used +everywhere.
+ +To try to get one official MIME type for these files, I've brought +up the topic on +the +media-types mailing list. If you are interested in discussion +which MIME type to use as the official for patch files, or involved in +making software using a MIME type for patches, perhaps you would like +to join the discussion?
+ +As usual, if you use Bitcoin and want to show your support of my +activities, please send Bitcoin donations to my address +15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b.
So, Cambridge Analytica is getting some well deserved criticism for -(mis)using information it got from Facebook about 50 million people, -mostly in the USA. What I find a bit surprising, is how little -criticism Facebook is getting for handing the information over to -Cambridge Analytica and others in the first place. And what about the -people handing their private and personal information to Facebook? -And last, but not least, what about the government offices who are -handing information about the visitors of their web pages to Facebook? -No-one who looked at the terms of use of Facebook should be surprised -that information about peoples interests, political views, personal -lifes and whereabouts would be sold by Facebook.
- -What I find to be the real scandal is the fact that Facebook is -selling your personal information, not that one of the buyers used it -in a way Facebook did not approve when exposed. It is well known that -Facebook is selling out their users privacy, but a scandal -nevertheless. Of course the information provided to them by Facebook -would be misused by one of the parties given access to personal -information about the millions of Facebook users. Collected -information will be misused sooner or later. The only way to avoid -such misuse, is to not collect the information in the first place. If -you do not want Facebook to hand out information about yourself for -the use and misuse of its customers, do not give Facebook the -information.
- -Personally, I would recommend to completely remove your Facebook -account, and take back some control of your personal information. -According -to The Guardian, it is a bit hard to find out how to request -account removal (and not just 'disabling'). You need to -visit -a specific Facebook page and click on 'let us know' on that page -to get to the -real account deletion screen. Perhaps something to consider? I -would not trust the information to really be deleted (who knows, -perhaps NSA, GCHQ and FRA already got a copy), but it might reduce the -exposure a bit.
- -If you want to learn more about the capabilities of Cambridge -Analytica, I recommend to see the video recording of the one hour talk -Paul-Olivier Dehaye gave to NUUG last april about - -Data collection, psychometric profiling and their impact on -politics.
- -And if you want to communicate with your friends and loved ones, -use some end-to-end encrypted method like -Signal or -Ring, and stop sharing your private -messages with strangers like Facebook and Google.
+ +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 +Speaker +Testing and Analysis describing how to test speakers, and it listing +several software options, among them +AUDio MEasurement +System (AUDMES). 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 +Understanding +Speaker Specifications and Frequency Response and an article from +ecoustics on +Understanding +Speaker Frequency Response, 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.
+ +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.
+ +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 +Free Hearing Test +Software, 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.
+ +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 +include in Debian? 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 +REW, but I want something +that can be developed also when the vendor looses interest.
+ +As usual, if you use Bitcoin and want to show your support of my +activities, please send Bitcoin donations to my address +15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b.
I går kom det nok et argument for å holde seg unna det norske -helsevesenet. Da annonserte et stortingsflertall, bestående av Høyre, -Arbeiderpartiet, Fremskrittspartiet og Venstre, at de går inn for å -samle inn og lagre DNA-prøver fra hele befolkningen i Norge til evig -tid. Endringen gjelder innsamlede blodprøver fra nyfødte i Norge. -Det vil dermed ta litt tid før en har hele befolkningen, men det er -dit vi havner gitt nok tid. I dag er det nesten hundre prosent -oppslutning om undersøkelsen som gjøres like etter fødselen, på -bakgrunn av blodprøven det er snakk om å lagre, for å oppdage endel -medfødte sykdommer. Blodprøven lagres i dag i inntil seks år. -Stortingets -flertallsinnstilling er at tidsbegrensingen skal fjernes, og mener -at tidsubegrenset lagring ikke vil påvirke oppslutningen om -undersøkelsen.
- -Datatilsynet har ikke akkurat applaudert forslaget:
- -- -- -«Datatilsynet mener forslaget ikke i tilstrekkelig grad - synliggjør hvilke etiske og personvernmessige utfordringer som må - diskuteres før en etablerer en nasjonal biobank med blodprøver fra - hele befolkningen.»
- -
Det er flere historier om hvordan innsamlet biologisk materiale har -blitt brukt til andre formål enn de ble innsamlet til, og historien om -folkehelseinstituttets -lagring på vegne av politiet (Kripos) av innsamlet biologisk materiale -og DNA-informasjon i strid med loven viser at en ikke kan være -trygg på at lover og intensjoner beskytter de som blir berørt mot -misbruk av slik privat og personlig informasjon.
- -Det er verdt å merke seg at det kan forskes på de innsamlede -blodprøvene uten samtykke fra den det gjelder (eller foreldre når det -gjelder barn), etter en lovendring for en stund tilbake, med mindre -det er sendt inn skjema der en reserverer seg mot forskning uten -samtykke. Skjemaet er tilgjengelig fra -folkehelseinstituttets -websider, og jeg anbefaler, uavhengig av denne saken, varmt alle å -sende inn skjemaet for å dokumentere hvor mange som ikke synes det er -greit å fjerne krav om samtykke.
- -I tillegg bør en kreve destruering av alt biologisk materiale som -er samlet inn om en selv, for å redusere eventuelle negative -konsekvenser i fremtiden når materialet kommer på avveie eller blir -brukt uten samtykke, men det er så vidt jeg vet ikke noe system for -dette i dag.
- -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 +
+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 +NRK, Linux distributors like +Debian and +Ubuntu, and of course the +Internet archive. + +
Almost a month ago +a new +package adding Bittorrent support to VLC became available in +Debian testing and unstable. To test it, simply install it like +this:
+ ++apt install vlc-plugin-bittorrent ++ +
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 +Internet +Archive page with movies using a web browser and click on the +torrent link to start streaming the movie.
+ +Note, there is still some misfeatures in the plugin. One is the +fact that it will hang and +block VLC +from exiting until the torrent streaming starts. Another is the +fact that it +will pick +and play a random file in a multi file torrent. 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.
+ +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.
+ +As usual, if you use Bitcoin and want to show your support of my +activities, please send Bitcoin donations to my address 15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b.
I am working on publishing yet another book related to Creative -Commons. This time it is a book filled with interviews and histories -from those around the globe making a living using Creative -Commons.
- -Yesterday, after many months of hard work by several volunteer -translators, the first draft of a Norwegian Bokmål edition of the book -Made with Creative Commons from 2017 -was complete. The Spanish translation is also complete, while the -Dutch, Polish, German and Ukraine edition need a lot of work. Get in -touch if you want to help make those happen, or would like to -translate into your mother tongue.
- -The whole book project started when -Gunnar Wolf announced that he -was going to make a Spanish edition of the book. I noticed, and -offered some input on how to make a book, based on my experience with -translating the -Free -Culture and -The Debian -Administrator's Handbook books to Norwegian Bokmål. To make a -long story short, we ended up working on a Bokmål edition, and now the -first rough translation is complete, thanks to the hard work of -Ole-Erik Yrvin, Ingrid Yrvin, Allan Nordhøy and myself. The first -proof reading is almost done, and only the second and third proof -reading remains. We will also need to translate the 14 figures and -create a book cover. Once it is done we will publish the book on -paper, as well as in PDF, ePub and possibly Mobi formats.
- -The book itself originates as a manuscript on Google Docs, is -downloaded as ODT from there and converted to Markdown using pandoc. -The Markdown is modified by a script before is converted to DocBook -using pandoc. The DocBook is modified again using a script before it -is used to create a Gettext POT file for translators. The translated -PO file is then combined with the earlier mentioned DocBook file to -create a translated DocBook file, which finally is given to dblatex to -create the final PDF. The end result is a set of editions of the -manuscript, one English and one for each of the translations.
- -The translation is conducted using -the -Weblate web based translation system. Please have a look there -and get in touch if you would like to help out with proof -reading. :)
+ +This morning, the new release of the +Nikita +Noark 5 core project was +announced +on the project mailing list. 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): + +
-
+
- Fix typos in REL names +
- Tidy up error message reporting +
- Fix issue where we used Integer.valueOf(), not Integer.getInteger() +
- Change some String handling to StringBuffer +
- Fix error reporting +
- Code tidy-up +
- Fix issue using static non-synchronized SimpleDateFormat to avoid + race conditions +
- Fix problem where deserialisers were treating integers as strings +
- Update methods to make them null-safe +
- Fix many issues reported by coverity +
- Improve equals(), compareTo() and hash() in domain model +
- Improvements to the domain model for metadata classes +
- Fix CORS issues when downloading document +
- Implementation of case-handling with registryEntry and document upload +
- Better support in Javascript for OPTIONS +
- Adding concept description of mail integration +
- Improve setting of default values for GET on ny-journalpost +
- Better handling of required values during deserialisation +
- Changed tilknyttetDato (M620) from date to dateTime +
- Corrected some opprettetDato (M600) (de)serialisation errors. +
- Improve parse error reporting. +
- Started on OData search and filtering. +
- Added Contributor Covenant Code of Conduct to project. +
- Moved repository and project from Github to Gitlab. +
- Restructured repository, moved code into src/ and web/. +
- Updated code to use Spring Boot version 2. +
- Added support for OAuth2 authentication. +
- Fixed several bugs discovered by Coverity. +
- Corrected handling of date/datetime fields. +
- Improved error reporting when rejecting during deserializatoin. +
- Adjusted default values provided for ny-arkivdel, ny-mappe, + ny-saksmappe, ny-journalpost and ny-dokumentbeskrivelse. +
- Several fixes for korrespondansepart*. +
- Updated web GUI:
+
-
+
- Now handle both file upload and download. +
- Uses new OAuth2 authentication for login. +
- Forms now fetches default values from API using GET. +
- Added RFC 822 (email), TIFF and JPEG to list of possible file formats. +
+
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(-).
+ +If free and open standardized archiving API sound interesting to +you, please contact us on IRC +(#nikita on +irc.freenode.net) or email +(nikita-noark +mailing list).
As usual, if you use Bitcoin and want to show your support of my activities, please send Bitcoin donations to my address @@ -242,7 +284,7 @@ activities, please send Bitcoin donations to my address
@@ -250,45 +292,102 @@ activities, please send Bitcoin donations to my addressToday I was pleasantly surprised to discover my operating system of -choice, Debian, was used in the info screens on the subway stations. -While passing Nydalen subway station in Oslo, Norway, I discovered the -info screen booting with some text scrolling. I was not quick enough -with my camera to be able to record a video of the scrolling boot -screen, but I did get a photo from when the boot got stuck with a -corrupt file system: - -
- -While I am happy to see Debian used more places, some details of the -content on the screen worries me.
- -The image show the version booting is 'Debian GNU/Linux lenny/sid', -indicating that this is based on code taken from Debian Unstable/Sid -after Debian Etch (version 4) was released 2007-04-08 and before -Debian Lenny (version 5) was released 2009-02-14. Since Lenny Debian -has released version 6 (Squeeze) 2011-02-06, 7 (Wheezy) 2013-05-04, 8 -(Jessie) 2015-04-25 and 9 (Stretch) 2017-06-15, according to -a Debian -version history on Wikpedia. This mean the system is running -around 10 year old code, with no security fixes from the vendor for -many years.
- -This is not the first time I discover the Oslo subway company, -Ruter, running outdated software. In 2012, -I -discovered the ticket vending machines were running Windows 2000, -and this was -still -the case in 2016. Given the response from the responsible people -in 2016, I would assume the machines are still running unpatched -Windows 2000. Thus, an unpatched Debian setup come as no surprise.
- -The photo is made available under the license terms -Creative Commons -4.0 Attribution International (CC BY 4.0).
+ +I have earlier covered the basics of trusted timestamping using the +'openssl ts' client. See blog post for +2014, +2016 +and +2017 +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 +the +rfc3161 library 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 +the rfc3161ng library, +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 +available in +Debian, and a few days ago it entered Debian unstable and testing.
+ +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:
+ ++#!/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() ++ +
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.
As usual, if you use Bitcoin and want to show your support of my activities, please send Bitcoin donations to my address @@ -297,7 +396,7 @@ activities, please send Bitcoin donations to my address
@@ -305,30 +404,59 @@ activities, please send Bitcoin donations to my addressSurprising as it might sound, there are still computers using the -traditional Sys V init system, and there probably will be until -systemd start working on Hurd and FreeBSD. -The upstream -project still exist, though, and up until today, the upstream -source was available from Savannah via subversion. I am happy to -report that this just changed.
- -The upstream source is now in Git, and consist of three -repositories:
+ +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 +the Ubuntu UPD8 PPA 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.
+ +I first created ~/googledrive, entered the directory and +ran 'grive -a' to authenticate the machine/user. Next, I +created a autostart hook in ~/.config/autostart/grive.desktop +to start the sync when the user log in:
--
+
- sysvinit -
- insserv -
- startpar +
-+[Desktop Entry] +Name=Google drive autosync +Type=Application +Exec=/home/user/bin/grive-sync +
Finally, I wrote the ~/bin/grive-sync script to sync +~/googledrive/ with the files in Google Drive.
--+#!/bin/sh +set -e +cd ~/ +cleanup() { + if [ "$syncpid" ] ; then + kill $syncpid + fi +} +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" + 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:%" +
I do not really spend much time on the project these days, and I -has mostly retired, but found it best to migrate the source to a good -version control system to help those willing to move it forward.
+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.
As usual, if you use Bitcoin and want to show your support of my activities, please send Bitcoin donations to my address @@ -337,7 +465,7 @@ activities, please send Bitcoin donations to my address
@@ -345,70 +473,152 @@ activities, please send Bitcoin donations to my addressA few days ago, a new major version of -VLC was announced, and I -decided to check out if it now supported streaming over -bittorrent and -webtorrent. Bittorrent is one of -the most efficient ways to distribute large files on the Internet, and -Webtorrent is a variant of Bittorrent using -WebRTC as its transport channel, -allowing web pages to stream and share files using the same technique. -The network protocols are similar but not identical, so a client -supporting one of them can not talk to a client supporting the other. -I was a bit surprised with what I discovered when I started to look. -Looking at -the release -notes did not help answering this question, so I started searching -the web. I found several news articles from 2013, most of them -tracing the news from Torrentfreak -("Open -Source Giant VLC Mulls BitTorrent Streaming Support"), about a -initiative to pay someone to create a VLC patch for bittorrent -support. To figure out what happend with this initiative, I headed -over to the #videolan IRC channel and asked if there were some bug or -feature request tickets tracking such feature. I got an answer from -lead developer Jean-Babtiste Kempf, telling me that there was a patch -but neither he nor anyone else knew where it was. So I searched a bit -more, and came across an independent -VLC plugin to add -bittorrent support, created by Johan Gunnarsson in 2016/2017. -Again according to Jean-Babtiste, this is not the patch he was talking -about.
- -Anyway, to test the plugin, I made a working Debian package from -the git repository, with some modifications. After installing this -package, I could stream videos from -The Internet Archive using VLC -commands like this:
+ +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.
+ +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 +github.
+ +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: + ++ ++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() +
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:
+ ++ ++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 +
The exchange order book is tracked in addition to the best buy/sell +price, for those that need to know the details.
+ +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:
--vlc https://archive.org/download/LoveNest/LoveNest_archive.torrent + 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
The plugin is supposed to handle magnet links too, but since The -Internet Archive do not have magnet links and I did not want to spend -time tracking down another source, I have not tested it. It can take -quite a while before the video start playing without any indication of -what is going on from VLC. It took 10-20 seconds when I measured it. -Some times the plugin seem unable to find the correct video file to -play, and show the metadata XML file name in the VLC status line. I -have no idea why.
- -I have created a request for -a new package in Debian (RFP) and -asked if -the upstream author is willing to help make this happen. Now we -wait to see what come out of this. I do not want to maintain a -package that is not maintained upstream, nor do I really have time to -maintain more packages myself, so I might leave it at this. But I -really hope someone step up to do the packaging, and hope upstream is -still maintaining the source. If you want to help, please update the -RFP request or the upstream issue.
- -I have not found any traces of webtorrent support for VLC.
+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.
+ +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.
As usual, if you use Bitcoin and want to show your support of my activities, please send Bitcoin donations to my address @@ -417,7 +627,7 @@ activities, please send Bitcoin donations to my address
@@ -425,23 +635,38 @@ activities, please send Bitcoin donations to my addressA new version of the -3D printer slicer -software Cura, version 3.1.0, is now available in Debian Testing -(aka Buster) and Debian Unstable (aka Sid). I hope you find it -useful. It was uploaded the last few days, and the last update will -enter testing tomorrow. See the -release -notes for the list of bug fixes and new features. Version 3.2 -was announced 6 days ago. We will try to get it into Debian as -well.
- -More information related to 3D printing is available on the -3D printing and -3D printer wiki pages -in Debian.
+ +Back in February, I got curious to see +if +VLC now supported Bittorrent streaming. 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 standalone plugin +for VLC 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 +entered +Debian a few hours ago, and should be available in Debian/Unstable +tomorrow, and Debian/Testing in a few days.
+ +With the vlc-plugin-bittorrent package installed you should be able +to stream videos using a simple call to
+ ++ +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. :) + ++vlc https://archive.org/download/TheGoat/TheGoat_archive.torrent +
I would love to get help maintaining this package. Get in touch if +you are interested.
As usual, if you use Bitcoin and want to show your support of my activities, please send Bitcoin donations to my address @@ -450,7 +675,7 @@ activities, please send Bitcoin donations to my address
@@ -458,116 +683,35 @@ activities, please send Bitcoin donations to my addressJeg lar meg fascinere av en artikkel -i -Dagbladet om Kinas håndtering av Xinjiang, spesielt følgende -utsnitt:
- -- -- -«I den sørvestlige byen Kashgar nærmere grensa til -Sentral-Asia meldes det nå at 120.000 uigurer er internert i såkalte -omskoleringsleirer. Samtidig er det innført et omfattende -helsesjekk-program med innsamling og lagring av DNA-prøver fra -absolutt alle innbyggerne. De mest avanserte overvåkingsmetodene -testes ut her. Programmer for å gjenkjenne ansikter og stemmer er på -plass i regionen. Der har de lokale myndighetene begynt å installere -GPS-systemer i alle kjøretøy og egne sporingsapper i -mobiltelefoner.
- -Politimetodene griper så dypt inn i folks dagligliv at motstanden -mot Beijing-regimet øker.»
- -
Beskrivelsen avviker jo desverre ikke så veldig mye fra tilstanden -her i Norge.
- -Dataregistrering | -Kina | -Norge | - -
---|---|---|
Innsamling og lagring av DNA-prøver fra befolkningen | -Ja | -Delvis, planlagt for alle nyfødte. | -
Ansiktsgjenkjenning | -Ja | -Ja | -
Stemmegjenkjenning | -Ja | -Nei | -
Posisjons-sporing av mobiltelefoner | -Ja | -Ja | -
Posisjons-sporing av biler | -Ja | -Ja | -
I Norge har jo situasjonen rundt Folkehelseinstituttets lagring av -DNA-informasjon på vegne av politiet, der de nektet å slette -informasjon politiet ikke hadde lov til å ta vare på, gjort det klart -at DNA tar vare på ganske lenge. I tillegg finnes det utallige -biobanker som lagres til evig tid, og det er planer om å innføre -evig -lagring av DNA-materiale fra alle spebarn som fødes (med mulighet -for å be om sletting).
- -I Norge er det system på plass for ansiktsgjenkjenning, som -en -NRK-artikkel fra 2015 forteller er aktiv på Gardermoen, samt -brukes -til å analysere bilder innsamlet av myndighetene. Brukes det også -flere plasser? Det er tett med overvåkningskamera kontrollert av -politi og andre myndigheter i for eksempel Oslo sentrum.
- -Jeg er ikke kjent med at Norge har noe system for identifisering av -personer ved hjelp av stemmegjenkjenning.
- -Posisjons-sporing av mobiltelefoner er ruinemessig tilgjengelig for -blant annet politi, NAV og Finanstilsynet, i tråd med krav i -telefonselskapenes konsesjon. I tillegg rapporterer smarttelefoner -sin posisjon til utviklerne av utallige mobil-apper, der myndigheter -og andre kan hente ut informasjon ved behov. Det er intet behov for -noen egen app for dette.
- -Posisjons-sporing av biler er rutinemessig tilgjengelig via et tett -nett av målepunkter på veiene (automatiske bomstasjoner, -køfribrikke-registrering, automatiske fartsmålere og andre veikamera). -Det er i tillegg vedtatt at alle nye biler skal selges med utstyr for -GPS-sporing (eCall).
- -Det er jammen godt vi lever i et liberalt demokrati, og ikke en -overvåkningsstat, eller?
- -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 +
+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.
+ ++ +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
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. :)
+ +As usual, if you use Bitcoin and want to show your support of my +activities, please send Bitcoin donations to my address 15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b.

We write 2018, and it is 30 years since Unicode was introduced. -Most of us in Norway have come to expect the use of our alphabet to -just work with any computer system. But it is apparently beyond reach -of the computers printing recites at a restaurant. Recently I visited -a Peppes pizza resturant, and noticed a few details on the recite. -Notice how 'ø' and 'å' are replaced with strange symbols in -'Servitør', 'à BETALE', 'Beløp pr. gjest', 'Takk for besøket.' and 'Vi -gleder oss til å se deg igjen'.
- -I would say that this state is passed sad and over in embarrassing.
- -I removed personal and private information to be nice.
- -As usual, if you use Bitcoin and want to show your support of my -activities, please send Bitcoin donations to my address -15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b.
+ +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 +Public Money, Public Code to help +them. I hope you too will do the same.