Daniel Pocock: A step change in managing your calendar, without social media
Watch out for future events in Prishtina, the pizzas are huge, but that didn't stop them disappearing before we finished the photos:
Watch out for future events in Prishtina, the pizzas are huge, but that didn't stop them disappearing before we finished the photos:
One of the reasons which made me switch my old 17" BenQ monitor for a Dell U2413 three years ago was it had an integrated SD card reader. I find very convenient to take camera's card out, plug the card into the monitor and click on KDE device monitor's option Open with digiKam to download the photos or videos.[190231.770349] usb 2-2.3.3: new SuperSpeed USB device number 15 using xhci_hcd [190231.890439] usb 2-2.3.3: New USB device found, idVendor=0bda, idProduct=0307 [190231.890444] usb 2-2.3.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [190231.890446] usb 2-2.3.3: Product: USB3.0 Card Reader [190231.890449] usb 2-2.3.3: Manufacturer: Realtek [190231.890451] usb 2-2.3.3: SerialNumber: F141000037E1 [190231.896592] usb-storage 2-2.3.3:1.0: USB Mass Storage device detected [190231.896764] scsi host8: usb-storage 2-2.3.3:1.0 [190232.931861] scsi 8:0:0:0: Direct-Access Generic- SD/MMC/MS/MSPRO 1.00 PQ: 0 ANSI: 6 [190232.933902] sd 8:0:0:0: Attached scsi generic sg5 type 0 [190232.937989] sd 8:0:0:0: [sde] Attached SCSI removable disk [190243.069680] hub 2-2.3:1.0: hub_ext_port_status failed (err = -71) [190243.070037] usb 2-2.3-port3: cannot reset (err = -71) [190243.070410] usb 2-2.3-port3: cannot reset (err = -71) [190243.070660] usb 2-2.3-port3: cannot reset (err = -71) [190243.071035] usb 2-2.3-port3: cannot reset (err = -71) [190243.071409] usb 2-2.3-port3: cannot reset (err = -71) [190243.071413] usb 2-2.3-port3: Cannot enable. Maybe the USB cable is bad? ...
A while ago I played with a Twitter bot that
would track radio amateurs using
a packet radio position reporting system, tweet
their location and a picture from Flickr that was taken near to their location
and a link to their packet radio activity on aprs.fi. It s
really not that hard to put these things together and they can be a lot of fun.
The tweets looked like this:
This isn t about building a system that serves any critical purpose, it s about fun. As the radio stations were chosen essentially at random, there could be some cool things showing up that you wouldn t otherwise have seen. Maybe you d spot a callsign of a station you ve spoken to before on HF or perhaps you d see stations in areas near you or in cool places. On Friday evening I took a go at hacking together a bot for Tor relays. The idea being to have regular snippets of information from the Tor network and perhaps you ll spot something insightful or interesting. Not every tweet is going to be amazing, but it wasn t running for very long before I spotted a relay very close to its 10th birthday:VK4CVL is mobile near Chapel Hill, Australia http://t.co/2dqvuqjJxQ http://t.co/q88OhtcPTX #hamradio #hamr pic.twitter.com/5gBVw3ebvq HamLocator (@HamLocator) June 12, 2015
The relays are chosen at random, and tweet templates are chosen at random too. So far, tweets about individual relays can be about age or current bandwidth contribution to the Tor network. There are also tweets about how many relays run in a particular autonomous system (again, chosen at random) and tweets about the total number of relays currently running. The total relays tweets come with a map:esko in Finland started contributing bandwidth to the #Tor network 9 years and 51 weeks ago https://t.co/4K7aj9Jf6C Tor Atlas (@TorAtlas) October 7, 2017
The maps are produced using xplanet. The Earth will rotate to show the current side in daylight at the time the tweet is posted. Unfortunately, the bot currently cannot tweet as the account has been suspended. You should still be able to follow @TorAtlas though and tweets will begin appearing again once I ve resolved the suspension. I plan to rewrite the mess of cron-activated Python scripts into a coherent Python (maybe Java) application and publish the sources soon. There are also a number of new templates for tweets I d like to explore, including number of relays and bandwidth contributed per family and statistics on operating system diversity. Update (2017-10-08): The @TorAtlas account should now be unsuspended.There are currently 6638 #Tor relays running. https://t.co/uySyX7AlAH pic.twitter.com/BbgNGpoNtY Tor Atlas (@TorAtlas) October 7, 2017
In the interests of keeping myself "honest" regarding F/LOSS activity, here's a report, sadly it's not very good.Unfortunately, September was a poor month for me in terms of motivation and energy for F/LOSS work. I did some amount of Gitano work, merging a patch from Richard Ipsum for help text of the config command. I also submitted another patch to the
STM32F103xx Rust repository, though it wasn't a particularly big
thing. Otherwise I've been relatively quiet on the Rust/USB stuff and have
otherwise kept away from projects.
Sometimes one needs to take a step away from things in order to recuperate and
care for oneself rather than the various demands on ones time. This is
something I had been feeling I needed for a while, and with a lack of
motivation toward the start of the month I gave myself permission to take a
short break.
Next weekend is the next Gitano developer day and I hope to pick up my activity
again then, so I should have more to report for October.
RProtoBuf provides R bindings for the Google Protocol Buffers ("ProtoBuf") data encoding and serialization library used and released by Google, and deployed fairly widely in numerous projects as a language and operating-system agnostic protocol.
A new releases RProtoBuf 0.4.11 appeared on CRAN earlier today. Not unlike the other recent releases, it is mostly a maintenance release which switches two of the vignettes over to using the pinp package and its template for vignettes.
CRANberries also provides a diff to the previous release. The RProtoBuf page has copies of the (older) package vignette, the 'quick' overview vignette, a unit test summary vignette, and the pre-print for the JSS paper. Questions, comments etc should go to the GitHub issue tracker off the GitHub repo.Changes in RProtoBuf version 0.4.11 (2017-10-03)
- The
RProtoBuf-introandRProtoBuf-quickrefvignettes were converted to Rmarkdown using the templates and style file from the pinp package.- A few minor internal upgrades
This post by Dirk Eddelbuettel originated on his Thinking inside the box blog. Please report excessive re-aggregation in third-party for-profit settings.
Some things I don't really understand reading in German media
Seems it is now almost a decade since I migrated from Thunderbird to
GNUS. And GNUS is an awesome mail program that I still rather
like. However GNUS is also heavily quirky. It's essentially
single-threaded and synchronous which means you either have to wait for
the "IMAP check for new mails" to finish or you have to C-g abort it
if you want the user interface to work; You have to wait for the "Move
mail" to complete (which can take a while -- especially with
dovecot-antispam training the filter) before you can continue
working. It has it's funny way around TLS and certificate
validation. And it seems to hang from time to time until it is C-g
interrupted.
So when I set up my new desktop machine I decided to try something
else. My first try was claws-mail which seems OK but totally fails in
the asynchronous area. While the GUI stays reactive, all actions that
require IMAP interactions become incredibly slow when a background
IMAP refresh is running. I do have quite some mailboxes and waiting
the 5+ minutes after opening claws or whenever it decides to do a
refresh is just to much.
Now my last try has been Kmail -- also driven by the idea of having a
more integrated setup with CalDAV and CardDAV around and similar
goodies. And Kmail really compares nicely to claws in many ways. After
all, I can use it while it's doing its things in the
background. However the KDE folks seem to have dropped all support for
the \recent IMAP flag which I heavily rely on. I do -- after all --
keep a GNUS like workflow where all unread mail (ref \seen) needs to
still be acted upon which means there can easily be quite a few unread
messages when I'm busy at the moment and just having a quick look at
the new (ref \recent) mail to see if there's something super-urgent is
essential.
So I'm now looking for useful suggestions for a mail program (ideally
with desktop integration) with the following essential features:
\recent mail.\seen mail (and ideally hide all folders that
only contain \seen mail). Hopefully toggle-able by some
hotkey. "Age in days" would be an acceptable approximation, but
Kmail doesn't seem to allow that in search (it's available as a
filter though).autopkgtest [21:47:38]: test nm: [-----------------------
test_auto_ip4 (__main__.ColdplugEthernet)
ethernet: auto-connection, IPv4 ... FAIL ----- NetworkManager.log -----
NetworkManager: /lib/x86_64-linux-gnu/libc.so.6: version GLIBC_2.25' not found (required by NetworkManager)
$ grep 2.25 ./sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
GLIBC_2.25 GLIBC_2.25 A
GLIBC_2.25 __explicit_bzero_chk F
GLIBC_2.25 explicit_bzero F
GLIBC_2.25 getentropy F
GLIBC_2.25 getrandom F
GLIBC_2.25 strfromd F
GLIBC_2.25 strfromf F
GLIBC_2.25 strfroml F
$ grep explicit_bzero -r configure.ac src/
configure.ac: explicit_bzero],
src/systemd/src/basic/string-util.h:void explicit_bzero(void *p, size_t l);
src/systemd/src/basic/string-util.c:void explicit_bzero(void *p, size_t l)
src/systemd/src/basic/string-util.c: explicit_bzero(x, strlen(x));
2199 tests, 1672513 assertions, 18 failures, 51 errors
and after patch:
2200 tests, 1672514 assertions, 18 failures, 51 errors
10179 tests, 2232711 assertions, 26 failures, 23 errors, 51 skips
and after patches:
1.9 after patches (B): 10184 tests, 2232771 assertions, 26 failures, 23 errors, 53 skips
feed2tweet instance
with it, using this simple configuration:
[anarcat]
url = https://anarc.at/blog/index.rss
output = feed2exec.plugins.exec
args = tweet "%(title)0.70s %(link)0.70s"
The sample configuration file also has examples to talk with Mastodon,
Pump.io and, why not, a torrent server to download torrent files
available over RSS feeds. A trivial configuration can also make it
work as a crude podcast client. My main motivation to work on this was
that it was difficult to extend feed2imap to do what I needed (which
was to talk to transmission to download torrent files) and rss2email
didn't support my workflow (which is delivering to feed-specific mail
folders). Because both projects also seemed abandoned, it seemed like
a good idea at the time to start a new one, although the rss2email
community has now restarted the project and may produce interesting
results.
As an experiment, I tracked my time working on this project. It turns
out it took about 45 hours to write that software. Considering
feed2exec is about 1400 SLOC, that's 30 lines of code per hour. I
don't know if that's slow or fast, but it's an interesting metric for
future projects. It sure seems slow to me, but we need to keep in mind
those 30 lines of code don't include documentation and repeated head
banging on the keyboard. For example, I found two issues
with the upstream feedparser package which I use to parse feeds
which also seems unmaintained, unfortunately.
Feed2exec is beta software at this point, but it's working well enough
for me and the design is much simpler than the other programs of the
kind. The main issue people can expect from it at this point is
formatting issues or parse errors on exotic feeds, and noisy error
messages on network errors, all of which should be fairly easy to fix
in the test suite. I hope it will be useful for the community and, as
usual, I welcome contributions, help and suggestions on how to improve
the software.
Python template when you configure CI on GitLab 10
and above, which should hook you up with normal Python setup
procedures like setup.py install and setup.py test.
env binary, but the last time I
encountered such an issue was with the Drush commandline
tool, which was passing database credentials in clear to the mysql
binary. Using my Perl sniffer, I could get to 60 checks per
second (or 60Hz). After reimplementing it in Python, this number
went up to 160Hz, which still wasn't enough to catch the elusive
env command, which is much faster at hiding arguments than MySQL, in
large part because it simply does an execve() once the environment
is setup.
Eventually, I just went crazy and rewrote the whole thing in C
which was able to get 700-900Hz and did catch the env command
about 10-20% of the time. I could probably have rewritten this by
simply walking /proc myself (since this is what all those libraries
do in the end) to get better result, but then my point was made. I was
able to prove to the restic author the security issues that warranted
the warning. It's too bad I need to repeat this again and again, but
then my tools are getting better at proving that issue... I suspect
it's not the last time I have to deal with this issue and I am happy
to think that I can come up with an even more efficient proof of
concept tool the next time around.
--diff argument that shows which
packages are missing from a given setup.
I am still unsure about Ansible. Manifests do seem really verbose and
I still can't get used to the YAML DSL. I could probably have done the
same thing with Puppet and just run puppet apply on the resulting
config. But I must admit my bias towards Python is showing here: I
can't help but think Puppet is going to be way less accessible with
its rewrite in Clojure and C (!)... But then again, I really like
Puppet's approach of having generic types like package or service
rather than Ansible's clunky apt/yum/dnf/package/win_package
types...
gdm3, which is now completely disabled on the
media box. I simply used the following
/etc/systemd/service/kodi.service file:
[Unit]
Description=Kodi Media Center
After=systemd-user-sessions.service network.target sound.target
[Service]
User=xbmc
Group=video
Type=simple
TTYPath=/dev/tty7
StandardInput=tty
ExecStart=/usr/bin/xinit /usr/bin/dbus-launch --exit-with-session /usr/bin/kodi-standalone -- :1 -nolisten tcp vt7
Restart=on-abort
RestartSec=5
[Install]
WantedBy=multi-user.target
The downside of this is that it needs Xorg to run as root, whereas
modern Xorg can now run rootless. Not sure how to fix this or
where... But if I put needs_root_rights=no in Xwrapper.config,
I get the following error in .local/share/xorg/Xorg.1.log:
[ 2502.533] (EE) modeset(0): drmSetMaster failed: Permission denied
After fooling around with iPython, I ended up trying
the xonsh shell, which is supposed to provide a bash-compatible
Python shell environment. Unfortunately, I found it pretty unusable as
a shell: it works fine to do Python stuff, but then all my environment
and legacy bash configuration files were basically ignored so I
couldn't get working quickly. This is too bad because the project
looked very promising...
Finally, one of my TLS hosts using a Let's Encrypt certificate
wasn't renewing properly, and I figured out why. It turns out the
ProxyPass command was passing everything to the backend, including
the /.well-known requests, which obviously broke ACME
verification. The solution was simple enough, disable the proxy
for that directory:
ProxyPass /.well-known/ !
2199 tests, 1672513 assertions, 18 failures, 51 errors
and after patch:
2200 tests, 1672514 assertions, 18 failures, 51 errors
10179 tests, 2232711 assertions, 26 failures, 23 errors, 51 skips
and after patches:
1.9 after patches (B): 10184 tests, 2232771 assertions, 26 failures, 23 errors, 53 skips
feed2tweet instance
with it, using this simple configuration:
[anarcat]
url = https://anarc.at/blog/index.rss
output = feed2exec.plugins.exec
args = tweet "%(title)0.70s %(link)0.70s"
The sample configuration file also has examples to talk with Mastodon,
Pump.io and, why not, a torrent server to download torrent files
available over RSS feeds. A trivial configuration can also make it
work as a crude podcast client. My main motivation to work on this was
that it was difficult to extend feed2imap to do what I needed (which
was to talk to transmission to download torrent files) and rss2email
didn't support my workflow (which is delivering to feed-specific mail
folders). Because both projects also seemed abandoned, it seemed like
a good idea at the time to start a new one, although the rss2email
community has now restarted the project and may produce interesting
results.
As an experiment, I tracked my time working on this project. It turns
out it took about 45 hours to write that software. Considering
feed2exec is about 1400 SLOC, that's 30 lines of code per hour. I
don't know if that's slow or fast, but it's an interesting metric for
future projects. It sure seems slow to me, but we need to keep in mind
those 30 lines of code don't include documentation and repeated head
banging on the keyboard. For example, I found two issues
with the upstream feedparser package which I use to parse feeds
which also seems unmaintained, unfortunately.
Feed2exec is beta software at this point, but it's working well enough
for me and the design is much simpler than the other programs of the
kind. The main issue people can expect from it at this point is
formatting issues or parse errors on exotic feeds, and noisy error
messages on network errors, all of which should be fairly easy to fix
in the test suite. I hope it will be useful for the community and, as
usual, I welcome contributions, help and suggestions on how to improve
the software.
Python template when you configure CI on GitLab 10
and above, which should hook you up with normal Python setup
procedures like setup.py install and setup.py test.
env binary, but the last time I
encountered such an issue was with the Drush commandline
tool, which was passing database credentials in clear to the mysql
binary. Using my Perl sniffer, I could get to 60 checks per
second (or 60Hz). After reimplementing it in Python, this number
went up to 160Hz, which still wasn't enough to catch the elusive
env command, which is much faster at hiding arguments than MySQL, in
large part because it simply does an execve() once the environment
is setup.
Eventually, I just went crazy and rewrote the whole thing in C
which was able to get 700-900Hz and did catch the env command
about 10-20% of the time. I could probably have rewritten this by
simply walking /proc myself (since this is what all those libraries
do in the end) to get better result, but then my point was made. I was
able to prove to the restic author the security issues that warranted
the warning. It's too bad I need to repeat this again and again, but
then my tools are getting better at proving that issue... I suspect
it's not the last time I have to deal with this issue and I am happy
to think that I can come up with an even more efficient proof of
concept tool the next time around.
--diff argument that shows which
packages are missing from a given setup.
I am still unsure about Ansible. Manifests do seem really verbose and
I still can't get used to the YAML DSL. I could probably have done the
same thing with Puppet and just run puppet apply on the resulting
config. But I must admit my bias towards Python is showing here: I
can't help but think Puppet is going to be way less accessible with
its rewrite in Clojure and C (!)... But then again, I really like
Puppet's approach of having generic types like package or service
rather than Ansible's clunky apt/yum/dnf/package/win_package
types...
gdm3, which is now completely disabled on the
media box. I simply used the following
/etc/systemd/service/kodi.service file:
[Unit]
Description=Kodi Media Center
After=systemd-user-sessions.service network.target sound.target
[Service]
User=xbmc
Group=video
Type=simple
TTYPath=/dev/tty7
StandardInput=tty
ExecStart=/usr/bin/xinit /usr/bin/dbus-launch --exit-with-session /usr/bin/kodi-standalone -- :1 -nolisten tcp vt7
Restart=on-abort
RestartSec=5
[Install]
WantedBy=multi-user.target
The downside of this is that it needs Xorg to run as root, whereas
modern Xorg can now run rootless. Not sure how to fix this or
where... But if I put needs_root_rights=no in Xwrapper.config,
I get the following error in .local/share/xorg/Xorg.1.log:
[ 2502.533] (EE) modeset(0): drmSetMaster failed: Permission denied
After fooling around with iPython, I ended up trying
the xonsh shell, which is supposed to provide a bash-compatible
Python shell environment. Unfortunately, I found it pretty unusable as
a shell: it works fine to do Python stuff, but then all my environment
and legacy bash configuration files were basically ignored so I
couldn't get working quickly. This is too bad because the project
looked very promising...
Finally, one of my TLS hosts using a Let's Encrypt certificate
wasn't renewing properly, and I figured out why. It turns out the
ProxyPass command was passing everything to the backend, including
the /.well-known requests, which obviously broke ACME
verification. The solution was simple enough, disable the proxy
for that directory:
ProxyPass /.well-known/ !
Debian
devscripts
Before deciding to take an indefinite hiatus from devscripts, I prepared one more upload merging various contributed patches and a bit of last minute cleanup.
Build-Arch- Conflicts,Depends to build-rdeps. (adc87981)remote.<name>.push-url when using debcheckout to clone a git repository. (Debian bug #753838)gpg --with-colons, instead of manually parsing gpg -K output.
Aside from being the Right Way to get machine parseable information out of gpg, it fixed completion when gpg is a 2.x version. (Debian bug #837380)DEB_BUILD_PROFILES and using a separate, minimal docker image for running autopkgtests.
unibilium
Here is my monthly update covering what I have been doing in the free software world in September 2017 (previous month):
reproducible-check is our script to determine which packages actually installed on your system are reproducible or not.
diffoscope is our in-depth and content-aware diff utility that can locate and diagnose reproducibility issues.
strip-nondeterminism is our tool to remove specific non-deterministic results from a completed build.
disorderfs is our FUSE-based filesystem that deliberately introduces non-determinism into directory system calls in order to flush out reproducibility issues.
The thirteenth release in the 0.12.* series of Rcpp landed on CRAN this morning, following a little delay because Uwe Ligges was traveling and whatnot. We had announced its availability to the mailing list late last week. As usual, a rather substantial amount of testing effort went into this release so you should not expect any surprise.
This release follows the 0.12.0 release from July 2016, the 0.12.1 release in September 2016, the 0.12.2 release in November 2016, the 0.12.3 release in January 2017, the 0.12.4 release in March 2016, the 0.12.5 release in May 2016, the 0.12.6 release in July 2016, the 0.12.7 release in September 2016, the 0.12.8 release in November 2016, the 0.12.9 release in January 2017, the 0.12.10.release in March 2017, the 0.12.11.release in May 2017, and the 0.12.12 release in July 2017 making it the seventeeth release at the steady and predictable bi-montly release frequency.
Rcpp has become the most popular way of enhancing GNU R with C or C++ code. As of today, 1069 packages (and hence 73 more since the last release) on CRAN depend on Rcpp for making analytical code go faster and further, along with another 91 in BioConductor.
This releases contains a large-ish update to the documentation as all vignettes (apart from the unit test one, which is a one-off) now use Markdown and the (still pretty new) pinp package by James and myself. There is also a new vignette corresponding to the PeerJ preprint James and I produced as an updated and current Introduction to Rcpp replacing the older JSS piece (which is still included as a vignette too).
A few other things got fixed: Dan is working on const iterators you would expect with modern C++, Lei Yu spotted error in Modules, and more. See below for details.
Thanks to CRANberries, you can also look at a diff to the previous release. As always, even fuller details are on the Rcpp Changelog page and the Rcpp page which also leads to the downloads page, the browseable doxygen docs and zip files of doxygen output for the standard formats. A local directory has source and documentation too. Questions, comments etc should go to the rcpp-devel mailing list off the R-Forge page.Changes in Rcpp version 0.12.13 (2017-09-24)
- Changes in Rcpp API:
- Changes in Rcpp Modules:
- Misplacement of one parenthesis in macro
LOAD_RCPP_MODULEwas corrected (Lei Yu in #737)- Changes in Rcpp Documentation:
- Rewrote the macOS sections to depend on official documentation due to large changes in the macOS toolchain. (James Balamuta in #742 addressing issue #682).
- Added a new vignette Rcpp-introduction based on new PeerJ preprint, renamed existing introduction to Rcpp-jss-2011 .
- Transitioned all vignettes to the 'pinp' RMarkdown template (James Balamuta and Dirk Eddelbuettel in #755 addressing issue #604).
- Added an entry on running 'compileAttributes()' twice to the Rcpp-FAQ (##745).
This post by Dirk Eddelbuettel originated on his Thinking inside the box blog. Please report excessive re-aggregation in third-party for-profit settings.
ast year, the AppStream specification gained proper support for adding metadata for fonts, after Richard Hughes did some work on it years ago. We weren t happy with how fonts were handled at that time, so we searched for better solutions, which is why this took a bit longer to be done. Last year, I was implementing the final support for fonts in both appstream-generator (the metadata extractor used by Debian and a few others) as well as the AppStream specification. This blogpost was sitting on my todo list as a draft for a long time now, and I only just now managed to finish it, so sorry for announcing this so late. Fonts are already available via AppStream for a year, and this post just sums up the status quo and some neat tricks if you want to write metainfo files for fonts. If you are following AppStream (or the Debian fonts list), you know everything already
.
Both Richard and I first tried to extract all the metadata to display fonts in a proper way to the users from the font files directly. This turned out to be very difficult, since font metadata is often wrong or incomplete, and certain desirable bits of metadata (like a longer description) are missing entirely. After messing around with different ways to solve this for days (afterall, by extracting the data from font files directly we would have hundreds of fonts directly available in software centers), I also came to the same conclusion as Richard: The best and easiest solution here is to mandate the availability of metainfo files per font.
Which brings me to the second issue: What is a font? For any person knowing about fonts, they will understand one font as one font face, e.g. Lato Regular Italic or Lato Bold . A user however will see the font family as a font, e.g. just Lato instead of all the font faces separated out. Since AppStream data is used primarily by software centers, we want something that is easy for users to understand. Hence, an AppStream font components really describes a font family or collection of fonts, instead of individual font faces. We do also want AppStream data to be useful for system components looking for a specific font, which is why font components will advertise the individual font face names they contain via a <provides/>-tag. Naming fonts and making them identifiable is a whole other issue, I used a document from Adobe on font naming issues as a rough guideline while working on this. How to write a good metainfo file for a font is best shown with an example. Lato is a well-looking font family that we want displayed in a software center. So, we write a metainfo file for it an place it in
/usr/share/metainfo/com.latofonts.Lato.metainfo.xmlfor the AppStream metadata generator to pick up:
<?xml version="1.0" encoding="UTF-8"?>
<component type="font">
<id>com.latofonts.Lato</id>
<metadata_license>FSFAP</metadata_license>
<project_license>OFL-1.1</project_license>
<name>Lato</name>
<summary>A sanserif type face fam ily</summary>
<description>
<p>
Lato is a sanserif type face fam ily designed in the Sum mer 2010 by Warsaw-based designer
ukasz Dziedzic ( Lato means Sum mer in Pol ish). In Decem ber 2010 the Lato fam ily
was pub lished under the open-source Open Font License by his foundry tyPoland, with
sup port from Google.
</p>
</description>
<url type="homepage">http://www.latofonts.com/</url>
<provides>
<font>Lato Regular</font>
<font>Lato Black Italic</font>
<font>Lato Black</font>
<font>Lato Bold Italic</font>
<font>Lato Bold</font>
<font>Lato Hairline Italic</font>
...
</provides>
</component>When the file is processed, we know that we need to look for fonts in the package it is contained in. So, the appstream-generator will load all the fonts in the package and render example texts for them as an image, so we can show users a preview of the font. It will also use heuristics to render an icon for the respective font component using its regular typeface. Of course that is not ideal what if there are multiple font faces in a package? What if the heuristics fail to detect the right font face to display?
This behavior can be influenced by adding <font/>tags to a
<provides/>tag in the metainfo file. The font-provides tags should contain the fullnames of the font faces you want to associate with this font component. If the font file does not define a fullname, the family and style are used instead. That way, someone writing the metainfo file can control which fonts belong to the described component. The metadata generator will also pick the first mentioned font name in the
<provides/>list as the one to render the example icon for. It will also sort the example text images in the same order as the fonts are listed in the provides-tag. The example lines of text are written in a language matching the font using Pango. But what about symbolic fonts? Or fonts where any heuristic fails? At the moment, we see ugly tofu characters or boxes instead of an actual, useful representation of the font. This brings me to an inofficial extension to font metainfo files, that, as far as I know, only appstream-generator supports at the moment. I am not happy enough with this solution to add it to the real specification, but it serves as a good method to fix up the edge cases where we can not render good example images for fonts. AppStream-Generator supports the FontIconText and FontSampleText custom AppStream properties to allow metainfo file authors to override the default texts and autodetected values. FontIconText will override the characters used to render the icon, while FontSampleText can be a line of text used to render the example images. This is especially useful for symbolic fonts, where the heuristics usually fail and we do not know which glyphs would be representative for a font. For example, a font with mathematical symbols might want to add the following to its metainfo file:
<custom> <value key="FontIconText"> </value> <value key="FontSampleText"> ... </value> </custom>Any unicode glyphs are allowed, but asgen will but some length restrictions on the texts. So, In summary:

ps.monitor tor:1-1 master:1-2 auditd:1-1 cron:1-5 rsyslogd:1-1 dbus-daemon:1- sshd:1- watchdog:1-2I m currently planning some sort of rewrite of the process monitoring script. The current functionality is to have a list of process names on the command line with minimum and maximum numbers for the instances of the process in question. The above is a sample of the configuration of the monitor. There are some limitations to this, the master process in this instance refers to the main process of Postfix, but other daemons use the same process name (it s one of those names that s wrong because it s so obvious). One obvious solution to this is to give the option of specifying the full path so that /usr/lib/postfix/sbin/master can be differentiated from all the other programs named master. The next issue is processes that may run on behalf of multiple users. With sshd there is a single process to accept new connections running as root and a process running under the UID of each logged in user. So the number of sshd processes running as root will be one greater than the number of root login sessions. This means that if a sysadmin logs in directly as root via ssh (which is controversial and not the topic of this post merely something that people do which I have to support) and the master process then crashes (or the sysadmin stops it either accidentally or deliberately) there won t be an alert about the missing process. Of course the correct thing to do is to have a monitor talk to port 22 and look for the string SSH-2.0-OpenSSH_ . Sometimes there are multiple instances of a daemon running under different UIDs that need to be monitored separately. So obviously we need the ability to monitor processes by UID. In many cases process monitoring can be replaced by monitoring of service ports. So if something is listening on port 25 then it probably means that the Postfix master process is running regardless of what other master processes there are. But for my use I find it handy to have multiple monitors, if I get a Jabber message about being unable to send mail to a server immediately followed by a Jabber message from that server saying that master isn t running I don t need to fully wake up to know where the problem is. SE Linux One feature that I want is monitoring SE Linux contexts of processes in the same way as monitoring UIDs. While I m not interested in writing tests for other security systems I would be happy to include code that other people write. So whatever I do I want to make it flexible enough to work with multiple security systems. Transient Processes Most daemons have a second process of the same name running during the startup process. This means if you monitor for exactly 1 instance of a process you may get an alert about 2 processes running when logrotate or something similar restarts the daemon. Also you may get an alert about 0 instances if the check happens to run at exactly the wrong time during the restart. My current way of dealing with this on my servers is to not alert until the second failure event with the alertafter 2 directive. The failure_interval directive allows specifying the time between checks when the monitor is in a failed state, setting that to a low value means that waiting for a second failure result doesn t delay the notification much. To deal with this I ve been thinking of making the ps.monitor script automatically check again after a specified delay. I think that solving the problem with a single parameter to the monitor script is better than using 2 configuration directives to mon to work around it. CPU Use Mon currently has a loadavg.monitor script that to check the load average. But that won t catch the case of a single process using too much CPU time but not enough to raise the system load average. Also it won t catch the case of a CPU hungry process going quiet (EG when the SETI at Home server goes down) while another process goes into an infinite loop. One way of addressing this would be to have the ps.monitor script have yet another configuration option to monitor CPU use, but this might get confusing. Another option would be to have a separate script that alerts on any process that uses more than a specified percentage of CPU time over it s lifetime or over the last few seconds unless it s in a whitelist of processes and users who are exempt from such checks. Probably every regular user would be exempt from such checks because you never know when they will run a file compression program. Also there is a short list of daemons that are excluded (like BOINC) and system processes (like gzip which is run from several cron jobs). Monitoring for Exclusion A common programming mistake is to call setuid() before setgid() which means that the program doesn t have permission to call setgid(). If return codes aren t checked (and people who make such rookie mistakes tend not to check return codes) then the process keeps elevated permissions. Checking for processes running as GID 0 but not UID 0 would be handy. As an aside a quick examination of a Debian/Testing workstation didn t show any obvious way that a process with GID 0 could gain elevated privileges, but that could change with one chmod 770 command. On a SE Linux system there should be only one process running with the domain init_t. Currently that doesn t happen in Stretch systems running daemons such as mysqld and tor due to policy not matching the recent functionality of systemd as requested by daemon service files. Such issues will keep occurring so we need automated tests for them. Automated tests for configuration errors that might impact system security is a bigger issue, I ll probably write a separate blog post about it.
A maintenance release of RcppZiggurat is now on the CRAN network for R. It switched the vignette to the our new pinp package and its two-column pdf default.
The RcppZiggurat package updates the code for the Ziggurat generator which provides very fast draws from a Normal distribution. The package provides a simple C++ wrapper class for the generator improving on the very basic macros, and permits comparison among several existing Ziggurat implementations. This can be seen in the figure where Ziggurat from this package dominates accessing the implementations from the GSL, QuantLib and Gretl---all of which are still way faster than the default Normal generator in R (which is of course of higher code complexity).
The NEWS file entry below lists all changes.
Courtesy of CRANberries, there is also a diffstat report for the most recent release. More information is on the RcppZiggurat page.Changes in version 0.1.4 (2017-07-27)
- The vignette now uses the pinp package in two-column mode.
- Dynamic symbol registration is now enabled.
This post by Dirk Eddelbuettel originated on his Thinking inside the box blog. Please report excessive re-aggregation in third-party for-profit settings.
A few short weeks after the more substantial 0.0.9 release of RcppAnnoy, we have a quick bug-fix update.
RcppAnnoy is our Rcpp-based R integration of the nifty Annoy library by Erik. Annoy is a small and lightweight C++ template header library for very fast approximate nearest neighbours.
Micha l Benesty noticed that our getItemsVector() function didn't, ahem, do much besides crashing. Simple bug, they happen--now fixed, and a unit test added.
Changes in this version are summarized here:
Courtesy of CRANberries, there is also a diffstat report for this release.Changes in version 0.0.10 (2017-09-25)
- The
getItemsVector()function no longer crashes (#24)
This post by Dirk Eddelbuettel originated on his Thinking inside the box blog. Please report excessive re-aggregation in third-party for-profit settings.
I ve received an email today from Barclaycard with the following:
From time to time, to make sure it s you who s using your Barclaycard online, we ll send you a text with a verification code for you to use on the Verified by Visa screen that ll pop up on your payment page.The proprietary nature of mobile phones with the hardware specifications and the software being closed off from inspection or audit and considered to be trade secrets make my phone and my tablet the least trusted devices I own and use. Due to this lack of trust, I ve often held back from using my phone or tablet for certain tasks where I can still get away with not doing so. I have experimented with having read-only access to my calendars and contacts to ensure that if my phone is compromised they can t just be wiped out, though in the end I had to give in as my calendar was becoming too difficult to manage using a paper system as part of entry for new events. I wanted to try to reduce the attractiveness of compromising my phone. Anyone that really wants to have a go at my phone could probably get in. It s an older Samsung Android phone on a UK network and software updates rarely come through in a timely manner. Anything that I give my phone access to is at risk and that risk needs to be balanced by some real world benefits. These are just the problems with the phone itself. When you re using SMS authentication, even with the most secure phone ever, you re still going to be using the phone network. SMS authentication is about equivalent, in terms of the security it really offers, to your mobile phone number being your password when it comes to an even mildly motivated attacker. You probably don t treat your mobile phone number as a password, nor does the provider or anyone you ve given it to, so you can assume that it s compromised. Why are mobile phones so popular for two factor (on in increasing numbers of cases, single factor) authentication? Not because they improve security but because they re convenient and everyone has one. This seems like a bad plan.
So recently I was in York at the Bytemark office, and I read a piece about building a radio in a Raspberry Pi magazine. It got me curious, so when I got home to sunny Helsinki I figured I'd have a stab at it.
I don't have fixed goal in mind, but what I do have is:
Lintian is a static analysis tool for Debian packages, reporting on various errors, omissions and general quality-assurance issues to maintainers.
I've previously written about my exploits with Lintian as well as authoring a short tutorial on how to write your own Lintian check.
Anyway, I recently uploaded version 2.5.53 about two months since previous release. The biggest changes you may notice are supporting the latest version of the Debian Policy as well the addition of checks to encourage the migration to Python 3.
Thanks to all who contributed patches, code review and bug reports to this release. The full changelog is as follows:
lintian (2.5.53) unstable; urgency=medium
The "we are all Perl developers now" release.
* Summary of tag changes:
+ Added:
- alternatively-build-depends-on-python-sphinx-and-python3-sphinx
- build-depends-on-python-sphinx-only
- dependency-on-python-version-marked-for-end-of-life
- maintainer-script-interpreter
- missing-call-to-dpkg-maintscript-helper
- node-package-install-in-nodejs-rootdir
- override-file-in-wrong-package
- package-installs-java-bytecode
- python-foo-but-no-python3-foo
- script-needs-depends-on-sensible-utils
- script-uses-deprecated-nodejs-location
- transitional-package-should-be-oldlibs-optional
- unnecessary-testsuite-autopkgtest-header
- vcs-browser-links-to-empty-view
+ Removed:
- debug-package-should-be-priority-extra
- missing-classpath
- transitional-package-should-be-oldlibs-extra
* checks/apache2.pm:
+ [CL] Fix an apache2-unparsable-dependency false positive by allowing
periods (".") in dependency names. (Closes: #873701)
* checks/binaries.pm:
+ [CL] Apply patches from Guillem Jover & Boud Roukema to improve the
description of the binary-file-built-without-LFS-support tag.
(Closes: #874078)
* checks/changes. pm,desc :
+ [CL] Ignore DFSG-repacked packages when checking for upstream
source tarball signatures as they will never match by definition.
(Closes: #871957)
+ [CL] Downgrade severity of orig-tarball-missing-upstream-signature
from "E:" to "W:" as many common tools do not make including the
signatures easy enough right now. (Closes: #870722, #870069)
+ [CL] Expand the explanation of the
orig-tarball-missing-upstream-signature tag to include the location
of where dpkg-source will look. Thanks to Theodore Ts'o for the
suggestion.
* checks/copyright-file.pm:
+ [CL] Address a number of issues in copyright-year-in-future:
- Prevent false positives in port numbers, email addresses, ISO
standard numbers and matching specific and general street
addresses. (Closes: #869788)
- Match all violating years in a line, not just the first (eg.
"2000-2107").
- Ignore meta copyright statements such as "Original Author". Thanks
to Thorsten Alteholz for the bug report. (Closes: #873323)
- Expand testsuite.
* checks/cruft. pm,desc :
+ [CL] Downgrade severity of file-contains-fixme-placeholder
tag from "important" (ie. "E:") to "wishlist" (ie. "I:").
Thanks to Gregor Herrmann for the suggestion.
+ [CL] Apply patch from Alex Muntada (alexm) to use "substr" instead
of "substring" in mentions-deprecated-usr-lib-perl5-directory's
description. (Closes: #871767)
+ [CL] Don't check copyright_hints file for FIXME placeholders.
(Closes: #872843)
+ [CL] Don't match quoted "FIXME" variants as they are almost always
deliberate. Thanks to Adrian Bunk for the report. (Closes: #870199)
+ [CL] Avoid false positives in missing source checks for "CSS Browser
Selector". (Closes: #874381)
* checks/debhelper.pm:
+ [CL] Prevent a false positive of
missing-build-dependency-for-dh_-command that can be exposed by
following the advice for the recently added
useless-autoreconf-build-depends tag. (Closes: #869541)
* checks/debian-readme. pm,desc :
+ [CL] Ensure readme-debian-contains-debmake-template also checks
for templates "Automatically generated by debmake".
* checks/description. desc,pm :
+ [CL] Clarify explanation of description-starts-with-leading-spaces
tag. Thanks to Taylor Kline for the report
and patch. (Closes: #849622)
+ [NT] Skip capitalization-error-in-description-synopsis for
auto-generated packages (such as dbgsym packages).
* checks/fields. desc,pm :
+ [CL] Ensure that python3-foo packages have "Section: python", not
just python2-foo. (Closes: #870272)
+ [RG] Do no longer require debug packages to be priority extra.
+ [BR] Use Lintian::Data for name/section mapping
+ [CL] Check for packages including "?rev=0&sc=0" in Vcs-Browser.
(Closes: #681713)
+ [NT] Transitional packages should now be "oldlibs/optional" rather
than "oldlibs/extra". The related tag has been renamed accordingly.
* checks/filename-length.pm:
+ [NT] Skip the check on auto-generated binary packages (such as
dbgsym packages).
* checks/files. pm,desc :
+ [BR] Avoid privacy-breach-generic false positives for legal.xml.
+ [BR] Detect install of node package under /usr/lib/nodejs/[^/]*$
+ [CL] Check for packages shipping compiled Java class files. Thanks
Carn Draug . (Closes: #873211)
+ [BR] Privacy breach is no longer experimental.
* checks/init.d.desc:
+ [RG] Do not recommend a versioned dependency on lsb-base in
init.d-script-needs-depends-on-lsb-base. (Closes: #847144)
* checks/java.pm:
+ [CL] Additionally consider .cljc files as code to avoid false-
positive codeless-jar warnings. (Closes: #870649)
+ [CL] Drop problematic missing-classpath check. (Closes: #857123)
* checks/menu-format.desc:
+ [CL] Prevent false positives in desktop-entry-lacks-keywords-entry
for "Link" and "Directory" .desktop files. (Closes: #873702)
* checks/python. pm,desc :
+ [CL] Split out Python checks from "scripts" check to a new, source
check of type "source".
+ [CL] Check for python-foo without corresponding python3-foo packages
to assist in Python 2.x deprecation. (Closes: #870681)
+ [CL] Check for packages that Build-Depend on python-sphinx only.
(Closes: #870730)
+ [CL] Check for packages that alternatively Build-Depend on the
Python 2 and Python 3 versions of Sphinx. (Closes: #870758)
+ [CL] Check for binary packages that depend on Python 2.x.
(Closes: #870822)
* checks/scripts.pm:
+ [CL] Correct false positives in
unconditional-use-of-dpkg-statoverride by detecting "if !" as a
valid shell prefix. (Closes: #869587)
+ [CL] Check for missing calls to dpkg-maintscript-helper(1) in
maintainer scripts. (Closes: #872042)
+ [CL] Check for packages using sensible-utils without declaring a
dependency after its split from debianutils. (Closes: #872611)
+ [CL] Warn about scripts using "nodejs" as an interpreter now that
nodejs provides /usr/bin/node. (Closes: #873096)
+ [BR] Add a statistic tag giving interpreter.
* checks/testsuite. desc,pm :
+ [CL] Remove recommendations to add a "Testsuite: autopkgtest" field
to debian/control as it is added when needed by dpkg-source(1)
since dpkg 1.17.1. (Closes: #865531)
+ [CL] Warn if we see an unnecessary "Testsuite: autopkgtest" header
in debian/control.
+ [NT] Recognise "autopkgtest-pkg-go" as a valid test suite.
+ [CL] Recognise "autopkgtest-pkg-elpa" as a valid test suite.
(Closes: #873458)
+ [CL] Recognise "autopkgtest-pkg-octave" as a valid test suite.
(Closes: #875985)
+ [CL] Update the description of unknown-testsuite to reflect that
"autopkgtest" is not the only valid value; the referenced URL
is out-of-date (filed as #876008). (Closes: #876003)
* data/binaries/embedded-libs:
+ [RG] Detect embedded copies of heimdal, libgxps, libquicktime,
libsass, libytnef, and taglib.
+ [RG] Use an additional string to detect embedded copies of
openjpeg2. (Closes: #762956)
* data/fields/name_section_mappings:
+ [BR] node- package section is javascript.
+ [CL] Apply patch from Guillem Jover to add more section mappings.
(Closes: #874121)
* data/fields/obsolete-packages:
+ [MR] Add dh-systemd. (Closes: #872076)
* data/fields/perl-provides:
+ [CL] Refresh perl provides.
* data/fields/virtual-packages:
+ [CL] Update data file from archive. This fixes a false positive for
"bacula-director". (Closes: #835120)
* data/files/obsolete-paths:
+ [CL] Add note to /etc/bash_completion.d entry regarding stricter
filename requirements. (Closes: #814599)
* data/files/privacy-breaker-websites:
+ [BR] Detect custom donation logos like apache.
+ [BR] Detect generic counter website.
* data/standards-version/release-dates:
+ [CL] Add 4.0.1 and 4.1.0 as known standards versions.
(Closes: #875509)
* debian/control:
+ [CL] Mention Debian Policy v4.1.0 in the description.
+ [CL] Add myself to Uploaders.
+ [CL] Drop unnecessary "Testsuite: autopkgtest"; this is implied from
debian/tests/control existing.
* commands/info.pm:
+ [CL] Add a --list-tags option to print all tags Lintian knows about.
Thanks to Rajendra Gokhale for the suggestion. (Closes: #779675)
* commands/lintian.pm:
+ [CL] Apply patch from Maia Everett to avoid British spelling when
using en_US locale. (Closes: #868897)
* lib/Lintian/Check.pm:
+ [CL] Stop emitting maintainer,uploader -address-causes-mail-loops
for @packages.debian.org addresses. (Closes: #871575)
* lib/Lintian/Collect/Binary.pm:
+ [NT] Introduce an "auto-generated" argument for "is_pkg_class".
* lib/Lintian/Data.pm:
+ [CL] Modify Lintian::Data's "all" to always return keys in insertion
order, dropping dependency on libtie-ixhash-perl.
* helpers/coll/objdump-info-helper:
+ [CL] Apply patch from Steve Langasek to accommodate binutils 2.29
outputting symbols in a different format on ppc64el.
(Closes: #869750)
* t/tests/fields-perl-provides/tags:
+ [CL] Update expected output to match new Perl provides.
* t/tests/files-privacybreach/*:
+ [CL] Add explicit test for packages including external fonts via
the Google Font API. Thanks to Ian Jackson for the report.
(Closes: #873434)
+ [CL] Add explicit test for packages including external fonts via
the Typekit API via <script/> HTML tags.
* t/tests/*/desc:
+ [CL] Add missing entries in "Test-For" fields to make
development/testing workflow less error-prone.
* private/generate-tag-summary:
+ [CL] git-describe(1) will usually emit 7 hexadecimal digits as the
abbreviated object name, However, as this can be user-dependent,
pass --abbrev=0 to ensure it does not vary between systems. This
also means we do not need to strip it ourselves.
* private/refresh-*:
+ [CL] Use deb.debian.org as the default mirror.
+ [CL] Update locations of Contents-<arch> files; they are now
namespaced by distribution (eg. "main").
-- Chris Lamb <lamby@debian.org> Wed, 20 Sep 2017 09:25:06 +0100
Next.