Luciano Bello: See you at DebConf14!
I just got my tickets to Portland, to assist to one of my favorite events: DebConf! So, the only point of this post it to say:
See you there and let s keep Portland Weird
I just got my tickets to Portland, to assist to one of my favorite events: DebConf! So, the only point of this post it to say:
See you there and let s keep Portland Weird
I must echo John Sullivan's post: GPG keysigning and government identification.
John states some very important reasons for people everywhere to verify the identities of those parties they sign GPG keys with in a meaningful way, and that means, not just trusting government-issued IDs. As he says, It's not the Web of Amateur ID Checking. And I'll take the opportunity to expand, based on what some of us saw in Debian, on what this means.
I know most people (even most people involved in Free Software development not everybody needs to join a globally-distributed, thousand-people-strong project such as Debian) are not that much into GPG, trust keyrings, or understand the value of a strong set of cross-signatures. I know many people have never been part of a key-signing party.
I have been to several. And it was a very interesting experience. Fun, at the beginning at least, but quite tiring at the end. I was part of what could very well constitute the largest KSP ever in DebConf5 (Finland, 2005). Quite awe-inspiring We were over 200 people, all lined up with a printed list on one hand, our passport (or ID card for EU citizens) in the other. Actwally, we stood face to face, in a ribbon-like ring. And, after the basic explanation was given, it was time to check ID documents. And so it began.
The rationale of this ring is that every person who signed up for the KSP would verify each of the others' identities. Were anything fishy to happen, somebody would surely raise a voice of alert. Of course, the interaction between every two people had to be quick More like a game than like a real check. "Hi, I'm #142 on the list. I checked, my ID is OK and my fingerprint is OK." "OK, I'm #35, I also printed the document and checked both my ID and my fingerprint are OK." The passport changes hands, the person in front of me takes the unique opportunity to look at a Mexican passport while I look at a Somewhere-y one. And all is fine and dandy. The first interactions do include some chatter while we grab up speed, so maybe a minute is spent Later on, we all get a bit tired, and things speed up a bit. But anyway, we were close to 200 people That means we surely spent over 120 minutes (2 full hours) checking ID documents. Of course, not all of the time under ideal lighting conditions.
After two hours, nobody was checking anything anymore. But yes, as a group where we trust each other more than most social groups I have ever met, we did trust on others raising the alarm were anything fishy to happen. And we all finished happy and got home with a bucketload of signatures on. Yay!
One year later, DebConf happened in Mexico. My friend Martin Krafft tested the system, perhaps cheerful and playful in his intent but the flaw in key signing parties such as the one I described he unveiled was huge: People join the KSP just because it's a social ritual, without putting any thought or judgement in it. And, by doing so, we ended up dilluting instead of strengthening our web of trust.
Martin identified himself using an official-looking ID. According to his recount of the facts, he did start presenting a German ID and later switched to this other document. We could say it was a real ID from a fake country, or that it was a fake ID. It is up to each person to judge. But anyway, Martin brought his Transnational Republic ID document, and many tens of people agreed to sign his key based on it Or rather, based on it plus his outgoing, friendly personality. I did, at least, know perfectly well who he was, after knowing him for three years already. Many among us also did. Until he reached a very dilligent person, Manoj, that got disgusted by this experiment and loudly denounced it. Right, Manoj is known to have strong views, and using fake IDs is (or, at least, was) outside his definition of fair play. Some time after DebConf, a huge thread erupted questioning Martin's actions, as well as questioning what do we trust when we sign an identity document (a GPG key).
So... We continued having traditional key signing parties for a couple of years, although more carefully and with more buzz regarding these issues. Until we finally decided to switch the protocol to a better one: One that ensures we do get some more talk and inter-personal recognition. We don't need everybody to cross-sign with everyone else A better trust comes from people chatting with each other and being able to actually pin-point who a person is, what do they do. And yes, at KSPs most people still require ID documents in order to cross-sign.
Now... What do I think about this? First of all, if we have not ever talked for at least enough time for me to recognize you, don't be surprised: I won't sign your key or request you to sign mine (and note, I have quite a bad memory when it comes to faces and names). If it's the first conference (or social ocassion) we come together, I will most likely not look for key exchanges either.
My personal way of verifying identities is by knowing the other person. So, no, I won't trust a government-issued ID. I know I will be signing some people based on something other than their name, but hey I know many people already who live pseudonymously, and if they choose for whatever reason to forgo their original name, their original name should not mean anything to me either. I know them by their pseudonym, and based on that pseudonym I will sign their identities.
But... *sigh*, this post turned out quite long, and I'm not yet getting anywhere ;-)
But what this means in the end is: We must stop and think what do we mean when we exchange signatures. We are not validating a person's worth. We are not validating that a government believes who they claim to be. We are validating we trust them to be identified with the (name,mail,affiliation) they are presenting us. And yes, our signature is much more than just a social rite It is a binding document. I don't know if a GPG signature is legally binding anywhere (I'm tempted to believe it is, as most jurisdictions do accept digital signatures, and the procedure is mathematically sound and criptographically strong), but it does have a high value for our project, and for many other projects in the Free Software world.
So, wrapping up, I will also invite (just like John did) you to read the E-mail self-defense guide, published by the FSF in honor of today's Reset The Net effort.
My last update about ongoing development of botch, the bootstrap/build ordering
tool chain, was four months ago and about several incremental updates.
This post will be of similar nature. The most interesting news is probably the
additional data that bootstrap.debian.net now provides. This is listed in
the next section. All subsequent sections then list the changes under the hood
that made the additions to bootstrap.debian.net possible.
title attribute.
dose3 which
in turn depended on an unrelease version of libcudf. Both projects have
recently made new releases so that I was now able to drop the dose3 git
submodule and rely on the host system's dose3 version instead. This also made
it possible to create a Debian package of botch which currently sits at Debian
mentors. Writing the package also finally made me create a usable
install target in the Makefile as well as adding stubs for the manpages of
the 44 applications that botch currently ships. The actual content of these
manpages still has to be written. The only documentation botch currently ships
in the botch-doc package is an offline version of the wiki on gitorious.
The new page ExamplesGraphs even includes pictures.
Essential:yes and build-essential packages magically
exists and find out how to bootstrap the rest from there through native
compilation. But part of the bootstrapping problem is also to create the set of
Essential:yes and build-essential packages from nothing via cross
compilation. Botch is unable to analyze the cross phase because too many
packages cannot satisfy their crossbuild dependencies due to multiarch
conflicts. This problem is only about the dependency metadata and not about
whether a given source package actually crosscompiles fine in practice.
Helmut Grohne has done great work with rebootstrap which is regularly
run by jenkins.debian.net. He convinced me that we need an overview of
what packages are blocking the analysis of the cross case and that it was
useful to have a crossbuild order even if that was a fake order just to have a
rough overview of the current situation in Debian Sid.
I wrote a couple of scripts which would run dose-builddebcheck on a
repository, analyze which packages fail to satisfy their crossbuild
dependencies and why, fix those cases by adjusting package metadata accordingly
and repeat until all relevant source packages satisfy their crossbuild
dependencies. The result of this can then be used to identify the packages that
need to be modified as well as to generate a crossbuild order.
The fixes to the metadata are done in an automatic fashion and do not
necessarily reflect the real fix that would solve the problem. Nevertheless, I
ended up agreeing that it is better to have a slightly wrong overview than no
overview at all.
A, then dependencies on A in
different installation sets might choose different binary packages as providers
of A. The same holds for disjunctive dependencies. If a package depends on A
C and another package depends on C A then there is no coordination to
choose C so to minimize the overall amount of vertices in the graph. I
implemented two methods to minimize the impact of cases where the dependency
solver has multiple options to satisfy a dependency through Provides and
dependency disjunctions.
The first method is inspired by Helmut Grohne. An algorithm goes through all
disjunctive binary dependencies and removes all virtual packages, leaving only
real packages. Of the remaining real packages, the first one is selected. For
build dependencies, the algorithm drops all but the first package in every
disjunction. This is also what sbuild does. Unfortunately this solution
produces an unsatisfiable dependency situation in most cases. This is because
oftentimes it is necessary to select the virtual disjunctive dependency because
of a conflict relationship introduced by another package.
The second method involves aspcud, a cudf solver which can optimize a
solution by a criteria. This solution is based on an idea by Pietro Abate who
implemented the basis for this idea back in 2012. In contrast to a usual cudf
problem, binary packages now also depend on the source packages they build
from. If we now ask aspcud to find an installation set for one of the base
source packages (I chose src:build-essential) then it will return an
installation set that includes source packages. As an optimization criteria the
number of source packages in the installation set is minimized. This solution
would be flawless if there were no conflicts between binary packages. Due to
conflicts not all binary packages that must be coinstallable for this strategy
to work can be coinstalled. The quick and dirty solution is to remove all
conflicts before passing the cudf universe to aspcud. But this also means
that the solution does sometimes not work in practice.
test target in its Makefile. The test target
tests two code paths of the native.sh script and the cross.sh script.
Running these two scripts covers testing most parts of botch. Given that I did
lots of refactoring in the past weeks, the test cases greatly helped to assure
that I didnt break anything in the process.
I also added autopkgtests to the Debian packaging which test the same
things as the test target but naturally run the installed version of botch
instead. The autopkgtests were a great help in weeding out some lasts bugs
which made botch depend on being executed from its source directory.
argparse argument parsing to all scripts.
Unfortunately I had to find out that Python 3 support does not yet seem to be
possible for botch for the following reasons:
sys.stdout properties in Python 3 this proved to be tricky. On the other
hand this showed me bugs in my code where I was wrongly relying on
deterministic dictionary key traversal.
Please stop recommending that checking government-issued ID is a good way to verify someone's identity before signing their GPG key.
Have you been a US bartender before? Or held any other position where you've had to verify an ID? It's not an easy thing to do. People in those positions have books of valid IDs from different states. They have lights that show the security marks. They still get it wrong regularly. A very amateur fake ID, or borrowed real ID, will fool just about everyone in any informal context.
What's even worse is that people have a habit of happily looking at passports from other countries than their own, and nodding knowingly. It's fun, but be honest, you have no idea what you're doing.
How about just signing keys with people you would actually say you know well enough to trust? It's not the Web of Amateur ID Checking.
ID checking is at best ineffective against the threats it's supposed to address, and is probably actually damaging to the Web of Trust because of the false sense of security.
No idea what I'm talking about? Learn to encrypt your email by reading the FSF's new Email Self-Defense Guide, published in honor of today's Reset The Net effort.
Please stop recommending that checking government-issued ID is a good way to verify someone's identity before signing their GPG key.
Have you been a US bartender before? Or held any other position where you've had to verify an ID? It's not an easy thing to do. People in those positions have books of valid IDs from different states. They have lights that show the security marks. They still get it wrong regularly. A very amateur fake ID, or borrowed real ID, will fool just about everyone in any informal context.
What's even worse is that people have a habit of happily looking at passports from other countries than their own, and nodding knowingly. It's fun, but be honest, you have no idea what you're doing.
How about just signing keys with people you would actually say you know well enough to trust? It's not the Web of Amateur ID Checking.
ID checking is at best ineffective against the threats it's supposed to address, and is probably actually damaging to the Web of Trust because of the false sense of security.
No idea what I'm talking about? Learn to encrypt your email by reading the FSF's new Email Self-Defense Guide, published in honor of today's Reset The Net effort.
The new model provides an xTuple application server that can handle requests from web users and potentially other third-party apps too.
Who is it for?
Some people may feel that the web UI is intended to appeal to mobile users. While it is useful for mobile and tablet devices, this is not strictly the aim, John has discussed this in a blog.
One benefit of the web UI is that accountants and book-keepers do not need to have a copy of every exact PostBooks version that every client is using. Given that many people only need their accountant to look at their books for just a few hours at the end of each year, the ease of access with a web UI will make a big difference.
Installing it quickly
The xTuple Git repository provides a script to install the whole server quickly. Initially it just supported a single Ubuntu release, I just contributed some tweaks to generalize it for Debian wheezy and potentially other releases. It doesn't appear too difficult to generalize it further for Fedora or RHEL users.
To get going, I recommend trying it in a fresh virtual machine, either in a server environment or desktop VirtualBox solution. The installation script will install various packages on the machine and mess about with the PostgreSQL setup so you will not want to run the automated setup script on any machine where you have existing databases.
Once the virtual machine is setup, make sure sudo is installed and configured:
# apt-get install sudo
# visudo
and then run the install as your normal user:
git clone --recursive git://github.com/xtuple/xtuple.git
cd xtuple
git remote add XTUPLE git://github.com/xtuple/xtuple.git
git fetch XTUPLE
git checkout git describe --abbrev=0
chmod a+x scripts/install_xtuple.sh
scripts/install_xtuple.sh
If all goes well, 5-10 minutes later it is ready to run:
cd node-datasource
node main.js
The port numbers will appear on the screen and you can connect with a web browser.
Trying it out
Despite my comments above to the effect that this is not primarily aimed at mobile, the first and second device I tested with were both mobile devices, Samsung Galaxy S3 and a Samsung Galaxy Note 3. I feel the Note is far better for this type of application, primarily due to screen size and the fact that most of the forms in the application have fields that launch popup menus. It appears to work in both Chrome and Firefox on these devices.
One handy feature is that the mobile device can dial numbers directly from the CRM address book, this is facilitated with the tel URI.
My impression is that this is still a product that is in the final stages of development, although some people will be able to use it almost immediately. One significant thing to note is that the database schema is very stable due to the long history of the traditional xTuple/PostBooks products.
If you follow my blog closely, you noticed that I skipped all my usual monthly summaries in 2014. It s not that I stopped doing free software work, instead I was just too busy to be able to report about what I did. As an excuse, let me tell you that we just moved into a new house which was in construction since may last year.
The lack of visible activity on my blog resulted in a steady decrease of the amount of donations received (January: 70.72 , February: 71.75 , March: 51.25 , April: 39.9 , May: 40.33 ). Special thanks to all the people who kept supporting my work even though I stopped reporting about it.
So let s fix this. This report will be a bit less detailed since it covers the whole period since the start of the year.
Debian France
Preparations related to general assemblies. The year started with lots of work related to Debian France. First I took care of setting up limesurvey with Alexandre Delano to handle the vote to pick our new logo:
I also helped Sylvestre Ledru to finalize and close the accounting books for 2013 in preparation for the general assembly that was due later in the month. I wrote the moral report of the president to be presented to the assembly. And last step, I collected vote mandates to ensure that we were going to meet the quorum for the extraordinary assembly that was planned just after the usual yearly assembly.
The assemblies took place during a two days mini-debconf in Paris (January 17-18) where I was obviously present even though I gave no talk besides announcing the logo contest winner and thanking people for their participation.
It s worth noting that the extraordinary assembly was meant primarily to enshrine in our bylaws the possibility to act as a trusted organization for Debian. This status should be officialized by the Debian project leader (Lucas Nussbaum) in the upcoming weeks since we answered satisfactorily to all questions. Our paypal donation form and the accounting tools behind it are ready.
Galette packaging and members map. I managed to hand over the package maintenance of galette to Fran ois-R gis Vuillemin. I sponsored all his uploads and we packaged a new plugin that allows to create a map with all the members who accept to share their location. The idea was to let people meet each other when they don t live far away with the long term goal to have Debian France organized activities not only in Paris but everywhere in France.
New contributor game. Last but not least, I organized a game to encourage people to do their first contribution to Debian by offering them a copy of my book if they managed to complete a small Debian project. We got many interesting projects but the result so far seem to be very mixed. Many people did not complete their project (yet) that said for the few that did substantial work, it was rather good and they seem to be interested to continue to contribute.
Debian France booth at Solutions Linux in Paris. Like each year, I spent two days in Paris to help man the Debian France booth at Solutions Linux. We had lots of goodies on sale and we made more than 2000 EUR in earnings during the two days. I also used this opportunity to try to convince companies to support the new Debian LTS effort.
The Debian Administrator s Handbook
In the last days of 2013, we released the wheezy update of the book. Then I quickly organized everything needed so that the various translation teams can now focus their efforts on the latest release of the book.
Later (in February) I announced the availability of the French and Spanish translations.
Debian Squeeze LTS
When the security team called for help to try to put in place long term support for Squeeze, I replied positively because I m convinced that it s very important if Debian wants to stay an acceptable choice in big deployments and because I knew that some of my customers would be interested
Thus I followed all the discussions (on a semi-private list first and then on debian-lts@lists.debian.org) and contributed my own experience. I have also taken up the responsibility to coordinate with the Debian contributors who can be hired to work on Squeeze LTS so that we have a clear common offer for all the companies who have offered financial support towards Squeeze LTS. Expect further news on this front in the upcoming days/weeks.
Tryton
I have been a long time user of SQL-Ledger to manage the accounting of my company Freexian. But while the license is free software, the project is not. It s the work of a single developer who doesn t really accept help. I have thus been considering to move to something else for a long time but never did anything.
This year, after some rough evaluation, I decided to switch to Tryton for my company. It s probably not a wise choice from a business perspective because that migration took me many hours of unpaid labor but from a free software perspective it s definitely better than everything else I saw.
I contributed a lot of bug reports and a few patches already (#3596, #3631, #3633, #3665, #3667, #3694, #3695, #3696, #3697) mainly about problems found in the French chart of accounts but also about missing features for my use case.
I also accepted to sponsor Matthias Berhle, who is maintaining the official Debian packages of Tryton. He s already a Debian maintainer so it s mainly a matter of reviewing new source packages and granting him the required rights.
Misc Debian work
2 comments Liked this article? Click here. My blog is Flattr-enabled.
forked-daapd is an iTunes-compatible media server, originally intended as a rewrite of Firefly Media Server (also known as mt-daapd). It supports a wide range of audio formats, can stream video to iTunes, FrontRow and other compatible clients, has support for Apple's Remote iPhone/iPod application and can stream music to AirTunes devices like the AirPort Express. It also features RSP support for Roku's SoundBridge devices. Built-in, on-the-fly decoding support enables serving popular free music formats like FLAC, Ogg Vorbis or Musepack to those clients that do not otherwise support them.
Until recently I was very happy with my console mail client, Lumail, thinking I'd written it in a flexible manner, with lots of Lua-callable primitives.
Now I'm beginning to suspect that I might have gone down the wrong path at some point.
The user interface, at startup consists of a list of mailboxes. The intention being that you select a mailbox, and open it. That then takes you to a list of messages. (There is a cool and simple to use option to open the union of multiple mailboxes, which is something I use daily.)
Now the list of mailboxes is sorted alphabetically, so the user interface looks something like this:
| Publisher: | Melville House |
| Copyright: | 2011, 2012 |
| Printing: | October 2012 |
| ISBN: | 1-61219-129-0 |
| Format: | Trade paperback |
| Pages: | 453 |
I'm working on some analyses for the
Genetic Analysis Workshop #19,
which has placed it's data on Dropbox. Unfortunately, Dropbox doesn't
allow for people to download zip archives larger than 1GB, and the
data was made available in an unpacked structure with more than a
hundred files. Some searching indicated that no one had written a
recursive downloader for Dropbox, so 30 minutes of hacking with
WWW::Mechanize
later, I wrote a
simple recursive downloader for Dropbox.
Two hours later, all of the files had downloaded.
Allowing computer suspend
Major desktop environments such as Xfce or KDE have a built-in
computer suspend feature, but when you use a lighter alternative, things
are a bit more complicated, because basically: only root can suspend
the computer. Possible solutions include:
pm-suspend as
root;$ dbus-send --system --print-reply \
--dest='org.freedesktop.UPower' \
/org/freedesktop/UPower org.freedesktop.UPower.Suspend
Error org.freedesktop.UPower.GeneralError: not authorizedIt appears that this error is linked to ConsoleKit, a part of all this modern *Kit gizmo pile. If you are in this case, try prefixing your session launcher with the undocumented dark magic call
ck-launch-session. For instance, this is what I
have in my .xsession to launch my window
manager i3:
exec ck-launch-session i3Note: I do not know what
ck-launch-session does exactly, why it is
needed, and I do not want to know. To me, all that WhatsitKit pile is
just some opaque, under-documented as in: no man page crap, that no
one but their author really understand, designed to solve theoretical
problems no one really cares about like: how to allow locally
connected users to use the sound card while forbidding it to remote
users while creating new issues such as this one. This stuff is too
complex and under-documented for me to dive into it, so if it does not
work out of the box, it is just some crap that gets in my way to using
my computer as I wish.
Disabling a monitor
In some configurations, you have two monitors and want to disable
one. For instance, in addition to my LCD monitor, I have a projector
which I only use for movies. According to xorg.conf's man page, it can be disabled this
way:
Section "Device"
Identifier "Internal graphic card"
Option "Monitor-DVI" "LCD Monitor"
Option "Monitor-VGA" "Projector"
EndSection
Section "Monitor"
Identifier "LCD Monitor"
EndSection
Section "Monitor"
Identifier "Projector"
Option "Enable" "false"
EndSection
Except that does not work, because contrary to what the man page says
the real option to use is not Enable but Disable! So
here is the correct configuration to disable that monitor at
start-up:
Section "Device"
Identifier "Internal graphic card"
Option "Monitor-DVI" "LCD Monitor"
Option "Monitor-VGA" "Projector"
EndSection
Section "Monitor"
Identifier "LCD Monitor"
EndSection
Section "Monitor"
Identifier "Projector"
Option "Disable" "true"
EndSection
Note: yes, I will send a bug report with a patch against xorg.conf's man page.
I spent the bank holiday weekend mostly in Manchester with my brother and a
couple of friends, mostly to see Nine Inch Nails perform, but also to enjoy the
pleasures of the city.
We arrived on the Sunday and after checking in headed out to get some food. I'd
booked us a table at the historic Marble
Arch - the pub which gives its name
to the parent company Marble Beers - and produce
my most favourite ales. Whenever a Marble beer ends up as a guest at one of
the Newcastle real ale pubs a friend of mine (who is much more on top of this
stuff than I am) lets me know and we stop off for a few. Invariably there's a
crowd of a dozen or so Manchester expats in bar when we do. I reserved our
table over twitter, which is a bit of a novelty for me. My two friends are ale
skeptics but - due to lack of choice - we all ended up sampling the Chocolate
Marble and the Ginger 5.1, which went down a storm. They are possibly converts
now. There was an Earl Grey IPA too, which was nice but a bit on the strong
side for sessioning.
The gig was great - I prefer club gigs to arena gigs but the sound techs for
NIN know what they are doing and the mix was great. The visuals were stunning
too. Highlights for me were "The Great Destroyer" - in particular the extended,
improvised 5 minute glitch-meltdown coda; the slow build of "Eraser" and "The
Day The World Went Away" - played faithfully to the CD mix rather than the
traditional extended live arrangement. I miss the former live arrangement,
which includes a drawn out drum-backed finish, but this arrangement had a lot
of force, with all four of the band bashing guitars into a pummelling wall of
sound. I've heard that at least one person has taped the show and it turns out
recordings have just recently surfaced for the two club gigs my brother and I
attended back in 2005 and 2007 - meaning there are now
widely available, high quality ROIO copies for every NIN gig I've ever been to.
Afterwards we tried to find a decent club. Manchester is a lot larger than my
native city and there's plenty of places to go, if you know where they are. We
had originally planned to visit The Factory on Charles
Street, but we didn't believe it was open on
the Sunday. The Factory is Peter Hook's (formerly of Joy Division/New Order)
club - occupying the former office spaces of Factory records. I've chanced in
there once before as it's right across the road from the Lass O' Gowrie pub,
which is the haunt of choice for HE/tech people whenever we're in Manchester
for conferences.
Instead we gravitated towards Dry Bar on Oldham
street. By coincidence this place also has historic
ties to Factory Records. However the doormen wouldn't let us in! Finally we
landed at a place which had one name on the door and a different name on the
inside (Jack's). Like the aformentioned Lass O' Gowrie and perhaps half of all
pubs and clubs in Manchester, the place is decked out as a shrine to the former
musical giants of the City, with framed pictures of Mark E Smith, the Ha ienda
again, the Stone Roses in their boy-band-looks hay day, John Peel (champion of
many of them) and of course Tony Wilson. I can't help but wonder whether people
who live here get royally sick of that.
This place served some delicious albeit clich -titled Cocktails and played a
pretty good set - the obligatory Madchester throwback interlude was followed by
a chunk of Northern Soul and a couple of early Rap classics. Setlist wise it
was pretty much identical to that of Foundation in Newcastle, 12 years ago, no
doubt because Foundation was cribbing heavily from the Ha ienda in the first
place.
Monday was dedicated to exploring and shopping. Top of my list of places to go
was my pilgrimage venue Vinyl Exchange.
Whilst waiting for it to open we rolled around in Affleck's
Palace, which turned out to have a small record stall
within. After Vinyl Exchange we chanced across another record store right
across the road - Picadilly
Records - which happens to
be larger and focuses more on new releases. It didn't take long before we found
another small, DIY record shop, then another. We tried out the Fopp branch here
- more Vinyl; then Urban Outfitters - more; then an Oxfam branch - even more. I
actually got Vinyl snow blind at this point. I've been controlling myself
admirably and only picked up a couple of bits and pieces. My best find was Fad
Gadget's sophmore album "Incontinent".
2013 is nearly all finished up and so I thought I'd spend a little time
writing up what was noteable in the last twelve months. When I did so I
found an unfinished draft from the year before. It would be a shame for
it to go to waste, so here it is.
2012 was an interesting year in many respects with personal highs
and lows. Every year I see a lots of "round-up"-style blog posts
on the web, titled things like "2012 in music", which attempt to summarize the
highlights of the year in that particular context. Here's JWZ's
effort, for example.
Often they are prefixed with statements like "2012 was a strong year for music"
or whatever. For me, 2012 was not a particularly great year. I discovered quite
a lot of stuff that I love that was new to me, but not new in any other sense.
In Music, there were a bunch of come-back albums that made the headlines. I
picked up both of Orbital's Wonky and Brian Eno's Lux (debatably a
comeback: his first ambient record since 1983, his first solo effort since
2005, but his fourth collaborative effort on Warp in the naughties). I've
enjoyed them both, but I've already forgotten Wonky and I still haven't fully
embraced Lux (and On Land has not been knocked from the top spot when I
want to listen to ambience.) There was also Throbbing Gristle's (or X-TG)
final effort, a semi/post-TG, partly posthumous double-album swan song effort
which, even more than Lux, I still haven't fully digested. In all honesty I
think it was eclipsed by the surprise one-off release of a live recording of a
TG side project featuring Nik Void of Factory Floor: Carter Tutti Void's
Transverse, which is excellent. Ostensibly a four-track release, there's a
studio excerpt V4 studio (Slap 1) which is available from (at least)
Amazon.
There's also a much more obscure fifth "unreleased" track cruX which I managed
to "buy" from one of the web shops for zero cost.
The other big musical surprise for me last year was Beth Jeans Houghton and the
Hooves of Destiny: Yours Truly, Cellophane Nose. I knew nothing of BJH,
although it turns out I've heard some of her singles repeatedly on Radio 6, but
her band's guitarist Ed Blazey and his partner lived in the flat below me
briefly. In that time I managed to get to the pub with him just once, but he
kindly gave me a copy of their album on 12" afterwards. It reminds me a bit of
Goldfrapp circa "Seventh Tree": I really like it and I'm looking forward to
whatever they do next.
Reznor's How To Destroy Angels squeezed out An Omen EP which failed to set
my world on fire as a coherent collection, despite a few strong songs
individually.
In movies, sadly once again I'd say most of the things I recall seeing would be
"also rans". Prometheus was a disappointment, although I will probably rewatch
it in 2D at least once. The final Batman was fun although not groundbreaking to
me and it didn't surpass Ledger's efforts in The Dark Knight. Inception remains
my favourite Nolan by a long shot. Looper is perhaps the stand-out, not least
because it came from nowhere and I managed to avoid any hype.
In games, I moaned about having moaning about too many
games, most of which are much older than 2012. I started
Borderlands 2 after enjoying Borderlands (disqualified on age grounds) but
to this day haven't persued it much further. I mostly played the two similar
meta-games: The Playstation Plus download free games in a fixed time period
and the more sporadic but bountiful humble bundle whack-a-mole. More on
these another time.
In reading, as is typical I mostly read stuff that was not written in 2012.
Of that which was, Charles Stross's The Apocalypse Codex was an
improvement over The Fuller Memorandum which I did not enjoy much, but in
general I'm finding I much prefer Stross's older work to his newer; David
Byrne's How Music Works was my first (and currently last) Google Books ebook
purchase, and I read it entirely on a Nexus 7. I thoroughly enjoyed the book
but the experience has not made a convert of me away from paper. He leans
heavily on his own experiences which is inevitable but fortunately they are
wide and numerous. Iain Banks' Stonemouth was an enjoyable romp around a
fictional Scottish town (one which, I am reliably informed, is incredibly
realistical rendered). One of his "mainstream" novels, It avoided a particular
plot pattern that I've grown to dread with Banks, much to my suprise (and
pleasure). Finally, the stand-out pleasant surprise novel of the year was
Pratchett and Baxter's The Long Earth. With a plot device not unlike Banks'
Transition or Stross's Family Trade series, the pair managed to write a
journey-book capturing the sense-of-wonder that these multiverse plots are
good for. (Or perhaps I have a weakness for them). It's hard to find the lines
between Baxter and Pratchett's writing, but the debatably-reincarnated Tibetan
Monk-cum-Artificial Intelligence 'Lobsang' must surely be Pratchett's.
Pratchett managed to squeeze out another non-Discworld novel (Dodger) as well
as a long-overdue short story collection, although I haven't read either of
them yet.
On to 2013's write-up...
I m writing this in the lunch break of TFP in Soesterberg. The invited talk this morning was by Geoffrey Mainland, and he talked about the difficulties of (informal) reasoning about performance in high-level languages like Haskell, especially with fancy stuff in the compiler like fusion. So I couldn t help but think about a (very small) help here.
Consider the the two very similar expressions foldl (+) 0 [0..1000] and foldr (+) 0 [0..1000]. Which of these fuse away the list? Hopefully both, but hard to predict.
So with my list-fusion-probe library, you can write
import Data.List.Fusion.Probe (fuseThis) main = print $ foldr (+) 0 (fuseThis [0..1001])and find out. If you compile this (with -O!), it will print
500500If you change the foldr to foldl, it will print
Test: fuseThis: List did not fuseSo you can see that the function fuseThis :: [a] -> [a] does nothing if the list gets fused away, but causes a run-time error if not. It allows you to annotate your code with your assumptions of list fusion, and get shouted at if your assumptions are wrong. It wouldn t be hard to have the compiler give a warning or error message at compile time; we d just need to introduce a special function abortCompilation that, when found in the code during compilation, does just that. Note that you ll have trouble reproducing the above in GHC HEAD, where foldl does fuse (which is what I m going to talk about tomorrow here).
Next.