<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title><![CDATA[MC's journal]]></title>
<description><![CDATA[MC's journal]]></description>
<link>https://hack.org/~mc/blog/</link>
<atom:link href="https://hack.org/~mc/blog/index.xml" rel="self" type="application/rss+xml" />
<lastBuildDate>Sat, 07 Feb 2026 14:40:55 +0100</lastBuildDate>
<item>
  <title><![CDATA[FOSDEM 2026]]></title>
  <description><![CDATA[<p>
I didn't attend <a href="https://fosdem.org/">FOSDEM</a> in Brussels this year. I doubt I will ever go
back willingly. Most likely <a href="https://hack.org/~mc/blog/fosdem-2025.html">my visit last year</a> will be my only visit.
See that post for details. I have friends who visit FOSDEM and I
cherish these friends. I would very much like to keep seeing them, but
perhaps somewhere else?
</p>

<p>
TL;DR of the last post: I'm spoiled by the Chaos events. FOSDEM, in
comparison, suffers from bad arrangement, bad venue, bad network,
being held during height of the flu season, and terrible audio/video
and recording. Everyone would win if there were more volunteers and
perhaps a cooperation with the excellent <a href="https://c3voc.de">c3voc</a> and their streaming
platform <a href="https://media.ccc.de/">media.ccc.de</a>.
</p>

<p>
I'm not even sure I fit in with some of the fossbros, the 90's style
nerds, and the increasing corporate presence. Not my crowd, really?
It's likely a cultural thing. But there are a few good talks!
</p>

<p>
As usual, it was an immense con, with 1079 events in 71 tracks!
</p>

<p>
<a href="https://fosdem.org/2026/schedule/">https://fosdem.org/2026/schedule/</a>
</p>

<p>
Had a quick look at the usual suspects, the devrooms for Security,
RISC-V, and Go this year&#x2026; But, nah, not even that interesting.
</p>

<p>
I did watch some talks. Recordings are not necessarily available yet.
</p>

<p>
I found the devroom "Building Europe’s Public Digital Infrastructure"
interesting, but not very technical.
</p>

<p>
Some highlights:
</p>

<ul class="org-ul">
<li><a href="https://fosdem.org/2026/schedule/event/F8QZJP-gefs_a_good_enough_file_system_for_plan_9/">Good enough file system</a> a crash-proof, copy-on-write filesystem
based on <a href="https://www.usenix.org/system/files/login/articles/login_oct15_05_bender.pdf">Bε-trees</a> for Plan 9, already available in 9front and with
an ongoing effort to port it to OpenBSD. This might be huge for
OpenBSD if upstreamed, since they still suffer with the old FFS, now
even without soft updates.</li>

<li><a href="https://fosdem.org/2026/schedule/event/JSRDR8-audio_and_music_production_on_plan_9/">Audio and music production Plan 9</a>. Started watching this, but then
sound stopped working for a while on this and the next talk, but I
changed to the next talk, which was sent almost simultaneously.</li>

<li><a href="https://fosdem.org/2026/schedule/event/URX89L-matrix-state-of-the-union/">Matrix: State of the union</a>. Introduced epochs against dating
attacks, faster joining of large rooms, and other projects. I'm
still skeptical about Matrix (see for instance <a href="https://shkspr.mobi/blog/2025/07/im-never-going-back-to-matrix/">Eden's</a> and <a href="https://マリウス.com/giving-up-on-element-and-matrixorg/">mrus'</a>
criticism), but it seems to be picked up by a lot of agencies across
Europe, including in Sweden. They will also host the next Matrix
conference in Malmö, Sweden, my home town!</li>

<li><p>
<a href="https://fosdem.org/2026/schedule/event/7XJL9E-engineering_xmpp_federation_building_messaging_voice_social_features_across_inde/">Engineering
XMPP Federation: Building Messaging, Voice &amp; Social Features Across
Independent Projects</a>. The talk began before time! I missed the
beginning.
</p>

<p>
A lot about interesting XMPP projects, including the compliance
suites for new software, distributed trusted Multi-user chats and
the Multiparty Jingle (muji) signalling for video conferencing, and
possibly the future XMPP over QUIC.
</p>

<p>
XMPP certainly still has it's problem, not least the MUCs, which are
an ugly hack at best, but I'm glad development continues.
</p></li>

<li><p>
The author of the <a href="https://codeberg.org/river">River Wayland compositor</a>, Isaac Freund, spoke
<a href="https://fosdem.org/2026/schedule/event/GR8BFE-separating_the_wayland_compositor_and_window_manager/">about separating the Wayland compositor and the window manager</a>.
River has always had the layout generator as a seperate process.
When I started using River, perhaps 3-4 years ago, I wrote my layout
generator by copying the example code and adding the missing Monocle
mode:
</p>

<p>
<a href="https://codeberg.org/mchack/mctile">https://codeberg.org/mchack/mctile</a>
</p>

<p>
Now, Isaac has expanded this into doing most of what a traditional
X11 window manager would do, including doing server-side
decorations. He says it won't affect performance much.
</p>

<p>
I still haven't experimented with it myself and I'm not sure what I
think about it. It would make it much easier to write a window
manager for Wayland, so you can get the exact behaviour you want
much easier than before, but what other things comes with it? I
don't know.
</p></li>

<li>Hans "Pengo" Hübner was supposed to do a talk about IBM 3270
terminals, but it disappeared from the schedule! Perhaps he called
in sick? But why not just add a note to the schedule? Why remove it?</li>

<li><p>
Watched two talks about the <a href="https://www.numerique.gouv.fr/numerique-etat/dinum/">La direction interministérielle du
numérique (DINUM)</a> and their digital cooperation suite
<a href="https://lasuite.numerique.gouv.fr/">La Suite Numerique</a>, (<a href="https://github.com/suitenumerique">code</a>)
which they develop in close cooperation with the German Zentrum für
Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) (<a href="https://www.opendesk.eu/en">openDesk
project</a>) and a Dutch counterpart (didn't catch the name).
</p>

<p>
The first talk was <a href="https://fosdem.org/2026/schedule/event/THRG3E-la_suite_coop_model_for_digital_commons/">LaSuite.coop: A Public–Cooperative Model for
Digital Commons</a>, which is about an interesting way to support the
use of La Suite in other places than government.
</p>

<p>
Then I watched <a href="https://fosdem.org/2026/schedule/event/FQWYHW-scaling_national_open-source_products_across_europe_lessons_learned_from_two_yea/">Scaling national open-source products across Europe:
lessons learned from two years of cross-border state collaboration</a>
which was mostly about the cooperation between France, Germany and
The Netherlands about developing La Suite, but also hackathons with
people from a lot more countries. Most interesting. I really wish
Sweden's <a href="https://www.digg.se/">Myndigheten för digital förvaltning</a> would pick this up!
</p>

<p>
If you didn't know about it, the Europan Commision, EU's "government",
has their own Open Source Observatory:
</p>

<p>
<a href="https://interoperable-europe.ec.europa.eu/collection/open-source-observatory-osor">https://interoperable-europe.ec.europa.eu/collection/open-source-observatory-osor</a>
</p></li>
</ul>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Pungenday, the 38 day of Chaos in the YOLD 3192 (<time datetime="2026-02-07">2026-02-07</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/fosdem-2026.html</link>
  <guid>https://hack.org/~mc/blog/fosdem-2026.html</guid>
  <pubDate>Sat, 07 Feb 2026 00:55:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[I quit LinkedIn]]></title>
  <description><![CDATA[<p>
I recently quit LinkedIn. Ironically, the post I made about why I was
quitting was probably the most viewed thing I ever posted. Haha.
</p>

<p>
If you need to see my CV it's right here on my website:
</p>

<p>
<a href="https://hack.org/~mc/cv.html">https://hack.org/~mc/cv.html</a>
</p>

<p>
This is what I wrote back in November:
</p>

<blockquote>
<p>
I'm terminating my account on LinkedIn next week. This is possibly
some kind of career suicide.
</p>

<p>
I'm very seldom visiting LinkedIn, so I'm probably late to the party,
as usual. Perhaps there has already been a large exodus?
</p>

<p>
If you want to reach out to me outside of LinkedIn I welcome contacts
primarily through e-mail at mc@hack.org, but see:
</p>

<p>
<a href="https://hack.org/~mc/contact.html">https://hack.org/~mc/contact.html</a>
</p>

<p>
LinkedIn has been problematic for a long time. Today they started
using user content for LLM training. You can opt out, but the default
is that you allow it. You might want to look at your settings. Or
leave.
</p>

<p>
The thing that made me take action is that LinkedIn removed
"misgendering or deadnaming of transgender individuals" as examples of
prohibited conduct. This is unacceptable. I can just apologize that I
didn't discover nor take action earlier.
</p>

<p>
It was removed from:
</p>

<p>
<a href="https://www.linkedin.com/help/linkedin/answer/a1339812/?lang=en-US">https://www.linkedin.com/help/linkedin/answer/a1339812/?lang=en-US</a>
</p>

<p>
The changes are tracked here:
</p>

<p>
<a href="https://github.com/OpenTermsArchive/pga-versions/commit/537447facc3a1922e77cfc7fe90b0fc69414b613#diff-88386d527dff09b9311f1e66713dff8eebbf339a52952a1b2376eb198d34a60fL313">https://github.com/OpenTermsArchive/pga-versions/commit/537447facc3a1922e77cfc7fe90b0fc69414b613#diff-88386d527dff09b9311f1e66713dff8eebbf339a52952a1b2376eb198d34a60fL313</a>
</p>
</blockquote>

<p>
Judging from some comments, I should make it clear that I think what
is unacceptable is exactly "misgendering or deadnaming of transgender
individuals". Trans rights are human rights!
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Prickle-Prickle, the 62 day of The Aftermath in the YOLD 3191 (<time datetime="2025-12-20">2025-12-20</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/linkedin.html</link>
  <guid>https://hack.org/~mc/blog/linkedin.html</guid>
  <pubDate>Sat, 20 Dec 2025 23:39:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[The phone situation]]></title>
  <description><![CDATA[<p>
I need to write something about this or I'll burst.
</p>

<p>
I have a new phone. It's an old iPhone SE 2022. Yes, I know. Evil,
evil Apple. Won't someone please think of the privacy issues? Right,
well, Apple has at least better reputation about these things than
Google does, but we'll come to that.
</p>

<p>
It feels like I'm betraying the FLOSS cause. I feel horrible, although
probably not just because of this.
</p>

<p>
Let's recap:
</p>

<ul class="org-ul">
<li><p>
My main phone has been a de-googled (not even microG) Fairphone 4
with CalyxOS. CalyxOS recently almost collapsed when the founder and
lead developer left. Even if the project itself left a blog post
explaining stuff, at least one of them left behind a short message
basically saying "Android is changing. Bye!".
</p>

<p>
CalyxOS recommend everyone to install something else, perhaps stock
Android, until they get their act together. Until then, no security
updates for quite a while.
</p>

<p>
Yes, I know Nicholas is now busy with his new project, <a href="https://www.phreeli.com/about-us">the phone
operator Phreeli</a>. Best of luck with that!
</p></li>

<li>Extra phone, a Fairphone 3 with stock Android. Used for banking
apps, ID apps, reimbursements for work, all that stuff. Almost
always turned off and kept at home, except when I need it on
travels. Hate, hate, hate.</li>

<li>Google is fighting back against the alternative Android distros.
It's more or less sabotaging the Android Open Source Project (AOSP)
by withholding source and specs. My guess is that this will get
worse.</li>

<li><p>
Google recently decided to fight against directly installing (aka
what the enemy calls "sideloading") apps in Android. This takes
different forms. One of them is only allowing apps signed by a
developer registered with Google. Naturally, F-Droid is very
worried.
</p>

<p>
<a href="https://f-droid.org/en/2025/09/29/google-developer-registration-decree.html">https://f-droid.org/en/2025/09/29/google-developer-registration-decree.html</a>
</p>

<p>
<a href="https://f-droid.org/2025/10/28/sideloading.html">https://f-droid.org/2025/10/28/sideloading.html</a>
</p></li>

<li>EU's Chatcontrol proposal is still going forward, although in a
slightly changed form. This still means that all messaging systems,
even E2EE ones, will have to have client-side screening, even if
mandated mass screening is now off the table.</li>

<li><p>
Sweden's national proposal of a new law for lawful intercept is
suggested to become law in spring of 2026. It's still in Lagrådet
("Council on legislation"?), but <a href="https://www.regeringen.se/rattsliga-dokument/departementsserien-och-promemorior/2024/11/utkast-till-lagradsremiss-datalagring-och-tillgang-till-elektronisk-information/">an early version of their reply to
the proposal</a> is available (in Swedish).
</p>

<p>
There was news recently that this has been postponed, but it's still
on the table.
</p>

<p>
TL;DR: It's horrible. It means all service "providers" (whatever
that means) will have to be able to do lawful intercept, possibly
even in advance, regardless of encryption. This means copies of
messages and images will be stored in the clear somewhere. Of
course, if it's stored in the clear somewhere it's not just the
police that will be able to access it. Who knows who might see it?
</p>

<p>
It's not clear who is required to provide the intercept. It might
mean those who operate servers. It might mean those who wrote the
software. It might mean those who distribute the software. They
can use "the provider" however they want. Very scary.
</p>

<p>
Most likely, though, they will target publically available big
services first. Yes, that means Signal, too. Signal has already said
they will withdraw from Sweden if this passes, which probably means
they won't be available on AppStore or Google Play. If you also
consider Google's fight against direct installation, this gets
complicated for ordinary people.
</p>

<p>
Of course, people like us will always manage to message each other
safely somehow, but what about my dad?
</p></li>
</ul>

<p>
Some alternatives:
</p>

<ul class="org-ul">
<li><p>
Stop using a phone altogether. For many years I didn't use a mobile
phone even after mobile phones had become popular. Of course I
didn't have a landline phone either. Speaking on the phone is evil.
</p>

<p>
I got rid of my dumbphone sometime in the late 1990's and didn't get
a new one. It frustrated my family and girlfriends immensely. People
were often worried. And well, yes, it was sometimes true that they
should be worried. In the end I inherited one of P's phones and
started using a mobile again.
</p>

<p>
Doesn't seem realistic, if I don't want to upset those close to me.
</p></li>

<li>Use a dumbphone. Possible, but awkwards since a lot of the evils of
modern society more or less demand a smartphone. I notice this a lot
more when travelling.</li>

<li><p>
Use a Linux phone. Options are things like Jolla, Pine Phone or
using Ubuntu Touch and postmarketOS on Android hardware. Hardware
support is poor, though. For instance, postmarket boots on my FPs,
but it doesn't yet support loading the battery.
</p>

<p>
I was quite surprised when <a href="https://commerce.jolla.com/products/jolla-phone-preorder">Jolla just announced a new phone</a>!
</p></li>

<li>Give up and use stock Android. This means a company which is famous
for collecting data about individuals and selling it will see
everything I do on the phone. Not acceptable.</li>

<li><p>
Install some other AOSP distro, like <a href="https://e.foundation/e-os/">eOS</a> or <a href="https://iode.tech/iodeos/">iodéOS</a>.
</p>

<p>
I considered this for a long time. Given that AOSP is possibly being
sabotaged by Google and installing apps will only be possible
through their control this didn't seem so much better than stock.
</p></li>

<li><p>
Give up in a different way and use an iPhone. This means Apple, in
theory, can see whatever I do on the phone. On the other hand Apple
doesn't have quite the evil track record that Google does.
</p>

<p>
Combined with the realisation that Signal will most likely will
withdraw from Sweden and that I will probably be using iMessage to
chat to, for instance, mom, this seems like a good idea.
</p>

<p>
Also, since I won't trust it that much, I will probably stop using
the phone as much as before, which also seems like a good idea.
</p></li>
</ul>

<p>
Conclusion: Buy an old iPhone. I can't bare to give Apple a lot of
money, so I'm not buying a new one, just one new enough that updates
are still a thing. I will most likeley keep sensitive communication
away from the device, like I probably should have anyway.
</p>

<p>
Yeah, sensitive communication&#x2026; About that. Perhaps another blog
post, but I'm again investigating alternatives.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Prickle-Prickle, the 62 day of The Aftermath in the YOLD 3191 (<time datetime="2025-12-20">2025-12-20</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/phone-situation.html</link>
  <guid>https://hack.org/~mc/blog/phone-situation.html</guid>
  <pubDate>Sat, 20 Dec 2025 22:50:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[Status 2025-09-30]]></title>
  <description><![CDATA[<p>
Greetings, programs!
</p>

<p>
I have an eye infection and I think I'm down with a cold. Not feeling
my happiest. Spending time with you, looking at green text in Emacs,
typing on my trusted HHKB, drinking warm beverages, and listening to
Bad Religion and Tuba Skinny (nice mix of styles, eh?) might be a way
to cure at least the melancholia&#x2026;
</p>

<p>
September was time for the Remote Outdoor Off-Grid Phlogging Challenge
(ROOPHLOCH) 2025, but I didn't participate. I guess I could have
written something for my gemlog on a laptop at Fårö, but instead I'm
now at home writing on my ordinary, boring weblog. See this on Gopher
for the ROOPHLOCH announcement:
</p>

<p>
gopher://zaibatsu.circumlunar.space/0/~solderpunk/phlog/announcing-roophloch-2025.txt
</p>

<p>
I'm just back from a trip to the island of Gotland, P's old
neighbourhoods. We spent some time both in Visby and at Fårö.
</p>

<p>
It takes something like 9 hours from Malmö to Visby, about the same as
by train to Hudiksvall, even if that's a much longer trip. I blame the
ferry and that we had to change from train to bus a few times. On the
way home we spent an extra night on the way in a hotel in Kalmar,
since we got there so late.
</p>

<p>
The reason for the trip was mostly yet another 50th birthday
celebration. We've been to several 50th birthday parties recently.
You can probably tell our age.
</p>

<p>
One of the parties was a rather traditional garden party but this one
was dedicated to&#x2026; ABBA and Greece (think <i>Mamma Mia!</i> the musical)!
I somehow managed to get The Leather Nun's cover of <i>Gimme, gimme,
gimme</i> into the playlist. That was fun. Yes, I promised to dance, and
I did, loudly singing "Gimme a man after midnight!" to the crowd.
</p>

<p>
Pretty happy about the description of me in a leaflet at the party:
"The hacker. Into programming, networks, books, and medieval weapons".
Haha.
</p>

<p>
P ran the Helsingborg marathon again this year. I tagged along to
Helsingborg. We could have just gone home after the race, but decided
to stay. We had a wonderful weekend at hotel Mollberg.
</p>

<p>
I'm not usually at H&amp;M much, but I forgot to bring a hat and needed
something fast to cover my bald head from the sun. I was very
surprised by the current men's fashion according to H&amp;M: black cargo
pants, black hoodies with retro computers, black t-shirts with vaguely
cyberpunk motifs&#x2026; WTF? I have to change what I wear!
</p>
<div id="outline-container-org4606e0a" class="outline-2">
<h2 id="org4606e0a">A week in Gothenburg</h2>
<div class="outline-text-2" id="text-org4606e0a">
<p>
Spent a week in Gothenburg for work. Not too thrilled about the
office, but that's perhaps mostly because my good stuff isn't there?
Really need to bring at least an external keyboard next time. And a
better chair? On the train!? They also really need more of a hacker
vibe at the office. And to turn up the heat!
</p>

<p>
One morning in Gothenburg I attended my friend Joachim's breakfast
talk at <a href="https://www.assured.se/">Assured</a> about quantum computers and post-quantum crypto. A
nice overview of what we can expect. No recording, I'm afraid, but
man, they have the better office.
</p>

<p>
Had an interesting incident at Steampunk bar, a rather boring bar that
could have done the steampunk thing much better than they have.
Corsets, though&#x2026; Ahem.
</p>

<p>
Anyway, I was just entering the bar and the bartender greeted me in
English. Something just clicked and I spent the entire time there
speaking English. That was&#x2026; odd, especially when another guy at the
bar started chatting to me. He was obviously Swedish, but I just kept
talking English. Don't know why, really. I felt a little bad
afterwards. Sorry!
</p>
</div>
</div>
<div id="outline-container-org961457b" class="outline-2">
<h2 id="org961457b">Android is changing</h2>
<div class="outline-text-2" id="text-org961457b">
<p>
Android is changing. CalyxOS has problems with both the founder and
the lead developer leaving. I'm running CalyxOS on my Fairphone 4, as
you do, and suddently find myself without security updates. I will
also need to reinstall when they start distributing CalyxOS again, if
ever?
</p>

<p>
I'm thinking about what to do. Probably just re-install FP's stock?
Wait it out? Then re-install CalyxOS? But what if it's true that
Android's changing? The recent demands for registered developers? The
thing about not releasing Pixel stuff to AOSP? Wha&#x2026;?
</p>

<p>
Do I just give up and run stock? Or even buy a used iPhone?
</p>

<p>
If that's the case I will probably be moving more of my communication
elsewhere. I don't want to give up completely just yet.
</p>
</div>
</div>
<div id="outline-container-org27e8e8e" class="outline-2">
<h2 id="org27e8e8e">Group chats</h2>
<div class="outline-text-2" id="text-org27e8e8e">
<p>
I've left IRC for a while. Yes, even the secret server. Still on IRC
for work, though. Attempting to leave most chat groups or at least not
be active on them.
</p>

<p>
Thinking one line at a time? Not a good way to get my views across, I
think. People need to know me a lot better before that's a good idea.
</p>

<p>
Participating in one chat group made me sit in a park and write
postcards with people from the hackerspace <a href="https://lodis.se/">Lodis</a> about Chat control,
though. That was interesting. Not my usual crowd, but a good crowd,
even if D and me snuck away to a pub after a while.
</p>
</div>
</div>
<div id="outline-container-org7074c1b" class="outline-2">
<h2 id="org7074c1b">Recent bars &amp; cocktails worth mentioning</h2>
<div class="outline-text-2" id="text-org7074c1b">
<ul class="org-ul">
<li>Aviation at Care/of, Malmö. No violet liqueur at home! Have to
fix that.</li>
<li>Library Bar at Hotel Plaza, Copenhagen.</li>
<li>Värdshuset Lindgården, Visby, especially The Gin Room. Had a
strange, but good Old fashioned with home-made walnut liqueur and a
Last word.</li>
</ul>
</div>
</div>
<div id="outline-container-org2a8b2b6" class="outline-2">
<h2 id="org2a8b2b6">Recent media &amp; news</h2>
<div class="outline-text-2" id="text-org2a8b2b6">
<ul class="org-ul">
<li><i>Hackers</i> turned 30 years! Me and R watched it together and chatted
all the time even if were on different continents. Hecklevision,
FTW! Still no word from <a href="https://biografspegeln.se/">Spegeln</a> if they are going to make a hacker
night. Thrilled about the Pynchon-inspired <i>One battle after
another</i>, though. Going to see it soon.</li>

<li>Read Orwell's <i>Homage to Catalonia</i> again and booked a trip to
Barcelona with P. I hope Nick Llyod is still doing his Spanish civil
war tour. I'd like to take the longer one this time.</li>

<li><p>
<i>Rethinking social media platforms: New Strategies for Engaging an
Audiece</i> was an evening with talks at Inkonst recently. <a href="https://www.youtube.com/watch?v=vX2jdmgKPg8">Recording</a>.
</p>

<p>
Of course I liked my old acquaintance Marcin's almost retro part of
the evening best. Me and Marcin met up afterwards.
</p></li>

<li><p>
<i>Diary of a ditched girl</i> (Swedish: <i>Halva Malmö består av killar
som dumpat mig</i>). Netflix series. Like most of Sweden(?) I watched
this show. I managed two episodes. It's really&#x2026; too embarrassing
for all concerned, but a very good production with some great
acting.
</p>

<p>
It really is Malmö, the city I live in, and some places I've been to
countless times, like Rex, a pizzeria/dive bar I lived right next
to when I first moved here.
</p></li>

<li>Reading Herman Hesse's <i>Der Steppenwolf</i> again, but this time in
German! It's slow going, but I might manage. At least it's not
Thomas Mann!</li>

<li>Read Klas Östergren's newest novel <i>Klenoden</i> on the trip to
Gotland. Absolutely wonderful. Can be read by itself, I think, but
several flashbacks to <i>Gentlemen</i>, et cetera.</li>

<li><a href="https://www.cell.com/trends/biotechnology/fulltext/S0167-7799(25)00181-7">Someone made E. Coli produce casein!</a> Vegan cheese when? Can't wait!
Flashbacks to <a href="https://www.realvegancheese.org/">The real vegan cheese project</a>!</li>

<li><p>
Me and P watched Bergman's 1975 film version of <i>The Magic Flute</i>
again, but this time at the art cinema Spegeln!
</p>

<p>
The translation to Swedish of the libretto was done by the
marvellous Alf Henriksson. The story is slightly changed and makes
more sense, especially the relationship between the queen of the
night and Sarastro, who are depicted as former lovers and parents of
Pamina. Yes, exactly!
</p></li>

<li><p>
I know I bitched on group chats above but have a look at this great
IRC documentary!
</p>

<p>
<a href="https://www.youtube.com/watch?v=6UbKenFipjo">https://www.youtube.com/watch?v=6UbKenFipjo</a>
</p></li>

<li><p>
My old friend and former boss Paf was inducted to the Internet hall
of fame!
</p>

<p>
<a href="https://www.internethalloffame.org/inductee/patrik-faltstrom/">https://www.internethalloffame.org/inductee/patrik-faltstrom/</a>
</p></li>

<li>Looking forward to the SF&amp;F con <a href="https://malmolundfandom.weebly.com/luncon-2025.html">LunCon</a>, this year's SweCon. See you
there!</li>
</ul>
</div>
</div>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Pungenday, the 54 day of Bureaucracy in the YOLD 3191 (<time datetime="2025-09-30">2025-09-30</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/2025-09-30.html</link>
  <guid>https://hack.org/~mc/blog/2025-09-30.html</guid>
  <pubDate>Tue, 30 Sep 2025 18:27:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Status 2025-08-16]]></title>
  <description><![CDATA[<p>
They say it doesn't have to be crazy at work. For once, it appears I
sort of made it true.
</p>

<p>
I stretched my summer vacation by taking a couple of days off every
week instead of taking the full weeks. P says she has read studies
about burnout that makes this a better recovery strategy. Maybe it
worked?
</p>

<p>
This was the last week with Mondays and Tuesdays off. This week I
managed to keep my hours on Wednesday and Thursday (working 80%,
remember?) but, of course, I worked to 23:30 on Friday night. You
can't have everything.
</p>

<p>
This week #3 started upper secondary school! Yet another punk at art
school, but this one is mine. As they say. Do they? I find it amusing
that Simon Reynolds in <i>Rip It Up and Start Again: Postpunk 1978–1984</i>
said:
</p>

<blockquote>
<p>
Especially in Britain, art schools have long functioned as a
state-subsidized bohemia, where working-class youths too unruly for a
life of labor mingle with slumming bourgeois kids too wayward for a
middle-management career.
</p>
</blockquote>

<p>
#3 is obviously incredibly creative so this is really the right place,
regardless of what music critics used to say. On the other hand,
perhaps she'll be in a band before this is over?
</p>

<p>
My birthday has been and gone. Another year around the deathstar and
closer to death. Yay. I had a very small gathering of the bereaved
with some cake. This time, the cake wasn't a lie.
</p>

<p>
Hackers (1995) turns 30 on September 15. I wrote to one of the fancy
cinemas close to me about showing it. They replied! They think it's a
great idea, but can't promise that it's going to show in September.
Looking forward to it. I suggested that they perhaps make a hacker
thing about it, showing WarGames, Sneakers, &#x2026;
</p>
<div id="outline-container-orge62ded6" class="outline-2">
<h2 id="orge62ded6">Recent media &amp; news</h2>
<div class="outline-text-2" id="text-orge62ded6">
<ul class="org-ul">
<li><p>
Claire Dederer's <i>Monsters</i>. Amazingly good. She's like an even more
literary Cometbus, but just as punk.
</p>

<p>
What's up with the different titles, though? It's called <i>Monsters:
What Do We Do with Great Art by Bad People</i> and <i>Monsters: A fan's
dilemma</i>. Same thing with her bok <i>Love and Trouble: A Midlife
Reckoning</i> which is sometimes called <i>Love and Trouble: Confessions
of a former Wild Girl</i>. Don't know, but I got to read that, too!
</p></li>
</ul>
</div>
</div>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Pungenday, the 9 day of Bureaucracy in the YOLD 3191 (<time datetime="2025-08-16">2025-08-16</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/2025-08-16.html</link>
  <guid>https://hack.org/~mc/blog/2025-08-16.html</guid>
  <pubDate>Sat, 16 Aug 2025 16:00:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[37C3 and New Year's Eve 2023]]></title>
  <description><![CDATA[<p>
Another one from the vaults. The 37C3 conference took place in
December, 2023. This report was mostly written in January, 2024.
Mostly finished it at night in my cottage between 28 and 29th
December, then edited and added some stuff in July, 2025. So&#x2026; Only
1.5 years late?
</p>

<p>
It was a little ironic, and a little sad, that I was finishing the
37C3 report during 38C3. I didn't manage to get any tickets for me and
#3 for 38C3 and had to make do with watching the stream.
</p>

<p>
The links to the talks go to <a href="https://media.ccc.de/">CCC's own media archive</a> of the filmed
talks. It's a wonderful archive with many hours of enjoyment.
</p>

<p>
— — — 
</p>

<p>
At last! A real, physical C3!!! I don't deny that I'm glad it was
possible to listen to remote talks at <a href="https://media.ccc.de/c/rc3">rC3</a> (2021) and the <a href="https://media.ccc.de/c/jev22">Dezentrale
Jahresendungveranstaltungen (JEV22, 2022)</a>. I even enjoyed arranging
the little remote <a href="https://hack.org/mc/blog/h3-2022.html">H3 conference</a>, but actually being in the same
building as 10,000+ other hackers from around the world is something
else entirely.
</p>

<p>
<a href="https://events.ccc.de/congress/2023/infos/index.html">37C</a> was back to <a href="https://www.cch.de/">Congress Center Hamburg</a> after having been in Leipzig
for a few years. I still miss Berlin, of course, but Hamburg is nice,
too.
</p>


<figure id="org7a1994b">
<img src="static/images/cch-2023.jpg" alt="A conference building with some pretty lights.">

<figcaption><span class="figure-number">Figure 1: </span>Congress Center Hamburg (CCH). Note that the sign says "CCC" instead of "CCH".</figcaption>
</figure>

<p>
Not many photos from the inside of CCH because of the C3 photo policy,
obviously.
</p>

<p>
Before I continue I have to mention the elephant in the room: I heard
rumours that Jake Applebaum showed up at the CCH, that he was asked to
leave, and that he did leave. I'm sure that could have been handled
better and I hope that Security and Awareness teams in CCC events are
easily available for incidents in the future.
</p>

<p>
I hope people gives some real thought about any enforcements about
things like this. For example I don't think it's good idea to force
people to use their real names when buying C3 tickets, making tickets
personal, and showing IDs at the entrance so entrance Engels can check
against a list of banned people. Showing IDs at C3!? Really? No,
thanks. They have to figure out something else.
</p>

<p>
Back to the C3 travel report&#x2026;
</p>

<p>
Me, a friend, and #3 travelled together by train from Malmö to Hamburg
via Copenhagen. The trip to Hamburg was mostly uneventful and in first
class! It wasn't even expensive. We brought some Newtonmas beers, of
course, and some snacks.
</p>

<p>
Four of us shared a flat in St Pauli, rather close to Reeperbahn. We
mostly took the bus to and from CCH but once walked the entire way and
once walked from Schanzenviertel after the traditional burritos.
</p>

<p>
Of course we had burritos at <a href="https://www.jimburritos.com/">Jim Burrito's</a> as usual! Burritos are
traditional whenever visiting Germany now. I even think of Germany
every time I eat a burrito, yes, even in the Mission in SF!
</p>

<p>
It all started when we found <a href="https://dolores-burritos.de/">Dolores</a> in Berlin during the 25C3
in 2008. Soon we had two burritos a day when we didn't get stuck at
the wonderful brunch at <a href="https://www.cafe-morgenrot.de/">Cafe Morgenrot</a>.
</p>

<p>
I was quite nervous about this being #3's first time at C3. What if
they got bored!? We made a thing about spending at least a few hours
at CCH each day and then I went back with them to the flat for some
quality alone time with their pen, paper, and iPad.
</p>

<p>
I managed to arrange a playdate at least one of the days and there was
some soldering and a lot of investigating of CCH and the many
assemblies. That seemed to have been fun and it looks like #3 is
willing to tag along next year, too!
</p>


<figure id="org70048c3">
<img src="static/images/3-with-axolotl.jpg" alt="Pale kid with black hoodie, black Connection Machine t-shirt, and a shining axolotl on a strap.">

<figcaption><span class="figure-number">Figure 2: </span>Proud #3 with a soldered axolotl. Published with permission from #3. Notice the Connection Machine t-shirt!</figcaption>
</figure>

<p>
My hope was that #3 would have a similar experience I had many years
ago when I stumbled on an assembly where a 16-year-old girl was
presenting her fully autonomous robots that she had built herself. I
thought if #3 found something like this, they would be able to think
something "If she can do this, I can, too!" and get even deeper down
the rabbit hole.
</p>

<p>
Personally I thought that the assemblies and the installations were a
bit tame this year: no phone-controlled flame throwers, no trapeze
artists 10 metres above the dance floor, no autonomous robots fighting
each other, and not even any traces of die Seidenstraße (the pneumatic
tube system)! Where were everyone?
</p>

<p>
I heard some rumours about the organisers being far fewer than usual
and probably much less experienced than usual. The call for assemblies
came late. People were perhaps also not ready for an actual, physical
C3 this year. There was also a lack of Engels (volunteers). A few
friends volunteered as Engels but to my shame I didn't do it myself.
</p>

<p>
I bought T-shirts and a zipper hoodie for me and #3. So far no one has
asked them about the C3 merch. Not once! And they have many C3
t-shirts, going back years&#x2026; If someone had wore something like that
at my school when I was young I would have been on them at once, being
impressed and asking questions.
</p>

<p>
All the talks from 37C3 are available here:
</p>

<p>
<a href="https://media.ccc.de/c/37c3">https://media.ccc.de/c/37c3</a>
</p>

<p>
Talks that get a special mention, for some reason or another:
</p>

<ul class="org-ul">
<li><p>
<a href="https://media.ccc.de/v/37c3-12004-please_identify_yourself">Please identify yourself! Digital identity systems in the EU and
around the world</a>
</p>

<p>
Since I work with a small open platform (<a href="https://tillitis.se/">Tillitis TKey</a>) that can be
used for authentication (among other things) I thought this would be
especially interesting. Unfortunately it was thin on the technical
details and I didn't learn much on the technical front.
</p>

<p>
What I did learn was mostly on the legal front:
</p>

<ul class="org-ul">
<li>replies on the technical implementation for the EU Digital Wallet
needs to be in before August, 2024.</li>

<li>there is supposed to be a right to be pseudonymous.</li>

<li>the proposal is that by 2026 the use of the Digital Wallet will be
compulsory.</li>

<li><a href="https://dpi-safeguards.org/">UN's Universal Safeguard for Digital Public Infrastructure</a>.</li>

<li>Mozilla's proposal <a href="https://blog.mozilla.org/netpolicy/2020/01/22/what-could-an-open-id-system-look-like-recommendations-and-guardrails-for-national-biometric-id-projects/">What could an “Open” ID system look like?</a></li>
</ul>

<p>
Here are some more, much more interesting stuff about the upcoming
European Union Digital Identity:
</p>

<ul class="org-ul">
<li>Actual technical reference of the EU DI: <a href="https://eu-digital-identity-wallet.github.io/eudi-doc-architecture-and-reference-framework/latest/">"The Architecture and
Reference Framework" (ARF)</a>.</li>

<li>EU's reference implementation of all parts of the software needed
can be found in: <a href="https://github.com/eu-digital-identity-wallet">https://github.com/eu-digital-identity-wallet</a></li>
</ul></li>

<li><p>
<a href="https://media.ccc.de/v/37c3-12142-breaking_drm_in_polish_trains">Breaking "DRM" in Polish trains: Reverse engineering a train to analyze a suspicious malfunction</a>
</p>

<p>
Extremely interesting and well done research on manufacturers'
control over train hardware and their hostile behaviour against
customers.
</p></li>

<li><p>
<a href="https://media.ccc.de/v/37c3-12167-synthetic_sentience">Synthetic Sentience: Can Artificial Intelligence become conscious?</a>
</p>

<p>
Joscha Bach's wonderful series is not your regular AI hype. It's
part of another type of cognitive research and just wonderful.
</p></li>

<li><p>
<a href="https://media.ccc.de/v/37c3-12326-you_ve_just_been_fucked_by_psyops">You’ve just been fucked by psyops: UFOs, magic, mind control,
electronic warfare, AI, and the death of the Internet</a>
</p>

<p>
Don't be misled by the silly name. It's named after the uniform
patch of American psyops (&#x2026;ending "because physical wounds heal")
this marvellous and well-presented talk presents, among other
things, the history of psyops and interesting case studies.
</p></li>
</ul>

<p>
Explicitly didn't watch the trainweck about SMTP smuggling because,
fuck them&#x2026; You don't release an exploit on Newtonmas vacation
without even telling affected software projects first!
</p>

<p>
The talk about how to scale end-to-end encryption with Messaging Layer
Security (MLS) didn't have many technical details&#x2026; I would have
liked much more, but it's much better to just read <a href="https://datatracker.ietf.org/doc/rfc9420/">RFC 9420</a> and the
recent (April, 2025) companion <a href="https://datatracker.ietf.org/doc/rfc9750/">MLS architecture RFC</a>.
</p>

<p>
I discovered that the Cyberpunkabendbar Cable Trash was held at the
ship MS Stubnitz in a special 37C3 version. Some friends went but I
didn't think I should go with #3 alone in the flat. Maybe some day? I
really like Hamburg and visit at least a couple of times per year.
</p>

<p>
I saw this poster about an upcoming conference in a few places:
</p>


<figure id="org8882e6a">
<img src="static/images/easterhegg.jpg" alt="3D-style antropomorph rabbit in a cyberpunk cityscape with the text &quot;Easterhegg 2024. Rabbit prototyping. 29.3.-1.4.2024&quot;">

<figcaption><span class="figure-number">Figure 3: </span>Easterhegg poster.</figcaption>
</figure>

<p>
Rabbit prototyping! Ha! I was so tempted. #3 said something like "It's
you!" when they saw the poster. I have one of those posters at home
now.
</p>

<p>
An aquaintance showed me this lovely little working GSM phone:
</p>


<figure id="org0137a70">
<img src="static/images/smallphone.jpg" alt="Very tiny phone in my hand, perhaps the size of my little finger. In the background the floor and some shoes.">

<figcaption><span class="figure-number">Figure 4: </span>Smallphone, not smartphone</figcaption>
</figure>

<p>
Lots of prison phone vibes, but so cute. Naturally, it was hooked up
to the self-organized local GSM network.
</p>

<p>
Living very close to Reeperbahn was interesing. #3 commented on the
strip clubs but they were apparently not very aware of the other sex
workers around us.
</p>

<p>
We never got accosted by sex workers when #3 was with us. When some of
the adult flat members walked back one night some of the sex workers
correctly identified who among us had the real money and came with
some rather direct suggestions. How!? Was it the expensive jacket?
None of them ever spoke with me. I think they thought I was some
penniless punk who probably lived in St Pauli or Schanze.
</p>

<p>
We skipped the last day at C3 and instead checked out of our flat and
took the bus to Hauptbahnhof. We ended up in a café and had a second
breakfast while waiting for the train, then got some supplies for the
trip. #3 and I went back to Malmö via Copenhagen but the rest
travelled elsewhere.
</p>

<p>
Unfortunately our train was cancelled and the replacement train didn't
have any seat bookings at all! We ended up on the floor for a while
until a nice conductor mentioned that there were free seats up ahead.
It wouldn't have been fun spending five hours on the floor of the
train between carriages, but in the end it was alright.
</p>

<p>
We arrived back in Malmö late in the evening on December 30 so we
didn't have much time to prepare for New Year's Eve.
</p>

<p>
We celebrated New Year's Eve at the cottage, as usual. Central Malmö
during NYE is not my kind of fun. It's similar to central Berlin.
Fireworks everywhere! Horizontally as much as vertically. Gun powder
smoke like fog everywhere.
</p>


<figure id="orgb64e7a1">
<img src="static/images/mc-ny-2023.jpg" alt="A pale man with shaved head and white goatee in a velvet coat and scarf. Slightly smiling.">

<figcaption><span class="figure-number">Figure 5: </span>Obligatory NYE selfie.</figcaption>
</figure>

<p>
Unfortunately we still had no working electricity in the cottage
kitchen. P had prepared some meals for us in Malmö and we could heat
one after the other on the portable induction stove.
</p>

<p>
The first days of the new year came with the snow.
</p>


<figure id="org57f9e2a">
<img src="static/images/cottage-snow.jpg" alt="Parts of a porch and a front yard covered in a couple of cm snow.">

<figcaption><span class="figure-number">Figure 6: </span>Snow! In Skåne?</figcaption>
</figure>

<p>
Yes, I know it doesn't look like much, but that's just after a few
hours. Since it's so flat around here it piles up in wedges on the
highway and cars get stuck.
</p>

<p>
Over a thousand cars got stuck in a huge queue in the snow on the
highway close to the cottage. Some people had been sitting in their
cars for 16 hours when they were evacuated by tracked vehicles. The
snow kept coming. We were OK, though, with plenty of wood for the wood
stove and some food stored.
</p>

<p>
Happy new year!
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Boomtime, the 61 day of Confusion in the YOLD 3191 (<time datetime="2025-07-26">2025-07-26</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/37c3-report.html</link>
  <guid>https://hack.org/~mc/blog/37c3-report.html</guid>
  <pubDate>Sat, 26 Jul 2025 17:34:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[gomdn: Yet another Static Site Generator]]></title>
  <description><![CDATA[<p>
Yet another Static Site Generator (SSG), but this one is mine.
</p>

<p>
It's a stupidly simple Go program (<code>wc</code> says 229 lines), more like a
hack, really, but I don't need something like Hugo. Most of the real
work is done by the <a href="https://github.com/yuin/goldmark">goldmark</a> package, of course. This is mostly just a
wrapper, deciding if something needs to be rebuilt.
</p>

<p>
I've been using a Perl script together with <code>cmark</code> (originally
<code>Markdown.pl</code>) since forever. And before that the old <a href="https://txt2tags.org/">txt2tags</a> since
2001(?). I used plain Makefiles to regenerate only those files that
had changed. This new Go program replaces all of them.
</p>

<p>
<code>godmdn</code> recursively goes through a series of directories. If a source
file ending with <code>.mdu</code> (configurable) is found, it checks the target
HTML file and rebuilds it if the source is newer. If the file doesn't
end with <code>.mdu</code> and is newer than the target, it is simply copied.
</p>

<p>
<a href="https://codeberg.org/mchack/gomdn">https://codeberg.org/mchack/gomdn</a>
</p>

<p>
I'm still using <a href="https://github.com/bastibe/org-static-blog">org-static-blog</a> for the blog. <a href="https://hack.org/~mc/gallery/">The few galleries</a> I have
are of course made by my venerable Simple Gallery <a href="https://codeberg.org/mchack/simgal">simgal</a> script.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Prickle-Prickle, the 58 day of Confusion in the YOLD 3191 (<time datetime="2025-07-23">2025-07-23</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/gomdn.html</link>
  <guid>https://hack.org/~mc/blog/gomdn.html</guid>
  <pubDate>Wed, 23 Jul 2025 08:00:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Status 2025-07-21]]></title>
  <description><![CDATA[<p>
Morning, computer! Spending my days off trying to figure things out.
Some of them will occur in this post. I think best when I'm writing,
after all.
</p>
<div id="outline-container-orgbf4eca3" class="outline-2">
<h2 id="orgbf4eca3">Intro</h2>
<div class="outline-text-2" id="text-orgbf4eca3">
<p>
I'm back from a short vacation since a couple of weeks. I'm still
going to take a few days off every week for a while. I need the break.
It's been way too many 12-16 hour workdays. I'm nominally working 80%
(~6 hour days), so I figure I've been working a lot for free.
</p>

<p>
Yeah, well, I like the TKey project to succeed. The ideas behind it
have implications for the future of trustworthy computing. It's more
important than just the TKey itself.
</p>

<p>
I also feel guilty every time I don't meet my own expectations or just
sit and stare with anxiety, unable to start anything. Then I
hyperfocus in the evenings. ADHD much? Yes. Of course it's not healthy
in the long run.
</p>

<p>
Vacation was&#x2026; short. I didn't do much. No travels, except to the
cottage and to nearby towns. I did manage to meet some dear friends.
</p>

<p>
Especially grateful to meet R since I'm not going to the US for the
foreseeable future because&#x2026; <code>*gestures at everything*</code>. I got a
beautiful patch by him "I want to leave" in the form of the X-Files
classic "I want to believe" poster. It's probably going on one of my
black denim jackets soon, along with the cone studs I bought for me
and #3 to decorate our jackets with.
</p>
</div>
</div>
<div id="outline-container-org737964b" class="outline-2">
<h2 id="org737964b">Dayjob</h2>
<div class="outline-text-2" id="text-org737964b">
<p>
Dayjob has launched new web pages for the main page and the bugbounty
page. There are even .onion addresses!
</p>

<ul class="org-ul">
<li><a href="https://tillitis.se/">https://tillitis.se/</a> (<a href="http://xgpocj7cwkfqg5iz6mluhiuzcreyyxdrdkvlhv7vujdvyjk53vuy6hqd.onion/">http://xgpocj7cwkfqg5iz6mluhiuzcreyyxdrdkvlhv7vujdvyjk53vuy6hqd.onion/</a>)</li>
<li><a href="https://bugbounty.tillitis.se/">https://bugbounty.tillitis.se/</a> (<a href="http://7zmhixiegjvmn6e6fb6tkrognqirpbed7utttzui6l2qlj5bydkfrmqd.onion/">http://7zmhixiegjvmn6e6fb6tkrognqirpbed7utttzui6l2qlj5bydkfrmqd.onion/</a>)</li>
</ul>

<p>
They're both now static pages generated by Hugo, but there are
unfortunately still a lot of JS scripts, even third-party JS. And no,
the links are not yet underlined! <a href="https://webbed-briefs.teemill.com/product/underline-your-links/">Obligatory t-shirt</a>.
</p>

<p>
A PR agency did heroic work to change the stylesheet to the company
theme while we were busy continuing working on Castor. I really am
grateful they were willing to take on a Hugo theme.
</p>

<p>
I'm glad that we can now more easily help update the web pages by just
writing Markdown in a repo. It's a little thing, perhaps, but it
feels&#x2026; comfortable?
</p>

<p>
Work on the TKey continues to be a little crazy, but I'm trying to
deal with that. There's an alpha tag on the actual platform repo for
the next generation, like I wrote <a href="https://hack.org/~mc/blog/tkey-castor-alpha.html">in the last post</a>, but there's still
a lot to do, not least with the FIDO2 app.
</p>
</div>
</div>
<div id="outline-container-org7fb8ac3" class="outline-2">
<h2 id="org7fb8ac3">Isolation</h2>
<div class="outline-text-2" id="text-org7fb8ac3">
<p>
For MH- reasons I have sort of withdrawn a little. I'm no longer
active on many of the chat rooms and forums I used to be active in. I
also took a little break from Fedi. The self-hatred is strong, but
sort of manageable. I have a pin I sometimes wear which says "Walking
disaster". Not wearing it right now. That's something.
</p>

<p>
It's been said of chat rooms that they are "an all day meeting with no
agenda"? I've contributed a lot myself both in my free time and at
work. Dammit. I'm a chatty guy. I'm sorry. It's useful for building
community, though, I'll give it that.
</p>

<p>
You'll have to excuse me for a while.
</p>

<p>
Of course, this means I feel even more lonely than usual. Not sure
what to do, really.
</p>

<p>
I've also been spending time in the cottage which, well, is obviously
more isolated than a flat in the city. Then again, if I don't leave
the flat? Yeah.
</p>
</div>
</div>
<div id="outline-container-orgbc07611" class="outline-2">
<h2 id="orgbc07611">Fedi woes</h2>
<div class="outline-text-2" id="text-orgbc07611">
<p>
A post I made in Fedi went slightly viral. It was just an image of a
t-shirt I like with a print on it saying "What's more punk than the
public library?".
</p>

<p>
You can buy the original t-shirt here and support the Mt. Pleasant
branch of the DC public library (which just happens to be the location
of <a href="https://digdc.dclibrary.org/do/2b8435ca-71ba-4674-b3a4-7da2ed280c5e">a huge punk archive</a>):
</p>

<p>
<a href="https://mtpfriends.bigcartel.com/product/what-s-more-punk-adult-t-shirt">https://mtpfriends.bigcartel.com/product/what-s-more-punk-adult-t-shirt</a>
</p>

<p>
Or here, if you're not in the US:
</p>

<p>
<a href="https://www.redbubble.com/i/t-shirt/what-s-more-punk-than-a-public-library-by-veronikamar/118277789.IJ6L0">https://www.redbubble.com/i/t-shirt/what-s-more-punk-than-a-public-library-by-veronikamar/118277789.IJ6L0</a>
</p>

<p>
&#x2026;but that won't support the library.
</p>

<p>
Here's an interesting article about the campaign:
</p>

<p>
<a href="https://www.washingtonpost.com/dc-md-va/2021/09/04/dc-library-punk-shirt/">https://www.washingtonpost.com/dc-md-va/2021/09/04/dc-library-punk-shirt/</a>
</p>

<p>
I got hundreds of likes and boosts by just posting this photo which, I
guess, is basically a good thing. I also got some really stupid
comments and unwelcome DMs. For posting a photo of a shirt!? I can
only imagine what someone with 10x, 100x or 1000x the exposure gets.
Whoa!
</p>

<p>
Some ways of handling it, besides taking a Fedi break, is to hide
notifications for favourites and boosts and consider hiding
notifications for mentions as well, at least until it blows over. I
also hide boosts and replies in my home timeline, but I did that since
forever.
</p>

<p>
Apparently I didn't remember to change the visibility of my posts when
hackers.town changed to the new Masto instance. It's now changed to
"private" (followers only) and "unlisted". Also set my profile to
require follow requests and changed the autodelete to two weeks.
</p>

<p>
I'm not interested in "maximizing reach". I'm interested in reading
what all you wonderful crazy people are doing, and in reaching the
people who follow me, especially mutuals where some people seem to be
turning into&#x2026; friends?
</p>

<p>
About that&#x2026; Chatted with an old friend recently and he seems to miss
most of my posts, probably because we're not active at the same time.
It's really much too easy to miss posts from the people you follow.
</p>

<p>
I don't think I like the ActivityPub protocol or any of the Mastodon
API clients much. <a href="https://github.com/RasmusLindroth/tut/">tut</a> is OK, <a href="https://codeberg.org/martianh/mastodon.el">mastodon.el</a>, too, but I haven't had the
time to fix the problems I see with it (mainly that it can't filter
boosts, and that is has some problems when you're running it in an
Emacs with no image libraries).
</p>

<p>
My friend also entirely missed both the original Radio Free Fedi
(RIP!) and the current Radio Free Fedi Fest 25, which might be an
indication that we follow completely different people, of course. He
also missed my plugs for it. The current event is here:
</p>

<p>
<a href="https://party.radiofreefedi.net/">https://party.radiofreefedi.net/</a>
</p>

<p>
There's something playing almost every day in July!
</p>

<p>
I would like to have some other kind of "social" "media", perhaps
targeted around subjects instead like, I don't know&#x2026;, Usenet (but
with better spam protection)? Oh, and if we're really doing this
microblogging thing I would like to see <b>every</b> post from the people I
follow, please.
</p>

<p>
Yes, I know about the <code>.rss</code> suffix trick to get an RSS feed from at
least the people who uses Mastodon, a fork, or some other server that
supports that, but it doesn't give full feeds and it breaks down when
people have followers-only on their posts. I guess it would be
possible to generate specific RSS URLs for every follower?
</p>

<p>
I would love a client that shows all unread posts, tracking what I've
already read, shows things in chronological order, and hides threads
unless expanded. But I guess ActivityPub might be a lost cause,
anyway, for many reasons.
</p>

<p>
Here's a <a href="https://github.com/RasmusLindroth/tut/">tut</a> config which gives me three panes: the home timeline,
notifications, and mentions. It has boosts and replies hidden in the
home timeline. Notifications about favourites and boosts are not
shown. This is what I live with right now when not taking a Fedi
pause.
</p>

<div class="org-src-container">
<pre class="src src-toml">[<span style="color: #98fb98;">general</span>]
<span style="color: #eedd82;">notifications-to-hide</span>=[<span style="color: #ffa07a;">"favorite"</span>, <span style="color: #ffa07a;">"boost"</span>, <span style="color: #ffa07a;">"mention"</span>]

[[<span style="color: #98fb98;">general.timelines</span>]]
<span style="color: #eedd82;">name</span>=<span style="color: #ffa07a;">"home"</span>
<span style="color: #eedd82;">type</span>=<span style="color: #ffa07a;">"home"</span>
<span style="color: #eedd82;">hide-boosts</span>=<span style="color: #00ffff;">true</span>
<span style="color: #eedd82;">hide-replies</span>=<span style="color: #00ffff;">true</span>
<span style="color: #eedd82;">keys</span>=[<span style="color: #ffa07a;">"0"</span>]

[[<span style="color: #98fb98;">general.timelines</span>]]
<span style="color: #eedd82;">name</span>=<span style="color: #ffa07a;">"Notifications"</span>
<span style="color: #eedd82;">type</span>=<span style="color: #ffa07a;">"notifications"</span>
<span style="color: #eedd82;">keys</span>=[<span style="color: #ffa07a;">"n"</span>, <span style="color: #ffa07a;">"N"</span>]
<span style="color: #eedd82;">on-creation-closed</span>=<span style="color: #ffa07a;">"new-pane"</span>
<span style="color: #eedd82;">on-focus</span>=<span style="color: #ffa07a;">"focus-self"</span>

[[<span style="color: #98fb98;">general.timelines</span>]]
<span style="color: #eedd82;">name</span>=<span style="color: #ffa07a;">"Mentions"</span>
<span style="color: #eedd82;">type</span>=<span style="color: #ffa07a;">"mentions"</span>
<span style="color: #eedd82;">keys</span>=[<span style="color: #ffa07a;">"1"</span>, <span style="color: #ffa07a;">"1"</span>]
<span style="color: #eedd82;">on-creation-closed</span>=<span style="color: #ffa07a;">"new-pane"</span>
<span style="color: #eedd82;">on-focus</span>=<span style="color: #ffa07a;">"focus-self"</span>
</pre>
</div>
</div>
</div>
<div id="outline-container-orgee413bb" class="outline-2">
<h2 id="orgee413bb">Pride</h2>
<div class="outline-text-2" id="text-orgee413bb">
<p>
As usual, I went to the Malmö Pride parade. I thought it might still
be important to go, even in Sweden. I usually go with #3 but she
didn't want to go this time. She said something like "People!" and
hissed like a cat. I understand. I really do.
</p>

<p>
Naturally, I joined the pink/black bloc at the end of the parade.
Didn't know if they would even be there or do their own parade or
what. Online information was scarce. The only information I found was
about a year old.
</p>

<p>
The pink/black block is made up of mostly libertarian socialists who
want to bring back more politics to Pride. For many years it's been
the largest bloc in the parade in Malmö.
</p>

<p>
A woman, perhaps in her early 40s, waving a bi flag, struck up a
conversation, was very open about her mental health problems and
turned out to be an interesting person to talk to during the parade.
Someone else recognized me as "a hacker from C3". I also waved to some
people I know watching the parade.
</p>

<p>
Besides the usual slogans there was a lot of shouting about Palestine.
There was also lot of hate against the police. The organizers didn't
think this through very well, I think, because the LBTQ uniformed
police was marching just before the pink/blac bloc&#x2026; No, Swedish
police is nothing like US police, but there are still problems,
especially if you're not looking like and behaving like everyone else.
</p>

<p>
The pink/black bloc broke off from the main parade and arrived at its
own destination. There were some talks and spectacles, with a lone
police car in attendance. Wisely, the police stayed in their car.
</p>

<p>
I left feeling sad and very lonely, isolated from "my" political
movements. I have to think about this. Also thinking about what Emma
Goldman wrote:
</p>

<blockquote>
<p>
"What I believe" is a process rather than a finality. Finalities are
for gods and governments, not for the human intellect.
</p>
</blockquote>

<p>
(From <a href="https://theanarchistlibrary.org/library/emma-goldman-what-i-believe">"What I believe"</a> in New York World, July 19, 1908.)
</p>

<p>
I was also sad to note that the local newspaper totally ignored to
report on what was probably the largest bloc in the parade in their
cover of the Pride parade.
</p>

<p>
I was just exhausted afterwards. Like I wrote on Fedi: "I know it's
not even eight pm yet, but I'm going to bed. Too many people today.
Necessary, but very tiring."
</p>
</div>
</div>
<div id="outline-container-org4a2364d" class="outline-2">
<h2 id="org4a2364d">Infra</h2>
<div class="outline-text-2" id="text-org4a2364d">
<p>
Turned off the mailing list manager for hack.org. I can't handle it
anymore, for several reasons.
</p>

<p>
Don't get me wrong. I like mailing lists as a medium. I'm still
subscribed to way more than is really healthy, even though traffic has
been dwindling for many years.
</p>

<p>
The reason is mainly a lack of spoons. The software I've been using is
old and probably insecure and need replacement. I would have to learn
how to handle a new mailing list manager. Then there's all the
rewriting-from-shenanighans going on. I think it's dead, Jim.
</p>

<p>
While most (all?) lists hosted by list.hack.org were closed in some
way, at least only allowing posts by subscribers, there is also the
problem with spam reputation. Big Mail, like Google and Microsoft,
have often opaque reasons for dropping mail into a spam folder.
Sending mail through a mailing list manager from the same IP address
as your regular mail is probably one of them.
</p>

<p>
I'm also trying to remove more and more forwarding aliases, also a
sure way of being reputed to send spam. I'm down to a couple
addresses. Trying to find people and arrange IMAP/POP/SMTP accounts
for them if they are interested in keeping their address.
</p>

<p>
This will probably help the rumour of the IP address of my mail
server.
</p>

<p>
I'm in the process of moving the mail server and it will probably have
a new IP address, at least for a while, so it's kind of important to
get a good spam reputation at once.
</p>

<p>
With both the XMPP server and the mailing list manager turned off I
don't have many services left to move. I'm mostly sad about the XMPP
server, really. Might have to revisit that one later. Meanwhile, I'm
at xmpp:mc@lysator.liu.se, as I've mentioned earlier. See <a href="https://hack.org/~mc/contact.html">Contact
information</a> for OMEMO.
</p>

<p>
Web and Gemini servers have already moved away from the main server.
That was easy, in comparison. In the process I changed the web server
from nginx to <a href="https://github.com/caddyserver/caddy">Caddy</a>. Setting up Caddy was remarkably easy and I turned
on old school tilde expansion for users like I wrote in a previous
post: <a href="https://hack.org/~mc/blog/return-of-tilde.html">The return of the tilde</a>.
</p>
</div>
</div>
<div id="outline-container-org6d6c309" class="outline-2">
<h2 id="org6d6c309">Some recent media</h2>
<div class="outline-text-2" id="text-org6d6c309">
<ul class="org-ul">
<li><p>
Mandra Wabäck &amp; Mattias Kåks (ed): "Vårt 80-tal: Politisk kamp och
punk i Stockholm 1985-1989".
</p>

<p>
Amazing photo book about the punk and activist scene, especially
squatters, in Stockholm in the latter half of the 80s.
</p>

<p>
The book covers the same time I also discovered punk (little
Bergsjö's only(?) punk in -85. Got a mohawk in -87 after mercifully
having moved to the bigger city Hudiksvall.), so it resonated a lot.
</p>

<p>
Their blog with some of the nice photos from the book and the photo
exhibition:
</p>

<p>
<a href="https://vart80tal.wordpress.com/">https://vart80tal.wordpress.com/</a>
</p></li>

<li><p>
Amazing podcast where John Jughead and Aaron Cometbus just&#x2026; talk
for ~2 hours:
</p>

<p>
<a href="https://www.podomatic.com/podcasts/jugheadsbasementtnh/episodes/2025-07-10T06_00_00-07_00">https://www.podomatic.com/podcasts/jugheadsbasementtnh/episodes/2025-07-10T06_00_00-07_00</a>
</p>

<p>
Jughead's site: <a href="https://www.jugheadsbasementpodcast.com/">https://www.jugheadsbasementpodcast.com/</a>
</p></li>

<li><p>
Radio Free Fedi Fest 25
</p>

<p>
Almost every day in July some artists are playing live on an Owncast
server:
</p>

<p>
<a href="https://party.radiofreefedi.net/">https://party.radiofreefedi.net/</a>
</p>

<p>
Looking forward to Hamster's own <a href="https://music.control.org/">Control</a> act on July 31, even if
it's a bad time for me, 22:00 UTC.
</p></li>

<li><p>
Swedish Pirate folk music
</p>

<p>
There are a remarkable number of good Swedish pirate folk bands:
</p>

<ul class="org-ul">
<li>Ye Banished Privateers <a href="https://www.yebanishedprivateers.com/">https://www.yebanishedprivateers.com/</a></li>

<li>Pat Razket <a href="https://patrazket.se/">https://patrazket.se/</a></li>

<li>Stormfrun <a href="https://www.stormfrun.se/">https://www.stormfrun.se/</a></li>
</ul>

<p>
Honourable mention: Canadian folk punk band The Dreadnoughts, here
with a record with mostly sea shanties:
</p>

<p>
<a href="https://thedreadnoughts.bandcamp.com/album/into-the-north">https://thedreadnoughts.bandcamp.com/album/into-the-north</a>
</p>

<p>
Latest record:
</p>

<p>
<a href="https://thedreadnoughts.bandcamp.com/album/green-willow">https://thedreadnoughts.bandcamp.com/album/green-willow</a>
</p>

<p>
which includes a version of Charles O'Neills "The Foggy Dew".
Compare with this version with Sinead O'Connor &amp; The Chieftains!
</p>

<p>
<a href="https://www.youtube.com/watch?v=keWnPZOd2cw">https://www.youtube.com/watch?v=keWnPZOd2cw</a>
</p></li>
</ul>
</div>
</div>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Boomtime, the 56 day of Confusion in the YOLD 3191 (<time datetime="2025-07-21">2025-07-21</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/2025-07-21.html</link>
  <guid>https://hack.org/~mc/blog/2025-07-21.html</guid>
  <pubDate>Mon, 21 Jul 2025 20:42:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[TKey: The Next Generation]]></title>
  <description><![CDATA[<p>
Not speaking for my employer, just as an interested developer in an
interesting open source project.
</p>

<p>
As you might have noticed, <a href="https://github.com/tillitis/tillitis-key1">the platform repo of the Tillitis TKey</a> has
some alpha tags for the next generation, Castor:
</p>

<p>
<a href="https://github.com/tillitis/tillitis-key1/tags">https://github.com/tillitis/tillitis-key1/tags</a>
</p>

<p>
An alpha tag means that all planned features for the platform are in
place, but there's not yet a complete audit and a lot of testing is
still to be done. There might be changes to the implementation on all
levels before a real release.
</p>

<p>
The changes for the new generation, among other things, include:
</p>

<ul class="org-ul">
<li>The small bootloader turned into a very small operating system (now
taking up all of 8 kByte) with syscalls for accessing a very simple
filesystem. The syscalls are done with hardware support for raising
and lowering privilege.</li>

<li>Support for software reset and the ability to chain apps. This
means, for instance, that it's possible to combine the TKey's usual
measured boot with an optional verified boot stage. A second stage
might keep it's key pairs persistent even though the app has been
updated, if the keys are generated from something the first
(measured) stage presents to it.</li>

<li>Support for resident device apps.</li>

<li>The firmware for the USB controller now supports several new USB
device classes including FIDO HID and CCID.</li>
</ul>

<p>
If you want to test this you can do it with the TKey Unlocked and the
TKey Programmer Board. Note that you need to update the USB controller
firmware, too. To do that you'll need <a href="https://shop-nl.blinkinlabs.com/products/ch55x-reset-controller">Blinkinlabs CH55x Reset
Controller</a>.
</p>

<p>
The Castor version of the <a href="https://dev.tillitis.se/">Device Handbook</a> is very much a work in
progress, but it is already published. Remember that the handbook,
like the rest of the project, is also a repo
you can contribute to:
</p>

<p>
<a href="https://github.com/tillitis/dev-tillitis">https://github.com/tillitis/dev-tillitis</a>
</p>

<p>
It's been a little crazy at work to finish this. I've just returned
from two weeks vacation and I'm taking a couple of days off every week
for a while.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Setting Orange, the 49 day of Confusion in the YOLD 3191 (<time datetime="2025-07-14">2025-07-14</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/tkey-castor-alpha.html</link>
  <guid>https://hack.org/~mc/blog/tkey-castor-alpha.html</guid>
  <pubDate>Mon, 14 Jul 2025 15:21:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Satechi X1 Slim]]></title>
  <description><![CDATA[<p>
I bought a <a href="https://satechi.net/products/slim-x1-bluetooth-backlit-keyboard">Satechi X1 Slim</a> for dad's iPad about a year ago. It's a 60%
scissor switch Bluetooth keyboard that you can use wired (USB-C), too
(Fn + Eject). The feel is rather close to the Apple Magic Keyboard.
Yeah, not even mechanical! I know, I know.
</p>

<p>
For reasons dad's not using this keyboard so when I recently visited I
brought it back with me. It's decent enough but in the ISO version
some keys on the right side, close to the return key, are half the
size! I might get the ANSI version instead if I'm going to use it
much.
</p>

<p>
To get it even slightly usable I mapped the "cmd" keys to left and
right "Meta", the left "alt opt" to "Win", the right "alt opt" to
"AltGr".
</p>

<p>
Of course I added my usual shenanigans with AltGr+åäö (shifted ÅÄÖ)
becoming "}{|" ("][\"), just like us old Swedish hackers like it.
Think about 7 bit terminals and the Swedish version of ASCII (aka
SWASCII) and you get it: you pressed a key marked "å" on the keyboard
and your screen hopefully showed "}" if the terminal was set to
showing standard ASCII.
</p>

<p>
Some other small changes: shifted "4" is "$" like Goddess intended and
the "`" and "@" are where they would have been on an old Facit
terminal or a Luxor ABC or, well, even a Swedish standard keyboard in
the 1980's. Also, "~", shifted as "^" are no longer dead keys, except
if you use AltGr, which is also inspired by old Swedish keyboards and,
yes, the only reasonable way if you're a programmer and Unix user.
</p>

<p>
If you want the regular function keys on this keyboard, press Fn+Esc.
</p>

<p>
Here's a Swedish XKB à la MC for your <code>.xkb/symbols/satechi</code> file:
</p>

<div class="org-src-container">
<pre class="src src-xkb">// MC's Swedish keymap for use with Satechi X1 Slim ISO
default partial alphanumeric_keys modifier_keys
xkb_symbols "se" {
    include "latin(type2)"
    include "se(se)"

    //key &lt;TLDE&gt; { [ Escape ] }; 
    key &lt;TLDE&gt; { [ less, greater ] }; // Chose between this and the above depending on ISO/ANSI
    key &lt;AE04&gt; { [ 4, dollar ] };
    key &lt;AD11&gt; { [ aring, Aring, braceright, bracketright ] };
    key &lt;AD12&gt; { [ asciitilde, asciicircum, dead_diaeresis, dead_circumflex] };
    key &lt;AC10&gt; { [ odiaeresis, Odiaeresis, bar, backslash ] };
    key &lt;AC11&gt; { [ adiaeresis, Adiaeresis, braceleft, bracketleft ] };

    key &lt;AE12&gt; { [ grave, at, dead_acute, dead_grave ] };

    key &lt;LWIN&gt; { [ Meta_L ] };
    key &lt;LALT&gt; { [ Hyper_L ] };

    key &lt;RWIN&gt; { [ Meta_L ] };
    key &lt;RALT&gt; { [ ISO_Level3_Shift ] };

    replace key &lt;CAPS&gt;	{  [ Control_L, Control_L ] };
    modifier_map  Control { &lt;CAPS&gt;, &lt;LCTL&gt; };

    modifier_map Mod1 { Meta_L, Meta_R };
    modifier_map Mod4 { Hyper_L };
    modifier_map Mod5 { ISO_Level3_Shift };
};
</pre>
</div>

<p>
This is the most minimal version I could come up with and not as
complete as my HHKB keymap, so most AltGr things are still where they
are by default. Maybe I'll revisit it and complete it.
</p>

<p>
Read more about <a href="https://hack.org/~mc/writings/xkb.html">mapping your keyboard with XKB in X11 and Waylanpd</a>.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Prickle-Prickle, the 61 day of Discord in the YOLD 3191 (<time datetime="2025-05-14">2025-05-14</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/satechi-x1.html</link>
  <guid>https://hack.org/~mc/blog/satechi-x1.html</guid>
  <pubDate>Wed, 14 May 2025 08:05:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[VPS troubles and the weekend]]></title>
  <description><![CDATA[<p>
This weekend I went to the cottage with P on Friday. I hoped I would
have a nice weekend reading in front of the wood stove, but I had also
planned to spend at least a few hours trying to configure <a href="https://maddy.email">Maddy</a> as the
new mail server for hack.org et al.
</p>

<p>
Then the web server I moved to the new VPS died. Again. I connected to
the VNC console and, like before, the Linux kernel couldn't find its
root disk. A simple:
</p>

<pre class="example" id="org65f521c">
# mount /dev/vda2 /sysroot; exit
</pre>

<p>
in the emergency shell solved things, but, damn, do I need to do this
every time!?
</p>

<p>
Yes, I realize that I chose to use the VPS provider's Alpine Linux
image. I also realize that it was a kind of a warning that they
replied that they don't know anything about Alpine when I was first
opened a support ticket about this. Not sure why they even say they
support Alpine. My guess is that Debian or something would have been a
better choice, but I like Alpine and I was glad that they offered it.
</p>

<p>
Then, after reboot, the VPS simply lost its IPv6 address. Instead of
getting a sensible 2a13:7c81:132::2/64 it got no less than two
addresses with a /36 prefix. WTF? And, naturally, even though there
was a v6 default route, it couldn't reach anything beyond the router.
</p>

<p>
So&#x2026; I looked around for other VPS services.
</p>

<p>
I thought of the German service Hetzner. Created an account. Was going
to start a VPS. Then they flagged my account as suspicious. Don't know
why. Didn't even access the service over VPN or Tor or anything like
that. They asked for a photo of my passport and a live webcam! What!?
No. No way.
</p>

<p>
Then I thought about the nice service I get at OpenBSD.amsterdam. Very
happy with the simple VPS I have there for a DNS server. OK, perhaps
that box can also be my web server?
</p>

<p>
I log in. Damn. I need to upgrade this thing. <code>sysupgrade</code>. And&#x2026;
File system full. Daaaaaaamn! That was&#x2026; fun.
</p>

<p>
I eventually managed to spend a few ours experimenting with Maddy and
Dovecot, but most of the time I spent with things I'd rather hoped
would just work.
</p>

<p>
Now I need a weekend.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Sweetmorn, the 58 day of Discord in the YOLD 3191 (<time datetime="2025-05-11">2025-05-11</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/vps.html</link>
  <guid>https://hack.org/~mc/blog/vps.html</guid>
  <pubDate>Sun, 11 May 2025 23:39:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[foss-north 2025]]></title>
  <description><![CDATA[<p>
I attended <a href="https://foss-north.se/">foss-north</a>, a free / open source conference covering both
software and hardware from the technical perspective, at Chalmers
Conference Center in Gothenburg on April 14 &amp; 15. A great conference.
Lots of interesting talks:
</p>

<p>
<a href="https://foss-north.se/2025/speakers-and-talks.html">https://foss-north.se/2025/speakers-and-talks.html</a>
</p>

<p>
My own presentation was "Forking QEMU to emulate and secure the
Tillitis TKey". Recording is here:
</p>

<p>
<a href="https://www.youtube.com/watch?v=TCsP5ti4-9o">https://www.youtube.com/watch?v=TCsP5ti4-9o</a>
</p>

<p>
I expected that my shared screen would be presented in an overlay in
the recording, but unfortunately it's not. If you want to follow along
a PDF is here:
</p>

<p>
<a href="https://foss-north.se/2025/slides/mwiderkrantz-qemu-slides.pdf">https://foss-north.se/2025/slides/mwiderkrantz-qemu-slides.pdf</a>
</p>

<p>
It's generated from the orginal Org Mode file because, of course, I
was presenting with Emacs.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Sweetmorn, the 53 day of Discord in the YOLD 3191 (<time datetime="2025-05-06">2025-05-06</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/foss-north-2025.html</link>
  <guid>https://hack.org/~mc/blog/foss-north-2025.html</guid>
  <pubDate>Tue, 06 May 2025 09:27:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Computers in school (updated)]]></title>
  <description><![CDATA[<div id="outline-container-org70a9834" class="outline-2">
<h2 id="org70a9834">Introduction</h2>
<div class="outline-text-2" id="text-org70a9834">
<p>
A much shorter version of this post was initially published on
2022-05-23 (Pungenday, the 70 day of Discord in the YOLD 3188) in my
gemlog at:
</p>

<p>
gemini://gem.hack.org/log/computers-in-school.gmi
</p>

<p>
The text has been edited after speaking with some old school mates and
trying to remember more. I also added a few photos.
</p>
</div>
</div>
<div id="outline-container-org685a7bd" class="outline-2">
<h2 id="org685a7bd">The beginning</h2>
<div class="outline-text-2" id="text-org685a7bd">
<p>
When I started upper secondary school as a sixteen year-old in 1988 my
school had what I think were IBM PC/XT computers, one classroom of
16(?) computers with colour monitors and another classroom set with
monochrome monitors.
</p>


<figure id="org8fb2d70">
<img src="static/images/IBM_PC_XT_color.jpg" alt="Old, grey, boxy computer seen from an angle on a desk. It has a screen on top of the computer with huge &quot;IBM&quot; in green. A red lamp is glowing.">

<figcaption><span class="figure-number">Figure 1: </span>IBM PC XT, CC-BY 3.0 Ruben de Rijcke - <a href="http://dendmedia.com/vintage/">http://dendmedia.com/vintage/</a></figcaption>
</figure>

<p>
The school also had a side-room full of quite beautiful Commodore
PET-like things. They might have been CBM 710 or CBM 720, the only
PET-compatible series that had a real serial port (foreshadowing here)
or, perhaps, real old PETs in a fancy shell, the European-only 8096-D
or 8296-D. Computers in this room, AFAIU, were only used for typing
practise.
</p>


<figure id="org974bf50">
<img src="static/images/cbm710_ta.jpg" alt="Porsche 911-like computer shell and monitor with a detached, but very high keyboard in front. The screen is showing some green characters saying that a version of BASIC is ready.">

<figcaption><span class="figure-number">Figure 2: </span>CBM 710 Taubuem CC BY-SA 3.0.</figcaption>
</figure>

<p>
Taken from <a href="https://en.wikipedia.org/wiki/File:Cbm710_ta.jpg">Wikipedia</a>.
</p>

<p>
Also, look at the 8096 here:
<a href="https://www.flickr.com/photos/162268510@N04/albums/72157705034210124">https://www.flickr.com/photos/162268510@N04/albums/72157705034210124</a>
</p>

<p>
Depending if they really were CBM 7x0s or disguised PETs they had
either a MOS 6509 @ 2 MHz (a version of 6502 which could handle some
extra memory) or 6502 @ 1 MHz, 128 or 256 kiB RAM (96-160 kiB for the
PET), a green monochrome monitor and, thankfully, 80 column text.
Fanless! Nice!
</p>

<p>
The PC/XTs (or if they were clones?) were Intel 8088 based. I don't
remember how much memory they had. Max was 640 kiB but I doubt they
had that much. Probably 256 kiB. The monochrome classroom had amber
monochrome screens and, I think, Hercules graphics. I remember some
experiments with the graphics. The colour classroom had at most CGA.
</p>

<p>
They also had hard drives, probably something like 20 MiB, and a
floppy drive. They had a noisy fan.
</p>

<p>
There was also a small room with a character terminal hooked into an
RTTY decoder and a radio. I don't know why this was here and we
usually didn't have access to it.
</p>

<p>
For some inexplicable reason there was also a small room filled with
original breadbox Commodore 64! It was almost always empty. No one
used them, not even for playing games.
</p>

<p>
The PCs had Turbo Pascal 3.0 which was a really nice, incredibly fast
compiler, even on the slow 8088s. The PETs had some form of BASIC in
ROM but I don't know if they had any other development tools.
</p>

<p>
The PCs were not networked but they had some kind of printer sharing
going on. There were two matrix printers attached.
</p>
</div>
</div>
<div id="outline-container-org772dbe3" class="outline-2">
<h2 id="org772dbe3">Summer surprise!</h2>
<div class="outline-text-2" id="text-org772dbe3">
<p>
I came back to school in August, 1989. Coming back after the summer
holidays after my first year I was surprised that the school had
decided to buy 16 brand new IBM PS/2 computers! They had totally
replaced the colour classroom, probably trading the computers there,
somehow. I hope they got a good deal! The monochrome classroom and the
64s were left alone. I don't know what happened to the CBMs.
</p>


<figure id="org903c0ec">
<img src="static/images/ibmps250.jpg" alt="A boxy grey computer sitting at an angle on a desk with a screen on top, a full-size keyboard in front, a mouse on the side. There's also a desk telephone, a copy of the Wall Street Journal, some books, glasses and a pen.">

<figcaption><span class="figure-number">Figure 3: </span>IBM PS/2 Model 50, probably from some IBM brochure, used here for journalistic purposes. Note that we didn't have any Window system.</figcaption>
</figure>

<p>
The PS/2s were probably model 30 286 (ISA bus like the rest of the PC
market) or model 50 (with MCA, IBM's proprietary new extension bus).
The original Model 30 had just a 8086, so that would have been
<i>really</i> stupid to buy. I'm pretty sure we had the Model 50 or at
least the Model 30 286, since they had both 286 and VGA.
</p>

<p>
They had an Intel 80286 @ 10 MHz, 1 MiB RAM, 20 MiB hard drive,
640x480 (VGA) colour screens, 16 colours. Their one saving grace was
the wonderful Model M incredibly clicky buckling spring keyboard.
</p>

<p>
The introduction price of the PS/2 Model 50 was $3,595 in the US. This
was probably much more in Sweden, especially since there was also a
~23% sales tax.
</p>

<p>
The school also chose to connect the PS/2s in a 3Com 3+Share network.
Can't remember if it was Ethernet or Token Ring. The 3+Share network
had a central fileserver, probably the 3Com 3Server, although it might
have been just software on yet another PS/2. I never saw it in person.
</p>

<p>
The 3+ e-mail solution was not used, only the file server and the
printer server services.
</p>

<p>
I think I heard that all of these things had costed about 1.5 million
SEK, which would be about ~3.1 million SEK (~300 k EUR) today.
</p>
</div>
</div>
<div id="outline-container-orgc0a8a98" class="outline-2">
<h2 id="orgc0a8a98">Furious mischief</h2>
<div class="outline-text-2" id="text-orgc0a8a98">
<p>
I was furious. So much money wasted. I had a *nix box at home, a Luxor
ABC 1600, which gave me a wonderful taste of multi-tasking and
multi-user stuff, although it was a bit slow. It stupidly only had a
68008 and just 1 MiB RAM, but much worse was the small hard drive, 13
MiB!
</p>


<figure id="orgc935fdd">
<img src="static/images/ABC_1600_Personal_computer.jpg" alt="Museum setting, very white background: Brown, very high computer, with a large screen on a stand on top of it. In front a complicated keyboard, beside it an extra set of disk drives.">

<figcaption><span class="figure-number">Figure 4: </span>Luxor ABC 1600, CC-BY 4.0 Ellinor Algin.</figcaption>
</figure>

<p>
From <a href="https://en.wikipedia.org/wiki/File:ABC_1600_Personal_computer.jpg">Wikipedia</a>.
</p>

<p>
This was also the time I had started dialling into terminal servers of
the Swedish university network (SUNET) and experiencing Real
Computers.
</p>

<p>
SUNET in those days was a friendly place. On many computers when you
first connected to them it said "Welcome to XXX! If you don't have an
account, login as GUEST." or something very similar. SUNET in -88 was
mostly DECNET but had recently also gained TCP/IP.
</p>

<p>
I was mostly on the DECNET side of things, so I experienced VAXen, a
few PDP-11, and when I could get access, the wonderful DEC-20 (PDP-10
with TOPS-20).
</p>

<p>
Another nice thing at the time was that if you called the minicomputer
companies and asked for hardware descriptions some of them would
actually send you entire hardware manuals, even if you were a spotty
teenager with no computer budget. Thank you, DEC!
</p>

<p>
I got so mad about the whole thing with the PS/2s that I actually
wrote a little program just to mess with them&#x2026; It was a simple
thing. I just modified AUTOEXEC.BAT to start my program the first
thing it did. The computer would display "WELCOME TO YOUR NIGHTMARE!"
in huge letters in garish colours and starting going "weeee, wooo"
with the bad speaker. At the same time it would start ejecting page
after page on the network printer.
</p>

<p>
I heard that once during a class the teacher in panic turned off the
printer and then turned in triumph towards the class, only to have the
other printer start spewing papers instead. Everyone laughed.
</p>

<p>
I don't know who ratted on me, but one day the guy in charge of the
computers (Hi, Tore!) stood waiting on me as I was about to enter a
classroom. He asked the teacher if he "could borrow Michael for a bit"
and dragged me away to his small office. When we sat down he said:
</p>

<p>
– I know you're the brain behind these Nightmare Gangsters!
</p>

<p>
Wow, there's a good name for a band! I denied everything, of course,
but he saw through me and started asking technical questions about
computers instead. There were no gangsters, of course. It was just me.
</p>

<p>
Later, Tore had the genius idea to ask me to write a program for the
school library. He wanted it to be possible to dial in to the city
library computer to search for books. He wanted a simple terminal
program that automatically dialled, logged in and let the student do
their thing and then automatically disconnect on inactivity. Would I
be up for writing something like that? Hell, yes!
</p>

<p>
I wrote the program and it was in use many years after I had left. The
genius of Tore was to steer me towards a more creative path than
messing up his network. I didn't understand it at the time, but this
was a brilliant move.
</p>

<p>
Me and some friends did some experiments with the network anyway. The
authentication in a 3+Share network was entirely client-side! Changing
a single byte in the client made you admin. We created a new
read/write file share called FREE and used it for our own shenanigans.
Tore must(?) have seen it but didn't delete it!
</p>

<p>
The one time Tore said anything remotely about the FREE volume was
when I was trying out a multi-user adventure I had written and used
the network drive as the IPC mechanism. Every copy of the MUD I
started absolutely hammered the FREE volume with reads in a busy loop
and everytime any of my friends in front of the computers running the
MUD did anything (move, pick something up, say something in a room,
anything that changed the world) it wrote it to the database which was
immediately picked up by the others. It must have sounded terrible in
the room where the file server stood, which was also Tore's office.
</p>

<p>
Tore came running out of his office, scanned the room for the culprit,
locked eyes with me and stormed towards me.
</p>

<p>
– Michael! Are you doing something on the network!?<br>
– Er&#x2026; Well, I have written this text adventure program&#x2026; Would you
  like to have a look?<br>
– No! No matter.<br>
</p>

<p>
And he rushed off again. I hurriedly gestured to everyone to kill the
MUD programs. He never mentioned it again.
</p>
</div>
</div>
<div id="outline-container-org914e4a3" class="outline-2">
<h2 id="org914e4a3">What to do instead?</h2>
<div class="outline-text-2" id="text-org914e4a3">
<p>
The main reason for choosing PCs was AutoCAD. I can understand that,
but AutoCAD was only used by the students on the Technology programme,
AFAIK. I was in the Science programme and we never used it, at least
not during class. Most of us would have been fine with just terminals
for what we did in the computer classrooms.
</p>

<p>
But if they just <i>had</i> to buy PCs, why not buy much cheaper PC
compatibles? I never got a satisfying answer. "No one has ever been
fired for buying IBM"?
</p>

<p>
So&#x2026; What would I have done if I had anything to do with it? Some
rough requirements:
</p>

<ul class="org-ul">
<li>Able to do CAD, probably AutoCAD.</li>
<li>Fileserver.</li>
<li>At least 16 seats, preferably with fanless equipment.</li>
<li>At least two networked laser printers.</li>
</ul>
</div>
<div id="outline-container-org29f90e5" class="outline-3">
<h3 id="org29f90e5">Server</h3>
<div class="outline-text-3" id="text-org29f90e5">
<p>
OK, so we buy 16 PCs of some sort and we need a fileserver. Something
much nicer than the 3Com 3Server thing. I would go for a mini,
something people could log into and do their stuff if they wanted to,
and not just a fileserver.
</p>
</div>
<div id="outline-container-org6458c02" class="outline-4">
<h4 id="org6458c02">DEC VAX with Ultrix or VMS</h4>
<div class="outline-text-4" id="text-org6458c02">
<p>
DEC at the time had a product called Pathworks (earlier known as PCSA
which it was still called under VMS). Pathworks allowed you to use a
VAX as a file and printer server for a bunch of MS-DOS PCs. Pathworks
was both some MS-DOS software and VMS or Ultrix software on the server
side.
</p>

<p>
The client software actually made the PC a full member of a DECnet, so
it was quite something. With no other software it would mean
connections to any other VAX added later would have been dead easy.
</p>

<p>
I'm biased towards Ultrix, of course, but VMS would have also been
acceptable. Even better would have been a BSD, of course, and BSD was
actually available even for upper secondary schools/highschools, not
just universities. However, considering that we would like to use
something to net boot our PCs and act as a fileserver it's likely
DEC's own offering was the way to go.
</p>

<p>
What hardware? One of the MicroVAX II followers, like the MicroVAX
3500, perhaps?
</p>

<p>
The 3500 was introduced at for a whopping 74,800 USD in 1987 with 16
MiB RAM, the 3600 with 32 MiB 99,980 USD. Hopefully they were all a
bit lower in 1989! There were also considerable educational discounts,
so perhaps the real price would have been much lower.
</p>

<p>
Also, I found notes that the really powerful VAX 6000 was &gt;140 kUSD
with 32 MiB RAM and a tape drive in 1990. That would have been
marvellous, although expensive!
</p>

<p>
I guess even a 3300 (~25 kUSD), expected to peak at 5 simultaneous
users, would have been nice, if most of the users kept to using the
CPU of their PCs.
</p>

<p>
As much memory and disk as the budget would allow. A tape drive for
backups. Could we afford a 1.2 GiB drive? Two RA81 (456 MiB each)? Buy
more drives later?
</p>
</div>
</div>
<div id="outline-container-org0375a50" class="outline-4">
<h4 id="org0375a50">Diab DS90 with D-NIX</h4>
<div class="outline-text-4" id="text-org0375a50">
<p>
Another solution would be to go local and use Diab Data's *nix
machines. 68k-based, multi-processor machines. They had their own
flavour of Unix called D-NIX, later DNIX. It was roughly System
V-compatible, but using their own realtime kernel which also had the
concept of "handlers" for things like user level filesystems and
network stacks.
</p>

<p>
I had a Diab DS90-20 at home for a while and managed several DS90-3x
(several 68030) and a DS90-47 (8 * 68040, lots of memory, one my
favourite machines) at work. This was at Bull, the company that bought
Diab, and well after the Diab DS90s stopped being sold.
</p>

<p>
A very funny thing about the DS90s is that the Ethernet card, at least
the KOM-KIT II I have some experience with, had a 68020 of its own and
several megabytes of memory! The telnet daemon actually lived on the
NIC! It DMAd stuff when it needed to, and let the main CPU do other
stuff.
</p>

<p>
Not at all sure about PC integration, though. Was there something even
close to DEC's Pathworks? Most of Diab's own communication from the
80s was mostly about integrating with Luxor ABC 80xs and ABC 1600, not
PCs with MS-DOS. Ducking around I find some mentions about PC
integration, but have yet to find even a product name. Anyone?
</p>

<p>
Perhaps FTP Software's PC/TCP would have worked? Did they already have
NFS support in -89?
</p>

<p>
Rough prices:
</p>

<ul class="org-ul">
<li>DS90-30/600S (one or two 68030 + 68881 fp, 600 MiB hard drive, not
sure if tape drive is included, "S" might mean it is): 306 kSEK</li>
<li>-31 (Up to four 68030) 370 kSEK.</li>
<li>Expansion to 16 MiB RAM: 103 kSEK.</li>
<li>Built-in tape drive: 32 kSEK.</li>
<li>NIC: Unknown.</li>
<li>Total: &gt; 500 kSEK.</li>
</ul>

<p>
<a href="https://www.df.lth.se/~triad/diab/archive/DS90%20Serie%2090%20Generellt/935%20DS90%20-%20The%20Computer%20Family%201989-2.pdf">An overview brouchure.</a>
</p>

<p>
<a href="https://www.df.lth.se/~triad/diab/archive/1990-02-01%20Prislista.pdf">A 1990 pricelist.</a>
</p>
</div>
</div>
<div id="outline-container-orga2d5b47" class="outline-4">
<h4 id="orga2d5b47">Others</h4>
<div class="outline-text-4" id="text-orga2d5b47">
<p>
I know some other secondary schools had Norsk Data minis. Don't know
much about them. Prime might have been interesting, too, but again I
don't know much.
</p>

<p>
An interesting idea is, of course, to use one of the commercial Unices
for 386 and keep a very beefed up 386 as the file server. That needs
further investigation.
</p>
</div>
</div>
</div>
<div id="outline-container-org484d7ef" class="outline-3">
<h3 id="org484d7ef">PCs</h3>
<div class="outline-text-3" id="text-org484d7ef">
<ul class="org-ul">
<li>16 diskless 286-class PCs with the Pathworks boot ROM (or similar
for Diab?) on the network card.</li>
<li>Refurbished: The old PC/XT boxen with ripped out hard disks and
network cards with boot ROM. Not sure if this would be worth it
but, hey, this would be another 16 seats for free. Might be useful
even if they probably wouldn't be able to do CAD. On the other
hand&#x2026; The fan! Aaaah! Perhaps better replaced by terminals?</li>
<li>Ethernet NICs for all boxes.</li>
</ul>

<p>
DEC themselves introduced a 286-based diskless and fanless VAXmate in
1985 and later followed up with DECstation 200 and 300 (with fan).
There were other diskless and sometimes even fanless options from
other companies, including the 3Com 3Station 2/E for use with the
3Share we actually had at my school.
</p>

<p>
I would have been happy with whatever PC compatible that wasn't IBM,
actually, but fanless would have been nice. I had a Commodore PC-20 at
home with a 286 and that would probably have sufficed.
</p>

<p>
There were some quite good terminal programs available for MS-DOS,
including Reflection which could both work over LAT and emulate
graphics terminals like DEC VT340 and the older Tektronix 4014. Kermit
could emulate VT320 and could translate between character sets. Might
be preferable compared to the Pathworks terminal, perhaps?
</p>


<figure id="org9fda955">
<img src="static/images/vaxmate-1.jpg" alt="Grey computer with screen built in. A full-size keyboard in front and a round mouse on the side. The screen is showing green characters on a black background. Some file navigation?">

<figcaption><span class="figure-number">Figure 5: </span>Photo of DEC VAXmate, taken from the site below.</figcaption>
</figure>

<p>
<a href="https://avitech.com.au/?page_id=1552">More nice photos of the VAXmate</a>.
</p>
</div>
</div>
<div id="outline-container-org7220515" class="outline-3">
<h3 id="org7220515">Terminals</h3>
<div class="outline-text-3" id="text-org7220515">
<p>
Like I said, only the students on the Technology programme actually
had any requirements for PCs with their use of AutoCAD. All the other
students' needs at the time could by served by using just terminals.
</p>

<p>
In time, I suppose, only character terminals wouldn't suffice anymore,
but during my entire time at the school they would have worked just
fine for what we were doing. Over time, say 5 years, they might also
be replaced with PCs.
</p>

<ul class="org-ul">
<li>At least 16 terminals, probably replacing the PC/XTs, since there
was an entire classroom available. Perhaps more (dedicated for
staff?) in the C64 room?</li>
<li>Terminal server(s). With only 16 (32?) seats we would like more
people to be able to work on the server, probably with terminals
over LAT or telnet instead of serial cables, especially if far away
from the server.</li>
</ul>

<p>
DEC's own VT320 terminals were quite cheap, actually! Lowered to 495
USD soon after introduction in 1987, but maybe 100 USD more for an
international version.
</p>

<p>
VT320 terminals had support for the Latin-1 (ISO 8859-1) character
set. Kind of important for Swedes to be able to use Swedish even if
many systems still used SWASCII (ISO-646-SE), replacing {}|][\ with
national characters, but Latin-1 would have been nice.
</p>

<p>
I don't know if the Pathworks terminal client supported Latin-1. We
would probably have some kind of converter program to convert between
PC/Latin-1 (and PETSCII?) available anyway.
</p>

<p>
Cheap terminals might also mean we could have a special terminal room
for employees. I don't think it would be possible to give every
employee a terminal, unfortunately.
</p>

<p>
Silent terminals would have been preferable compared to re-use the
noisy PC/XTs for extra seats but could obviously not run CAD nor any
other local software.
</p>


<figure id="org1c6d345">
<img src="static/images/DEC-VT320-0a.jpg" alt="A terminal built-in to a yellowish white screen standing on a desk. Full-size keyboard in front.">

<figcaption><span class="figure-number">Figure 6: </span>DEC VT320 terminal, sadly without the stand, CC-SA by Adamantios, <a href="https://commons.wikimedia.org/wiki/User:Adamantios">https://commons.wikimedia.org/wiki/User:Adamantios</a></figcaption>
</figure>

<p>
Perhaps with the LK421 "Unix" keyboard?
</p>


<figure id="orgb6c864e">
<img src="static/images/lk421.jpg" alt="Tenkeyless keyboard but with arrow keys on the top right!">

<figcaption><span class="figure-number">Figure 7: </span>DEC LK421 "Unix" keyboard</figcaption>
</figure>

<p>
Taken from <a href="https://deskthority.net/viewtopic.php?t=17981">https://deskthority.net/viewtopic.php?t=17981</a>
</p>

<p>
Both keyboards were rubber domes, sadly, but rather firm.
</p>

<p>
Local terminal manufacturer Facit had some nice products, too, which
might have been preferable. Chief among them were the slightly strange
Facit Twist (aka Facit 4440) which could show 72 rows at once in one
screen position. You could turn the screen 90 degrees for 72 rows or
huge characters in 24 row mode.
</p>


<figure id="org974a467">
<img src="static/images/twist002.jpg" alt="Funny white/beige terminal with the screen in upright position, much higher than wide, with the screen on a stand behind it formed like an L.">

<figcaption><span class="figure-number">Figure 8: </span>Facit Twist with the screen vertical, 72 rows. Excellent for programming!</figcaption>
</figure>


<figure id="org39f9b44">
<img src="static/images/twist001.jpg" alt="Same terminal as above, now with screen rotated to be wider than tall.">

<figcaption><span class="figure-number">Figure 9: </span>Facit Twist with the screen horizontal, 24 rows.</figcaption>
</figure>

<p>
Both images by <a href="https://oldcomputer.info/gallery.php?spgmGal=Museum/Terminals/Facit_4440&amp;spgmPic=0">MCbx, CC BY-NC-SA</a>.
</p>

<p>
The only Twists I've used had black and white screens but there were
amber screens, too. I'm told they were much nicer to read on.
</p>

<p>
The keyboard was very low-profile. The keys switch perhaps even
scissor switch?
</p>

<p>
They also were just VT102 compatible and didn't have Latin-1, but
usually had SWASCII support. If you were lucky you got both ASCII and
SWASCII in G0 and G1 and could switch among them. I had some Emacs
Lisp to do that when showing Latin-1 coded files&#x2026;
</p>


<figure id="org4019ce0">
<img src="static/images/twist-horizontal.jpg" alt="Large beige horisontal stand with a swivel monitor fastened to it standing on a messy desk, a keyboard in front. Some bottles, a tea mug and many papers around it. A lamp to the right in the window.">

<figcaption><span class="figure-number">Figure 10: </span>Fuzzy image of my own Twist in my living room, probably in 1993.</figcaption>
</figure>

<p>
<a href="https://ifdesign.com/de/winner-ranking/project/bildschirm-terminal-twist/13409">It won the iF Design Award in 1984!</a> Probably introduced in -84? It was
certainly for sale as late as 1987.
</p>

<p>
<a href="https://archive.org/details/bitsavers_facittwistdescription1985_22474317/mode/2up">Bitsaver's copy of the Facit Twist Technical Description with some images</a>.
</p>

<p>
A Facit Twist would have been double the price of a VT320, though.
Price in 1986 was 15 kSEK. Probably less in 1988/89. At any rate they
would have been much nicer than the VT320, I think.
</p>

<p>
On the other hand, perhaps we could re-use the PETs? They had vanilla
serial ports, after all, if it was really the CBM 7x0, otherwise we
would have had to do something with the extension port. I don't know
if this would be a good idea and what terminal programs existed. Worst
case we would have had to write our own. That would probably have
worked.
</p>

<p>
On the extreme side, the programmable AT&amp;T 630 MTG terminals
(successor of the Bell Labs Blit and the AT&amp;T 5620) introduced in 1987
would have been absolutely marvellous:
</p>


<figure id="org1273a36">
<img src="static/images/att630.jpg" alt="On the cover: A beige stand with a large 17&quot;(?) screen on top of it, a keyboard in front, a red(!), round(!) mouse on the side. The screen is showing several windows.">

<figcaption><span class="figure-number">Figure 11: </span>Photo of an AT&amp;T 630 MTG terminal book cover</figcaption>
</figure>

<p>
You could download programs over the serial cable on them and run
locally on their 68 k CPU. You could also use up to seven ordinary
terminal windows. They also sold for much less than the PS/2s above,
at about 2500 USD. I don't think any commercial CAD was available but,
damn, that would have been nice to use.
</p>

<p>
Of course, you're going to say, X terminals would have been a nice
option. Yes, agreed, but compared to a Blit-like thing like the 630 an
X terminal like the very similar NCD 16 (1988) would a lot of the
effort on the server. I don't think it would have worked.
</p>

<p>
A fun idea would have been to experiment with the very cheap Atari ST
Mega.
</p>


<figure id="org1a6937e">
<img src="static/images/megast.jpg" alt="Grey computer and equally large hard disk on top of each other, a monitor on top of both, showing some monochrome overlapping windows. A mouse on the side and a keyboard in front.">

<figcaption><span class="figure-number">Figure 12: </span>Atari Mega ST on top of hard disk. Probably from sales brochure.</figcaption>
</figure>

<p>
The Mega ST was probably about the same price as a Facit Twist
terminal, at least as the price was in 1986. Programs like UW made it
possible to use it as a graphical windowed terminal, with some
multiplex help on the *nix side. Even <a href="https://hack.org/~mc/mgr/">MGR</a> was ported to MiNT! But MiNT
was first launched in 1993, of course.
</p>


<figure id="org57ecdc2">
<img src="static/images/uw-screen.png" alt="B&amp;W screenshot showing two overlapping windows, and a menu bar at the top of the screen. In one window I have typed &quot;test&quot;.">

<figcaption><span class="figure-number">Figure 13: </span>Screenshot from when I was trying out UW with Hatari.</figcaption>
</figure>

<p>
It would have been very fun to extend UW to do other things and even
nicer if one could have done some experiments in writing something
that could download and start new programs on the ST side or even
experiment with some tiny operating system bringup! But&#x2026; OK&#x2026; Let's
be realistic.
</p>
</div>
</div>
<div id="outline-container-org454280a" class="outline-3">
<h3 id="org454280a">Communications</h3>
<div class="outline-text-3" id="text-org454280a">
<ul class="org-ul">
<li>Modems: Perhaps we could afford a few (3-5) and a single number for
them for remote access.</li>
<li>UUCP? A nearby university could perhaps offer dial-up UUCP access,
probably for free, which would have meant&#x2026; Internet e-mail! In
1989! This would have been huge.</li>
<li>BBS? A KOM? I'm certain the local students would have developed a
BBS rather quickly. Perhaps integrating it with the above.</li>
</ul>
</div>
</div>
<div id="outline-container-orge47faca" class="outline-3">
<h3 id="orge47faca">Software</h3>
<div class="outline-text-3" id="text-orge47faca">
<ul class="org-ul">
<li>AutoCAD for technical drawings, obviously.</li>
<li>Development tools, like a C compiler et cetera, and change the
curriculum from Pascal to C, probably.</li>
<li>Probably just text editors for writing + ditroff (pic! eqn!) for
typesetting. Perhaps create our own macro set? Quite a step up,
typographically speaking, from what we really had.</li>
<li>Local text editor on the PC? With the home directory network
mounted, perhaps editing locally spares the CPU of the server quite
a lot. Epsilon was a quite reasonable Emacs clone on MS-DOS, for
instance.</li>
<li>Develop some kind of preview program for troff usable on the PCs!
If you're sitting at one of the VGA PC's you coud preview your
document <i>graphically</i> before printing, with all the pic
illustrations and eqn equations, too. Someone on a terminal would
have to keep to using nroff, I guess.</li>
<li>elm or something like that as a friendly mail client, at least for
local mail? Or just use the BBS, which I'm sure would have been
there very soon.</li>
</ul>

<p>
As far as I know the only class which had actual programming in the
classrooms where from the Science programme. There might have been
something for Technology, too, and possibly the el-tele people but
they were, as I said earlier, in another building.
</p>

<p>
A lot more students did programming, though, but not necessarily as
part of class.
</p>

<p>
During my entire time at the school Turbo Pascal 3 wasn't updated,
even though I had Turbo Pascal 4 at home on one of my computers and TP
5 was announced while I was still there. Shifting to C under Unix
wouldn't have changed much in the programming classes.
</p>
</div>
</div>
<div id="outline-container-org4863364" class="outline-3">
<h3 id="org4863364">Conclusions</h3>
<div class="outline-text-3" id="text-org4863364">
<p>
The disk space on the server is a problem. We had ~1500 students at
the school. Not all of them even had access to the computer
classrooms, though.
</p>

<p>
The students in the shop classes didn't use computers at all, as far
as I know, except one of the electrician programmes (El-teleteknisk
linje), especially the one specialising in electronics, but they had
their own computer classroom far away from us, for some reason.
</p>

<p>
The students that did have access, perhaps 300, were expected to keep
their work on diskettes. If I had the money I would definitely use it
on more disk space and increase the quota for users.
</p>

<p>
Being able to dial in to the server would be a huge difference.
Allowing e-mail or setting up a BBS would have been fantastic, even if
it was just local. Access to Internet e-mail would have been&#x2026;
EXTREMELY AWESOME!!11
</p>

<p>
All in all, all of these suggestions would have been a much better
system than the one we had for real.
</p>
</div>
</div>
</div>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Boomtime, the 44 day of Discord in the YOLD 3191 (<time datetime="2025-04-27">2025-04-27</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/computers-in-school.html</link>
  <guid>https://hack.org/~mc/blog/computers-in-school.html</guid>
  <pubDate>Sun, 27 Apr 2025 22:50:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[The return of the tilde]]></title>
  <description><![CDATA[<p>
As some of you may have noticed my web page is now under <code>/~mc</code> instead
of just <code>/mc</code>. This is a return to olden times.
</p>

<p>
The Apache web server, and probably many other web servers, had a
simple way of adding personal web pages for local users. This meant
that an URL ending with <code>~mc</code> led directly to a subdirectory of user
mc's home directory. Whatever they put in that directory was
immediately available on the Intertubes! Neat, huh?
</p>

<p>
We need to bring this back to the modern net! Many tilde pubnixes has
already done so, of course, and hack.org might sort of qualify as a
member tilde, although I am, I guess, the BDFL.
</p>

<p>
See for instance:
</p>

<p>
<a href="https://tildeverse.org/">https://tildeverse.org/</a>
</p>

<p>
In some places, like my alma mater, the Lysator computer club at
Linköping University, tilde web pages lead to complicated setups with
NFS automounting because, of course, the computer running the web
server is not necessarily the computer which knows anything about the
user's home directory.
</p>

<p>
In my case this is, instead, done with <code>rsync</code>. We have SSH access to
a shellbox. On the shellbox we can create a <code>public_www</code> directory in
our home directory, then make it readable by a special user/group and,
voila!, a web page turns up at:
</p>

<p>
<a href="https://hack.org/~mc/">https://hack.org/~mc/</a>
</p>

<p>
The special sync user rsyncs the contents of <code>public_www</code> to the web
server automatically every 15 minutes. This has been roughly the same
for many years, but now it's more isolated on the web server, and with
that change came the re-introduction of the "~".
</p>

<p>
Similarly, if we create <code>public_gem</code> in our home directories, a Gemini
capsule on:
</p>

<p>
gemini://gem.hack.org/who/mc/
</p>

<p>
appears.
</p>

<p>
I recently moved the web server from a jail under FreeBSD to a
seperate VPS. I also changed the server software from nginx to Caddy.
The magic for doing tilde web pages in Caddy looks like this:
</p>

<pre class="example" id="orgf6b80cc">
@user_home path_regexp user ^/~([^/]+)(/.*)?$
handle @user_home {
        redir /~{re.user.1} /~{re.user.1}/ permanent

        root * /home/www/hackusers/{re.user.1}
        rewrite * {re.user.2}
        file_server {
                hide .[A-Za-z]*
        }
}
</pre>

<p>
I also added redirection for some users who had a lot of stuff already
published, for instance, as you can guess, my own:
</p>

<pre class="example" id="orgf2caf73">
redir /mc https://hack.org/~mc/ permanent
redir /mc/ https://hack.org/~mc/ permanent
</pre>

<p>
I'm aware this made for an extra surprise for my blog readers, since
all the previous blog posts also suddenly changed their URL. Some blog
readers interpreted this as that all the posts were new posts. Sorry
about that!
</p>

<p>
As an extra bonus, Caddy automagically took care of Let's Encrypt
certs for all the domains, including <a href="https://spunk.org/">https://spunk.org/</a> which for the
first time ever is now reachable with HTTPS. Thanks, Caddy! Now go
visit <a href="https://spunk.org/">the Spunk Library</a> over TLS for all your encrypted Anarchist
needs!
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Boomtime, the 44 day of Discord in the YOLD 3191 (<time datetime="2025-04-27">2025-04-27</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/return-of-tilde.html</link>
  <guid>https://hack.org/~mc/blog/return-of-tilde.html</guid>
  <pubDate>Sun, 27 Apr 2025 13:28:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[FOSDEM 2025]]></title>
  <description><![CDATA[<p>
I recently attended the large Free and Open Source Software conference
<a href="https://fosdem.org/">FOSDEM 2025</a> in Brussels, Belgium. I went there by train, of course,
via Copenhagen, Hamburg, and Cologne. The same route back.
</p>


<figure id="org5310579">
<img src="static/images/cologne.jpg" alt="A large medieval cathedral during a dark, rainy evening. Ssome people in front wearing rain gear and umbrellas.">

<figcaption><span class="figure-number">Figure 1: </span>Kölner Dom in rain.</figcaption>
</figure>

<p>
I lived in the rather expensive, allegedly fancy hotel Le Châtelain in
Brussels. It was really not that fancy, but they had a 24/7 reception
and perhaps five(?) people there at all times. They also locked the
door really early. I think they were afraid of something or someone.
</p>

<p>
I thought the neighbourhood was fine. Especially Rue de Bailli around
the corner was nice. Many restaurants and bars, even though I didn't
have the time to visit more than one restaurant on the street.
</p>

<p>
I spent Friday mostly at the hotel, working in my room, mostly on
other things but also preparing my own presentation for the next day.
I chose to travel a day early because, well, trains. The trains
actually worked out OK, even if a lot of people I met complained about
Deutsche Bahn.
</p>

<p>
Naturally, I was nervous about the food, as I always am when
travelling, being vegan and allergic to soy and peanuts. I had
researched quite a lot, of course, and I had a stash of Huel bottles
and protein bars with me, just in case.
</p>

<p>
I had lunch that first day at a nice vegan place called Lucifer lives,
close to the Palais de justice. It had a punk vibe and a horror theme
with horror movie posters everywhere. I liked it a lot. It also had
great coffee, much better than the coffee during the hotel breakfast.
Btw, 37 euro for breakfast at the hotel! So not worth it.
</p>


<figure id="orgb568314">
<img src="static/images/beer-coffee.jpg" alt="A table at a cafe/restaurant with a bottle of beer, a beer glass and a coffee cup barely visible. The label on the bottle says &quot;ALE be back&quot; and there's a likeness of Terminator.">

<figcaption><span class="figure-number">Figure 2: </span>Beer and coffee.</figcaption>
</figure>


<figure id="org2fac481">
<img src="static/images/no-god-no-master.jpg" alt="A textile banner on a wall with a pair of stylized goats around a cup of coffee with a hand sticking up of it, on top of a fire with the text &quot;no god no master&quot; above and &quot;no milk no sugar&quot; below.">

<figcaption><span class="figure-number">Figure 3: </span>No god, no master - no milk, no sugar!</figcaption>
</figure>

<p>
The statue just next to the Palais de justice gets a special mention:
steampunk octopus robot! Yes, please!
</p>


<figure id="orgbc12457">
<img src="static/images/octopus.jpg" alt="A huge sculpture of what seems to be a metal robotic octoupus breaking through paving stones on a square. In the background, a huge Ferris wheel, some old buildings and cars on a road.">

<figcaption><span class="figure-number">Figure 4: </span>A sudden octopus appears!</figcaption>
</figure>



<figure id="org974e925">
<img src="static/images/octopus-close.jpg" alt="A close-up of the octopus with a huge red eye set in steel.">

</figure>

<p>
My friend A, who lives i Brussels, arranged a dinner for me and a few
others at the wonderful <a href="https://eastatwest.com/">East &amp; West restaurant</a>. Meze with something
like 18 bowls of different things. Then the dessert came in! I
certainly didn't leave hungry.
</p>


<figure id="org985ab28">
<img src="static/images/east-west.jpg" alt="A dozen or so of pots containing food in different colours, things like hummus, potatoes, filled wine leaves.">

</figure>

<p>
A then brought me to a party in a pretty nice industrial-looking flat,
but I had to leave early(ish) to keep working on my presentation. It
was a little adventure to get back to the hotel on Friday night.
</p>

<p>
The FOSDEM conference was held at the Solbosch campus of the
Université libre de Bruxelles, which was about 30 minutes walk from my
hotel. I walked there on Saturday.
</p>

<p>
I was underwhelmed. No fancy signs? No facade lighting? Not even
blinkenlights? Just very&#x2026; worn down buildings and classrooms?
</p>

<p>
Yes, I suppose I've been spoiled by the Chaos events and especially
the Chaos Communication Congress.
</p>

<p>
OK, I realize they probably didn't have thousands of hackers and
artists coming a week early to build, I don't know, things like a
castle of neon lights, a huge pneumatic tube systems covering several
floors, no less than three different phone networks,
Internet-controlled flamethrowers, and setting up things for trapeze
artists 10 meters above one of the dance floors (Dance floor? Ha! No
such thing.) &#x2026; and the list goes on.
</p>

<p>
There were also much less cat ears and alternative clothing, but I was
sort of expecting that. I wish I at least had put on some nailpolish.
Rabbit ears might have been too much even though #3 would have been
delighted.
</p>

<p>
Most of the actual talks could be summarized with the following sign:
</p>


<figure id="org9ed3f32">
<img src="static/images/fosdem-room-full.jpg" alt="A sign taped on a grey door saying &quot;Sorry, this room is full!&quot; and then giving directions to the streaming and navigation.">

</figure>

<p>
I almost couldn't get in to the Security Devroom when it was time for
my own talk! Haha.
</p>

<p>
I'm afraid my own talk was yet another pretty generic, although
updated, presentation about the Tillitis TKey, what it is and what you
can use it for. I've prepared more interesting talks but this was the
one that was accepted, and I guess people still need to hear about
what the TKey is. It's such a simple idea (thanks, Microsoft
Research!) but the simple idea and all its implications can be hard to
get across.
</p>

<p>
I was terribly nervous, as usual, and it didn't help that I almost
didn't get into the room. I had, perhaps, 20 seconds to plug in my
laptop, mic up and be ready to start. Naturally I didn't have any way
of testing that my setup would work at all. And&#x2026; Of course, the
Emacs window showing the presentation hid a lot of the bottom of my
"slides". Different aspect ratio from my screen. Dammit!
</p>

<p>
I talked around it and I think it was basically fine. The fuckup
naturally made me even more nervous.
</p>

<p>
I mentioned <a href="https://linderud.dev/about/">Morten "Foxboron" Linderud</a> in my talk and his work at one
of the Tillitis hackatons bringing up Zig on the TKey. Incidentally,
one of my newest colleagues, Mikael Ågren, did the same thing
independently around the same time!
</p>

<p>
After my talk it was Morten's turn! He wasn't even in the room when I
held my talk, unfortunately, but I had some time to talk to him before
he started. His talk was about "Hardware backed SSH keys:
ssh-tpm-agent" and, yes, he mentioned and showed the TKey and the
tkey-ssh-agent during his demo! Thanks, Morten!
</p>

<p>
My almost-colleague Niels Möller from Tillitis' sister company
Glasklar Teknik did an introduction to their neat transparency log
project <a href="https://www.sigsum.org/">Sigsum</a>.
</p>

<p>
I managed to catch some talks in the devroom for Digital Wallets and
Verifiable Credentials, too.
</p>

<p>
First I saw a lightning talk "Digital identities in disarray" by
Amelia Andersdotter and Gregor Bransky about the eIDAS 2.0 proposal
and all the confusion around that, but not a lot about the amendment
to the original eIDAS (which is now law) and the current efforts to
build the European Union Digital Identity.
</p>

<p>
But the next talk was all about just that! "Challenges for Wallets and
Digital Trust Services following EUDI Wallet Architecture Reference
Framework &amp; Reference implementation". It was unfortunately cut way
before they even had got into the meat of the thing.
</p>

<p>
Anyway, the gist is that by November 2026 all EU member states will
have to start offering at least one Digital Identity Wallet
application to all citizens. <a href="https://www.scytales.com/">Scytáles</a> and IIUC partner
<a href="https://netcompany.com/netcompany-intrasoft/">Netcompany-Intrasoft</a> are working on the technical specs (the
<a href="https://eu-digital-identity-wallet.github.io/eudi-doc-architecture-and-reference-framework/latest/%22">Architecture Reference Framework", ARF</a>) and the reference
implementation of all parts. It's all awailable&#x2026; on Github! The ARF
source is even in Markdown!
</p>

<p>
All the repos:
</p>

<p>
<a href="https://github.com/eu-digital-identity-wallet">https://github.com/eu-digital-identity-wallet</a>
</p>

<p>
I had a look through the Wallet apps libraries before just to see what
they demand of the actual ID carrier and if, yes, you could use the
TKey to carry a private key. And yes, it seems like you could.
</p>

<p>
While I was waiting in the queue to my own talk I was quite surprised
when <a href="https://isaacfreund.com/about/">Isaac Freund</a>, author of the great Wayland compositor <a href="https://codeberg.org/river/river">River</a>, came
up to me and asked if I was MC. Haha. We talked for a while. I really
liked that.
</p>

<p>
I tried to get into Hans "pengo" Hübner's talk about Bildschirmtext,
of course, but that room was even fuller than should have been
possible. And the hallway outside had the queue from hell.
</p>

<p>
In total I managed to get in to perhaps three or four talks besides
the Security Devroom that I stayed in for a while.
</p>

<p>
There was some other events in Brussels at about the same time as
FOSDEM. First there was <a href="https://europeanopensource.academy/news/open-source-europe-enters-new-era-successful-first-european-open-source-awards-ceremony">the Europen Open Source Awards</a>, which among
other things awarded Daniel "bagder" Stenberg a nice price.
</p>

<p>
There was a lot of <a href="https://fosdem.org/2025/fringe/">other fringe events</a>. Of them I was sort of tempted
by OFFDEM, of course. Consider <a href="https://oxygen.offdem.net/pub/free-software-under-attack-an-offdem-manifesto">the OFFDEM Manifesto</a>. But this was a
sort of work thing, so I stayed at FOSDEM proper.
</p>

<p>
Considering that FOSDEM is held at the peak time of the seasonal flu
season in Europe, some people have apparently more-or-less jokingly
called it "flucon" or "fluconf". So&#x2026; of course, someone started a
real <a href="https://fluconf.online/">FluConf</a>! Naturally, the conference is completely online. Perhaps
I'll try to attend next year?
</p>

<p>
On the way back (Brussels-Cologne-Hamburg-Copenhagen-Malmö) I was
hoping to have the time to get to Tünnes und Shäl in Cologne and get a
vegan currywurst (yes, really!) and a kölsch, but alas, the train was
a little late so I didn't have the time. I did, however, buy some
kölsch and took yet another photo of the Kölner dom.
</p>

<p>
All in all, travelling back to almost exactly 14 hours from leaving
the hotel until I entered my front door. Not too bad, with so many
train changes.
</p>

<p>
My experience of Brussels was kind of dark&#x2026; I saw a lot of unhoused
people. My friend A said that the crime rate was bad and things like
domestic violence, even murder, was through the roof. Just the week
after I came home someone was shooting with fully automatic weapons in
central Brussels!
</p>

<p>
I didn't expect that at all. It was also very expensive. I did expect
that.
</p>

<p>
On the other hand, I found traces of underground culture, in a way I
didn't do at all in Paris. That was the good part.
</p>

<p>
I probably won't be coming back, neither to FOSDEM, nor to Brussels,
if I can help it.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Sweetmorn, the 23 day of Discord in the YOLD 3191 (<time datetime="2025-04-06">2025-04-06</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/fosdem-2025.html</link>
  <guid>https://hack.org/~mc/blog/fosdem-2025.html</guid>
  <pubDate>Sun, 06 Apr 2025 15:59:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Datalagring, igen!]]></title>
  <description><![CDATA[<p>
Some of my usual readers will have to excuse me. This post will be in
Swedish. It's about proposed Swedish legislation for forcing someone
who offers a message system to the public to cooperate with the law.
</p>

<p>
—  —  —  
</p>
<div id="outline-container-org8889b88" class="outline-2">
<h2 id="org8889b88">Ändring</h2>
<div class="outline-text-2" id="text-org8889b88">
<ul class="org-ul">
<li>Första version: 2025-03-10 07:55</li>
<li>Ändrad: 2025-03-12 18:01 +0100: Listan i "En bugg?" hade automatiskt
numrerats av blogverktyget och HTML så poängen försvann. Nu citerad
mer korrekt där det framgår att "1." är borttagen.</li>
</ul>
</div>
</div>
<div id="outline-container-orga51061d" class="outline-2">
<h2 id="orga51061d">Inledning</h2>
<div class="outline-text-2" id="text-orga51061d">
<p>
Nytt lagförslag: Även chatsystem ska vara "anpassningsskyldiga" för
hemlig avlyssning och hemlig övervakning!
</p>

<p>
Det är väl ingen överraskning bland mina läsare vad jag tycker om det.
Går förslaget igenom gör vi det mer komplicerat för vanliga användare
att meddela sig med varandra relativt säkert. Tekniskt bevandrade och
kriminella kommer troligen kunna fortsätta kommunicera utan
avlyssning.
</p>

<p>
Vi inför svagheter i systemen genom att tvinga fram anpassningar för
avlyssning. Dessa svagheter kan naturligtvis utnyttjas av andra. Finns
det en bakdörr kan den uttnyttjas av onda krafter också.
</p>

<ul class="org-ul">
<li>Vi gör det mycket krångligare för vanliga användare men knappt någon
skillnad för kriminella.</li>
<li>Vi ökar risken för att obehöriga får tillgång.</li>
</ul>

<p>
Till vilken nytta?
</p>
</div>
</div>
<div id="outline-container-orgd692e4a" class="outline-2">
<h2 id="orgd692e4a">Bakgrund</h2>
<div class="outline-text-2" id="text-orgd692e4a">
<p>
När Sverige först var på väg att införa EU:s Datalagringsdirektiv 2009
skrev jag "<a href="https://hack.org/mc/blog/datalagringsdirektiv.html">Datalagringsdirektivet och möjliga vägar runt det</a>". Nu är
de på gång igen, fast värre, för nu är själva innehållet i meddelanden
också med i planen.
</p>

<p>
I november förra året kom ett <a href="https://www.regeringen.se/rattsliga-dokument/departementsserien-och-promemorior/2024/11/utkast-till-lagradsremiss-datalagring-och-tillgang-till-elektronisk-information/">"Utkast till lagrådsremiss Datalagring
och tillgång till elektronisk information</a>". Utkastet innehåller vad
som troligen blir en proposition från regeringen på ny lagtext. Den
innehåller några skrämmande detaljer som inte är så uppenbara vid en
första genomläsning.
</p>

<p>
När utredningen "<a href="https://www.regeringen.se/rattsliga-dokument/statens-offentliga-utredningar/2023/05/sou-202322/">Datalagring och åtkomst till elektronisk information
(SOU 2023:22)</a>" dök upp våren 2023 var jag lite orolig, kollade på
presskonferensen och började skumma själva lagförslagen i utredningen.
</p>

<p>
Jag var först ganska lugnad, dels för resonemangen från utredaren
Sigurd Heuman om att Sveriges implementation av EU:s
datalagringsdirektiv gått för långt och att det i omgångar mildrats
och nu föreslogs mildras ytterligare.
</p>

<p>
En stor skillnad i lagtexten är att chatsystem, som utredningen roligt
nog kallar "NOIK" för "nummeroberoende interpersonella
kommunikationstjänster", också skulle falla under <a href="https://lagen.nu/2022:482">Lagen om elektronisk
kommunikation (LEK)</a>. Det har de inte gjort förut, utom fallet mail,
som har specialbehandlats. Ja, chat och chat? Det är lite vidare än
så, förstås. Det gäller också tjänster som förmedlar röst- eller
videosamtal.
</p>

<p>
Juristerna verkar helt svalt Big Telecom-lingot och kallar ibland sitt
NOIK-påhitt för "OTT-tjänster" som i "Over the top". Jisses.
</p>

<p>
Jag såg hur som helst inget uppenbart i utredningen som faktiskt
föreslog att någon skulle bli tvingad att lämna över klartext, även om
just läsbarheten särskilt nämndes i brödtexten. De konstaterade att
det skulle bli svårt att faktiskt genomföra. Ja, jo, med E2EE är det
ju lite lurigt, om man inte gör något på klientsidan.
</p>

<p>
Jag skummade nog lite väl mycket men det kanske kan ursäktas då den är
över 600 sidor och jag fokuserade på faktiskt lagtext. Naturligtvis
missade jag deras intressanta uppdelning av den föreslagna
lagändringen.
</p>
</div>
</div>
<div id="outline-container-orgea90f32" class="outline-2">
<h2 id="orgea90f32">Analys av föreslagen lagtext</h2>
<div class="outline-text-2" id="text-orgea90f32">
<p>
Jag tänker inte tråka ut er med att analysera all föreslagen lagtext.
Jag hoppar också över förslagen till utökad lagringsskyldighet av
hänsyn till nationell säkerhet. Istället hoppar vi på det riktigt
intressanta.
</p>

<p>
I förslaget om ändring av LEK 19 § (s 15-16) börjar det bli
intressant:
</p>

<blockquote>
<p>
19 a §
</p>

<p>
Den som tillhandahåller en allmänt tillgänglig nummeroberoende
interpersonell kommunikationstjänst ska lagra sådana uppgifter som
avses i 31 § första stycket 1 som kan användas för att identifiera en
abonnent och registrerad användare.
</p>

<p>
Lagringsskyldigheten som gäller för allmänt tillgängliga
nummeroberoende interpersonella kommunikationstjänster omfattar
uppifter som genereras eller behandlas vid tjänster som
tillhandahåller samtal och meddelandehantering vid kommunikation som
sker till, från eller inom Sverige.
</p>

<p>
Vid lagring enligt 19 b § av uppgifter som avses i 31 § första stycket
4 omfattar lagringsskyldigheten endast uppgifter som avser
lokalisering i Sverige. Även vid misslyckad uppringning gäller
skyldigheten att lagra upp- gifter som genereras eller behand- las.
</p>

<p>
19 b §
</p>

<p>
Den som bedriver verksamhet som ska anmälas enligt 2 kap. 1 § och den
som tillhandahåller en allmänt tillgänglig nummeroberoende
interpersonell kommunikationstjänst ska lagra de uppgifter som framgår
av ett beslut enligt lagen (2025:000) om lagring av och tillgång till
uppgifter om elektronisk kommunikation i syfte att skydda Sveriges
säkerhet.
</p>

<p>
Beslutet får omfatta sådana uppgifter som avses i 31 § första stycket
1, 3 och 4 som är nödvändiga för att spåra och identifiera
kommunikationskällan och slutmålet för kommunikationen, datum,
tidpunkt och varaktighet för kommunikationen, typ av kommunikation,
kommunikationsutrustning, lokalisering av kommunikationsutrustning vid
kommunikationen samt lokaliseringsuppgifter som inte är
trafikuppgifter.
</p>
</blockquote>

<p>
Riktigt intressant blir det dock först i kapitel 9, 29 §. Föreslagen
lydelse (s 18-19):
</p>

<blockquote>
<p>
Den som är skyldig att lagra uppgifter enligt 19, 19 a eller 19 b §
ska bedriva sin verksamhet så att beslut om hemlig avlyssning av
elektronisk kommunikation, hemlig övervakning av elektronisk
kommunikation och inhämtning enligt lagen (2012:278) om inhämtning av
uppgifter om elektronisk kommunikation i de brottsbekämpande
myndigheternas underrättelseverksamhet kan verkställas och så att
verkställandet inte röjs.
</p>
</blockquote>

<p>
Det som kanske inte noteras direkt är att begränsningen som tidigare
gällde tas bort. Tidigare gällde det här i princip bara telefoni.
Driver du ett telefoninätverk i Sverige är du alltså tvungen att
anpassa dina system så att abonnenter kan övervakas och avlyssnas. Så
är det nog i i stort sett alla länder: "lawful interception".
</p>

<p>
Begränsningarna var listade under det där stycket men tas alltså bort
i förslaget. Nu blir plötsligt alla som faller under nya LEK tvungna
att också vara <i>anpassningsskyldiga</i>. De måste alltså hjälpa till att
lämna ut uppgifter och anpassa sina system så att de <i>kan</i> lämna ut
uppgifter.
</p>

<p>
Exakt <i>vilka</i> uppgifter och till vem är inte så klart uttryckt, tycker
jag. Det hänvisas tillbaka 19, 19 a eller 19 b § som jag citerade nyss
och som pekade på 31 §.
</p>

<p>
Det hänvisas till <a href="https://lagen.nu/2012:278">Lag (2012:278) om inhämtning av uppgifter om
elektronisk kommunikation i de brottsbekämpande myndigheternas
underrättelseverksamhet</a> men den pratar bara om "uppgifter <i>om</i>
meddelanden", inte själva innehållet.
</p>

<p>
Vi har förvisso också <a href="https://lagen.nu/1942:740#K27P18">"Hemlig avlyssning av elektronisk kommunikation"</a>
från Rättegångsbalken:
</p>

<blockquote>
<p>
[K27]18 § Hemlig avlyssning av elektronisk kommunikation innebär att
meddelanden, som i ett elektroniskt kommunikationsnät överförs eller
har överförts till eller från ett telefonnummer eller en annan adress,
i hemlighet avlyssnas eller tas upp genom ett tekniskt hjälpmedel för
återgivning av innehållet i meddelandet.
</p>
</blockquote>

<p>
Där är det ju ganska tydligt att innehållet i meddelandet ska kunna
lämnas ut. Anpassningsplikten gäller, som jag tolkar det, också detta.
</p>
</div>
</div>
<div id="outline-container-orgd3e9a6d" class="outline-2">
<h2 id="orgd3e9a6d">En bugg?</h2>
<div class="outline-text-2" id="text-orgd3e9a6d">
<p>
Det här är ju illa nog, för all del. Men det kanske går mycket längre?
Eller har någon gjort ett misstag?
</p>

<p>
Om ni inte tycker att den här potentiella buggen i den föreslagna
lagtexten är intressant, scrolla ner till "Effekter" nedan istället.
</p>

<p>
En lista i 31 § som förvirrande nog för övrigt handlar om
tystnadsplikt är särskilt märklig. <a href="https://lagen.nu/2022:482#K9P31S1">Gamla texten</a>:
</p>

<blockquote>
<p>
Den som tillhandahåller ett elektroniskt kommunikationsnät eller en
elektronisk kommunikationstjänst som inte är en nummeroberoende
interpersonell kommunikationstjänst, får inte obehörigen föra vidare
eller utnyttja det som han eller hon i samband med tillhandahållandet
har fått del av eller tillgång till i form av
</p>

<p>
<b>1.</b> en uppgift om abonnemang,
</p>

<p>
<b>2.</b> innehållet i ett elektroniskt meddelande, eller
</p>

<p>
<b>3.</b> en annan uppgift som angår ett särskilt elektroniskt meddelande.
</p>
</blockquote>

<p>
Föreslagen text (s 20-21):
</p>

<blockquote>
<p>
Den som tillhandahåller ett elektroniskt kommunikationsnät eller en
elektronisk kommunikationstjänst får inte obehörigen föra vidare eller
utnyttja det som han eller hon i samband med tillhandahållandet har
fått del av eller tillgång till i form av
</p>

<p>
<b>2.</b> innehållet i ett elektroniskt meddelande,
</p>

<p>
<b>3.</b> en trafikuppgift, eller
</p>

<p>
<b>4.</b> en lokaliseringsuppgift som inte är en trafikuppgift och som rör
användare som är fysiska personer eller abonnenter. För
tillhandahållare av nummeroberoende interpersonella
kommunikationstjänster gäller tystnadsplikten enligt första stycket
endast vid sådan kommunikation som sker till, från eller inom Sverige
samt för lokaliseringsuppgifter som inte är trafikuppgifter och som
avser lokalisering i Sverige.
</p>
</blockquote>

<p>
OBS att 1:an utgått men att <i>listan inte omnumrerats</i>! Betyder det här
att 2:an är ny nummer 1 eller att det är kvar som 2:a? Den här lilla
detaljen är av extrem betydelse.
</p>

<p>
Om man fortsätter läsa några paragrafer senare blir det klarare hur
den här listan används förutom för tystnadsplikt. 33 § (s 22) klargör
genom att säga:
</p>

<blockquote>
<p>
Den som tillhandahåller ett elektroniskt kommunikationsnät eller en
elektronisk kommunikationstjänst och som har fått del av eller
tillgång till en uppgift som avses i 31 § första stycket ska på
begäran lämna [&#x2026;]
</p>
</blockquote>

<p>
och sedan kommer en lång rad villkor för vilka uppgifter får lämnas ut
när och till vem. De hänvisar hela tiden tillbaka genom att skriva "31
§ första stycket 1" och liknande.
</p>

<p>
Nu blir alltså numreringen på listan i 31 § viktig. Om det som står
högst upp i listan är nummer 1 betyder det att väldigt många kan få ta
del av <i>innehåll</i> i meddelanden och inget längre bara uppgift om
abonnemang som tidigare. Det här går mycket, mycket längre än
<a href="https://lagen.nu/1942:740#K27P18S1">Rättegångsbalkens "Hemlig avlyssning av elektronisk kommunikation</a>"!
</p>

<p>
En tillhandahållare måste i så fall anpassa sina system för att kunna
lämna ut själva <i>innehållet i klartext</i> till åtminstone följande:
</p>

<ul class="org-ul">
<li>Polisen,</li>
<li>Säpo,</li>
<li>Skatteverket,</li>
<li>Tullverket,</li>
<li>Finansinspektionen,</li>
<li>Konsumentombudsmannen,</li>
<li>Konsumentverket,</li>
<li>Kronofogdemyndigheten,</li>
<li>Läkemedelsverket,</li>
<li>Ekobrottsmyndigheten,</li>
<li>Åklagarmyndigeten,</li>
<li>regionala alarmcentraler</li>
<li>vilken myndighet som helst som vill delge någon någonting(!).</li>
</ul>

<p>
Och allt detta bara genom att ta bort en rad ur listan i 31 § första
stycket? Sneaky! Men var det verkligen meningen? Är det en bugg?
</p>

<p>
Som ni kanske minns stod det i nya 19 a § (s 15):
</p>

<blockquote>
<p>
Den som tillhandahåller en allmänt tillgänglig nummeroberoende
interpersonell kommunikationstjänst ska lagra sådana uppgifter som
avses i 31 § första stycket 1 som kan användas för att identifiera en
abonnent och registrerad användare.
</p>
</blockquote>

<p>
"Identifiera en abonnent"? Ja, jo, om nu 1:an hade varit intakt och
det var en "uppgift om abonnent" men det är det ju inte längre? Eller?
</p>
</div>
</div>
<div id="outline-container-orgb7f1dad" class="outline-2">
<h2 id="orgb7f1dad">Effekter</h2>
<div class="outline-text-2" id="text-orgb7f1dad">
<p>
Låt oss anta att meddelandetjänster måste lagra både metadata och
meddelandens innehåll. Vilka är det då som måste lagra och lämna ut
data?
</p>

<p>
Rätt ofta står det "Den som tillhandahåller en allmänt tillgänglig
nummeroberoende interpersonell kommunikationstjänst" i föreslagna
lagtexten. Vad "allmänt tillgängliga" faktiskt betyder är lite oklart,
tycker jag.
</p>

<p>
Nuvarande LEK gäller till exempel inte en mailserver som jag driver
privat för familj och vänner eller en mailserver som en förening
driver för sina medlemmar eller ett företag för sina anställda. Börjar
jag erbjuda mailkonton till allmänheten, däremot, så fallar jag under
LEK.
</p>

<p>
Troligen gäller samma principer ett chatsystem men <i>vad</i> i systemet är
det som är allmänt tillgängligt? Är det servrarna? Är det klienterna?
Systemet som helhet? Vem är "tillhandahållaren" som det talas om i
lagtexten?
</p>

<p>
Låt oss ta XMPP som exempel på ett federerat meddelandesystem. Om jag
driver en XMPP-server (eller grupp av servrar) som låter vem som helst
skapa konton så riktar jag mig troligen mot allmänheten och faller
under LEK. OK, visst.
</p>

<p>
Men säg att jag driver en XMPP-server för min vängrupp och inte låter
vem som helst skapa konton? Däremot <i>federerar</i> jag, på samma sätt som
min mailserver, med alla andra XMPP-servrar i hela världen,
<i>inklusive</i> de som riktar sig till allmänheten. Faller jag under LEK?
Troligen inte med tanke på att en mailserver under motsvarande
omständigheter hittills inte bedömts falla under LEK?
</p>

<p>
Säg i stället att jag är författare till en extremt populär
XMPP-klient, <a href="https://conversations.im/">Conversations</a>, som finns inte bara på F-Droid utan också
på Google Play, till och med mot betalning. Riktar sig klienten till
allmänheten? Ja, utan tvekan.
</p>

<p>
Men för att kunna använda klienten behöver du också ett konto på en
XMPP-server. Om du använder den klienten och kör den mot min lilla
server för en vängrupp, faller då klienten ändå under LEK? Jag vet
inte men jag gissar att det går att argumentera för det.
</p>

<p>
Naturligtvis erbjuder Conversations, som en modern XMPP-klient, E2EE i
form av både OMEMO och till och med PGP. Det här måste nu brytas,
kanske med något så enkelt som att lägga till en dold mottagare. Det
är nog möjligt i den version av klienten som finns på Google Play,
vars källkod inte lika enkelt kan granskas av andra. För, som ni såg,
måste anpassningen ske "så att verkställandet inte röjs".
</p>

<p>
Det skulle i så fall betyda att Daniel Gultsch, författaren till
Conversations, blir tvungen att införa något i klienten som sparar
meddelanden i klartext. Jag gissar att Daniel hellre drar tillbaka
Conversations från svenska Google Play än går med på något sådant.
</p>

<p>
Går de efter Conversations på F-Droid också? Kanske men mindre
sannolikt.
</p>

<p>
Worst case scenario? Det här sprider sig i hela EU så att Daniel måste
dra tillbaka Conversations från Play i alla EU-länder, dra tillbaka
från F-Droid och lägga ner den publika utvecklingen på <a href="https://codeberg.org/iNPUTmice/Conversations">Codeberg</a>.
Kanske dra tillbaka sitt officiella engagemeng i utvecklingen.
Naturligtvis kommer den forkas, det är ju FLOSS, och kommer säkert att
hostas på en Git forge på en .onion-adress och fortsätta utvecklas av
anonyma utvecklare&#x2026;
</p>

<p>
Är det verkligen dit vi vill komma?
</p>

<p>
För att ge extra krydda, vem är tillhandahållaren i system som inte
ens har några servrar, som till exempel <a href="https://briarproject.org/">Briar</a>? Här tänker jag att en
domstol skulle komma fram till att det är de som tillhandahåller
<i>klienten</i> som är lagens "tillhandahållaren", troligen med motsvarande
utveckling som i mitt scenario med Conversation.
</p>

<p>
I den här framtiden finns alltså vare sig Conversation eller Briar på
Google Play.
</p>

<p>
En avancerad användare tar ner APK:n någonstans ifrån och installerar
manuellt. Eller så tar personen rent av ner källkoden och bygger själv
innan installation. En kriminell? Samma sak: Ner med APK:n och manuell
installation eller, förstås, be någon annan att göra det eller köp
tjänsten.
</p>

<p>
Vi har alltså inte hindrat de vi egentligen vill hindra. Vad är
egentligen poängen med lagen?
</p>
</div>
</div>
<div id="outline-container-org84a799d" class="outline-2">
<h2 id="org84a799d">Referenser</h2>
<div class="outline-text-2" id="text-org84a799d">
<ul class="org-ul">
<li><a href="https://www.regeringen.se/rattsliga-dokument/statens-offentliga-utredningar/2023/05/sou-202322/">Datalagring och åtkomst till elektronisk information (SOU 2023:22)</a>.</li>

<li><a href="https://lagen.nu/2022:482">Lag om elektronisk kommunikation (LEK)</a></li>

<li><a href="https://www.regeringen.se/rattsliga-dokument/departementsserien-och-promemorior/2024/11/utkast-till-lagradsremiss-datalagring-och-tillgang-till-elektronisk-information/">Utkast till lagrådsremiss Datalagring och tillgång till elektronisk
information</a>.</li>

<li>Rättegångsbalken, avdelningen <a href="https://lagen.nu/1942:740#K27P18">"Hemlig avlyssning av elektronisk
kommunikation"</a>.</li>
</ul>
</div>
</div>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Sweetmorn, the 71 day of Chaos in the YOLD 3191 (<time datetime="2025-03-12">2025-03-12</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/datalagring-igen.html</link>
  <guid>https://hack.org/~mc/blog/datalagring-igen.html</guid>
  <pubDate>Wed, 12 Mar 2025 18:01:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[TKey SSH CA]]></title>
  <description><![CDATA[<p>
I wrote a stupidly simple SSH certificate authority that can you can
use directly over SSH to buy new certificates. It can be used with a
<a href="https://dev.tillitis.se">Tillitis TKey</a> both for the private key of the CA itself and for the
user authentication to get a SSH certificate:
</p>

<p>
<a href="https://github.com/tillitis/tkey-ssh-ca">https://github.com/tillitis/tkey-ssh-ca</a>
</p>

<p>
SSH certificates, as you my know, is a way of using not just key pairs
for user authentication, but also solving the problem of public key
distribution to the servers you want to log in to. Instead of holding
and trusting the <b>user's</b> public key, the server just trusts the
<b>CA's</b> public key. When a user comes along with a certificate signed
by that CA, they are allowed in.
</p>

<p>
An SSH certificate can also, like the X.509 certificates you might
already know and hate, include timestamps for when the user is allowed
to use it. Luckily the SSH certificate format is much saner than
X.509. It can also include things like:
</p>

<ul class="org-ul">
<li>What user they are allowed to login as.</li>
<li>What source IP they are allowed to access from.</li>
<li>What commands they are forced to run.</li>
<li>&#x2026; many more things.</li>
</ul>

<p>
You can use the tkey-ssh-ca like this to get a certificate:
</p>

<div class="org-src-container">
<pre class="src src-nil">$ ssh -p 2222 user@ca-server &gt; cert.pub
$ ssh -i cert.pub user@some-ssh-server
</pre>
</div>

<p>
The first commands gets you a certificate and stores it in a file. The
second uses the certificate and logs in to the server. That's it.
</p>

<p>
Kind of neat, huh?
</p>

<p>
Obviously this small CA isn't very smart. For instance, it just
accepts whatever user is in its list of allowed users. It also accepts
whatever principal (login name) the user asks for. For a production
setup, you would probably want to limit this in some way. I might
return to this and add that.
</p>

<p>
<i>Nota bene</i>: A TKey is (so far) not required to use this program.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Prickle-Prickle, the 29 day of Chaos in the YOLD 3191 (<time datetime="2025-01-29">2025-01-29</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/tkey-ssh-ca.html</link>
  <guid>https://hack.org/~mc/blog/tkey-ssh-ca.html</guid>
  <pubDate>Wed, 29 Jan 2025 20:56:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[On my way to FOSDEM 2025]]></title>
  <description><![CDATA[<p>
I'm leaving by train for <a href="https://fosdem.org/">FOSDEM 2025</a> in Brussels, Belgium tomorrow
morning, arriving tomorrow evening, Goddess willing.
</p>

<p>
During FOSDEM I'll probably mostly be in the Security devroom.
</p>

<p>
<a href="https://fosdem.org/2025/schedule/event/fosdem-2025-6613-tkey-an-open-source-open-hardware-security-token-for-ssh-et-c/">My presentation about the Tillitis TKey</a> is on Saturday at 14:30.
</p>

<p>
I'm bringing some TKeys, both enduser and unlocked, and a couple of
TKey flash programmers if you want to buy something directly from me.
</p>

<p>
If you want to meet it's OK just to approach me. I should be easily
recognized, I think. Image on the talk page is fairly accurate but I
might not have glasses.
</p>

<p>
If you want to schedule something, reach out at the dayjob e-mail mc
(at the domain) tillitis.se.
</p>

<p>
See you in Brussels!
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Prickle-Prickle, the 29 day of Chaos in the YOLD 3191 (<time datetime="2025-01-29">2025-01-29</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/omw-fosdem-2025.html</link>
  <guid>https://hack.org/~mc/blog/omw-fosdem-2025.html</guid>
  <pubDate>Wed, 29 Jan 2025 20:17:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[Living together: Reflections on collective living]]></title>
  <description><![CDATA[<p>
A version of this post was initially published on 2022-05-30 (Setting
Orange, the 4 day of Confusion in the YOLD 3188) in my gemlog at:
</p>

<p>
gemini://gem.hack.org/log/collectives.gmi
</p>

<p>
The text has been edited and I added a few photos.
</p>

<p>
Posted on the blog on 2024-12-15 02:33 +0100. Later updated with how
Area 41 ended.
</p>

<p>
—  —  —  
</p>

<p>
I dreamt about Dial House last night. I've never been there, but it
was like I belonged, like I was meant to be there.
</p>

<p>
Last I heard anything about Dial House they were trying to gather
enough money to buy the house, but that was perhaps 10 years ago? I
had to look it up today to see if it was still there and still
functioning as an anarchist open house.
</p>

<p>
Here are some photos from someone who was there in 2013:
</p>

<p>
<a href="https://www.flickr.com/photos/violentgrind/albums/72157635352182900/">https://www.flickr.com/photos/violentgrind/albums/72157635352182900/</a>
</p>

<p>
Penny was still there. Still baking bread. I'm glad.
</p>

<p>
I found a recent interview where he says he still lives in the house:
</p>

<p>
<a href="https://www.psychedelicbabymag.com/2022/03/penny-rimbaud-interview.html">https://www.psychedelicbabymag.com/2022/03/penny-rimbaud-interview.html</a>
</p>

<p>
I'm relieved.
</p>

<p>
Here's <a href="https://www.youtube.com/watch?v=qIa_jVDRYg4">a great documentary about Crass</a> if you don't know what I'm
talking about.
</p>

<p>
I used to think that I would create such an anarchist haven with
friends some day. An intentional community or an anarchist collective,
living and perhaps working together.
</p>

<p>
My parents had a friend who had been a volunteer in a kibbutz in
Israel. I met them as a child and was really impressed. Kibbutzim, and
especially the more libertarian socialist ones, seemed like a dream
come true. Interestingly, when I was a child we viewed Israel as a
more or less a pragmatic socialist country, a beacon of social
democracy and social experiments, very much unlike how people view
Israel today.
</p>

<p>
For a while in my late teens my friends and I had our eyes on an old
civil defence bunker we had visited, but that turned out to be mostly
daydreaming. Living together in a bunker! Sounds great, doesn't it!?
There was even a small movie theatre in there which would have been
awesome.
</p>

<p>
No one seems to know what happened to the bunker. Perhaps it's secret
again?
</p>

<p>
I used to spend many weekends in my teens at Stömne verkstäder, a
worker-owned cooperative which had a concert venue, Café Svängrum,
often with amazing live concerts. They seemed to know a lot of people
in the alternative music scene in Sweden.
</p>

<p>
I remember an amazing alternative midsummer party which was probably
the first time I ate burritos. They were made with tortillas I baked
myself in the open air. I discussed intentional communities, anarchism
and worker-owned business with some of the residents late into the
night. I was, perhaps, 18?
</p>

<p>
I moved away to study at a university a long way from home. I suppose
I could have put up an ad somewhere to find someone my age to live
with, but instead I rented a room from an elderly couple. The couple
thought I was pretty weird and soon wanted me to leave, so I moved to
a student dorm for a while. I didn't really fit in there, either, and
at least one person in the dorm really disliked me and did strange,
hateful acts against me.
</p>

<p>
A few years later I had married Helena and lived in Stolplyckan, a
large cohousing project, with our two kids. There were four large
buildings, more than 130 flats, and plenty of common areas: a large
gym hall, pottery, wood shop, a school with years 1 to 3, no less than
three daycares, et cetera, et cetera.
</p>

<p>
In the early 90's I learned about the NEXUS movement through the
Future Culture mailing list. The NEXUS movement was about combining
housing collectives and worker cooperatives to share an Internet
connection. You have to remember that getting Internet to a residence
in those days was hard and expensive!
</p>

<p>
The basic idea of NEXUS was that the Internet could be used to form a
federation of living/working nexi for commerce and coordination.
NEXUS-Gaia was the main mailing list of the movement, all the nexi of
Gaia, Mother Earth of the Greek mythology, and, well, the Global
Association of Internet Anarchists (GAIA)&#x2026;
</p>

<p>
You should definitely read Dwayne "ddraig" Jones-Evans' <a href="https://hack.org/mc/texts/nexus-manifesto.txt">NEXUS
Manifesto</a>!
</p>

<blockquote>
<p>
NEXUS awaits: all you can lose is your isolation.
</p>
</blockquote>

<p>
Indeed.
</p>

<p>
In the spirit of NEXUS, I was part of a movement in Stolplyckan trying
to get an Internet access for the houses or at least some shared
computer with an UUCP feed for mail. I ran a BBS at the time (The Hack
Machine, later IBKOM) and after a while managed to get a UUCP feed for
it (<code>lysator.liu.se!closet</code>). One of my neighbours helped pay the
extra phone line for the BBS. That was the closest to Internet
connection we got.
</p>

<p>
We had this idea we could use a box of old short-haul modems we got
from a strange dude in Stockholm with Ericsson connections to make
people connect to our common computer, but it didn't work out to wire
up the place. If we had had a terminal server for every stairwell and
a lot of coax we might have had something.
</p>

<p>
Some friends shared a nearby flat and managed to get an Internet
connection in a sneaky way: they got a leased line and just showed up
on either end when the technician came to install it. One of the ends
happened to be a computer club at the university where they could
easily hook up to the real network. The leased line was just dumb
wires. They hooked up their own, used equipment at both ends. It was
probably something like a Vitalink Ethernet bridge (probably old DEC
labelled things) and modems?
</p>

<p>
It wasn't very speedy, but it worked well for 1997 levels of "well".
I'd rather have a reliable and leased-line 14.4(? 19.2?) kbit/s than a
lot of packet loss or dial-up.
</p>

<p>
They offered me to put a terminal in their shared computer room. I put
my NCD 16 there and got an account on one of the local computers. Now
I didn't have to dial in or bike all the way to uni or work to get
Internet! Still had to leave home, though, but it was just a ten
minute walk. I didn't get permission from dayjob to work from there,
except maybe once or twice, but I spent many evenings there. It was a
different age.
</p>


<figure id="org08b6fcc">
<img src="static/images/ncd16.jpg" alt="Photo of a white/beige X terminal with a square screen and a DEC-like keyboard.">

<figcaption><span class="figure-number">Figure 1: </span>NCD 16 X terminal.</figcaption>
</figure>


<figure id="orgc3f6f9a">
<img src="static/images/magnus+mc.jpg" alt="Photo of two pale men, the one to the left in white t-shirt and blue jeans, the one to the right (me) in black t-shirt and black jeans, both sitting in front of X terminals.">

<figcaption><span class="figure-number">Figure 2: </span>Magnus and me in front of our terminals.</figcaption>
</figure>

<p>
When I separated from Helena I moved into this flat for a while.
Things went a bit chaotic after that. I wasn't feeling well. At all. I
was self-destructive to the point of suicide attempts. It couldn't
last.
</p>

<p>
Eventually, I moved back to Helena. We had some poly on-and-off thing
going, almost like before.
</p>

<p>
A while later, when I came back after a stint at the psych ward, we
had the brilliant idea to form a co-living space of our own with a
good friend, Roberth. The three musketeers!
</p>

<p>
We called our new flat Area 41, after Area 51, and our new address,
number 41 on the street. Fitting, considering we were all aliens, in a
way. First three, but very soon four adults (Dennis was our
d'Artagnan), two children, and 18 computers!
</p>


<figure id="orge472ff3">
<img src="static/images/area41.jpg" alt="Photo of three men and a woman standing next to each other, most holding some form of alcoholic beverage, all smiling in a way. All are dressed mostly in black. Two of the men have shaved heads, including me, one has black hair. The woman has long red hair and is dressed in a black PVC dress.">

<figcaption><span class="figure-number">Figure 3: </span>The four original adult members of Area 41, Roberth, Dennis, Helena, and me during a party. I'm on the right. Yes, my hand is on her breast.</figcaption>
</figure>


<figure id="org62e6c44">
<img src="static/images/area41-hackers.jpg" alt="Photo of three men in front of screens: to the left in white trousers, grey shirt, brown hair, to the right: two dressed in black with shaved heads, one with glasses bending over and looking at the camera upside down.">

<figcaption><span class="figure-number">Figure 4: </span>Dennis, me, and Roberth fooling around when we were setting up some computers.</figcaption>
</figure>

<p>
I mostly worked from Area 41, even though I also commuted almost
weekly to Stockholm during a period. That's a post (series!?) of its
own, perhaps.
</p>

<p>
I was the only one who worked from home full time, but after a few
years when we all had laptops we would sometimes sit on the lawn
behind our house with our computers, even if we didn't have network
access there. At first we didn't even had wifi in the flat!
</p>

<p>
In the beginning we had just dial up modem access which was as awful
as it sounds. Then we got ISDN, even with automatic dial-in when
traffic hit one of my static IP addresses(!), then Internet over cable
TV coax and, at the end, the wonderful Bonet/Bostream DSL with static
IP!
</p>

<p>
The cable TV thing was pretty unstable. We did some software hacks to
make it better, which helped, but wasn't perfect. Perhaps it was an
early version of DOCSIS? Bonet was a relief. We had nominally 2
Mbit/768 kbit/s over DSL. Orckit's stuff, not the ATM-based ADSL,
thankfully. ISDN was 128 kbit/s at best (2 * 64 kbit/s channels), if
dayjob paid, and 64 kbit/s otherwise.
</p>

<p>
I remember one time during the ISDN era when I suddenly realized we
didn't have a phone! I think we were expecting someone to call about
fixing something in the flat. I ran out and bought an ISDN phone.
</p>

<p>
A friend in the networking business gave us some old Symbol 2 Mbit/s
wifi PCMCIA cards, later upgraded to the wonderful Lucent Orinocos. We
didn't even have an access point at first so someone's laptop would
have to work as the router and we connected ad-hoc, but this was
clearly the future! It felt revolutionary!
</p>

<p>
As a comparison, the only wireless built-in to my laptop at the time
was infrared! I could connect my Thinkpad x570 to the mobile phone I
had, an Ericsson GH688, and use GSM's 9600 b/s over infrared. I
couldn't actually afford to do that, of course, but the technology was
there.
</p>

<p>
Sometimes I miss the time in Area 41. A lot of great parties and
dinners, of course, but the most important thing was the sense of
always having someone around who you could trust and be yourself with.
A family, I guess, although perhaps not very traditional. Chosen
family is family, too!
</p>

<p>
Working from the area, at least when the network was working, was also
very nice. I could fetch the kids from daycare/school easily and then
continue to work for a bit when I came back after the kids had settled
down.
</p>

<p>
My psychiatric problems persisted. Things got a bit chaotic in a few
relationships. That's something I don't miss that much. Yes, I realize
I'm likely the chaotic culprit here, but that's just another reason
not to miss it!
</p>

<p>
Funny story that perhaps says something about the mood in Area 41: I
remember once when I was upstairs working on restoring a Sun Ultra 1
workstation. A party was just getting interesting downstairs. Suddenly
an unknown, very cute young woman was standing next to me, looking
over my shoulder. She said "I was told to bring this beer to the
weirdo upstairs" and handed me a beer, hugged me and left. "That was
strange", I thought, but continued working on the Sun. And drank the
beer.
</p>

<p>
After a while a cute young man did the same thing: came up with a
beer, said something funny, hugged me (or perhaps even kissed me?),
and left.
</p>

<p>
This repeated a couple of times more until I got the message and went
down to the party, by this time starting to become a little
inebriated. Mission accomplished!
</p>

<p>
Area 41 lasted until 2002. I moved in with my girlfriend Petra, later
my wife. The area ended with a bang:
</p>


<figure id="org5a88dec">
<img src="static/images/area41-welcome.jpg" alt="Drawing of an Alien in a t-shirt holding a card saying &quot;Area 41 1998-10-01--2002-10-01. Funeral at 20:00 2002-09-20&quot; and unerneat &quot;All visitors are welcome&quot;. The background is a mix of psychedelic colours.">

<figcaption><span class="figure-number">Figure 5: </span>The invitation card to the last party in Area 41.</figcaption>
</figure>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Prickle-Prickle, the 57 day of The Aftermath in the YOLD 3190 (<time datetime="2024-12-15">2024-12-15</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/living-together.html</link>
  <guid>https://hack.org/~mc/blog/living-together.html</guid>
  <pubDate>Sun, 15 Dec 2024 10:38:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[The Uniform]]></title>
  <description><![CDATA[<p>
This is based on a story I wrote during upper-secondary school, which
in turn was based on real events. I translated it recently from
Swedish and edited it. I removed most (all?) elements of fiction.
</p>

<p>
Not a typical night, since it's at an event in another city, two train
stops away, but it gives a taste of what partying in Sweden in, say,
1989(?) was like, at least in my crowd. I was maybe 17 or 18.
</p>

<p>
Yes, I really usually drank two bottles of wine during a pre-party in
those days. Not unusual among the people I was hanging out with, I'm
afraid.
</p>

<p>
—  —  —  
</p>

<p>
I was finally going to read my slightly romantic-futuristic cyberpunk
spoken word on a stage! Not the biggest event and in an even smaller
city than I lived in, but hey, it was the first time.
</p>

<p>
My friends Nisse and Jens had arranged the event. They met me at the
Härnösand train station and we went to look at the venue. Good
arrangement: stage, large area in front, stairs and then, somewhat
surprisingly for an event aimed squarely at teenagers, a full-stocked
<i>bar</i>.
</p>

<p>
The owner was running all over the place, close to hysterics. "Dammit!
Fucking bureaucracy. And the police, too!". The police had been there
and tried to stop the event. No age limit and serving alcohol! A lot
of upset parents had called The Big, Ugly Authority and had opinions
about the alleged seduction of youth. The owner solved the entire
thing by scribbling "DRUG-FREE" on the posters outside. Drug-free? I
don't think so. He still intended to have a bar.
</p>

<p>
To break the drug-free tradition we went to a preparty. I hardly knew
anyone. A lot of people. Maybe even upper class. They seemed to have
cozied up in someone's big villa. No parents.
</p>

<p>
Even the driest desert has its oasis; I met some troskyist girls
sitting in a corner, singing old anti-fascist songs. I sat down.
Opened one of the wine bottles I brought. And down it went.
</p>

<p>
We spoke about socialism, a united front, et cetera. In the back of my
head: thoughts about Trotsky's Red Army and how they expressed their
gratitude to Makhno's anarchists: BANG, BANG, BANG! But these were
<i>girls</i>! You have to sacrifice something sometimes.
</p>

<p>
Two wine bottles inside of me later: We prepared to leave. One of the
girls, a tall blonde with blue eyes, sang a piece by The Human League:
</p>

<p>
"Don't, don't you want me?"
</p>

<p>
"Of course I do!", I said and watched her with lustful eyes. I
imagined I looked like a starving wolf by now.
</p>

<p>
She met my eyes and asked if we could bike together to the event on
her bike. She didn't think she could handle it, as intoxicated as she
was. Like I wasn't intoxicated! But I took her on the bike. Of course
I did.
</p>

<p>
We found our way to the event. We lost our way at least twice and
giggled a lot. Parked the bike outside and was immediately stopped by
a guard at the entrace when we tried to enter the place.
</p>

<p>
"Who do you think you are? Shouldn't you pay first?"
</p>

<p>
"Uh&#x2026; I'm on the stage tonight", I reply completely unprepared for
this.
</p>

<p>
"Oh yeah? What's your name?"
</p>

<p>
"I'm MC."
</p>

<p>
"OK, you can go in. What about her?"
</p>

<p>
"She's with me.", I said and didn't wait any longer. We just went in.
</p>

<p>
When we were inside she revealed a bottle of vodka that she had hidden
somewhere. She signed to me to follow and pouted her lips. Nice girl.
Very considerate. Thinks of everything. Then she went in to the
ladies' room. The ladies' room!? WTF? How&#x2026; What&#x2026; Am I supposed to
follow her?
</p>

<p>
I went in. Some of the women inside were shocked. "What the fuck are
you doing here!? Get out!".
</p>

<p>
"No, he's with me. We won't be disturbing you long.", said my saviour,
my angel, my girl.
</p>

<p>
She gave me the bottle. Asked me to hold on to it for a while, went
into one of the stalls and locked the door. I was standing with an
illegal bottle of alcohol, at an event for teenagers, as the only male
in a ladies' room in Härnösand.
</p>

<p>
A girl in a uniform jacket came in. I thought it was maybe a Swedish
Navy jacket. She looked dominant. Beautiful. Amazing.
</p>

<p>
"Hello! What are <i>you</i> doing here?", she laughed.
</p>

<p>
"It's a worn out line by now. I've been here a while. My lady friend
owns this bottle, but she's busy in there right now", I said and
indicated the stall door. I took a sip and offered her one, too.
</p>

<p>
She drank and gave the bottle back just as my girl came out from using
the toilet. My girl introduced the uniform as M, a libertarian. First
trotskyists, now libertarians. Only extremes tonight.
</p>

<p>
"Can I perhaps suggest a union between the left and the right on this
side of the Nolan chart?" I asked M.
</p>

<p>
"Anarchist", said my girl and indicated me.
</p>

<p>
"Perhaps even Antichrist", said M and winked.
</p>

<p>
"Maybe."
</p>

<p>
Suddenly I'm sitting on the counter in front of the cloakroom. On the
other side of the counter I saw friends volunteering for cloak duty.
They were really working for their free tickets! Myself, I just sat
there on the counter in the lotus position, looking into M's eyes. She
sat in front of me in the same position. Our knees were touching.
</p>

<p>
An exchange had happened. Either it was me who changed girl or it was
the girls who changed boy. I had no memory of the event. We just sat
there and looked into each others eyes. Then we jumped down from the
bench and walked out together.
</p>

<p>
We sat on a bench outside, in front of a parking lot. We kissed.
</p>

<p>
"Let's not talk politics. I don't think that would work.", she said.
</p>

<p>
Who the hell can even think about politics in this situation? I didn't
plan on saying a word, just to act. Direct action. That's my motto.
Even in politics, but above all when it comes to matters of love. The
nature of my love (or lust, I suppose) is spontaneous and direct.
</p>

<p>
Eventually, we walked back to the venue. Everyone seemed to have
forgotten about my poetry reading, even me. We sat down at a table at
the bar and ordered beer. Remember, drug-free, right!?
</p>

<p>
Some of M's friends came over and dragged her away. I waited with a
beer. Waited a long time. The beer bottles kept piling up. Did she
abondon me? I finished the last beer and went to find the woman I
desired.
</p>

<p>
I looked for a long time but I finally found her. She looked sad but
refused to explain why. Then she suddenly, silenty, went out from the
venue. I followed like a sad dog.
</p>

<p>
Outside, she explained that her friends had reminded her of&#x2026; her
boyfriend. And that I was tempting her to be unfaithful. She felt
guilty. I felt guilty. She, inexplicably, said "Good luck!" and then
went home.
</p>

<p>
In my misery I sat on the street outside the event. One much desired
woman missing. What was I even doing here?
</p>

<p>
Then, out of nowhere, Desired Woman #1 approached. My girl. The one
who I exchanged or, well, who perhaps exchanged me. Against what? She
sat down.
</p>

<p>
"Do you know who Alexander is?"
</p>

<p>
"No, don't know him".
</p>

<p>
"Of course, you're not from Härnösand."
</p>

<p>
"Correct."
</p>

<p>
Things were just getting worse. What was this about?
</p>

<p>
"He's so beautiful, so perfect. Blonde, very high cheekbones."
</p>

<p>
"And?", I ask, and became suddenly very uninterested in hearing much
more about this. Where did she want to go with all this?
</p>

<p>
"He's going home soon."
</p>

<p>
"Home? Wasn't he living here?"
</p>

<p>
"Well&#x2026; He's an exchange student."
</p>

<p>
This was really going to far. First, M disappeared, which I sort of
understand, even if I didn't approve. Then this. I got to my feet and
left girl #1 to her love problems and tried to find my way to my
lodgings.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Boomtime, the 55 day of The Aftermath in the YOLD 3190 (<time datetime="2024-12-13">2024-12-13</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/the-uniform.html</link>
  <guid>https://hack.org/~mc/blog/the-uniform.html</guid>
  <pubDate>Fri, 13 Dec 2024 14:44:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[sec-t 2024]]></title>
  <description><![CDATA[<p>
This has been in my draft folder since September. Sorry! It's been a
few months with ups and downs, mostly downs. Energy to spend time on
blogging has been low. Hell, energy to do much of anything has been
low. I'm trying to clean out the drafts folder and will post more
stuff.
</p>

<p>
—  —  — 
</p>

<p>
I attended the security conference <a href="https://www.sec-t.org/">sec-t 2024</a> in Stockholm the other
week. I held a presentation during the Community Event, Wednesday
September 11: "Verifying the Tillitis TKey".
</p>

<blockquote>
<p>
The TKey uses a novel way of helping guarantee hardware supply chain
security to the end-user. During the end-phase of production we at
Tillitis run a device app, where the TKey automatically creates a
unique identity inspired by TCG DICE and then sign and publish data
about this identity. The identity and the signature can be
independently verified at any time by a user to help verify that the
TKey hasn't been tampered with.
</p>
</blockquote>

<p>
Here's the repo to the tool we use during signing and that users can
use for verification:
</p>

<p>
<a href="https://github.com/tillitis/tkey-verification/">https://github.com/tillitis/tkey-verification/</a>
</p>

<p>
As always, it's open source.
</p>

<p>
A recording of my talk is available on Youtube:
</p>

<p>
<a href="https://www.youtube.com/watch?v=qWjj-yoz90M">https://www.youtube.com/watch?v=qWjj-yoz90M</a>
</p>

<p>
You should also go watch my friend Joel's very nice talk "Demystifying
confidential computing":
</p>

<p>
<a href="https://www.youtube.com/watch?v=vdj9Pr-6dq8">https://www.youtube.com/watch?v=vdj9Pr-6dq8</a>
</p>

<p>
He very skillfully read up on all these technologies so you won't have
to wade through all the marketing bullshit. Thanks, Joel!
</p>

<p>
Sorry about the Youtube links, but sec-t doesn't provide any other
media archive. Can't they use <a href="https://media.ccc.de/">https://media.ccc.de/</a> like everyone
else? I don't know.
</p>

<p>
Incidentally, it seems I can't watch Youtube from my workstation at
home anymore: "Sign in to prove you're not a bot". Ha! Like I would
sign in to Youtube!? It's probably good for me not to be able to get
stuck in Youtube at the moment anyway.
</p>

<p>
I was incredibly nervous before and during my talk to the point of
stuttering, restarting sentences, and sometimes even mangling words,
but did the presentation without script in front of my biggest
audience so far. 1250+ tickets sold, but this was during the Community
Day which was open to the public. Also livestreamed. Aaaaaah! All in
all, it went better than expected. And I think I need this.
</p>

<p>
My friend Caitlin watched my talk. She said these sweet words:
</p>

<blockquote>
<p>
I like your erudition combined with silliness! Everything in tech
doesn't have to be so fucking butch - like a toxic masculitinity
parade! I, like you, remember when tech was just so damned weird and
fun.
</p>
</blockquote>

<p>
Yes! More weirdness! More fun! More silliness!
</p>

<p>
In infosec there's a special kind of tech bro who likes to flex
association with government agencies. And, oh boy, there were a lot of
agencies at sec-t. I hadn't realized just how much. There were booths
from the Security Service SÄPO, the Swedish sigint agency FRA, the
Swedish military intelligence service MUST, et cetera, et cetera.
</p>

<p>
I stayed at the rather fancy Hotel Rival. sec-t even paid for it! Not
used to that. They had booked me in a Superior room but I was upgraded
to a Deluxe Balcony room. Very nice. I now also know what "Turndown
Service" means. A strange service. I asked them to please skip my
room.
</p>

<p>
Very nice breakfast at Rival, even for a picky, allergic vegan like
me. The bar also made quite nice cocktails.
</p>

<p>
I attended sec-t's Thursday night party for just a couple of hours.
Instead me and two friends brought some Security Service merch to the
libertarian Frihetsfronten's monthly pub meeting. Frihetsfronten used
to be under surveillance from the Security Service way back when. Got
a lot of giggles. They're not my kind of anarchists, really, but
usually fun to hang out with. Remember Tritnaha and Docklands? Yeah.
</p>

<p>
Spoke to some very nice and interesting people both backstage and
while milling around at sec-t. The speaker's dinner was a very nice
touch.
</p>

<p>
Of course the train home was slightly late, but that was OK. My boss
had it much worse going Stockholm-Gothenburg, what with all the
repairs going on on the tracks.
</p>

<p>
Let's see if I'm welcome back as a speaker at future sec-t
conferences.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Boomtime, the 55 day of The Aftermath in the YOLD 3190 (<time datetime="2024-12-13">2024-12-13</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/sec-t.html</link>
  <guid>https://hack.org/~mc/blog/sec-t.html</guid>
  <pubDate>Fri, 13 Dec 2024 14:18:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[Experiment in Digital minimalism]]></title>
  <description><![CDATA[<p>
I recently read Cal Newport's book <i>Digital Minimalism</i>. It really
resonated with me, despite (or because of?) being glued to my computer
many hours of the day.
</p>

<p>
Cal suggests a month of digital decluttering, at first cutting off
everything that your job and other obligations don't depend on. At the
end of the month you evaluate what, if anything, is to be let back
inside.
</p>

<p>
I did a decluttering plan for April. It ended up being an ongoing
project when I'm writing this in June.
</p>
<div id="outline-container-org23c2254" class="outline-2">
<h2 id="org23c2254">My decluttering plan</h2>
<div class="outline-text-2" id="text-org23c2254">
<p>
I'm the first to admit that my decluttering isn't very complete and
that I allow myself a lot of leeway. Some people almost ditch all
Internet communications during their decluttering month. I didn't do
that. That was maybe a mistake? Maybe I will have another go and make
it a more complete cutoff.
</p>
</div>
<div id="outline-container-org612b746" class="outline-3">
<h3 id="org612b746">Mail</h3>
<div class="outline-text-3" id="text-org612b746">
<ul class="org-ul">
<li>Stop using mail notifications. Up to now I used a scheduled fetching
of e-mail and updated my Emacs mode line to tell me how many unread
I have in my main inbox after applying filters. I turned it off.</li>

<li>Schedule dealing with mail.</li>
</ul>
</div>
</div>
<div id="outline-container-org24ec27b" class="outline-3">
<h3 id="org24ec27b">IM and chat</h3>
<div class="outline-text-3" id="text-org24ec27b">
<ul class="org-ul">
<li>Start a profile (mostly family) in Signal to stop all notifications
from people outside that circle.</li>
<li>Schedule reading of messages from other people, and especially
messages to Signal groups.</li>
<li>Leave all XMPP MUCs.</li>
<li>Use XMPP only for direct messages.</li>
<li>Keep using the private IRC server and the channel with my closest
hacker friends. Schedule my participation to mornings and
afternoons. This typically means I detach the tmux with the IRC
client. Drop other IRC networks completely.</li>
<li>Use IRC/Matrix at work with scheduled participation.</li>
<li>Use Slack only at work. Use less channels and mostly use it for
direct messages. Try scheduling participation.</li>
</ul>
</div>
</div>
<div id="outline-container-org28025cd" class="outline-3">
<h3 id="org28025cd">Phone</h3>
<div class="outline-text-3" id="text-org28025cd">
<ul class="org-ul">
<li>Turn off sound. Only use vibrating notifications and a blinking LED.
Work phone still has sound.</li>
<li>Keep the phone turned off during some of the day.</li>
<li>Keep work and personal phone in another room when working.</li>
</ul>

<p>
Note that I don't usually get any phone calls or SMS, usually it's
just Signal or XMPP.
</p>
</div>
</div>
<div id="outline-container-orgbb72733" class="outline-3">
<h3 id="orgbb72733">"Social" "Media"</h3>
<div class="outline-text-3" id="text-orgbb72733">
<p>
Pause Facebook and Fedi completely.
</p>
</div>
</div>
<div id="outline-container-orgbd5b954" class="outline-3">
<h3 id="orgbd5b954">Youtube</h3>
<div class="outline-text-3" id="text-orgbd5b954">
<ul class="org-ul">
<li>Youtube Shorts: Total pause.</li>
<li>Youtube in general: Careful. Only watch one clip after thinking
about it. Don't be tempted to continue watching others. Exception:
Music mix playlists.</li>
</ul>
</div>
</div>
<div id="outline-container-org71b4172" class="outline-3">
<h3 id="org71b4172">Blogs</h3>
<div class="outline-text-3" id="text-org71b4172">
<ul class="org-ul">
<li>Blogs: Keep only web comics and very few other blogs on phone.</li>
<li>Move rest (over 100!) to Elfeed on my hackerstation. Read in
scheduled batches.</li>
</ul>
</div>
</div>
<div id="outline-container-orgfde8876" class="outline-3">
<h3 id="orgfde8876">News</h3>
<div class="outline-text-3" id="text-orgfde8876">
<ul class="org-ul">
<li><p>
Read only one newspaper, and read it only once per day, typically
over morning coffee.
</p>

<p>
Instead of reading on <a href="https://www.dn.se/">DN's</a> constantly updated web page, I decided to
read it on their "e-paper" site, which gives me the choice to read
in PDF or individual articles, but updated only once a day.
</p>

<p>
Reading like this makes it obvious when I've come to the end of the
paper, instead of the web page, which <i>might</i> have updates on it
every time I visit, usually <i>many</i> times over the day.
</p></li>

<li>No TV news whatsoever.</li>
</ul>
</div>
</div>
</div>
<div id="outline-container-orgd2eff24" class="outline-2">
<h2 id="orgd2eff24">Conclusions</h2>
<div class="outline-text-2" id="text-orgd2eff24">
<p>
The phone plan in particular did wonders, especially filtering
notifications in Signal. I'm not distracted by notifications all the
time any more.
</p>

<p>
Having the phone notifications and sound turned off unfortunately
meant I missed a few calls from health professionals I really didn't
want to miss. Dammit. And, of course, they always call from some
unknown or hidden number so I can't easily add them to any filter even
if I wanted to.
</p>

<p>
I don't get much mail these days, so removing my notification didn't
make much difference, I think. I had problems with the scheduling,
though. I kept checking for e-mail manually again and again. Not sure
how to keep that to scheduled times. Perhaps it's just easier to have
a silent notification for the main mailbox anyway.
</p>

<p>
I dropped Matrix at work and only used the bridged OFTC IRC channel
#tillitis. Scheduled to check a few times a day. That, unfortunately,
made me lose attempts to contact me directly over Matrix, so I had to
start running a Matrix client again.
</p>

<p>
Slack is still a problem. I use it mostly for direct messages and
that's a big change compared to <a href="https://basecamp.com/guides/group-chat-problems">the all-day meeting</a>. I'm trying to
keep my work messages to Github issues, PRs, and comments, but as you
know it takes two to tango.
</p>

<p>
Like I said in the last status post, I'm thinking about turning off my
XMPP server. Traffic is close to zero. Even presence traffic, the main
complaint by some people against XMPP, is mostly silent! I think most
people running XMPP clients these days just connect and not change
their presence during the entire session.
</p>

<p>
XMPP is mostly me chatting with some friends sometimes. Friends I also
have other ways of reaching.
</p>

<p>
One thing, though, is that my cottage surveillance bot reaches me over
XMPP. I'll have to do that differently. Perhaps considering sending
&lowast;shock&lowast; &lowast;horror&lowast; SMS!? Or maybe it's just an IRC bot? &lowast;phew&lowast;
</p>

<p>
I decided to transfer my XMPP traffic to another server: I'm now back
on <b>mc</b> at <b>lysator.liu.se</b> for XMPP. My own server will probably be
turned off soon. It might resurface later, perhaps, but then in
another shape.
</p>

<p>
I also uninstalled the XMPP client on my phone. Still thinking about
that. I would like an easy way to transfer links to interesting
articles between my computer and my phone and I used XMPP for that
earlier. Perhaps I should just try SyncThing on a text file or
something?
</p>

<p>
During the month I started using <a href="https://simplex.chat/">SimpleX chat</a>. That complicated things
a little. The mobile app can't filter notifications and they can't be
turned off globally.
</p>

<p>
I'm also running the CLI client, but that's another session, not
shared with the mobile client. I'm part of a few channels, but I'm
thinking about leaving them at least on the mobile identity. It's just
too much.
</p>

<p>
I was succesful in not logging in to Facebook or my Fedi instance
hackers.town. Facebook is mostly for my historical fencing club
anyway, and I was unable to attend at all for two month, so that
didn't matter much.
</p>

<p>
Avoiding TV news was easy. I don't have a regular TV and I'm not in
the habit of watching TV at all.
</p>

<p>
The blogs plan worked. I've scheduled reads in Elfeed and it's a bit
overwhelming at times with more than a 100 subscriptions. I should
probably try to weed out things from my subscriptions. I really,
really like blogs, but it's been a burden lately.
</p>

<p>
Written News&#x2026; didn't work so well. Kept coming back to reading the
web sites of several newspapers again and again during the day. I've
tried harder to just keep to the e-paper edition and lately it's been
working better, I think.
</p>
</div>
</div>
<div id="outline-container-org82393e8" class="outline-2">
<h2 id="org82393e8">Next step</h2>
<div class="outline-text-2" id="text-org82393e8">
<p>
Maybe a more complete decluttering? What would that look like?
</p>

<p>
For a month, perhaps during my vacation so it doesn't affect work
much, stop using:
</p>

<ul class="org-ul">
<li>Personal mail.</li>
<li>XMPP.</li>
<li>IRC. Just the private server, remember?</li>
<li>SimpleX.</li>
<li>Signal? Oooh, hard one, especially for family and close friends.
I'll have to warn them to reach me some other way. Perhaps
temporarily moving my SIM card to a feature phone and use that?
Whoa! Scary to have to take calls!</li>
<li>Slack? If this is a vacation that won't be hard for most of it.</li>
<li>Blogs. At least reading. Writing is probably OK.</li>
<li>Newspapers.</li>
<li>Youtube.</li>
</ul>

<p>
I'll think about it. Vacation is coming up!
</p>
</div>
</div>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Setting Orange, the 24 day of Confusion in the YOLD 3190 (<time datetime="2024-06-19">2024-06-19</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/digital-minimalism.html</link>
  <guid>https://hack.org/~mc/blog/digital-minimalism.html</guid>
  <pubDate>Wed, 19 Jun 2024 00:24:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Status 2024-06-08]]></title>
  <description><![CDATA[<p>
Evening, hackers! I feel a column coming on!
</p>

<p>
TL;DR: In which we learn about the EU parliament election, some
ruminations about the death of XMPP, MC's flat being without drains
for two months, a visit at the Lund Linux Conference, another at the
Security Fest conference, fighting against a Supermicro server, and
some other recent shenanigans,
</p>
<div id="outline-container-org66078b2" class="outline-2">
<h2 id="org66078b2">Introduction</h2>
<div class="outline-text-2" id="text-org66078b2">
<p>
I voted today. Yes, I know. The EU is still a strange marvel of
high-functioning bureaucracy and not the federated worker's Union of
Europe we all would like it to be. But what can you do? Make it more
democratic? Insist on combined civics and small arms education in
schools? Insist on more economic democracy? Yes, please, all of that.
But, today I voted. A small step on the way.
</p>

<p>
Of course, there was nobody I actually would like to vote for, but I
did it anyway. As a friend said when we had lunch today: "In Serbia
you vote for the lesser evil."
</p>

<p>
I'm back at home in the flat. Two conferences in two weeks, first Lund
Linux Conference, then an entire week in Gothenburg, finishing with
the Security Fest, then a three-day-week because of the National Day.
</p>

<p>
Summer vacation is coming up. I've been incredible nervous and angsty
about it. I have to decide when I would like to have vacation!
Stressful. Of course I want to have a vacation&#x2026; but to have to
<i>decide</i> isn't that easy for me. Most important, of course, is the
time off when we're going to Venice in the autumn for the Venice
marathon, P's 10th full marathon, and her birthday celebration.
</p>

<p>
After all that I needed some relaxation, so I reread the entire
<i>Transmetropolitan</i>. Again. And the latest of the new Ken MacLeod
trilogy: <i>Beyond the light horizon</i>. New book from Ken: Priority
fucking interrupt!
</p>

<p>
At about the same time #3 had found some sticker paper and made a
sticker with original art for me. I indicated the three-eyed smiley in
<i>Transmet</i> and in a couple of minutes had one of those, too!
</p>

<p>
It's also the end of the semester for the graduating classes of the
secondary schools around here. This means a lot of wreckless driving,
honking, and blowing whistles outside my flat.
</p>

<p>
They dole out the final day of school for the schools every day for
two weeks to avoid total traffic chaos. That's probably a good thing
but it also means I have to stand the noise and the constant worry for
traffic accidents for two weeks.
</p>
</div>
</div>
<div id="outline-container-orgf71a455" class="outline-2">
<h2 id="orgf71a455">Leaving XMPP?</h2>
<div class="outline-text-2" id="text-orgf71a455">
<p>
I stopped connecting to my own XMPP server. I'm probably shutting it
down soon, but not sure yet&#x2026; For now I'm reachable with XMPP at <b>mc</b>
(at) <b>lysator.liu.se</b>. OMEMO fingerprints and stuff on
<a href="https://hack.org/mc/contact/">https://hack.org/mc/contact/</a> as usual.
</p>

<p>
I'm considering leaving XMPP altogether, but I'm still thinking about
it. I really like the late night chat sessions I have with some of
you, of course. It's like olden times, when chat used to be a more
synchronous affair.
</p>

<p>
And what's the replacement? IRC? Yeah, sure, but I'm mostly on a
private IRC server these days and not on any of the IRC networks
except OFTC for work on the #tillitis channel bridged to Matrix.
</p>

<p>
I'm not that into group chats anymore, really. Yeah, I'm still on some
Signal groups, of course, but mostly for synchronizing meetups.
</p>

<p>
Matrix? Hahahaaha. Yeah, alright, Matrix actually fixed the net.splits
with its really cool eventually-consistent distributed database. I
also really like the idea of cross-signing, so you don't have to trust
all of someone's clients directly, like in OMEMO. But hey, what kind
of client can I use in a terminal (or Emacs) that actually support it?
I've been using <a href="https://github.com/tulir/gomuks">gomuks</a> but it's quite buggy. <a href="https://github.com/alphapapa/ement.el">Ement.el</a> is also buggy,
doesn't offer any OMEMO at all and the integration with <a href="https://github.com/matrix-org/pantalaimon/">Pantalaimon</a>
is&#x2026; not working very good.
</p>

<p>
<a href="https://simplex.chat/">SimpleX</a> seems nice. Looked into the protocol a bit and I like the
security thinking. I have two clients running, one on a phone and the
CLI client on a laptop. The CLI looks promising with its Websocket
option. Perhaps I can help work on an Emacs frontend?
</p>

<p>
Yeah, I'm confused alright. Don't know where this will end up.
Suggestions?
</p>
</div>
</div>
<div id="outline-container-org5d72637" class="outline-2">
<h2 id="org5d72637">hack.org: The Next Generation</h2>
<div class="outline-text-2" id="text-org5d72637">
<p>
I have a used 1U Supermicro on my work desk. It's hack.org:TNG: The
new main server for hack.org. The old main server has been complaining
about memory errors for a while and it's from at least 2011. My <a href="https://31173.se/">very
understanding co-lo provider</a> also lets me keep a tower server there,
but would obviously like it if I changed to a proper 1U server in a
rack instead.
</p>

<p>
The new 1U box now has four spinners attached with SATA. Strangely,
they don't show up in the firmware settings!
</p>

<p>
I have rebooted the box more times than I care to remember. One of the
two SATA controllers on the motherboard might be broken.
</p>

<p>
I might have to investigate how to use the built-in hardware RAID
controller in FreeBSD, if at all possible.
</p>

<p>
I'm a bit slow in even exploring this. So&#x2026; Tired&#x2026; of all hardware
problems. Why don't we just emulate it in Lisp!?
</p>
</div>
</div>
<div id="outline-container-org4a05b0f" class="outline-2">
<h2 id="org4a05b0f">Missing drains, two months in the cottage</h2>
<div class="outline-text-2" id="text-org4a05b0f">
<p>
We've had some adventures with the drains in the flat.
</p>

<p>
First our landlord said they were going to do relining of the pipes.
It would take one week. They would put temporary toilets and showers
in our yard. Wait, we have a yard!? Turns out if you go to the next
entrance over and up a stair you can actually get into something
looking a lot like&#x2026; someone's roof. That's what they call the yard.
They have airdropped some wagons there with showers, toilets, and
stuff. They also offered a composting toilet to everyone to keep in
their flats for emergencies.
</p>

<p>
OK, fine.
</p>

<p>
Suddenly they sent a message saying it would be two weeks instead of
one. OK, whatever, we thought, and planned to move to the cottage for
the duration. #3 would have to commute to school, 120 km each day.
Sucks, but it's doable.
</p>

<p>
Seven weeks later we were still in the cottage!!!
</p>

<p>
A week after that we had moved back to the flat but there were gaping
holes in a lot of walls. They had to come around during daytime while
I was working and fix the holes.
</p>

<p>
Yeah, OK, I get it. A house from 1938, with nothing having been done
to the pipes since then&#x2026; Yeah. Like that. So, of course a simple
relining wouldn't do it. They had to actually put in new pipes in at
least a couple of places.
</p>

<p>
One of our toilets is still not working because of some fuckup, but at
least we have working drains now.
</p>
</div>
</div>
<div id="outline-container-org7a3a55b" class="outline-2">
<h2 id="org7a3a55b">Lund Linux Con</h2>
<div class="outline-text-2" id="text-org7a3a55b">
<p>
<a href="https://www.lundlinuxcon.org/">Lund Linux Conference</a> is a small invite-only conference in the
neighbouring town of Lund. Perhaps 300 people showed up. The focus is
mostly the Linux <i>kernel</i> itself: scheduler, drivers, filesystems,
eBPF, that sort of thing, but also the tools used to build, debug, and
verify all of this. Talks about about hardware archictecture and other
things close to the metal are also welcome.
</p>

<p>
Last year at LLC <a href="https://kristerw.github.io/">Krister Walfridson</a> introduced us to Frama-C, a way of
formally verifiying C code. This year, <a href="https://who.paris.inria.fr/Julia.Lawall/">Julia Lawall</a> told us about how
she and one of her students had used Frama-C to formally verify parts
of the Linux kernel!!!11eleven
</p>

<p>
My friend <a href="https://www.dflund.se/~triad/">Linus Walleij</a> held a talk about the new <a href="https://developer.arm.com/-/media/%20Arm%20Developer%20Community/PDF/Arm_Memory_Tagging_Extension_Whitepaper.pdf">Memory Tagging
Extension (MTE)</a> (PDF white paper) in ARM v8.5A which you can use to
keep track of allocated memory, so you're not freeing the wrong thing,
for instance trying to free unallocated memory. It's just four bits
and not something like the hardware capability bits in the likes of
CHERI and ARM's Morello, but it's much better than nothing.
</p>

<p>
I didn't sign up for the social event, because I didn't think they
could manage any food for me. Vegan with strange allergies, remember?
I thought I'd tag along for a beer or something. Then the rain started
pouring down. I took refuge in another pub with some of the others. We
talked for a pint or so. Then I took the train back to Malmö,
thoroughly wet.
</p>
</div>
</div>
<div id="outline-container-orgf52699d" class="outline-2">
<h2 id="orgf52699d">Security Fest</h2>
<div class="outline-text-2" id="text-orgf52699d">
<p>
<a href="https://securityfest.com/">Security Fest</a> is a yearly security conference in Gothenburg. This time
the venue was the Park Avenue hotel where I also lived the entire
week. The entire company, all three of us, were there on May 30, 31.
</p>

<p>
We didn't present at Security Fest. Instead we were mostly manning the
Tillitis booth. At first we were quite bothered that we didn't get our
booth where all the other people were. Instead, we got a room of our
own! There was supposed to be some lockpicking thing there as well,
but they had had to cancel.
</p>

<p>
Instead, they eventually decided to put the bar in our room! Good
idea! They also put the soldering workshop where you could solder on
your electronic badge in the same room. Altogether, this meant we
had people at our table almost all the time!
</p>

<p>
We had this idea that me and dehanj would do some live pair
programming on one of our projects, but since we had people talking to
us most of the time, that turned impossible. Not that I'm complaining.
We sold out all the TKeys we brought and had many interesting conversations.
</p>

<p>
The catering managed to get me food during lunch! I was very happy
about that.
</p>

<p>
There was an official dinner and party on the first day. Catering sort
of forgot about me this time! After a while I got a small slider
(those mini burgers). I couldn't even eat anything from the salad
buffet. That wasn't good, but I managed.
</p>

<p>
A lot of us went to an unofficial afterparty late that evening. I
didn't get back to the hotel until 4 am.
</p>

<p>
I was a little tired on the second day after something like five hours
of sleep, but not too hungover. Apparently, it seems i don't have to
buy beers anymore? "You're MC, right? Want a beer?" Ha!
</p>

<p>
I watched only 1.5 talks during the conference, first about half of
the keynote until I couldn't take it anymore, then, much later an
interesting talk about the Polish electronic ID. Considering what we
do at dayjob we just had to listen to that one, right?
</p>

<p>
The loot from Security Fest included no less than six Snom IP
telephones and DIY kit of the original <a href="https://shop.mntre.com/products/mnt-reform">MNT Reform ARM laptop</a>. I gave
away three of the phones to better homes. I will probably give away
the others, too, to include some more people in my little telephone
network. As you know, I'm fighting a slight phone phobia. What better
way to fight it than immersive yourself in phone tech?
</p>

<p>
Before the conference I was holed up at the office and doing stuff to
our attempt at an automatic production line. That worked out alright,
I think.
</p>

<p>
The three-eyed-smiley I got from #3 will probably end up being the
first sticker on the MNT Reform, as soon as I've assembled it.
</p>

<p class="verse">
Until next time,<br>
MC<br>
</p>
</div>
</div>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Prickle-Prickle, the 13 day of Confusion in the YOLD 3190 (<time datetime="2024-06-08">2024-06-08</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/2024-06-08.html</link>
  <guid>https://hack.org/~mc/blog/2024-06-08.html</guid>
  <pubDate>Sat, 08 Jun 2024 23:47:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Dream Setup]]></title>
  <description><![CDATA[<p>
I love Daniel Bogan's <a href="https://usesthis.com/">Uses This</a> blog, even though it seems a bit Apple
heavy at times. People sharing what tools, both hardware and software,
that work for them is very helpful. A lot of things I never knew
about came from this or similar sites, or just people's own home pages
copying Uses This' questions and giving their own answers.
</p>

<p>
I love to see photos of people's setup, like Reddit's
<a href="https://www.reddit.com/r/battlestations/">/r/battlestations</a> or the incredibly detailed interviews at <a href="https://www.makerstations.io/">Maker
Stations</a>. Not just pictures of the hardware, of course, but their
desks, chairs, and offices. So much to be inspired by!
</p>

<p>
Just following along on Fedi and in my chat groups also gives me the
same ideas, sometimes. Since I'm sort of giving up on "social" "media"
this is probably what I will miss the most, but I guess talking with
friends about what they use will still keep me in the loop of new
developments.
</p>

<p>
I keep my own version of something like this at <a href="https://hack.org/mc/computers.html">Computers I have known
and loved</a>, but that page also has an historical aspect, like you
probably expect from me.
</p>

<p>
One part I don't cover in "Computers I have known and loved" is the
Dream setup part of Uses This. So here it is&#x2026;
</p>
<div id="outline-container-org3a24278" class="outline-2">
<h2 id="org3a24278">What would be your dream setup?</h2>
<div class="outline-text-2" id="text-org3a24278">

<figure id="org20f4670">
<img src="https://hack.org/mc/images/desk-20230728.jpg" alt="A white desk with a red phone, a black trackball, black small keyboard with blank keycaps, a 24&quot; monitor showing a fullscreen Emacs, headphones. Under the table is a black tower computer standing on a wooden floor.">

<figcaption><span class="figure-number">Figure 1: </span>Current setup.</figcaption>
</figure>

<p>
TL;DR: I would like to a have completely open source and open
hardware, quiet (even fanless?) laptop with great, environmentally
friendly, easily replacable batteries, using a capabilities enhanced
RISC-V CPU with unconditonal measurement at boot running a modern open
source Lisp OS with an Emacs-like feel to the UI, with a great network
file system with offline capabilities. An alternative is that the
laptop is just a terminal.
</p>

<p>
I will probably mostly keep the laptop attached to a totally square
monitor on a gas arm, a split ortho keyboard, and a fancy low-profile
trackball, but it is still important that the laptop is small and
light for travel.
</p>
</div>
<div id="outline-container-org7e3a68c" class="outline-3">
<h3 id="org7e3a68c">OS and environment</h3>
<div class="outline-text-3" id="text-org7e3a68c">

<figure id="org452f6f9">
<img src="static/images/acme-screenshot.png" alt="Screenshot of a Acme window. The window is divided into several columns with panes containing black text on a beige background.">

<figcaption><span class="figure-number">Figure 2: </span>Screenshot of Acme.</figcaption>
</figure>

<p>
Many years ago I used Plan 9 at work. I still miss some of the
features, chief of which was the sense that everything was a
filesystem, and that all my files where available everywhere. Acme was
cool, too, but I did miss Emacs, even if I know it's sacrilegious to
say.
</p>

<p>
As a programmer I also appreciated the incredibly easy interface
against systems looking like filesystems, like the window system, even
a remote window system, or a remote IMAP server. It all felt
integrated, in a way, but still very unixy.
</p>

<p>
I would probably enjoy a modern version of a Lisp Machine environment
like Symbolics' Genera, or maybe a SmallTalk or Oberon OS. Maybe we
could combine them with the ease and simplicity of the Plan 9 view of
"everything is a file"? These totally integrated environments feel
like something we have lost.
</p>

<p>
Staying in Emacs all day, like I do, comes close, I suppose, but I
would like to integrate even more. Combine this with a remote always
available filesystem for my home directory, possible with offline
caching and we're really set. Or maybe the thing closest to me is just
a terminal, like in traditional Plan 9?
</p>

<p>
Of course, with a modern version of these systems I would also have
access to a modern browser and all the necessary tools for the modern
Internet.
</p>

<p>
And, also of course, everything would be open source!
</p>


<figure id="orgdb6fa13">
<img src="static/images/symbolics-3620.jpg">

<figcaption><span class="figure-number">Figure 3: </span>Symbolics 3260 computer, probably from a sales brochure.</figcaption>
</figure>


<figure id="org30189c8">
<img src="static/images/listener-zmacs.gif">

<figcaption><span class="figure-number">Figure 4: </span>Rainer Joswig running Zmacs under Symbolics Genera</figcaption>
</figure>

<p>
From <a href="https://www.ifis.uni-luebeck.de/~moeller/symbolics-info/development-environment/index.html">Prof. Dr. Ralf Möller's Symbolics pages</a>.
</p>


<figure id="org9d433b6">
<img src="static/images/oberon.png">

<figcaption><span class="figure-number">Figure 5: </span>Screenshot of Oberon.</figcaption>
</figure>

<p>
From <a href="https://people.inf.ethz.ch/wirth/ProjectOberon/">Niklaus Wirth's pages (RIP!)</a>.
</p>
</div>
</div>
<div id="outline-container-org5e52687" class="outline-3">
<h3 id="org5e52687">Input methods</h3>
<div class="outline-text-3" id="text-org5e52687">
<p>
I'm reasonably happy with my HHKBs but I've been glancing over to the
world of split keyboards for a while.
</p>


<figure id="org3937aec">
<img src="https://hack.org/mc/images/3hhkb.jpg" alt="Three 60% keyboards on a desk.">

<figcaption><span class="figure-number">Figure 6: </span>Two HHKB Pro 2 and an old HHKB.</figcaption>
</figure>

<p>
I've mostly been drooling over low profile split ortholinear keyboards
for a while, like the Corne LP 42 or the ZSA Voyager. Maybe the dream
setup should have one of those?
</p>


<figure id="orge5cb09d">
<img src="static/images/corne-lp.webp" alt="Small, split keyboard with a yellow bottom and blank black keys.">

<figcaption><span class="figure-number">Figure 7: </span>Corne LP 42.</figcaption>
</figure>

<p>
From <a href="https://www.boardsource.xyz/store/5f2efc462902de7151495057">Boardsource</a>.
</p>

<p>
I like my old CST L-Tracs but a trackball like that feels a bit high
when using a low-profile keyboard. Perhaps I should look into using a
flatter trackball like the Kensington Slimblade?
</p>


<figure id="orgaba6b25">
<img src="static/images/kensington-slimblade.jpg">

<figcaption><span class="figure-number">Figure 8: </span>Kensington Slimblade Pro.</figcaption>
</figure>

<p>
From <a href="https://www.kensington.com/p/products/electronic-control-solutions/trackball-products/slimblade-pro-trackball/">Kensington</a>.
</p>
</div>
</div>
<div id="outline-container-org1b7b4a7" class="outline-3">
<h3 id="org1b7b4a7">Monitor</h3>
<div class="outline-text-3" id="text-org1b7b4a7">
<p>
The completely square 26.5" Eizo EV2730Q (1920x1920) looks very nice
but doesn't seem to be available anymore. If Eizo would reintroduce
something like this, perhaps with a higher resolution, I would
probably buy it. There are too few square monitors around!
</p>


<figure id="orgf7b0dba">
<img src="static/images/Teenage-Engineering-Computer–1-Launch.jpg">

<figcaption><span class="figure-number">Figure 9: </span>Eizo EV2730Q with Teenage Engineering's Computer-1 case.</figcaption>
</figure>

<p>
I'm afraid the LG DualUp <i>almost</i> square monitor might be too high, at
least in default position. It might be better twisted 90 degrees.
</p>

<p>
I like to keep my monitors fastened to a gas arm for the space and
easy repositioning. I would probably do the same with this one.
</p>
</div>
</div>
<div id="outline-container-org4db48ff" class="outline-3">
<h3 id="org4db48ff">CPU and firmware</h3>
<div class="outline-text-3" id="text-org4db48ff">
<p>
I like to move away from x86 on my workstation. Maybe use RISC-V?
</p>

<p>
Of course, capabilities in hardware, something like <a href="https://www.cl.cam.ac.uk/research/security/ctsrd/cheri/">CHERI</a>, would be
nice, to stop a number of ordinary software bugs by hardware.
</p>

<p>
Considering what I <a href="https://dev.tillitis.se/">do at work</a> I would, of course, like my computer to
do some simple unconditional measurement before starting anything,
just like the <a href="https://tillitis.se/">Tillitis</a> TKey. This could be used by the OS boot loader
or the operating system itself for generating key material, for
instance to help unlock the encrypted hard disk, and for other kind of
authentication.
</p>

<p>
It would be awesome if all, or at least most, of this would be open
hardware and the firmware open source.
</p>
</div>
</div>
<div id="outline-container-org15ea0b3" class="outline-3">
<h3 id="org15ea0b3">Computer hardware</h3>
<div class="outline-text-3" id="text-org15ea0b3">
<p>
I've been using terminals for a long time, both character terminals
and X terminals. The best thing with them was&#x2026; silence! I really
dislike fan noise. If I have to listen something let me choose it
myself, like Hocico or Front Line Assembly, not fan noise. Yes, I'm
aware some people close to me consider some of my "music" to be more
or less noise, but yeah, I chose it myself.
</p>

<p>
A noiseless computer is important. If I don't have to manage it much,
just like a terminal of old, that would probably be even better.
</p>

<p>
I like the possibility to just throw my computer in a backpack and
compute from everywhere, so either my dream setup is some kind of
laptop, or I have a laptop <i>as well</i>, with very easy ways to get hold
of my home directory or connect to my Real Machine.
</p>

<p>
It would be interesting to investigate something really small like the
new <a href="https://www.crowdsupply.com/mnt/pocket-reform">MNT Pocket Reform</a>, a very small laptop-like computer. I just wish
it had much more battery time. It would also be cool if it, like it's
big brother <a href="https://shop.mntre.com/products/mnt-reform">the MNT Reform</a>, could use LiFePO4, and be replacable cell
by cell.
</p>

<p>
<img src="static/images/pocket-reform-cafe.jpg">
From <a href="https://www.crowdsupply.com/mnt/pocket-reform">the Crowdsupply campaign</a>.
</p>

<p>
I don't need a powerful CPU, but RAM and storage is another matter,
especially if I can't connect to my home directory on some server
really easy.
</p>

<p>
If I can get away with running any necessary virtual machines on a
server, I could also lower my requirements on RAM.
</p>

<p>
If the whole thing closest to me was just a terminal, even a laptop
"terminal", that wouldn't require much at all, but would, of course,
be dependent on a a very reliable network connection all the time.
</p>

<p>
What's your dream setup?
</p>
</div>
</div>
</div>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Setting Orange, the 37 day of Discord in the YOLD 3190 (<time datetime="2024-04-20">2024-04-20</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/dream-setup.html</link>
  <guid>https://hack.org/~mc/blog/dream-setup.html</guid>
  <pubDate>Sat, 20 Apr 2024 17:12:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Status 2024-03-29]]></title>
  <description><![CDATA[<p>
Morning, computer!
</p>

<p>
Slow morning in the cottage. P and #3 left hours ago. I'm alone for
the weekend celebrating the goddesses Freyja, Ostara, Vesna, or
whomever it is we're off work for. Maybe it's so everyone can watch
the stream from <a href="https://2024.revision-party.net/">Revision</a>?
</p>

<p>
I've been slowly working through a french press of coffee and reading
the morning paper, <a href="https://www.dn.se/">Dagens Nyheter</a>. This time, however, I didn't just
read on the web page. Instead, I'm trying to limit my news intake to
just reading the morning paper. Once, in the morning. Not checking for
breaking news again and again during the day like I usually do. I'm
reading my subscription's PDF of this day's issue! Yes, wow, I didn't
even know they had one!
</p>

<p>
You can probably guess I recently read Cal Newport's "Digital
Minimalism". This is the first full book of his I've read. Yes, I know
I'm late to the party, as usual. It's really good. Well researched and
very eloquently written. Lots of notes and references at the end, but
nothing to interrupt your flow of reading.
</p>

<p>
He suggests a month of digital decluttering, so I've done a
decluttering plan for April. After that month I'll revisit the
"optional technologies" I have identified and maybe rejoin some
things. If I'm not active in a "social" "medium" near you, that's why.
I may still be posting announcement about blog posts, but I'm not
actually participating. Let's see how it goes.
</p>

<p>
I have some more books by Cal in my reading queue. I'm also reading
Jason Fried's and DHH's "Remote: Office not required". Yes, I know
about the internal troubles at Basecamp but I think they might have
some good points in this 2013 book. I've been working remote for quite
some time already, but perhaps I get some more insights. Perhaps I'll
just end up leaving the book at the Gothenburg office?
</p>

<p>
For Revision I've moved the loudspeakers from the living room and set
up a comfy little corner where I usually work while at the cottage.
Looking forward to some compos. I'm also looking forward to a video
conference party with the original flatmates from the Area 41 days.
</p>

<p>
At work we released a <a href="https://github.com/tillitis/tillitis-key1/releases/tag/TK1-24.03">new version of the FPGA bitstream for the TKey</a>
with some interesting updates, chief of which is a new hardware
protection and incremental builds of the bitstream. We also published
a <a href="https://tillitis.se/blog/2024/03/26/details-on-a-firmware-bug/">blog post about a fixed firmware problem</a> that is included in the new
release. Beware of optimising compilers!
</p>

<p>
Spent three days in Gothenburg working on this stuff, then going to
the <a href="https://www.netnod.se/netnod-events/netnod-meeting-2024">Netnod Meeting</a> (Thanks again for the invite, Siri! Sad to see you
leave Netnod.) in Z'ha'dum for two days. Then off to the funeral the
week after. Lots of travelling lately. Going back to Gothenburg for a
few days soon, then off to Hamburg in late April.
</p>

<p>
Vernor Vinge is dead, as you probably know. I'm also re-reading "True
Names" and some essays about this seminal work. Cyberspace and
cyberpunk before cyberpunk! Also thinking a lot about death since both
my dad's wife and my aunt's husband just died. What do we leave
behind? What do we remember about the dead? Is this what they wanted
to be remembered as? What do I leave behind?
</p>

<p>
Take care,
MC
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Pungenday, the 15 day of Discord in the YOLD 3190 (<time datetime="2024-03-29">2024-03-29</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/2024-03-29.html</link>
  <guid>https://hack.org/~mc/blog/2024-03-29.html</guid>
  <pubDate>Fri, 29 Mar 2024 17:06:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[About death]]></title>
  <description><![CDATA[<p>
I'm on a train again. This time I'm going home from Hudiksvall after a
grueling weekend. 
</p>

<p>
I went from Malmö on Thursday morning and worked the entire day on
trains. I arrived in Ljusdal after close to nine hours. I checked in
at the only hotel in town again and, after a quick meal and glass of
wine, went over to a very sad dad with a bottle of Macallan. We didn't
empty it but we sure tried. I got back to the hotel pretty late.
Wasn't able to sleep much.
</p>

<p>
The day after it was my dad's wife's funeral. Met up at dad's and some
relatives gave us a lift to the chapel. Not many people turned up.
It's complicated.
</p>

<p>
I sang along with the hymns but I couldn't make myself say the Lord's
prayer or any amens. The very cool organist (Tattoos everywhere! Was
that a tattooed futhark on her fingers?) played a nice Amazing grace
as the last song. I liked that.
</p>

<p>
Afterwards almost everyone tagged along for a meal and something to
drink. Not the priest nor the organist, sadly. Would have loved to
talk to them.
</p>

<p>
I had already bought a salad for me but was pleasantly surprised that
the wine was clearly labeled vegan. Thanks, Kenneth! Talked with some
very nice people for a while and then dad and I got a ride home. We
had a stiff whisky and opened a bottle of wine I had brought. We
talked through the night, which I think maybe gave some comfort.
</p>

<p>
The day after I left for Hudiksvall to meet mom. We had some lunch and
she said something "You look tired. Why don't you take a nap?". And I
just crashed. I slept for hours. Then I spent a nice evening with mom
and her husband.
</p>

<p>
Today I'm going home again. The weekend may have been tough but it was
tougher for dad.
</p>

<p>
Remember, friends:
</p>

<p class="verse">
Deyr fé,<br>
deyja frændr,<br>
deyr sjalfr it sama,<br>
ek veit einn,<br>
at aldrei deyr:<br>
dómr um dauðan hvern.<br>
</p>

<p class="verse">
Cattle dies,<br>
kin dies,<br>
you will also die.<br>
I know one<br>
that never dies:<br>
judgement over the dead.<br>
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Pungenday, the 10 day of Discord in the YOLD 3190 (<time datetime="2024-03-24">2024-03-24</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/2024-03-24.html</link>
  <guid>https://hack.org/~mc/blog/2024-03-24.html</guid>
  <pubDate>Sun, 24 Mar 2024 17:06:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[Status 2024-02-25]]></title>
  <description><![CDATA[<p>
Status report again!
</p>


<figure id="orgad0f382">
<img src="static/images/deer.jpg" alt="A deer (and another behind it) on a lawn with a stone formation.">

<figcaption><span class="figure-number">Figure 1: </span>A visitor this morning.</figcaption>
</figure>

<p>
Sitting in front of the wood stove in my country cottage. It's nice
and quiet. Meanwhile it seems <a href="https://nordicfuzzcon.org/">NordicFuzzCon</a> is going on in Malmö.
4,000 furries. I had no idea! That seems fun!
</p>

<p>
On the other hand I just read that at least 10,000 were protesting in
Malmö today against the Israel-Palestine conflict. I've seen the much
smaller protests in Malmö before but, again, had no idea there was any
plans about a huge protest march today.
</p>

<p>
I feel so disconnected sometimes. I guess that's what not wanting to
engage with Facebook does to people&#x2026; Are there any other places
these things are posted? Most of the people I follow on Fedi are not
local. I know about <a href="https://www.gnistor.se/">Gnistor</a> but apparently that's not enough.
</p>

<p>
Slightly worried about the floods around the cottage area but nothing
really threatening our own house. The floods seem to have resided a
little, too, since the road is no longer fully flooded.
</p>


<figure id="orge79a8ff">
<img src="static/images/mc-flood.jpg" alt="Me, a pale male in black clothing, standing on a gravel road with lots of water in the forest on both sides.">

<figcaption><span class="figure-number">Figure 2: </span>Almost flooded road</figcaption>
</figure>

<p>
Back to work tomorrow after a week off but I'll be working from here
at least until noon. As I've often said before we have better Internet
here in the woods than in the flat in Malmö! It's so strange.
</p>
<div id="outline-container-org0124cfb" class="outline-2">
<h2 id="org0124cfb">Hälsingland</h2>
<div class="outline-text-2" id="text-org0124cfb">
<p>
Since it's been a school holiday P and I took the week off from work
and travelled a little with #3.
</p>

<p>
We just got back from a tour of Hälsingland in the southern part of
Northern Sweden. We went by train to Ljusdal, spent a few days at the
only hotel available, then to Hudiksvall by bus and a few more days at
another hotel. Then the train back to Malmö.
</p>

<p>
We went from 9C and spring flowers in Malmö to -16C and snow in just 8
hours on a train. We travelled almost straight north at 200 km/h
almost the entire time, so I guess that explains it.
</p>


<figure id="org34512ba">
<img src="static/images/wintry-ljusdal.jpg" alt="Parts of a balcony, snowy back yard, and a few multi-story houses with snow on the roofs.">

<figcaption><span class="figure-number">Figure 3: </span>A view from the hotel room.</figcaption>
</figure>

<p>
The <a href="http://www.stadshotelletljusdal.se/">Stadshotellet Ljusdal</a> hotel doesn't even have HTTPS on their web
page and it doesn't look very updated but they're still very much
open. The adjoining <a href="http://www.janusbistro.se/">Janus Bistro &amp; Lounge</a> has the same problem but is
also open. And very popular, at least on a Saturday night!
</p>

<p>
The chefs at Janus very kindly made a special order for me even on a
busy Saturday night! It was so nice that we visited again later.
</p>

<p>
A lot of people were dressed to eleven, especially the ladies, so I
guess this is where it happens in Ljusdal. I'm glad I at least changed
into a shirt. I stayed around for a while after dinner just people
watching while nursing a Lagavulin.
</p>

<p>
Another day we visited <a href="https://labanca.se/">La Banca Deli &amp; Winebar</a> with my dad. They had
even better food, but we were kind of late and had to rush the meal
quite a lot. They seemed to a have a very well stocked wine cellar.
Not the kind of place I would have expected in Ljusdal.
</p>

<p>
I had to ask about it but the hotel has a sauna and they will turn it
on for you if you ask about it. Not very well kept, but it's a sauna!
</p>

<p>
In Hudiksvall we lived at <a href="https://www.strawberry.se/hotell/sverige/hudiksvall/quality-hotel-statt/">Quality Hotel Statt</a>, incidentally the same
place where I attended my very first ball. I guess that entire event
would be nice to write about some other time. The sauna at Statt was
much better. They even had a small pool! I don't really get the point
of such a small pool, but there it was.
</p>

<p>
We had a wonderful meal at the new <a href="https://modisten4.se/">Modisten 4</a> restaurant in
Hudiksvall. Several vegan and soy free items on the menu! I got a very
well-made Old Fashioned, too. This place was also full of well dressed
women. Men were a tiny minority. Very odd.
</p>
</div>
</div>
<div id="outline-container-org0258be1" class="outline-2">
<h2 id="org0258be1">Newspaper clippings</h2>
<div class="outline-text-2" id="text-org0258be1">
<p>
While visiting dad's I got to browse a scrapbook of newspaper
clippings. I found some surprises, like me at 14 answering questions
in a local newspaper about the school holiday we just celebrated
(Sportlovet, literally "the sports holiday", which is on different
weeks in different parts of the country.):
</p>


<figure id="orgb3460c6">
<img src="static/images/mc-paper.jpg">

<figcaption><span class="figure-number">Figure 4: </span>I had hair!?</figcaption>
</figure>

<p>
I say that I don't mind what week the holiday is held. If it's too
cold I could always ski at the Easter holiday instead and spend this
holiday watching cable TV. What I didn't say is that I was mostly
glued to my computer anyway. I guess I didn't want to come across as
too much of a nerd in the local paper. Ha! Too late!
</p>


<figure id="org55f8947">
<img src="static/images/killed-by-computers.jpg">

<figcaption><span class="figure-number">Figure 5: </span>Killed by computers</figcaption>
</figure>

<p>
The context is the Ericsson factory in Delsbo which closed down
in 1985. It made traditional telephone switches but was closed when
the computer-controlled AXE switch which was built in another factory
took over as the Ericsson switch product.
</p>

<p>
Here's a desk from an office in the factory:
</p>


<figure id="orga6ca096">
<img src="static/images/alfaskop-switch.jpg" alt="Black and white photo of a computer terminal display and keyboard. In front of it is an older type of a circuit board">

<figcaption><span class="figure-number">Figure 6: </span>Alfaskop 4100 computer terminal and a part of an electronic telephone switch</figcaption>
</figure>

<p>
I know those terminals from my summer jobs at Ericsson Cables in
Hudiksvall. They had this terrible function that <i>mechanically</i> locked
the keyboard when the mainframe didn't accept your input.
</p>

<p>
There's an interesting project trying to revive an Alfaskop terminal
and connect it to the Hercules IBM mainframe emulator:
</p>

<p>
<a href="https://github.com/MattisLind/alfaskop_emu/">https://github.com/MattisLind/alfaskop_emu/</a>
</p>
</div>
</div>
<div id="outline-container-orge4bc246" class="outline-2">
<h2 id="orge4bc246">Hudiksvall city library</h2>
<div class="outline-text-2" id="text-orge4bc246">
<p>
For nostalgic reasons I visited the Hudiksvall city library. The
librarians used to know me well. They were usually friendly and often
helped me get interlibrary loans from strange places, like the State
telecom company's R&amp;D library or university libraries.
</p>

<p>
It doesn't seem the computer literature has grown much, if at all,
since my days. This is the complete collectiion:
</p>


<figure id="orgad76ce5">
<img src="static/images/library-pu.jpg" alt="Part of a book case with very feew books">

<figcaption><span class="figure-number">Figure 7: </span>The complete computer literature</figcaption>
</figure>

<p>
I was quite surprised to find Tord Jöran Hallberg's <i>IT-gryning</i>, a
book about the Swedish computer history! I've corresponded with Tord
Jöran and a bunch of other old men with technical questions about the
Datasaab computers. Sadly he's gone now, as are many of the others I
used to keep in touch with.
</p>


<figure id="org0102a32">
<img src="static/images/it-gryning.jpg" alt="Closeup of a book">

<figcaption><span class="figure-number">Figure 8: </span>IT-gryning</figcaption>
</figure>
</div>
</div>
<div id="outline-container-org297cce1" class="outline-2">
<h2 id="org297cce1">Dad Computer Project, part II</h2>
<div class="outline-text-2" id="text-org297cce1">

<figure id="org5452164">
<img src="static/images/dad-computer.jpg" alt="an iPad in a case with a slim wireless keyboard &amp; mouse on a wooden table">

<figcaption><span class="figure-number">Figure 9: </span>Dad's iPad</figcaption>
</figure>

<p>
I installed the router I bought in dad's flat. Luckily the ISP had
installed the media converter, so it was just a matter of plugging it
in, associate something with the wifi and check that it worked. And it
did on the first try!
</p>

<p>
Spent two days installing apps, transferring stuff from the Android
phone and showing and explaining the iPad and the web to dad. He asked
interested and good questions, like what the difference between an app
and a web site is. Sometimes there isn't really much of a difference
(think PWA), so it's a very good question.
</p>

<p>
The mouse I bought turned out to be very confusing, even to me, so
that returned with me.
</p>

<p>
The Satechi X1 keyboard seemed to work fine, even for dad's old
fingers. Even the touch screen worked better than on the old Android!
The Android phone wouldn't recognize his fingers at all. Even with the
better touch sensors it's still easier with a stylus.
</p>

<p>
We never figured out how to pair his hearing aid. Of course neither of
us knew anything about the model of the hearing aid and there was no
manual.
</p>

<p>
A strange thing was that we tried a audio call with Signal but he
couldn't hear me very well. I, on the other hand, could hear myself
quite well from two rooms away with closed doors! I guess getting him
some headphones might help, but strangely he could hear the voices on
a streaming app quite well!
</p>

<p>
The built-in Tips app and the User Guide in the iPad is decent but
could have better navigation and better guidance for something totally
new to the iPad and most electronic gadgets.
</p>

<p>
The home button was big enough but the sleep/on-off button wasn't, so
it was a little hard to actually turn on and off the iPad. He's
leaving it on most of the time. Let's see what happens to the battery.
</p>

<p>
I'm still not sure I did the right thing with the Dad Computer turning
into an iPad, but what are the realistic options?
</p>
</div>
</div>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Sweetmorn, the 56 day of Chaos in the YOLD 3190 (<time datetime="2024-02-25">2024-02-25</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/2024-02-25.html</link>
  <guid>https://hack.org/~mc/blog/2024-02-25.html</guid>
  <pubDate>Sun, 25 Feb 2024 21:29:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[Presentation at Sundsgymnasiet school]]></title>
  <description><![CDATA[<p>
I was invited by Mats, a teacher at <a href="https://vellinge.se/sundsgymnasiet/">the Sundsgymnasiet school</a> in
Vellinge, to give a talk to his students, all three years of the
Technical Programme. Sundsgymnasiet is an upper secondary school,
probably what in the US would be called senior highschool, with
students normally starting in the year they turn 16 and finishing
at 19.
</p>

<p>
I didn't know what to expect, really. Mats told me I could talk about
whatever I wanted, so of course I talked about the <a href="https://dev.tillitis.se/">Tillitis Tkey</a>,
which also meant I could do it on company time.
</p>

<p>
I thought about how I would explain the TKey to these teenagers but in
the end decided that I would try to talk to the 17-year-old version of
myself. I was sure he would be somewhere in the audience. Basically I
didn't plan to hold back on the technical details and instead rely on
the audience asking questions if they didn't understand or needed more
explanations.
</p>

<p>
I'm not sure this was the best idea.
</p>

<p>
Vellinge is a bit outside Malmö, so I had to go by bus for about half
an hour. Thankfully the lecture would be in the afternoon, so I didn't
have to go by bus early in the morning. Not looking back with fond
memories of early morning bus commutes!
</p>

<p>
Mats was waiting for me at the entrance to one of the buildings and we
had time for a quick tour and some coffee before the lecture. I got to
see their computer rooms and it was interesting to compare with my own
school in the late 1980s. These days the students all have their own
laptops so I didn't even see any desktop computers, just a bunch of
monitors. They didn't have any external keyboards, which I found a
little strange. I kept wondering what I would have done if I was a
student, not least because of&#x2026;
</p>

<p>
It seemed the school had made some deal with Microsoft. The students
were running Windows on their laptops and used Office365. There were
also a Surface Hub in all the classrooms!
</p>

<p>
Malmö schools, in comparison, is very much on the Chromebook and
Google Workspace/Classroom track, at least for younger students.
</p>

<p>
Not sure what is the worst option here. I keep wondering what all the
protohackers do. Yes, there's an SSH client by default on ChromeOS.
Are they even allowed to use it? What about on the Windows laptops? Is
the SSH option enabled? What about WSL? Are they allowed to turn these
options on? Are there any *nix servers somewhere the schools provide
access to? I wonder if I can ask anything like this on an open house
type event?
</p>

<p>
Back to Sundsgymnasiet&#x2026; In the computer room I hooked up my Thinkpad
to a Surface Hub and did some experiments. Could I mirror the screen
and do my presentation in Emacs, like I had intended, even in this
environment? It seemed I could! I had prepared and sent a PDF to Mats
and was ready to use his computer just in case, but I'm much more
comfortable in Emacs with <code>org-present</code>.
</p>

<p>
Time for the lecture! About 60-70 students, a couple of teachers, and
three peope from IBM. The IBMers would also give a talk. The IBMers
started. They spoke about their idea of how to do a project and what
kind of studies lead them to where they are today. A completely
different level compared to what I was going to talk about! I started
to get really nervous and broke out in a cold sweat.
</p>

<p>
Then it was my turn! When I initially connected my Thinkpad and moved
a few windows over to the other screen my green-on-black terminals
were visible for a moment. I heard gasps and someone commented quite
loud "He's a hacker!". I just said "You bet!" and started the
presentation with Emacs which, I guess, just proved the point.
</p>

<p>
The talk was quite technical. I think a lot of it went over their
heads but I saw some interested faces and got some questions at the
end. I call that at least some success.
</p>

<p>
I wanted to get across that a very small team of dedicated individuals
using just open source tools can build a small computer with
interesting features. I also wanted to to show that they can access
everything and start learning and hacking on the thing themselves,
right now, even if they can't afford buying a TKey since we have a
decent emulator and all source and the tools are freely available.
</p>

<p>
I'm not sure I succeeded in explaining all this.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Pungenday, the 48 day of Chaos in the YOLD 3190 (<time datetime="2024-02-17">2024-02-17</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/sundsgymnasiet.html</link>
  <guid>https://hack.org/~mc/blog/sundsgymnasiet.html</guid>
  <pubDate>Sat, 17 Feb 2024 19:29:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[Keyboard layouts]]></title>
  <description><![CDATA[<p>
I've updated my article about keyboard layouts with XKB after 13
years!
</p>

<p>
<a href="https://hack.org/mc/writings/xkb.html">https://hack.org/mc/writings/xkb.html</a>
</p>

<p>
I've edited it so the focus is on the layouts if you just want to grab
them and don't need any handholding. Also added Thinkpad layouts along
with the original HHKB layouts.
</p>

<p>
It now also includes instructions for use with the River and Sway
Wayland compositors as well as X11.
</p>

<p>
I will probably update it soon with some images of different Thinkpad
keyboards.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Sweetmorn, the 46 day of Chaos in the YOLD 3190 (<time datetime="2024-02-15">2024-02-15</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/xkb2.html</link>
  <guid>https://hack.org/~mc/blog/xkb2.html</guid>
  <pubDate>Thu, 15 Feb 2024 15:29:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[Status 2024-02-14]]></title>
  <description><![CDATA[<p>
Greetings, programs!
</p>

<p>
Last weekend and for the most of this week I've mainly spent my free
time with the Dad Computer Project. It's a bit stressful, but then
again, what isn't?
</p>
<div id="outline-container-org9991f18" class="outline-2">
<h2 id="org9991f18">Dad Computer Project</h2>
<div class="outline-text-2" id="text-org9991f18">
<p>
Ordered Internet for dad, in his name. Talked to him first, of course,
to let him know what to expect. He called me later and said that the
ISP would need to visit him and install something, probably a media
converter. Interesting. I thought he already had everything. Let's
hope that it's installed by the time I get there. I'll prepare the
AP/router I bought to just need to be connected.
</p>

<p>
Had a look through my stash to find an old laptop and started
preparing it to become the Dad Computer.
</p>

<p>
Then #3's iPad broke down. We investigated solutions. One solution was
to buy a used iPad, and we did, but the iPad we got turned out to just
have 32 gigs of flash and the world of Genshin Impact wouldn't fit!
Dammit! That makes it unusable, of course.
</p>

<p>
In the end #3 got a fancier iPad instead, even equipped with a
keyboard case. Very happy #3!
</p>

<p>
So&#x2026; The idea about a new Dad Computer changed into an idea of a Dad
iPad! I bought a keyboard and a mouse and tried to set it up to be
able to be used without touch as much as possible.
</p>

<p>
A few positive thing about this:
</p>

<ul class="org-ul">
<li>More people can give support on an iPad than an old hacker Thinkpad
with Linux, even if I would choose a vanilla distribution.</li>
<li>Accessability stuff seems much better. Even hearing aid support! I
didn't know! Of course, there's a lot I don't know about Apple
products.</li>
</ul>

<p>
After having hooked up a Satechi Slim X1 keyboard to the iPad and
using it for a while I was quite surprised when I by accident hit
Ctrl-A and&#x2026; it worked!? Ctrl-E, P, N, et cetera also work. Turns
out iPadOS text fields has Emacs shortcuts!
</p>

<p>
I set up e-mail for dad. Found a strange behaviour. Choose a message.
Hit Backspace on the attached keyboard. The message disappears.
Haven't found any way of getting it back!
</p>

<p>
Logged in temporarily with my own Apple account and installed several
XMPP clients to test. I tried Siskin and Monal. Interestingly both
work with push and can receive messages even when the iPad is asleep.
However, only Monal can handle push for audio/video. Unfortunately
neither of them has a Swedish UI so I'll guess I have to stay with
Signal for dad.
</p>

<p>
Still left to do is to set up an Apple account, set up iCloud backup,
install Signal and perhaps some more things from the App Store. Then I
have to register Signal to a new number, I guess.
</p>
</div>
</div>
<div id="outline-container-orgbf617f8" class="outline-2">
<h2 id="orgbf617f8">Keyboards and trackballs</h2>
<div class="outline-text-2" id="text-orgbf617f8">
<p>
My much loved CST L-TracX trackball broke down! It doesn't light up
and isn't even visible with <code>lsusb</code> anymore. I havent yet opened it
up, so I don't really know what's wrong.
</p>

<p>
I bought this thing in 2011 (<a href="https://hack.org/mc/blog/cst-ltracx.html">unboxing in Swedish</a>) so even if it's
really broken it had a good run&#x2026;
</p>

<p>
The L-TracX has been next to my black HHKB since then. Suddenly I was
at a loss what to do. I tried with a mouse for a while but that wasn't
very nice. Instead I tried to use the new Thinkpad Trackpoint II we
usually use with the living room media computer. That was kind of nice
but using a trackpoint on a big screen perhaps isn't the optimal
solution. It looks good, though:
</p>


<figure id="org5d60089">
<img src="static/images/desk-2024-02.jpg" alt="Small white desk with a red/black classical touchtone phone, a 24&quot; monitor on an arm, a small lit bunny children's light, a fancy notebook with a pen, a pair of glasses">

<figcaption><span class="figure-number">Figure 1: </span>My cleaned up desk</figcaption>
</figure>

<p>
It also makes me think even more about using a more low-profile
keyboard all the time. Perhaps I should also investigate using a low
profile trackball? Opinions on the Kensington Slimblade, anyone? Any
other options?
</p>
</div>
</div>
<div id="outline-container-org8ec8ff2" class="outline-2">
<h2 id="org8ec8ff2">Helena Visiting</h2>
<div class="outline-text-2" id="text-org8ec8ff2">
<p>
My ex wife and very good friend Helena visited last weekend. We had a
wonderful time with #1 and his SO who also came by.
</p>

<p>
We watched <i>Poor Things</i> at <a href="https://biografspegeln.se/">Spegeln</a>, the wonderful cinema that lets
you eat real meals and drink wine and beer inside the actual
auditorium. A really good film and no, not just because of a nude Emma
Stone, but for wonderful storytelling of a modern, beautiful, and very
liberated Frankenstein's monster.
</p>
</div>
</div>
<div id="outline-container-orge9d6bfa" class="outline-2">
<h2 id="orge9d6bfa">MSO again</h2>
<div class="outline-text-2" id="text-orge9d6bfa">
<p>
P and I saw Berlioz' <i>Symphonie Fantastique</i> with the Malmö Symphony
Orchestra (MSO). Very, very good. At a later event we attended MSO
playing Debussy and Stravinsky. Critics wrote that the faun in
<i>Prélude à l'après-midi d'un faune</i> wasn't supposed to be drinking
coffee! Haha. Yes, well, I admit that the Stravinsky part was better.
</p>

<p>
Both times we had dinner at the wonderful <a href="https://bise.se/">BISe restaurant</a>. They,
again, made an off-menu vegan thing for me. Thank you!
</p>
</div>
</div>
<div id="outline-container-org6ca5657" class="outline-2">
<h2 id="org6ca5657">Floods</h2>
<div class="outline-text-2" id="text-org6ca5657">
<p>
Terrible floods in the area where we have our cottage. Went there to
check that nothing threatened the cottage. Everything looked fine
around and under the cottage, but there were floods closer to the lake
and a lot of houses seemed to have problems. We couldn't even get far
on the road to have a look because of all the water.
</p>
</div>
</div>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Setting Orange, the 45 day of Chaos in the YOLD 3190 (<time datetime="2024-02-14">2024-02-14</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/2024-02-14.html</link>
  <guid>https://hack.org/~mc/blog/2024-02-14.html</guid>
  <pubDate>Wed, 14 Feb 2024 08:29:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[Laptop stand]]></title>
  <description><![CDATA[<p>
We have a decent 3D printer (Prusa MK4) at dayjob so we printed some
<a href="https://www.thingiverse.com/thing:2332554">foldable(!) laptop stands</a>. Here they are:
</p>


<figure id="org7b9747d">
<img src="static/images/laptop-stand-small.jpg" alt="Two laptop stands in blue plastic with hinges.">

</figure>

<p>
Here's my laptop on the stands:
</p>


<figure id="org9334904">
<img src="static/images/laptop-on-stand-small.jpg" alt="A black Thinkpad laptop resting on top the the laptop stands.">

</figure>

<p>
It's printed in PLA and printed in one piece!
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Setting Orange, the 30 day of Chaos in the YOLD 3190 (<time datetime="2024-01-30">2024-01-30</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/laptop-stand.html</link>
  <guid>https://hack.org/~mc/blog/laptop-stand.html</guid>
  <pubDate>Tue, 30 Jan 2024 07:40:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[Status 2024-01-29]]></title>
  <description><![CDATA[<p>
Friday is my day off from work, as usual. So when I'm typing this I'm
in front of the hackstation (not a battlestation, obviously) with my
third cup of coffee, writing an update again.
</p>

<p>
I've been doing these status updates on my Gemini log
(gemini://gem.hack.org/mc/log/, but I'm increasingly aware of the
dropping amounts of traffic, so I'm thinking about doing them on the
blog instead, but see below for some thoughts on Gemini.
</p>
<div id="outline-container-org6b11f7f" class="outline-2">
<h2 id="org6b11f7f">Abstract</h2>
<div class="outline-text-2" id="text-org6b11f7f">
<p>
In which I speak about an intense week, feeling good(?), spending time
in Gothenburg and Stockholm, Gemini (again), Keyboards (again),
Outlook &amp; e-mail etiquette, Parent computer thoughts.
</p>
</div>
</div>
<div id="outline-container-org526d124" class="outline-2">
<h2 id="org526d124">Status</h2>
<div class="outline-text-2" id="text-org526d124">
<p>
Intense week this week, but very focused and productive. The first
week back at the desk that dayjob rents for me at an Architect's
office.
</p>

<p>
Started taking Magnesium supplements last Friday to help with a health
problem. I also started trying to have a more regular sleep pattern,
being better at sitting in zazen meditation twice a day, and even
tried going to the gym before work! In a total coincidence, I was
extremely productive at work! I also felt rather good.
</p>

<p>
Feeling good is unusual for me. Let's see where this goes. Before this
I wasn't in a great mood.
</p>

<p>
Started the work year, after <a href="https://events.ccc.de/congress/2023/infos/index.html">37C3</a> (report coming) and a small
vacation, by spending a week in Gothenburg. The name of the city made
sense this time:
</p>


<figure id="org147c425">
<img src="static/images/haga-church.jpg" alt="Part of the front of new-gothic church in the fog. The big windows are lighted up from within with red light.">

<figcaption><span class="figure-number">Figure 1: </span>The Haga Church.</figcaption>
</figure>


<figure id="org1f3a8f0">
<img src="static/images/river-small.jpg" alt="An icy river with a ferry just arriving. In the background you can almost see a crane decorated with purple lights through the fog.">

<figcaption><span class="figure-number">Figure 2: </span>The river close to the hotel.</figcaption>
</figure>

<p>
I felt terribly isolated and alone at the hotel in Gothenburg. It
didn't get better when #2 had to cancel our dinner because he had to
help a friend who had been robbed! How horrible!
</p>

<p>
I didn't even think that there might be a sauna to warm up in (There
was! Next time!) so I just sat there in the hotel room considering my
life choices. Spent quite a lot of time being miserable in hotel rooms
last year.
</p>


<figure id="orgdaf9ed0">
<img src="static/images/mc-hotel.jpg" alt="Me, a pale guy with a white goatee, dressed in black with a black bomber and black beanie, as seen in a bathroom mirror.">

<figcaption><span class="figure-number">Figure 3: </span>Not a happy rabbit.</figcaption>
</figure>

<p>
The week after that I went to Z'ha'dum (aka Stockholm) for another
conference, <a href="https://samnet.se/">SamNet</a>. Report from that visit is coming, too. Yet another
hotel room. This time, however, I actually managed to meet friends,
both at the conference and off!
</p>

<p>
My train to Zdm got stuck for five hours. I felt for the workers who
had to be outside in the cold working on the rail switches for hours
with more trains queuing up all the time. Some pressure! In comparison
I had it easy and I had time to watch a few 37C3 talks I had missed.
</p>

<p>
The SJ train company sent an e-mail congratulating (?) me on having
travelled 10,330 km with them during 2023. Sure, I generally like
trains, but 10,000+ km? It's less than the 16,000+ km I used to have
when I worked at Netnod in Stockholm, but still a lot of time in
trains. Note that this was only domestic trains and not all the DSB,
Deutsche Bahn, and Amtrak I travelled last year.
</p>

<p>
A good friend who now insists on living in the US came by recently. He
brought these:
</p>


<figure id="orge240671">
<img src="static/images/hot-almonds.jpg" alt="Two black cans of Carolina reaper roasted almonds with menacing text about &quot;X-TREMES&quot; on top of a green book, something about &quot;URE. The drawings&quot; seen.">

<figcaption><span class="figure-number">Figure 4: </span>Carolina reaper roasted almonds.</figcaption>
</figure>

<p>
Beware Americans bringing gifts! Also nom, nom, nom&#x2026; With
chopsticks, naturally. The book is alright, too. Iain M. Banks' "The
culture: The drawings".
</p>
</div>
</div>
<div id="outline-container-orgc1ed5c1" class="outline-2">
<h2 id="orgc1ed5c1">Programming &amp; sysadmin</h2>
<div class="outline-text-2" id="text-orgc1ed5c1">
<p>
Haven't done any programming in my free time for a long time. Been so
stressed out and tired so I haven't had the spoons necessary.
Sometimes I feel guilty about that, but, as you probably know, I feel
guilty about all sorts of things all the time.
</p>

<p>
Some projects waiting for me to collect more spoons:
</p>

<ul class="org-ul">
<li>BBS: I have a database model and some code talking to it. I have a
nice command parsing frontend in the KOM tradition for the client.
Still need to decide how the client will speak to the server. Just
JSON over HTTP? gRPC? Something else?</li>
<li>XMPP client: I have a Go backend speaking XMPP and an elisp frontend
giving me a simple UI. Need to refactor some things and clean up but
then I'll make an early release. No OMEMO yet, obviously. I've seen
some Signal/axolotl code for Go, but no real OMEMO. Anyone?</li>
<li>mctile River layout engine: Basically the example engine, but I've
added monocle mode. I want to at least make it possible to have
different layouts on different active tags.</li>
<li>New hack.org server: Acquired a used 1U Supermicro and some disks.
Still need to install OS, probably FreeBSD like the old server, some
jail setup and an Ansible run. Probably going to investigate at
least another SMTP server. Perhaps even something in type-safe
language!</li>
</ul>
</div>
</div>
<div id="outline-container-org0a15a29" class="outline-2">
<h2 id="org0a15a29">Gemini</h2>
<div class="outline-text-2" id="text-org0a15a29">
<p>
I like <a href="https://hack.org/mc/blog/gemini.html">Gemini</a>. I especially like the idea that user action should
trigger all network traffic. Nothing should happen behind your back. I
actually like the Gemtext format, too, and I think I have a quite nice
setup in Emacs for writing in it.
</p>

<p>
Maybe I should investigate the possibility of at least writing my blog
in gemtext but also serving it over HTTP and converted to HTML?
</p>

<p>
However, traffic is dropping. I don't know why. Perhaps it's just that
it's only me on my gem.hack.org capsule? Perhaps interest is waning?
</p>
</div>
</div>
<div id="outline-container-org0b0b58a" class="outline-2">
<h2 id="org0b0b58a">Keyboards</h2>
<div class="outline-text-2" id="text-org0b0b58a">
<p>
I have a couple of HHKB Pro 2 (and some vanilla HHKB from the 90's),
as you probably know if you know me or seen my <a href="https://hack.org/mc/computers.html">computer page</a>. I'm
reasonably happy with them, but I've been looking over the fence for
other things for a while.
</p>


<figure id="org7f67027">
<img src="https://hack.org/mc/images/3hhkb.jpg" alt="Three 60% keyboards on a desk.">

<figcaption><span class="figure-number">Figure 5: </span>Two HHKB Pro 2 and an old HHKB.</figcaption>
</figure>

<p>
I'm in so much WANT!!!eleven1 over <a href="https://www.zsa.io/voyager/">the ZSA Voyager</a>. I mean, just look
at it:
</p>


<figure id="org340255b">
<img src="static/images/voyager-Black_US_keycaps-1964136194.jpg" alt="Small, black, split orthogonal keyboard with RGB lightning">

<figcaption><span class="figure-number">Figure 6: </span>The Voyager. Picture by ZSA.</figcaption>
</figure>

<p>
It has nice low-profile Kailh Chocs.
</p>

<p>
But I have doubts&#x2026; I mean, 365 USD + shipping + Swedish 25% VAT and
maybe customs. It's a lot.
</p>

<p>
I'm also looking at <a href="https://shop.mntre.com/products/mnt-reform-usb-keyboard-standalone">the MNT Reform Standalone Keyboard</a>:
</p>


<figure id="orge8dd2f7">
<img src="static/images/mnt-keyboard-v3.jpg" alt="Small black keyboard with a small OLED display">

<figcaption><span class="figure-number">Figure 7: </span>MNT Keyboard V3. Picture by MNT.</figcaption>
</figure>

<p>
Also LP Kailh Chocs!
</p>

<p>
I'm extremely sympathetic to their cause, as you can probably guess,
but I'm not sure I like the physical layout. If I would buy one I
would have blank keycaps, obviously, but I'm talking about the
physical layout. Still tempting! A friend has two of them, but I have
yet to test them.
</p>
</div>
</div>
<div id="outline-container-org2dc042a" class="outline-2">
<h2 id="org2dc042a">Outlook &amp; e-mail etiquette</h2>
<div class="outline-text-2" id="text-org2dc042a">
<p>
Apparently I have never received a mail message replying inline from
someone using Outlook before, because I was really confused when they
said something like "my comments are in blue".
</p>

<p>
In blue? All my e-mails are green text on a black background.
</p>

<p>
What's wrong with quoting my message with "&gt;" as usual and then type
the response underneath each part?
</p>

<p>
Oh yeah, apparently Outlook doesn't do that. How could I have missed that?
</p>

<p>
For people who are forced to use Outlook who still want to be good
Internet citizens this might still work:
</p>

<p>
<a href="https://www.slipstick.com/outlook/email/to-use-internet-style-quoting/">https://www.slipstick.com/outlook/email/to-use-internet-style-quoting/</a>
</p>

<p>
@Catwoman69y2k@meow.social and @jima@mspsocial.net on Fedi kindly
tested it for me and yes, the instructions are still valid, but
there seems to be no way of setting things like this in OWA.
</p>

<p>
I know some people argue that mail is dead anyway, and yes, my own
statistics of sent messages per year shows a sad trend:
</p>

<div class="org-src-container">
<pre class="src src-sh">% notmuch count tag:sent and date:2023
236
notmuch count tag:sent and date:2022
309
% notmuch count tag:sent and date:2021
455
% notmuch count tag:sent and date:1999
3053  
</pre>
</div>

<p>
~10x as much sent messages in 1999! So yes, I agree something has
happened with e-mail.
</p>

<p>
I still like the long-form style of messaging, though, and I think it
would be good if people respected the the e-mail etiquette even if
they are running, say, Outlook. Perhaps it's a lost cause, just like
top posting thing?
</p>
</div>
</div>
<div id="outline-container-org5e7898a" class="outline-2">
<h2 id="org5e7898a">Parent computer thoughts</h2>
<div class="outline-text-2" id="text-org5e7898a">
<p>
I gave my dad an Android phone with Signal a few years ago. It's
pretty slow and doesn't seem to get any updates anymore. He's also
having a rough time using it with the touch screen. The screen simply
doesn't recognize his fingers touching it. Yes, he has one of those
"pens" but it still isn't easy for him, especially when it requires
gestures.
</p>

<p>
Of course I can just give him a more modern phone&#x2026; But should I?
</p>

<p>
I've been thinking about getting him a computer instead. It will
probably be a laptop, but what kind and what OS? And how do I arrange
for it to reach Internet? He seems to have fiber to the home installed
in his new flat, but I would probably need to buy an AP and arrange
for an ISP subscription.
</p>

<p>
I can do all this, of course, even if it's an eight hour train ride to
him, but then there's the thing about updates, management, and, yes,
what kind of programs do I install? I'm mostly on XMPP, for instance,
and if I choose a Linux dist I can probably install <a href="https://dino.im/">Dino</a> on it and
that would be fine? Maybe?
</p>

<p>
But what about management? Do I make the laptop dial home with
Wireguard or something and let me ssh into it?
</p>

<p>
My mom (not living in the same place) is very happy with her (second)
Chromebook with vanilla Chrome OS I gave her. She's also happily using
a smartphone with a lot more success than my dad, so we keep in touch
mostly over Signal. Chromebooks are a wasteland when it comes to
messaging apps so it's just as well we can keep the messaging on the
phone.
</p>

<p>
Another idea is that I could perhaps bring one of my many SIP phones
to dad? We could use this on a private PBX and my own SIP on short
dial. That might work for phone calls without billing, perhaps, and
with a lot better sound quality than POTS, but still not requiring
touch.
</p>

<p>
Any thoughts about a dad computer?
</p>
</div>
</div>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Prickle-Prickle, the 29 day of Chaos in the YOLD 3190 (<time datetime="2024-01-29">2024-01-29</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/2024-01-29.html</link>
  <guid>https://hack.org/~mc/blog/2024-01-29.html</guid>
  <pubDate>Mon, 29 Jan 2024 21:13:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[MC in the US: OSFC, SF, Seattle, Microsoft]]></title>
  <description><![CDATA[
<figure id="orge2cb7fb">
<img src="static/images/osfc-speaker.jpg" alt="OSFC badge saying &quot;Speaker&quot; and handwritten by me, &quot;MC&quot;.">

</figure>

<p>
I attended the <a href="https://osfc.io">Open Source Firmware Conference (OSFC)</a> on Oct 10-12 in
Sunnyvale, spent a long weekend in San Francisco, took a very long
train ride to Seattle, spent a week in the Seattle area, and held an
intimate talk at Microsoft. Managed to meet friends, drink some nice
beverages, and even see a show but came home with a heavy heart. Then
tried to relax in the cottage.
</p>
<div id="outline-container-orgd035ac1" class="outline-2">
<h2 id="orgd035ac1">Going to the US</h2>
<div class="outline-text-2" id="text-orgd035ac1">
<p>
"Dress up like a slightly conservative IT management guy! That will
make it easier to cross the US border." That was what a friend said. I
actually considered it for a while.
</p>

<p>
But no, I couldn't really bring myself to do that. I mean, I don't
<i>have</i> to wear a t-shirt with Chaos Computer Clubs' Rote Armee
Fraktion-inspired Sterntastatur on it, but to go so far as to pretend
to be something else entirely?
</p>

<p>
Instead, I went like this:
</p>


<figure id="org4950422">
<img src="static/images/mc-black-denim.jpg" alt="Mirror image of a white, bald man with a white goatee in black denim jacket, black t-shirt and black denim trousers with a key chain. Eyes looking down, so no eye contact.">

</figure>

<p>
Later, at SFO:
</p>

<p class="verse">
CBP: What is the purpose of your visit?<br>
MC: Business!<br>
CBP: Welcome to the United States!<br>
</p>

<p>
That was unexpectedly easy, but I guess CBP at SFO see a lot of
slightly gothy nerds?
</p>

<p>
I couldn't sleep at all on the 11 hours on the plane. Luckily, I
wasn't the one driving the rental from SFO to Mountain View. That
would have been bad, not just because I don't have a driver's license.
</p>
</div>
</div>
<div id="outline-container-org57fd34b" class="outline-2">
<h2 id="org57fd34b">OSFC</h2>
<div class="outline-text-2" id="text-org57fd34b">
<p>
We lived in an unnecessarily expensive (650 USD/night!) but not very
luxurious hotel in Mountain View. With a little luck on a clear day I
could see the top of Hangar 1 at Moffet Field from my hotel window,
but mostly I saw a highway. OK, it was probably Highway 101 and that
made me think of Sisters' Black Planet, which was good.
</p>

<p>
We stayed at the hotel for an extra two nights before the conference
to figure out our jetlag (didn't work) and to plan and rehearse a
little (better).
</p>

<p>
The actual conference was quite good. Got to meet a lot of interesting
people and had interesting conversations. Some good talks as well.
</p>

<p>
Unfortunately we mostly saw something like this, but that isn't
uncommon in cases like this:
</p>


<figure id="org4222db3">
<img src="static/images/osfc-room.jpg" alt="Conference room with a view of people from behind. They're all sitting in chairs in front of a podium with a presentation going on.">

</figure>

<p>
The catering wasn't able to arrange food for me all the days. Being
vegan with a soy allergy isn't easy. Eris knows I had been worried
about it myself. Some nice googlers brought me to a Google employee
restaurant for lunch a couple of times (thanks again, Chris and Ana!).
</p>

<p>
Some notable talks at OSFC 2023:
</p>

<ul class="org-ul">
<li>"US Cyber Trust Mark", something like the EU CRA, but a consumer
marking of products, among other things guarantees about software
updates and what this means for firmware developers and
manufacturers. I didn't know this was coming in the US. Might be
good, at least for consumers.</li>

<li>"Tamago &amp; Tinygo: working with firmware and kernel written in Go".
Good walkthrough on how you can actually use Go at this low level.
Even the BBC Microbit 2 with just 128 kB is now supported by TinyGo!
Promising for a future attempt at bringup of Go on the <a href="https://dev.tillitis.se/">TKey</a>. Got to
talk to the speaker, Ron Minnich, both before and after his talk.</li>

<li>"Unplugging the debugger: Live and post-mortem debugging in a remote
system". Extremely ambitious handling of remote debugging of the
Hubris operating system, both kernel and processes, on the top of
rack box in an Oxide rack.</li>

<li>"When boot security goes wrong". Very brave presentation about how a
Chromebook model secure boot perhaps wasn't.</li>
</ul>

<p>
Dayjob boss Sasko held a talk with a short update on the <a href="https://dev.tillitis.se/">TKey</a>.
Fredrik, one of our founders, held a longer talk about authentication
of transparent systems, the next level of the <a href="https://www.system-transparency.org/">System Transparency</a>
project. I don't think the room really got that one. Admittely he was
kind of all over the place with the talk.
</p>


<figure id="orgf85aff8">
<img src="static/images/fred-osfc.jpg" alt="White guy with blue shirt and black trousers on the podium in the main OSFC room gesticulating while talking. Backdrop says &quot;Welcome! And something about &quot;Open Source&quot;.">

<figcaption><span class="figure-number">Figure 1: </span>Fredrik speaking at OSFC</figcaption>
</figure>

<p>
I held a workshop about software development for the <a href="https://dev.tillitis.se/">TKey</a>, focusing
mainly on a code walkthrough on both a client and a device app, the
<a href="https://github.com/tillitis/tkey-sign-cli">tkey-sign</a> command (before the refactoring I did later) and the
corresponding <a href="https://github.com/tillitis/tkey-device-signer">signer</a>. My colleague dehanj was supposed to do it with
me but got sick and had to stay at the hotel!
</p>

<p>
I think the workshop went quite well. Had a very enthusiastic audience
of about 15 people who had a lot of good questions. Had some nice
discussions afterwards as well.
</p>

<p>
All the talks should be available on the web site. Unfortunately the
workshops weren't recorded.
</p>

<p>
<a href="https://www.osfc.io/archive/2023/">https://www.osfc.io/archive/2023/</a>
</p>

<p>
There was also a table with free hardware:
</p>


<figure id="orgb0b1cfc">
<img src="static/images/osfc-giving-away.jpg" alt="Table with dev boards of different sizes lying on parade.">

<figcaption><span class="figure-number">Figure 2: </span>Free hardware table</figcaption>
</figure>

<p>
I got an old Thinkpad x230 with Coreboot! I don't know yet if it has
patched EC firmware. Might be a problem if it doesn't because then I
can't use third party batteries and I probably have no way of patching
it without the original BIOS.
</p>


<figure id="org524bdf6">
<img src="static/images/x230-x220-keyboard.jpg" alt="Closeup of the keyboard on a Thinkpad x230, but it's not actually an x230 keyboard."> 

<figcaption><span class="figure-number">Figure 3: </span>Slightly modified Thinkpad x230</figcaption>
</figure>

<p>
Notice anything different with it?
</p>

<p>
There was also an evening trip to Oxide Computer Company in Emeryville
but by that time I was so tired and stressed out that I just noped out
and tried to sleep instead. It would have been interesting to visit
Oxide but I just couldn't do it.
</p>

<p>
Didn't see a lot of Mountain View and Sunnyvale. What I saw were
mostly business park office buildings. Not that downtown Mountain
View, if there even is such a thing, was much better.
</p>


<figure id="org06074ae">
<img src="static/images/osfc-mp6.jpg" alt="Incredible drab office building with some OSFC flags at the front door.">

<figcaption><span class="figure-number">Figure 4: </span>Google's MP6 building</figcaption>
</figure>


<figure id="org9210f39">
<img src="static/images/dehanj+mc.jpg" alt="CW: Eye contact. Two very geeky persons with glasses, one in blue jeans and grey sweater, one all in black. Both have backpacks and goodie bags. They stand in front of a Silicon Valley office building with some flags and signs in front."> 

<figcaption><span class="figure-number">Figure 5: </span>dehanj and MC in front of MP6. Photo by Sasko Simonovski.</figcaption>
</figure>
</div>
</div>
<div id="outline-container-org0dbd513" class="outline-2">
<h2 id="org0dbd513">San Francisco</h2>
<div class="outline-text-2" id="text-org0dbd513">
<p>
After OSFC I needed something completely different, so I spent four
days in San Francisco.
</p>

<p>
I went by double-decker train from Sunnyvale to SF directly after OSFC
concluded. That was fine but a little slow. This, it seems, is a trend
with US trains.
</p>


<figure id="org1ae59bd">
<img src="static/images/sf-sign.jpg" alt="Train station sign saying &quot;San Francisco&quot;.">

</figure>

<p>
I took the Muni from the station to the Haight. I sat on the Muni tram
re-reading Gibson's Virtual Light when I saw the lights of the Bay
Bridge in the dark! I giggled with excitement.
</p>

<p>
I stayed at the much cheaper Stanyan Park Hotel, right next to Golden
Gate Park.
</p>


<figure id="orgaa15710">
<img src="static/images/sf-stanyan.jpg" alt="Front of a Victorian building with a sign saying &quot;No vacancy&quot;.">

<figcaption><span class="figure-number">Figure 6: </span>Stanyan Park Hotel</figcaption>
</figure>

<p>
The first thing I did was get a pizza and a beer that I brought to the
room:
</p>


<figure id="orgbb82618">
<img src="static/images/sf-pizza.jpg" alt="A small pizza, a beer can, and a bag of crisps on a victorian desk."> 

<figcaption><span class="figure-number">Figure 7: </span>Pizza!</figcaption>
</figure>

<p>
This being SF there's not just a Gideonite bible by the bed:
</p>


<figure id="org521b5ee">
<img src="static/images/sf-not-just-bible.jpg" alt="A drawer containing the bible and another book with the title &quot;The teaching of the Buddha&quot;."> 

<figcaption><span class="figure-number">Figure 8: </span>Tracks of Buddhist Gideonites?</figcaption>
</figure>

<p>
I approve!
</p>

<p>
The hotel TV greeted me with the great but slightly embarassing "The
Lost Boys":
</p>


<figure id="org9e27cee">
<img src="static/images/sf-kiefer.jpg" alt="A slightly bearded white male in black clothes and a mullet smiling on the TV. Very yellow wall paper behind the TV.">

</figure>

<p>
But hey, it's Kiefer Sutherland! I felt very welcome.
</p>

<p>
The hotel was in a really nice neighbourhood and I just loved the huge
park, its ravens, the many squirrels, and, surprisingly, parrots!
</p>

<p>
In the Haight I especially liked the
<a href="https://boundtogether.org/">Bound Together anarchist bookstore</a>
and, just across the street, the <a href="https://magnoliabrewing.com/">Magnolia brewpub</a> named after the 70's
burlesque artist with the wonderful name Magnolia Thunderpussy. Coffee
to the People was nice, too, as well as the Science Fiction bookstore
<a href="https://borderlands-books.com/">Borderlands</a>.
</p>

<p>
I bought a t-shirt and the latest <a href="https://microcosmpublishing.com/catalog/artist/aaron-cometbus">Cometbus</a> zine at Bound Together. As
you can probably guess, Cometbus is really hard to get a hold of in
Sweden.
</p>

<p>
I walked around some in SF, not just Haight and the park. I took the
Muni downtown, walked through Chinatown to North Beach, just looking
at things.
</p>


<figure id="org38abfbc">
<img src="static/images/sf-house.jpg" alt="Street crossing. On the other side a very thin corner on a Victorian house in green and white. Behind it SF skyscrapers."> 

</figure>


<figure id="org2dd3e2e">
<img src="static/images/sf-chinatown.jpg" alt="A white house with chinese characters and what looks like the Taiwanese flag on a flag pole.">

</figure>


<figure id="orgb60782f">
<img src="static/images/sf-chinatown2.jpg" alt="A crossing with low houses with chinese signs. In the background a famous SF scryscraper.">

</figure>

<p>
My goal was really <a href="https://citylights.com/">City Lights Books</a>, the original beatnik bookstore
and publisher.
</p>


<figure id="orgb33f9fe">
<img src="static/images/sf-city-lights.jpg" alt="A building with a sign saying &quot;City Lights Booksellers &amp; publishers&quot;.">

</figure>

<p>
I found some nice Gary Snyder at City Lights and then went across
Kerouac Street (Yes! Really!) to the equally legendary Vesuvio bar for
a beer or two. I sat at a table reading Gary's lovely translation of
the amazing buddhist Tang dynasty poet 寒山/Hánshān: "Cold Mountain
Poems". I've read them before in different translations but I like
Gary's the most.
</p>


<figure id="org2987ce9">
<img src="static/images/sf-riprap-beer.jpg" alt="Gary Snyder's book &quot;Riprap&quot;, which includes &quot;Cold Mountain Poems&quot; on a table with a glass of beer next to it.">

</figure>

<p>
My old colleague Sean met up one evening and showed me around in the
office building he works in. Wonderful view of the Bay bridge. Their
cool speakeasy rooms were a nice surprise but I was slightly saddened
by their superficial "Zen room".
</p>


<figure id="org40c92a0">
<img src="static/images/bay-bridge.jpg" alt="View of the Bay Bridge and a lot of water, as seen from a terrace high above street level.">

<figcaption><span class="figure-number">Figure 9: </span>San Francisco-Oakland Bay Bridge</figcaption>
</figure>

<p>
We went on a pub crawl, starting with <a href="https://fortpointbeer.com/">Fort Point</a> by the ferry. This
was the first time I noticed that kölsch beer (Fort Point's KSA) is a
thing in California. I later saw that again in Magnolia's Kali Kolsch.
Both quite nice. Of course they pronounced it wrong, but it was good.
</p>

<p>
We then went on to <a href="https://www.zeitgeistsf.com/">Zeitgeist</a>, a very alternative biergarten, with the
nice Tom Waits-inspired motto "Warm beer. Cold women". I was a little
surprised that they checked ID on <i>everyone</i>, even a bald guy with a
white beard like me.
</p>

<p>
Sitting in the garden at Zeitgeist I couldn't help myself looking at
the beautiful redhead at the next table. When she noticed she met my
gaze and split into a wonderful smile. She left with her friends later
and nothing happened, but it was&#x2026; interesting. Sean said something
like "Oh, you liked <i>her</i> alright!" I guess I'm kind of obvious like
that.
</p>

<p>
Then it hit me&#x2026; I have never experienced so much flirting! Just
walking down the street in the Haight&#x2026; Wow. Standing in a bar.
Wherever. Eyes linger, people smile, and some of them come up and talk
to you. Was it like this on my visit to Seattle in 2017, too? Did I
just forget? Or is this just (alternative) Californian women?
</p>

<p>
We continued to a few other places, <a href="https://www.toronado.com/">Toronado</a> gets a special mention,
and then I walked home to the hotel.
</p>

<p>
Another night I went to the <a href="https://hubbarevue.com/">Hubba Hubba Revue's</a> show "Vampires!" at
<a href="https://www.dnalounge.com/">DNA Lounge</a>. I would have liked to go to Death Guild, but I couldn't be
there on the day, but of course I had to experience <a href="https://www.jwz.org/">JWZ's</a> DNA Lounge
when in SF, right? And see the phone! Also, hey, a burlesque show!
</p>


<figure id="org7251528">
<img src="static/images/sf-dna-phone.jpg" alt="An american payphone covered in stickers in neon light. Beside it is a painted mannequin with some shibari going on.">

<figcaption><span class="figure-number">Figure 10: </span>DNA Lounge's famous phone</figcaption>
</figure>

<p>
Dammit! I forgot to bring stickers!
</p>

<p>
The show was nice and very body positive. I especially liked the
finishing act with both a man and a woman. But what's up with the
single-serve plastic glasses at DNA?
</p>

<p>
Again, a lot of beautiful people smiled and let their gaze linger. One
brunette in particular did a double take when she saw me and then
smiled hugely. Double take? Did she recognize me? Do I have a
Californian doppelgänger?
</p>

<p>
I was standing on the second floor next to the mixing console at DNA.
After a while I was surrounded by burlesque performers, most of them
still in their outfits, or, well, sometimes almost no outfit.
Unexpected, but certainly nice.
</p>

<p>
The next day I had to work. I stayed in the hotel lobby for most of
the afternoon, working on a laptop, got some provisions, and even
managed to meet my friend Ian for another pizza before trying to find
the bus stop for the next leg of the journey.
</p>

<p>
I still had a lot to discover in SF, but I was happy with my four days
there. I wanted to visit my friend Roberth in PNW as well while I was
still in the US.
</p>

<p>
SF is a really interesting and nice place, except that it's quite
obvious that a lot of people there don't get the help they need. Lots
of unhoused people and lots of people with drug problems.
</p>
</div>
</div>
<div id="outline-container-org91a978b" class="outline-2">
<h2 id="org91a978b">Coast Starlight to Seattle</h2>
<div class="outline-text-2" id="text-org91a978b">
<p>
Amtrak's connecting bus to the Coast Starlight train to Seattle goes
from a bus stop right in front of Chase Bank in FiDi. Strange location
for a bus to the train station in Emeryville, perhaps, but it felt
rather safe, and was just a few minutes from the pub I had ended up
at, Louie's. Walking from Rad Radish, where I had had pizza with Ian,
to Louie's at the edge of Tenderloin felt much less safe.
</p>

<p>
When I arrived at the bus stop some people were already waiting.
Everyone looked up when I arrived. A beautiful alternative girl (AG)
then smiled and even waved a little. I thought she maybe misstook me
for someone else. The doppelgänger strikes again? Or was she just
really friendly?
</p>

<p>
Stupidly, I didn't even talk to her and instead respectfully stood
some way away. I mean, we could have just talked. Might have made a
less lonely journey. But it was such a strange situation, at a bus
stop at night in a forsaken financial district. I didn't want to
appear creepy or threatening. I feel like a monster often enough as it
is.
</p>

<p>
The bus took us to Emeryville Station, then we had to wait for over an
hour and a half for the train. The journey didn't start that well. I
read some more in Cometbus #59 and had a roof over my head, so it
wasn't all bad.
</p>

<p>
Then, at last, we were on Amtrak's Coast Starlight Superliner to
Seattle! Huge double-decker train with twin diesel locomotives. I was
expecting 21 hours on the train. As I said, trains in the US are slow
and, for some reason, freight trains have priority? It felt so
backwards to this euro mind.
</p>

<p>
I managed to sleep some on the train. Surprisingly there was a lot of
legroom even in coach and you could tilt the seat way back, even turn
up a little leg rest.
</p>

<p>
When I woke up the sun was coming up over misty Oregon mountains and
rivers without end (see what I did?). AG was sleeping in the seat in
front of me. I was otherwise surrounded by some Amish or Mennonite
families in traditional clothing. They spoke a strange, almost
understandable German with a lot of American loanwords. It was really
interesting to try to understand what the beautiful 20-something
daughters said.
</p>

<p>
When AG woke up some time later the Mennonites were gone. AG looked
around a little, met my eyes over her tilted back seat, smiled again,
and then took off her t-shirt! She quickly put on another but, uh&#x2026;,
that was interesting. A lot of skin, no bra. Obviously a very relaxed
person. I was clearly not perceived as a threat, monster or not.
</p>

<p>
Not too many crazies on the trip. Some guy went back and forth a lot
until the conductor had had it and figured out that they had forgot
where they were sitting. Or maybe didn't belong on the train at all.
Another guy came through the car a couple of times praying loudly. But
that was all.
</p>

<p>
As I had suspected there wasn't much for me to eat on the train. They
actually <i>had</i> some vegan options, though, and they had beer, of
course. I was glad I had shopped my own food.
</p>

<p>
We were actually a little early to Seattle! The train made up for
being late to Emeryville. Amazing, considering how slow it was.
</p>
</div>
</div>
<div id="outline-container-org06b0531" class="outline-2">
<h2 id="org06b0531">Seattle and Microsoft</h2>
<div class="outline-text-2" id="text-org06b0531">
<p>
Roberth picked me up by car in Seattle and brought me to his place. I
later crashed and slept for nine hours and woke up before the alarm
clock. That was amazing! Dreamt a lot. Finally. I had missed dreaming.
</p>

<p>
This was not like the other nights in the US. Had a lot of trouble
falling asleep, typically four-five hours of just tossing around,
trying to sleep. I got something like four hours of sleep per night
during most of the visit.
</p>

<p>
I worked from R's for a couple of days, but didn't manage to get a lot
done. Very stressed, nervous, and tired. Managed some PR reviews and
worked some on the next talk. I cooked for me and R a couple of times
and sometimes we went out for food. R is certainly the perfect host!
</p>

<p>
On Friday it was time for my talk at Microsoft! I was really nervous.
R looked up how many people had signed up. 54 people! Including people
from Research. Wow. He was surprised, too. In the end something like
30+ showed up, all of them, besided R and me, were remote! That was
also unexpected. I could have done this from home!?
</p>

<p>
We both thought the talk went well. Phew! I mean, I was explaining
things about DICE-like measured boot to some of the people who
invented it!
</p>

<p>
We went to <a href="https://www.canonseattle.com/">Canon</a> for cocktails to celeberate. 5000 bottles in the
house! And chilled Chartreuse on tap! I just had to have one. Very
goth. The very fancy I.W. Harper bourbon (was it the 15 year-old?) was
better, of course.
</p>

<p>
During my stay in Seattle we also went to <a href="https://www.pineboxbar.com/">The Pine Box Bar</a>, the old
mortuary turned bar! What's not to like!? Of course I also visited the
Anarchist bookshop <a href="https://www.leftbankbooks.com/">Left Bank Books</a> at Pike Place. I bought a t-shirt
and the latest <a href="https://2600.com/">2600</a> and paid with a lot of tips. A lot. Like a small
donation, I suppose.
</p>

<p>
One night we met up with our old net.friend Caitlin from <a href="https://en.wikipedia.org/wiki/Futureculture">Future
Culture</a> and her husband at <a href="https://florarestaurantgroup.com/restaurant/cafe-flora-seattle/">Cafe Flora</a>. Meeting Caitlin AFK was like
continuing a conversation that started online a very long time ago. I
think I joined in 1992 and C in 1993? We had never met before! This
led to a flurry of messages between me and C that keeps on going.
</p>

<p>
When I went to fetch more beers for us at a pub we ended up at later,
a young woman in all black at the bar again did that double-take and
smiled a lot. Not just alternative Californian women, then?
</p>
</div>
</div>
<div id="outline-container-orgf998644" class="outline-2">
<h2 id="orgf998644">Going home &amp; post-travel blues</h2>
<div class="outline-text-2" id="text-orgf998644">
<p>
On Sunday I left for Sweden again, going SEA-ORD-CPH. Four hours to
Chicago with about 2 hours there, then about 8 hours more. In a
cramped bus-like structure with terrible noise. Ugh&#x2026; Had a lot of
thoughts about taking <a href="https://www.cunard.com/en-gb/cruise-ships/queen-mary-2/9">Queen Mary 2</a> for the next trip. Not even sure
it's more environmentally sound, but at least it's more comfortable.
</p>

<p>
While changing planes in Chicago I managed to lose my black overcoat.
Another sacrifice to Eris. The last one was my hat on the previous
trip to the US. Perhaps a sacrifice to the goddess of chaos,
confusion, and discord is necessary for having visited the US?
</p>

<p>
Managed to sleep perhaps just 1:30 hours so I was quite tired when I
arrived at home, but it felt good to be home, at first.
</p>

<p>
The week after was a case of quite serious post-travel blues. I didn't
even know this feeling had a name before, but it's not just me,
apparently. Not a great week, anyway. Feeling sad, guilty, and
restless even to the point of thoughts of self-harm. The self-hatred
just grew and grew.
</p>

<p>
Spent a lot of time in a nostalgic mood, searching for and reading old
e-mail messages. Example quote (translated): "the time with you was
the worst in my life" reminding me about a very&#x2026; frustrating
relationship. On the other hand I also found a lot of sweet messages.
</p>

<p>
All the stress and little sleep also took somatic expressions. I had
awful neck pain that stayed for a couple of weeks. My old beard ecsema
also flared up so I had to shave most of it off.
</p>


<figure id="orgbb25e83">
<img src="static/images/mc-ecsema.jpg" alt="CW: Eye contact. Unhappy bald white man in a black t-shirt standing in a bathroom. Just a little piece of white beard left. Red chin from ecsema.">

</figure>

<p>
On the other hand #3 says I look a lot younger now. That's something,
I guess.
</p>

<p>
The cottage kitchen renovation still isn't quite finished but we
decided to spend some time at the cottage anyway. Slightly complicated
with no working stove but we managed with a small portable induction
stove.
</p>

<p>
I stayed on for a couple of more days when #3 and P went back
to the city. The nature around the cottage can be quite soothing and I
think I needed that after the journey.
</p>

<p>
This too shall pass.
</p>


<figure id="org8a3bd37">
<img src="static/images/cottage-lake1.jpg" alt="The lake on a sunny day. In front there are some reed. The sky is reflected in the still water. You can see the other side of the lake.">

</figure>


<figure id="org5937238">
<img src="static/images/cottage-lake2.jpg" alt="Even more still lake and reflected sky.">

</figure>


<figure id="org87c796d">
<img src="static/images/cottage-nature.jpg" alt="A flat green field with some trees and shadows. Huge white clouds in a blue sky.">

</figure>
</div>
</div>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Boomtime, the 60 day of The Aftermath in the YOLD 3189 (<time datetime="2023-12-18">2023-12-18</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/mc-in-us.html</link>
  <guid>https://hack.org/~mc/blog/mc-in-us.html</guid>
  <pubDate>Mon, 18 Dec 2023 23:35:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[Tillitis TKey now available]]></title>
  <description><![CDATA[
<figure id="org64fe9a7">
<img src="static/images/first-prod-tkey.jpg" alt="first-prod-tkey.jpg">

<figcaption><span class="figure-number">Figure 1: </span>First production TKey being tested</figcaption>
</figure>

<p>
The Tillitis TKey, which <a href="https://hack.org/mc/blog/tillitis-key.html">I first wrote about in September last year</a>,
is now available for sale at the <a href="https://shop.tillitis.se/">the Tillitis webshop</a>. Note that this
is a locked down end-user version! It's not possible to update the
FPGA bitstream (or read it, or the Unique Device Secret, out) on this
one.
</p>

<p>
The TKey is a small bare-bones RISC-V computer in a USB stick form
factor with no persistent storage that measures the app uploaded to it
and derives a deterministic secret every time the same app is started.
You can use it, for instance, as a security token to keep your private
key and do signing operations. Everything is released under open
licenses, including the hardware design, the CPU, the cores, the PCB,
software, everything.
</p>

<p>
There's a very much work in progress Developer's Handbook:
</p>

<p>
<a href="https://dev.tillitis.se/">https://dev.tillitis.se/</a>
</p>

<p>
The last few weeks before the launch were rather stressful, among
other things because of chasing some bugs, some late changes, and
setting up the in-house provisioning. I almost lived at the HQ in
Gothenburg at the end, just going back to the hotel room to crash for
a few hours, then back again.
</p>

<p>
I'm rather pleased how some hardware security features and the
firmware turned out. Here's the firmware main source:
</p>

<p>
<a href="https://github.com/tillitis/tillitis-key1/blob/main/hw/application_fpga/fw/tk1/main.c">https://github.com/tillitis/tillitis-key1/blob/main/hw/application_fpga/fw/tk1/main.c</a>
</p>

<p>
We lost a lot of history when making the initial public release back
in September. In retrospect I think this was a mistake, but there you
go.
</p>

<p>
The applications need some love, though. We spent so much time with
the actual TKey stuff that we're a little behind on the apps. First up
is preparing a slightly more polished SDK, splitting the Go packages
and the device libraries out of the apps repo.
</p>

<p>
Our SSH agent is quite usable and I use it every day. It's packaged in
Homebrew and we have .deb packages that work on Debian and Ubuntu but
it's not yet part of any Linux distribution:
</p>

<p>
<a href="https://formulae.brew.sh/formula/tkey-ssh-agent">https://formulae.brew.sh/formula/tkey-ssh-agent</a>
</p>

<p>
<a href="https://github.com/tillitis/tillitis-key1-apps/releases/tag/v0.0.6">https://github.com/tillitis/tillitis-key1-apps/releases/tag/v0.0.6</a>
</p>

<p>
I presented the TKey at the SamNet conference in Stockholm in
February. Recording in Swedish here:
</p>

<p>
<a href="https://play.mittdata.se/w/s9V87wkphFe7r1g15zwfrU?start=3h9m18s">https://play.mittdata.se/w/s9V87wkphFe7r1g15zwfrU?start=3h9m18s</a>
</p>

<p>
It's difficult to hear the questions at the end and I didn't realize
that I perhaps should have repeated them, but there you go.
</p>

<p>
I later presented the TKey at <a href="https://www.netnod.se/netnod-events/netnod-meeting-2023">the Netnod Meeting 2023</a>. Recording in
English here:
</p>

<p>
<a href="https://www.youtube.com/watch?v=X7IllDLFKRk">https://www.youtube.com/watch?v=X7IllDLFKRk</a>
</p>

<p>
My slides:
</p>

<p>
<a href="https://www.netnod.se/sites/default/files/2023-03/Nr.4_MC%20Widerkrantz.pdf">https://www.netnod.se/sites/default/files/2023-03/Nr.4_MC%20Widerkrantz.pdf</a>
</p>

<p>
I was incredibly nervous, especially doing the talk in English, and
had to rely on my notes quite a bit, so I apologize for seeming a bit
stiff. When the Q&amp;A started I feel I had warmed up a bit, as you can
probably tell.
</p>

<p>
It's very exciting times!
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Sweetmorn, the 38 day of Discord in the YOLD 3189 (<time datetime="2023-04-21">2023-04-21</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/tkey-available.html</link>
  <guid>https://hack.org/~mc/blog/tkey-available.html</guid>
  <pubDate>Fri, 21 Apr 2023 14:36:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[H3: Instead of C3]]></title>
  <description><![CDATA[<p>
[Updated with correct Gemlog link.]
</p>

<p>
A version of this was posted on Gemini 2023-01-06 but I thought it
might also fit here. Go to my gemlog for somewhat more personal takes
and see what I publish first. IPv6 only!
</p>

<p>
gemini://gem.hack.org/mc/log/
</p>

<p>
As long-time readers know I have participated in the Chaos
Communication Congress (C3) in Germany every year since 2008.
</p>

<p>
Since C3 was cancelled this year I thought I'd arrange a very small
conference of my own. I would at least try to gather some friends and
acquaintances in chat and video conference and watch the decentralized
events (Dezentrale Jahresendungveranstaltungen, JEV22) the community
had set up instead of C3.
</p>

<p>
I didn't know what to expect of JEV22, really, so I thought there
wouldn't be that much to watch. I was mostly hoping that at least the
conferences Fire Shonks and Hacking in Parallel would give us
something interesting.
</p>

<p>
P thought I would sit around and mope over a Club-mate for the
duration&#x2026; Which would probably be true if it weren't for my
friends and some friends of friends.
</p>

<p>
I decided early on that our own event would be in Swedish and sort of
invite-only by word of mouth, friend to friend. I don't think I could
have handled it right now if we did it in English or had a totally
open policy. I wanted it to be&#x2026; cosy?
</p>

<p>
I explained my idea to my boss and since I usually go to C3 on company
time he said I could do this on company time, too!
</p>

<p>
Naming is, as you know, one of the hard things in computer science. I
decided to call the mini confrence H3. It has a few meanings in
Swedish and English:
</p>

<ul class="org-ul">
<li>Hacklunchare Hackar Helst (something like "#hacklunch members rather
hack")</li>
<li>Hamburg (was) Humbug (we're still) Hacking.</li>
<li>Hamburg @ Home Hack.</li>
<li>Hops &amp; Hacking @ Home.</li>
<li>Happy Harry Hardon, the hard talking pirate radio operator from
"Pump up the Volume".</li>
</ul>

<p>
We gathered on a bridged IRC/XMPP/Matrix chat (<a href="https://hackint.org/">hackint.org</a> did all the
job, really) and on a Jitsi my friend cos set up. I think we had
something like 15 simultaneous users on the Jitsi at most.
</p>

<p>
We even had some talks of our own! I talked about the <a href="https://tillitis.se/">Tillitis TKey</a>
with a slightly better reprise the next day. kugg talked about
"Fantastic anomalies and where to find them" and ln5 talked about how
the "Tor Snowflake proxy" works.
</p>

<p>
When not doing presentations and listening to our own talks some of us
kept the Jitsi open and watched JEV talks in another window. It felt
almost like being at the congress.
</p>

<p>
I think this was a success, really. Now I want to do it again! Perhaps
this is a start of a tradition?
</p>

<p>
All in all I watched 10 talks from the JEV22 if we include the two of
our own I also watched. The JEV22 stuff will be available on
</p>

<p>
<a href="https://media.ccc.de/c/jev22">https://media.ccc.de/c/jev22</a>
</p>

<p>
Mullvad VPN even got a mention as a VPN provider with sensible PQ
crypto (Classic McEliece) from DJB and Tanja in their talk
<a href="https://media.ccc.de/v/fire-shonks-2022-49246-post-quantum-cryptography-detours-delays-and-disasters">Post-quantum cryptography: Detours, delays, and disasters</a>!
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Prickle-Prickle, the 24 day of Chaos in the YOLD 3189 (<time datetime="2023-01-24">2023-01-24</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/h3-2022.html</link>
  <guid>https://hack.org/~mc/blog/h3-2022.html</guid>
  <pubDate>Tue, 24 Jan 2023 16:00:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[Tillitis Key 1]]></title>
  <description><![CDATA[<p>
This week we presented the <a href="https://tillitis.se/">Tillitis Key 1</a> at the <a href="https://osfc.io/">Open Source Firmware
Conference</a>. What we unveiled is a new kind of security device in the
form of a USB stick and a new company, a sister company to <a href="https://mullvad.net/">Mullvad
VPN</a>: <a href="https://tillitis.se/">Tillitis</a>. Yes, this means I now work for a new company.
</p>

<p>
The stick is a small computer that can load and run small programs
uploaded to it from a host computer. It always measures every new
program and derives a unique secret for every program that can be used
as an identifier, for instance by deriving a public/private key pair
from the identity and signing messages.
</p>

<p>
Myself, <a href="https://lublin.se/software/">Daniel "quite" Lublin</a> and Björn Töpel have written the
software: the qemu emulator code, the firmware, the uploadable
programs, the host software, some of the interfaces to the chip
simulator, and some build stuff. Joachim Strömbergson did the hardware
design in Verilog. <a href="https://blinkinlabs.com/">Matt Metts</a> did the PCB designs and the firmware for
the MCU and the programmer as well as handling all the production.
Fredrik Strömberg came up with the idea, the initial function design,
and a lot of whiteboarding.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Sweetmorn, the 47 day of Bureaucracy in the YOLD 3188 (<time datetime="2022-09-23">2022-09-23</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/tillitis-key.html</link>
  <guid>https://hack.org/~mc/blog/tillitis-key.html</guid>
  <pubDate>Fri, 23 Sep 2022 15:12:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Gemini capsule]]></title>
  <description><![CDATA[<p>
<a href="https://gemini.circumlunar.space/">Gemini</a> is a lightweight Internet protocol. It's heavier than Gopher
but lighter than HTTP(S), especially if combined with all other web
technologies. The name makes sense if Gopher is Project Mercury and
the web is the Apollo program.
</p>

<p>
One of its uses is to serve gemtext, which is a lightweight
Markdown-like markup language, instead of HTML. Gemini browsers don't
have support for neither Javascript, nor CSS, nor any of the other new
web technologies. It can be beautiful anyway, see for instance
<a href="https://gmi.skyjake.fi/lagrange/">Lagrange</a>.
</p>

<p>
I now run a small Gemini server. My Gemini capsule is on:
</p>

<p>
gemini://gem.hack.org/mc/
</p>

<p>
It's on v6 only, demands strict TLS 1.3 and uses a self-signed ed25519
cert. I find it a bit funny to use something so modern(ish) for
something so retro.
</p>

<p>
I have a gemlog (weblog, but not) here:
</p>

<p>
gemini://gem.hack.org/mc/log/
</p>

<p>
It's formed in the gmisub style so some Gemini feed readers should be
able to use it.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Boomtime, the 59 day of Discord in the YOLD 3188 (<time datetime="2022-05-12">2022-05-12</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/gemini.html</link>
  <guid>https://hack.org/~mc/blog/gemini.html</guid>
  <pubDate>Thu, 12 May 2022 21:38:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[From Netnod to Mullvad]]></title>
  <description><![CDATA[<p>
Tomorrow is my last day at <a href="https://netnod.se">Netnod</a> after seven years. While at Netnod I
have mostly spent my time helping build several different anycast DNS
solutions, but I also did some IX provisioning stuff, some security
work, and in some small way also helped bring the <a href="https://labs.ripe.net/author/michael_cardell_widerkrantz/what-is-network-time-security-and-why-is-it-important/">Network Time
Security</a> protocol forward.
</p>

<p>
A few years back I was the team leader for the developers for a while,
but I refused to have managerial duties so when Netnod formed an R&amp;D
department we got a new manager and I stepped back to some senior
role. I managed to go without a title for quite a while. I liked that.
</p>

<p>
I believe I have made at least some difference through my work at
Netnod but there is still a lot of work to do for the people who I
leave behind. Good luck, everyone!
</p>

<p>
On Monday I start a new job as a member of the new(ish) Trustworthy
Computing Research team at <a href="https://mullvad.net/">Mullvad VPN</a> (again, no title!). More
research, more computer security, and a bit closer to the hardware.
And, hopefully, quite a bit less stress?
</p>

<p>
I will continue to work from Malmö, Sweden. I will even go to the same
office, which I share with some friends.
</p>

<p>
It's with mixed feelings I leave Netnod. I still believe in Netnod's
mission: Interconnections, worldwide DNS service, and very exact time.
These are all important things. I like to think that in my new role I
will also contribute to some important things, things that might also
get used by Netnod.
</p>

<p>
What will I do at Mullvad? It's not really set in stone yet, but I
believe I will help figure out how to trust machines more, even if
they're remote. Some interesting projects that might be or become
involved:
</p>

<ul class="org-ul">
<li><a href="https://www.system-transparency.org/">System Transparency</a></li>
<li><a href="https://www.sigsum.org/">sigsum</a></li>
<li><a href="https://www.linuxboot.org/">LinuxBoot</a></li>
<li><a href="https://www.cl.cam.ac.uk/research/security/ctsrd/cheri/">CHERI ISA</a></li>
<li><a href="https://developer.arm.com/architectures/cpu-architecture/a-profile/morello">ARM Morello</a></li>
<li><a href="https://safeboot.dev/">Safeboot</a></li>
<li><a href="https://osresearch.net/">Heads</a></li>
<li><a href="https://www.coreboot.org/">coreboot</a></li>
</ul>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Sweetmorn, the 29 day of The Aftermath in the YOLD 3187 (<time datetime="2021-11-17">2021-11-17</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/netnod-mullvad.html</link>
  <guid>https://hack.org/~mc/blog/netnod-mullvad.html</guid>
  <pubDate>Wed, 17 Nov 2021 23:31:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[Chatcontrol, searching messages for illegal content]]></title>
  <description><![CDATA[<p>
On July 6 the EU parliament voted yes to <a href="https://www.europarl.europa.eu/RegData/docs_autres_institutions/commission_europeenne/com/2020/0568/COM_COM(2020)0568_EN.pdf">a proposal from the EU
commission</a> (PDF) on a temporary law to allow services to automatically
search messages for suspicious content with a focus on child
exploitation.
</p>

<p>
We have quite strict confidentiality laws within EU even when it comes
to electronic communication. Its current basis is the <a href="https://eur-lex.europa.eu/legal-content/EN/ALL/?uri=CELEX:32002L0058">2002/58/EC
"ePrivacy Directive"</a> (PDF) from 2002. On 21 December 2020 the new
<a href="https://eur-lex.europa.eu/legal-content/EN/TXT/PDF/?uri=CELEX:32018L1972&amp;from=EN">"European Electronic Communications Code"</a> (PDF) came into affect in
local laws (or the countries would face fines) and that directive
redefined electronic communication services to also include
"number-independent interpersonal communications services", which I
think means things like e-mail and IM messages.
</p>

<p>
When this change of definition came into force in local laws it
suddenly made some existing practises illegal. You see, some service
providers automatically scan their users' messages for child
exploitation. As cryptographer Matthew Green wrote in <a href="https://blog.cryptographyengineering.com/2019/12/08/on-client-side-media-scanning/">his insightful
article about client-side scanning</a> in 2019:
</p>

<blockquote>
<p>
Facebook, Google, Dropbox and Microsoft, among others, currently
perform various forms of automated scanning on images (and sometimes
video) that are uploaded to their servers. The goal of these scans
is to identify content that contains child sexual abuse imagery
</p>
</blockquote>

<p>
The commission scrambled to make this legal again and <a href="https://www.europarl.europa.eu/RegData/docs_autres_institutions/commission_europeenne/com/2020/0568/COM_COM(2020)0568_EN.pdf">suggested a
temporary law</a> (PDF) while they figure out what to do about it. Things
dragged on for quite a while and not until this summer the temporary
law was voted on in the EU parliament.
</p>

<p>
Here you can see how the MEPs voted on this proposal on July 6:
</p>

<p>
<a href="https://mepwatch.eu/9/vote.html?v=134463">https://mepwatch.eu/9/vote.html?v=134463</a>
</p>

<p>
It's interesting to note that Germany and the Netherlands voted
against but that Sweden voted for.
</p>

<p>
Checking in on the Swedish MEPs and how they voted:
</p>

<p>
<a href="https://mepwatch.eu/9/vote.html?v=134463&amp;country=se">https://mepwatch.eu/9/vote.html?v=134463&amp;country=se</a>
</p>

<p>
I'm really surprised to see only Malin Björk from Vänsterpartiet/Left
party voted against! It's also interesting that the German Social
Democrats were split on the question (10 for, 6 against) but the
Swedish Social Democrats all voted for the proposal.
</p>

<p>
I can't help wondering if the Swedish MEPs fully understood what they
were voting for? Since this hasn't been covered that much in media,
especially compared with the recent Apple announcement that they will
scan photos, I haven't seen any party representatives speak up about
this.
</p>

<p>
The MEP Patrick Breyer for the German Piratenpartei has a lot more
information about this on a campaign site:
</p>

<p>
<a href="https://chatcontrol.eu/">https://chatcontrol.eu/</a>
</p>

<p>
<a href="https://blog.cryptographyengineering.com/2019/12/08/on-client-side-media-scanning/">Matthew</a> again:
</p>

<blockquote>
<p>
[T]oday’s CSAI scanning infrastructure represents perhaps the most
powerful and ubiquitous surveillance technology ever to be deployed by
a democratic society[.]
</p>
</blockquote>

<p>
Consider if this far-reeaching scanning infrastructure will scan for
something else? And what about false positives?
</p>

<p>
Watch out for the December 2021 follow-up proposal from the
commission! The already accepted proposal is a temporary law and the
real law will be proposed soon and might be consideribly worse, for
instance making scanning mandatory.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Sweetmorn, the 27 day of Bureaucracy in the YOLD 3187 (<time datetime="2021-09-03">2021-09-03</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/chatcontrol.html</link>
  <guid>https://hack.org/~mc/blog/chatcontrol.html</guid>
  <pubDate>Fri, 03 Sep 2021 13:11:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[YOLD 3186]]></title>
  <description><![CDATA[<p>
Year of our Lady Discordia 3186, 2020 of the common era. The year of
the Covid-19 pandemic.
</p>

<p>
The year began with a colleague visiting me from Stockholm for some
intense pair programming. In person! Imagine when that was possible!
</p>

<p>
Then I went with Ludvig and Gabriel to the mountains to ski for a
week and then off to visit mom with #3. This was the only time I met
my mom this year. I didn't meet my dad at all. P didn't meet her
parents at all.
</p>

<p>
In late February I went to Stockholm for work as I usually do about
once a month. Some time later the fever hit. P was also sick. We
naturally thought it was the new influenza, but there were no tests at
that time so we couldn't be sure.
</p>

<p>
We isolated ourselves in our cottage and spent a few weeks working
there. See <a href="https://hack.org//mc/blog/quarantine.html">Life in the quarantine cottage</a>. School wasn't closed, but
we figured #3 should be isolated as well. She had class assignments
over the Internet and I rescheduled my day a bit to help her.
</p>

<p>
Sweden didn't have any real lockdowns last year. Actual curfews and
the like are not legal here in peacetime. There has been some movement
in parliament about new laws about that but such things move slowly,
as it should.
</p>

<p>
That said we have had a society with much reduced social activities. A
lot of restaurants, hotels and similar business have gone under. Gyms
and things like that are still nominally open, but with
recommendations that we don't visit them, so they're mostly empty.
</p>

<p>
These "recommendations" are advice from authorities how to follow the
law, so not to be taken lightly. There has been a lot of
misunderstandings about this. The new laws might make things clearer.
</p>

<p>
The housing market has seen an upturn for country houses. People are
moving from the cities. A lot of people seem to bet on a future
friendlier to remote work. Or at least they finally get that country
cottage. 
</p>

<p>
Here's hoping for more remote jobs and better living, perhaps even
communal living; the future we really wanted all along. See <a href="https://hack.org/mc/blog/colloborative-writing.html">my mention
of the NEXUS movement</a>. Does it really take a pandemic to get there?
</p>

<p>
The schools are open. Secondary schools (16 to 19 year olds) have been
remote-only twice last year, I think. It was just announced that 13 to
16 year olds will be having remote education when school starts again
later in January after the holidays.
</p>

<p>
In Malmö remote education means Google Meet and Google Classroom,
since this is the municipality's poison of choice. I hope it works out
OK for the teenagers.
</p>

<p>
For younger students, there has been no arranged lectures or any way
of participating remotely in ordinary classes, even though at one time
2/3 of the pupils in my daughter's class were at home. They arranged
tasks through Google Classroom but it didn't work very well since
there were no common introductions to anything and no sanctioned way
to talk to a teacher.
</p>

<p>
I find it a bit strange that they didn't use more of the technology
available to them, but then again, remote schooling hasn't even been
formally allowed for the younger kids. I guess I can't really blame
the teachers for following orders. I hope they will make better use of
technology if they're formally allowed to plan for remote schooling.
</p>

<p>
In other ways the school's technology has helped #3 a lot this year,
but that is unrelated to the pandemic and the school-from-home thing.
</p>

<p>
We didn't get back to Malmö until April. Then we worked mostly from
home or the cottage the rest of the year. When things eased up a bit,
I travelled to, I think, two meetings but other than that didn't
travel at all to meet other people.
</p>

<p>
I managed to get to longsword practice a few times in the spring.
Then, when things started easing up after summer, I managed to get to
a few more before classes were cancelled. I continued practising at
home with my feder. Luckily we have quite high ceilings in the flat
and at least some distance to rather understanding neighbours in the
cottage so I can practise on the lawn.
</p>

<p>
My back has taken a turn to the worse, though, and I haven't been able
to use the training I usually do at the gym. Have to do something
about that, but not sure exactly what to do yet.
</p>

<p>
I have continued to bike a lot. I now have two bikes, The Goth Bike, a
matte black State 4130 with almost no markings in the city and a more
no-name cheap thing in the cottage. Both are minimalist single-speeds,
but not yet fixies, if they ever will be.
</p>

<p>
There's been a few changes at work. One of the most notable ones is
that my closest colleague quit. It's now just a consultant and me in
the Malmö office. I don't know if we'll keep the office or if it's
back to working at home full time again, like before.
</p>

<p>
Another change is that we now work in product teams. I'm in Team DNS,
although I still do some time &amp; frequency work, mostly for fun at IETF
hackathons.
</p>

<p>
I've been quite stressed out. A lot of overtime the first months of
the year and at least one less person to help me with work. The
product teams made things a bit better, I think.
</p>

<p>
We did a lot of work within our team to create a rather detailed
technical roadmap. I think this makes it possible to pace work in a
better way than before.
</p>

<p>
Other things I can't talk about also made work more stressful than it
should have. Let's see what the new year brings.
</p>

<p>
I'm nominally still on a 6 hour work day. It's been a bit hard to keep
myself to that, but I still think it's good idea in the long run for
someone like me. For the coming year I'm going to try even more to
keep to my hours.
</p>

<p>
I thought my IBS and dysphagia was worse than usual. Perhaps because
of the stress at work and the pandemic. I started a stomach diary in
July to see how this goes. It's a simple textfile with some formal
formatting that I made up on the spot. It should be easy to plot with
a script. It's entirely subjective, of course, but that's kind of the
point.
</p>

<p>
My mood wasn't that stellar either, of course. I'm glad that I'm well
medicated. I had some really dark patches that stretched out for weeks
at a time that would probably had me hospitalized (or worse) without
medication.
</p>

<p>
The most publicly visible part of my work during last year is now <a href="https://datatracker.ietf.org/doc/rfc8915/">RFC
8915</a>, the Network Time Security extension to the NTP protocol for a
more secure way of setting time over the Internet. That said, I spent
most of my time dealing with the anycast DNS infrastructure.
</p>

<p>
Here's a whitepaper about NTS I contributed to:
</p>

<p>
<a href="https://www.netnod.se/time-and-frequency/white-paper-how-does-nts-work-and-why-is-it-important">https://www.netnod.se/time-and-frequency/white-paper-how-does-nts-work-and-why-is-it-important</a>
</p>

<p>
I inherited a very capable workstation from a colleague. It has an i9
CPU with a bazillion Hz, 64 gig RAM, et cetera, et cetera. I have
moved most of my work to this beast, which I keep connected to a 34"
widescreen, the HHKB Pro 2 keyboard and the CST L-Trac trackball I
already had. Quite a change in pure oomph compared to working on the
laptops I've used for years.
</p>

<p>
The smaller cottage in our country cottage was renovated because of a
water leak. #3 liked the new little cottage so much that she claimed
it for her own.
</p>

<p>
This meant we could make the room she usually slept in into an office.
We bought some office furniture for the new office and another
sit/stand desk to the flat as well. Standing desks FTW!
</p>

<p>
During #3's summer holidays we leased an electric car and moved to the
country house for about two months. We couldn't travel far but we did
some day trips with the electric car and took long walks in nice
environments.
</p>

<p>
Someone rather close to me got diagnosed with a serious disease. I
don't want to write more about it here right now. Maybe later.
</p>

<p>
Ludvig finished his university studies in sound design and moved back
to us in Malmö. He was later joined by his girlfriend. He found a
temporary job after a while but continues to look for sound design
jobs and a flat of his own.
</p>

<p>
Gabriel is still studying computer security in Gothenburg. His school
wasn't able to handle the pandemic very well. At first, they had no
alternative when most of the students failed to find internships!
</p>

<p>
#3 grew taller than her mom! Not very hard, I admit.
</p>

<p>
She spends a lot of her time drawing or painting, mostly on paper, but
also with an Apple Pencil in Procreate on the used iPad she got for
her birthday. She did her first works in acrylic with her new easel
that turned out rather good.
</p>

<p>
She also cut her hair like Zoe Zanias/Alison Lewis (Zanias/Linea
Aspera) after having seen a music video with her. She's mostly dressed
in black these days. She wants to go with me to both a wave/goth
festival and to the next C3! We'll see if she still wants to when it's
possible to travel again. Her English is coming along nicely, so maybe
she could handle C3. I guess Gabriel might want to join us to both
events, too.
</p>

<p>
P was supposed to run several marathon races during the year. She
travelled to The Netherlands for one race but it was cancelled because
of high winds! All the other races were then cancelled because of the
pandemic.
</p>

<p>
A lot of other cancelled events, of course, among them the national
HEMA championships my historical fencing club should have organized in
May. I was also supposed to have been in the Swedish team in the NATO
computer security exercise Locked Shields again. We had an initial
meeting but then it was cancelled.
</p>

<p>
I moved back to Linux for my personal laptop. I have been trying to
live in FreeBSD, HardenedBSD, and OpenBSD on the desktop for a couple
of years now, but the promise of Wayland and better wifi brought me
back. Not even using Xwayland anymore! See <a href="https://hack.org/mc/blog/no-more-x11.html">No more X11!</a> My old
Thinkpad x230 feels like a new computer!
</p>

<p>
I changed my e-mail client from Gnus to the Emacs frontend of <a href="https://notmuchmail.org/">Notmuch
mail</a>. This also meant I tried importing all the mail archives in
different formats I had lying about since 1995. There are many
annoying gaps, though, and sometimes only a few messages in the older
archives. 
</p>

<p>
I now have 126,584 mail messages indexed, which is at least something.
I really wish I had saved, well, <i>everything</i>! Even from back in the
Fidonet days, before 1991. That would have been interesting.
</p>

<p>
I re-read quite a lot of the e-mail messages that I have written
during the years. I'm a bit ashamed, really. A lot of it is rather
over the top. Too much information! Oversharing, much, ADHD brain? I
would also say I completely misjudged people's level of interest.
</p>

<p>
During the year I wrote very little e-mail, abouth 10% compared to ten
years ago. I think most of my personal written communication has been
over Signal instead. I still use IRC quite a lot as well, especially
one channel on a private IRC server. Sometimes, even when there's not
a global pandemic going on, it feels like most of my social life is on
IRC. That's OK. I'm comfortable with that.
</p>

<p>
The only(?) plus of this pandemic: I've had a number of very nice, and
sometimes very long (9 hours!), remote parties with far away friends,
usually using video conferencing, sometimes two technologies at once.
Really! Audio one way and video another. We have also watched movies
together remotely with about half of fedi.
</p>

<p>
I spent quite some time with the MAME emulator trying to learn more
about the peculiar Swedish school computer, the Compis, that I had
access to during the mid-1980s. It was a nice Intel 80186-based,
fanless thing with up to 768 kiB RAM, the same really nice graphics
processor as the Japanese PC98, and a network with diskless boot
facilities. Not bad for something designed in 1982!
</p>

<p>
I read a lot about the procurement process, the actual design and
quite a lot of technical documents, and tried my hand at programming
8086 assembly under CP/M-86. I have heaps of notes. This will probably
become at least a blog post and maybe a longer article. I now know a
lot more about the Compis than I ever did at school. I'm now even more
frustrated that our access to them was so limited!
</p>

<p>
The year finished, as usual, with the German C3 hacker conference. C3
this year was a Remote Chaos Experience, complete with a 2D world to
mingle in, were we set up our Temple of the Moby Hack assembly. The
usual suspects even had a video meeting running all the time, even
when watching talks in another window/screen, just to get a feeling of
being there with someone else. It kind of worked, but was a far cry
from actually being there with ~17,000 other hackers.
</p>

<p>
Our Wednesday hacker's lunches have also been remote last year. We
have tried almost every form of video conferencing technology there
is, I think, but ended up mostly using <a href="https://www.mumble.info/">Mumble</a>.
</p>

<p>
I guess a lot of people not ordinarily used to video conferencing are
now comfortable with it. I'm really interested to see what this does to
people's, and especially the bosses, views of remote work!
</p>

<p>
I started being active on the fediverse last year, hanging out on SDF's
Mastodon server: <a href="https://mastodon.sdf.org/@mc/">@mc@mastodon.sdf.org</a>.
</p>

<p>
My Twitter account is still active but I'm not actively using it
anymore, besides occassionally posting links to blog posts. Yes, I
have more followers on Twitter but I don't feel like I want to
contribute to Twitter anymore, especially not reading (or doing) any
retweets.
</p>

<p>
In May I started keeping a journal (Org Mode, of course) of the books
I read. I have read 39 fiction books since then, 38 in 2020 and 1 this
year. 2020's disappointment was William Gibson's "Agency". I had to
re-read his "Mona-Lisa Overdrive" just to make up for it. The best
book was probably Erin Morgenstern's wonderful "The Starless Sea",
which I truly recommend!
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Prickle-Prickle, the 9 day of Chaos in the YOLD 3187 (<time datetime="2021-01-09">2021-01-09</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/3186.html</link>
  <guid>https://hack.org/~mc/blog/3186.html</guid>
  <pubDate>Sat, 09 Jan 2021 19:05:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[Religion]]></title>
  <description><![CDATA[
<figure id="org4f0d559">
<img src="static/images/Aitken+System-300x225.jpg" alt="Aitken+System-300x225.jpg">

<figcaption><span class="figure-number">Figure 1: </span>Robert Aitken rōshi holding his typical sign</figcaption>
</figure>

<p>
I just shaved my head for the first time in weeks. It got me thinking
about my religious practise (or lack thereof), as the wannabe monk
that I once was.
</p>

<p>
My mother once asked me "You're not religious, are you!?" Of course I
am. I've been a practising Zen Buddhist since 1988, the year I started
secondary school. I was once a co-founder and a very active member of
a Buddhist sangha. I started one of the first Internet mailing lists
about Zen practise, Universal Zendo, before leaving it to better hands
in the mid-90s. I even seriously considered becoming a Zen monk after
secondary school.
</p>

<p>
I still wonder from time to time what would have happened if I had
been a monk for a few years instead of immediately attending
university. Perhaps, at least, I would have had the maturity to
actually study something worthwile?
</p>

<p>
In my sangha in Hudiksvall we kept in touch with two Zen masters: John
Daido Loori rōshi of the <a href="https://zmm.org/">Zen Mountain Monastery</a> and Robert Aitken
rōshi of the <a href="http://diamondsangha.org/">Diamond Sangha</a>. We mostly considered ourselves a part of
the Diamond Sangha network, but I was seriously considering spending
some time at the Zen Mountain Monastery after leaving school.
</p>

<p>
I moved away, but practise continues. But what does it mean?
</p>

<p>
My mother's question, if taken to mean "What do you believe in?"
</p>

<p>
I believe in the wisdom of the Shakyamuni Buddha. Buddha said that
although life is filled with pain and suffering it is possible to
transcend this pain. He then went on to suggest a system of
therapeutic practises with a focus on altering judgement of the stream
of consciusness and to realise, and utterly experience, that our image
of the ego is hurting and wrong.
</p>

<p>
I recently tried to read Owen Flanagan's <i>The Bodhisattva's brain -
Buddhism naturalized</i>. I really wanted to like this book, but it's
hopeless. I can't stand the way he writes. I couldn't finish reading
it. But the basic idea, that Buddhism can be distilled into something
without religious overtones, might be right. He seems to miss the
importance of zazen and koan practise, though.
</p>

<p>
Zazen and koan practise, some of the best kinds of religious magic,
probably up there with sex magick, is absolutely crucial to get you to
actually <i>experience</i> the dharma. It's not a ritual, at least as I
understand rituals. It's a practise that does something hard to grasp
to you.
</p>

<p>
I have yet to read Kabat-Zinn's <i>Full catastrophe living</i> but I hear
it's good. He's in the same business as Flanagan, but might be more
enjoying to read.
</p>

<p>
My religious faith, for what it's worth, is that this system just
might work. Or, to put it another way, here's what dear old Lord Omar
had to say:
</p>

<blockquote>
<p>
Before I was a Discordian, I took life much too seriously. When you
take life too seriously you start to wonder what the point of it all
is. When you wonder what the point is in life, you fall into a trap
of thinking there is one. When you think there is a point, you
finally realize there is no point. And what point is there in living
like that? Nowadays I skip the search for a point and find, instead,
the punch lines.
</p>
</blockquote>

<p>
— Lord Omar Khayyam Ravenhurst, Pvt., USMC (Ret.), aka Kerry Thornley,
one of the founders of Discordianism and Zenarchy.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Boomtime, the 8 day of Bureaucracy in the YOLD 3186 (<time datetime="2020-08-15">2020-08-15</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/religion.html</link>
  <guid>https://hack.org/~mc/blog/religion.html</guid>
  <pubDate>Sat, 15 Aug 2020 23:42:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Videotex and online services]]></title>
  <description><![CDATA[<p>
<a href="https://hope.net/">HOPE 2020</a> is going on. I watched <a href="https://livestream.com/internetsociety3/hope2020/videos/209231456">a talk about Bildschirmtext</a>, the
German version of Videotex, aka Datavision, aka Prestel systems, aka
<a href="https://en.wikipedia.org/wiki/CEPT1">CEPT</a>.
</p>

<p>
I've hated these systems with a vengeance. So much wasted
possibilities. So much wasted money.
</p>

<p>
I believe Videotex or Datavision was the first online experience I
ever had. Like many times before I had taken the bus with a friend
some 60 km to the nearby city of Sundsvall to drool over some home
computers. The state-owned phone company Televerket had a shop where
they, believe it or not, were selling home computers at the time! I
believe they had Spectravideos!
</p>

<p>
On this particular trip they had a Datavision demo going. It may have
been on a specially made terminal hooked to a TV set.
</p>

<p>
Datavision was launched in Sweden in 1982. I think this Sundsvall trip
might have been in 1983. It was already showing its age. It looked
like stone age even then. It changed name to Videotex in 1984 and then
to TeleGuide in 1991 before mercifully being retired in 1993.
</p>

<p>
To access the system you couldn't use an ordinary terminal or terminal
emulator. You had to use a special Videotex program or specialised
Videotex hardware, typically hooked up to your TV set. It had its own
character set and didn't use ASCII or a national version, like almost
everyone else.
</p>

<p>
That it couldn't be accessed with a normal terminal was one of my main
complaints about the system. If it had had some graphics like its
North American cousin NAPLPS or even the amazing PLATO system this
might have explained the need for a special program, but no, no such
thing.
</p>

<p>
The system was menu oriented. All pages were arranged in a tree
structure and identified by a number. This was another sore point.
Fucking menu systems. Still hate them.
</p>

<p>
Each page view could incur a cost. It was also metered per minute.
</p>

<p>
There was very little interactivity. Most of the interactivity was
menu choices. The text was something like a typical home computer, 40
columns. Very few rows. No graphics. It looked something like this,
although this shows the later Videotex start menu:
</p>


<figure id="org382d208">
<img src="static/images/Videotex_startsida.png" alt="Videotex_startsida.png">

<figcaption><span class="figure-number">Figure 1: </span>Videotex start by Erjet317 (<a href="https://creativecommons.org/licenses/by-sa/4.0/deed.sv">CC BY-SA 4.0</a>) from <a href="https://sv.wikipedia.org/wiki/Fil:Videotex_startsida.png">Wikipedia</a></figcaption>
</figure>

<p>
If you've ever seen Teletext on your TV, it looks very similar.
</p>

<p>
You usually connected with split speed modems at 1200/75 bit/s. Like
most people I type a lot faster than 75 bit/s but that wasn't a
problem, of course, because the only thing you ever did on this
annoying system was typing in menu options or page numbers.
</p>

<p>
At the time there were very few services available, so it was even
more meaningless. There was not even a phonebook, which is one thing
the related French Minitel system did right: they made a digital
phonebook the first service and gave away terminals instead of
physical phonebooks. Seems like a smart move.
</p>

<p>
I later borrowed my first modem from a teacher. I had nowhere to call
to, so I just called Videotex. I actually managed to find a sort of
test account after a few tries and just looked around. Nothing really
interesting. And the user experience truly sucked. When I later rented
a modem from Televerket in 1986 or -87 I never called back.
</p>

<p>
Note that this was at a time when the Fidonet network had already
started. Even in Sweden some of the first Fidonet BBS's was started in
1985: <a href="http://bbslist.textfiles.com/sweden/054/">Sun City Fido and Day Rainbow in Karlstad</a>.
</p>

<p>
Here's part of a nodelist of Fidonet in Sweden from 1986, the earliest
I could find:
</p>

<p>
<a href="https://www.joho.se/2009/10/08/fidonet-nodelist-october-3-1986/">https://www.joho.se/2009/10/08/fidonet-nodelist-october-3-1986/</a>
</p>

<p>
I remember calling Yellow PC in Stockholm in 1986 or 1987. That may
have been the first BBS I ever called.
</p>

<p>
This means that even in the hobbyist world people were having much
better service (world-wide e-mail!) and a lot nicer experience than
Videotex using simple terminal programs and probably with decent,
sharp screens with 80 columns, not fuzzy TV sets.
</p>

<p>
Then, of course, there was <a href="https://people.dsv.su.se/~jpalme/s1/history-of-KOM.html">KOM</a>, the grand old man of conference
systems, which was open to the public with a lower price if you were a
member of a computer club. KOM was like a huge multi-user BBS running
on a nice PDP-10. It was expensive, even as a computer club member,
but wow, what a service.
</p>

<p>
I don't know if there were any general timesharing systems open to the
public in Sweden at the time. Most universities had PDP-10s running
TOPS-10 or TOPS-20 and VAXen and the like, but was there something
available to the general public in Sweden?
</p>

<p>
I found some nice pictures of the Swedish Videotex system behind the
scenes at Thom Jaxhagen's web site:
</p>

<p>
<a href="http://jaxhagen.se/videotex.html">http://jaxhagen.se/videotex.html</a>
</p>

<p>
He writes that the first generation were Data General Eclipse S/280
systems with S/140s as communication computers. I think most of the
pictures are of Data General equipment. I'm a bit surprised it was
running on 16 bit minis.
</p>

<p>
He writes it was later replaced by an IBM system and mentions BTX.
Perhaps the same setup as Bundespost's Bildschirmtext? He doesn't
mention what kind of IBM hardware but my guess is something from the
S/370 line. Does anyone know? I've asked him, but no reply yet.
</p>

<p>
Imagine using those systems directly instead of having that awful
Videotex system between you and the systems? Yes, of course you could
have done some menu system or some special shell, but still use
ordinary terminals or terminal programs.
</p>

<p>
Imagine at least a proper e-mail service, perhaps even networked.
Imagine forums. Imagine chat rooms! I bet <i>that</i> would have been
popular considering how popular Televerkets Heta Linjen, their casual
conference call service was. Imagine at least some text games? MUD!
Software libraries! Alas, no such thing.
</p>

<p>
The really crazy part is that Televerket kept at it and relaunched the
service in the 1990s by renaming the service "Teleguide" and
distributing specially made terminals. They even had some success this
time because of some contracts with actually usable services, like a
TV guide and a used car part market, among other things, but it was,
of course, doomed to fail. Rumour has it that they spent 2 billion SEK
on the damned thing.
</p>


<figure id="orgac2dac1">
<img src="static/images/TeleGuide-terminal.jpg" alt="TeleGuide-terminal.jpg">

<figcaption><span class="figure-number">Figure 2: </span>Teleguide terminal by ScandinavianRockguy <a href="https://creativecommons.org/licenses/by-sa/3.0/deed.sv">CC BY-SA 3.0</a> from <a href="https://sv.wikipedia.org/wiki/Fil:TeleGuide-terminal.jpg">Wikipedia</a></figcaption>
</figure>

<p>
I remembered reading about a promising alternative to the CEPT
standard, NAPLPS, in an early issue of BYTE Magazine. While searching
for that article I found that they made a an entire special edition on
Videotex (including NAPLPS) in 1983:
</p>

<p>
<a href="https://archive.org/details/byte-magazine-1983-07">https://archive.org/details/byte-magazine-1983-07</a>
</p>

<p>
but the much more technical article about NAPLPS I remembered is here
(Part 1 of 2):
</p>

<p>
<a href="https://archive.org/details/byte-magazine-1983-02/page/n201/mode/2up">https://archive.org/details/byte-magazine-1983-02/page/n201/mode/2up</a>
</p>

<p>
NAPLPS sounds much nicer than CEPT given its graphics support and
might have actually been interesting to use in the 1980s. USAian
friends tell me this was the base for the Prodigy online service! That
seems a bit late.
</p>

<p>
Or imagine a PLATO system open to the public? Now we're talking!
Perhaps several PLATO systems networked together?
</p>


<figure id="orgcd50789">
<img src="static/images/camelot.png" alt="camelot.png">

<figcaption><span class="figure-number">Figure 3: </span>Splash screen for the PLATO Camelot game</figcaption>
</figure>

<p>
Alright, the CDC Viking 721 terminals were USD 2,295 in 1982. A little
steep, perhaps, but there were PLATO terminal emulators for at least a
couple of home computers in the 1980s. 
</p>

<p>
Here are the <a href="https://www.irata.online/assets/s0ascers-045c83081e9ada2008378c3ae6aa62564b213a71decf9fe04608909b91d20ad1.html">PLATO terminal protocol specs</a>.
</p>

<p>
If I understand correctly there were two university PLATO systems in
Sweden for a while, one in Umeå and one in Stockholm. Does anyone know
anything more about these?
</p>

<p>
I really liked Brian Dear's book <a href="http://friendlyorangeglow.com/">"The friendly orange glow"</a> about
PLATO. You can experience a PLATO system yourself at:
</p>

<p>
<a href="https://cyber1.org/">https://cyber1.org/</a>
</p>

<p>
Here's another PLATO system with a focus on retrocomputing with lots
of PLATOTERM emulators for different computers:
</p>

<p>
<a href="https://www.irata.online/">https://www.irata.online/</a>
</p>
<div id="outline-container-org54d6e4e" class="outline-2">
<h2 id="org54d6e4e">Technical data about the protocols</h2>
<div class="outline-text-2" id="text-org54d6e4e">
<ul class="org-ul">
<li><a href="https://en.wikipedia.org/wiki/CEPT1">CEPT</a></li>
<li><a href="https://archive.org/details/byte-magazine-1983-02/page/n201/mode/2up">BYTE Magazine article on NAPLPS</a></li>
<li><a href="http://www.martinreddy.net/gfx/2d/NAP.txt">Michael Dillon's NAPLPS specs</a> (formal standard X3.110-1983, not free).</li>
<li><a href="https://www.irata.online/assets/s0ascers-045c83081e9ada2008378c3ae6aa62564b213a71decf9fe04608909b91d20ad1.html">PLATO terminal protocol specs</a></li>
</ul>
</div>
</div>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Pungenday, the 67 day of Confusion in the YOLD 3186 (<time datetime="2020-08-01">2020-08-01</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/videotex.html</link>
  <guid>https://hack.org/~mc/blog/videotex.html</guid>
  <pubDate>Sat, 01 Aug 2020 12:00:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Strange RSS Feed]]></title>
  <description><![CDATA[<p>
I apologize for my strange RSS feed lately. You have likely seen old,
in some cases very old, posts marked unread in your feed reader.
</p>

<p>
I am, again, using <a href="https://github.com/bastibe/org-static-blog/">org-static-blog</a> to render my blog. I have converted
all the posts from Markdown to Org Mode. I experimented for a few days
with the pre-amble and post-amble when generating HTML and some, but
not all, feed readers marked the posts as unread. 
</p>

<p>
The posts' <code>&lt;link&gt;</code>, <code>&lt;pubDate&gt;</code>, and <code>&lt;guid&gt;</code> were unchanged, though,
and even the <code>&lt;description&gt;</code> should be unchanged most of the time,
because the preamble and postamble should only be used in the static
web pages and not the feed.
</p>

<p>
This was actually a rather interesting problem that led me to
<a href="https://www.詹姆斯.com/blog/2006/08/rss-dup-detection">this nice summary</a>.
</p>

<p>
I still don't know what caused this, but I'll stop experimenting on
the real feed and use something else to see if I can pin down and
hopefully fix the problem.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Boomtime, the 44 day of Discord in the YOLD 3186 (<time datetime="2020-04-27">2020-04-27</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/strange-feed.html</link>
  <guid>https://hack.org/~mc/blog/strange-feed.html</guid>
  <pubDate>Mon, 27 Apr 2020 22:39:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Life in the quarantine cottage]]></title>
  <description><![CDATA[<p>
The fever hit on the evening of March 12. Wife and #3 got sick a
little later. I have a clear vector, so it's probably C-19.
</p>

<p>
We were already kind of isolated in our holiday home so we decided to
stay here. Very few neighbours and not much real contact. It's not
really that remote so we're close to big hospitals, just in case.
</p>


<figure id="orgf382940">
<img src="static/images/house.jpg" alt="house.jpg">

<figcaption><span class="figure-number">Figure 1: </span>The house a couple of years ago.</figcaption>
</figure>

<p>
We're all still here and still coughing when I'm writing this on
April 10. The symptoms have been mild, though, and we're mostly OK.
It's just that we should probably not be in close proximity to anyone
else.
</p>

<p>
We have been careful with contacts with other people. We have lived on
stored food and ordered some that we prepaid and just fetched bags at
a storefront, several meters from store staff.
</p>

<p>
Since I haven't been that ill I mostly kept on working. I've been
working from here before. It's fairly ergonomical, even though I miss
my height-adjustable desk the most.
</p>


<figure id="org5a778b4">
<img src="static/images/arbetsplats-stugan-2020-03.jpg" alt="arbetsplats-stugan-2020-03.jpg">

<figcaption><span class="figure-number">Figure 2: </span>Work desk in the cottage.</figcaption>
</figure>

<p>
Not much has changed for me, really. I've been working remotely for
years. $DAYJOB is rather mature when it comes to using video
conferencing, issue tracking systems and instant messaging. Even
though I don't necessarily like all the technical choices I get by,
typically by working around them and/or integrating them with, say,
Emacs.
</p>

<p>
Most of my social contacts have been over IRC anyway (yeah, I
know&#x2026;), and we kept on with the weekly hacker's lunches, but now
over video. I've also had a couple of video beers with friends, but
that's not unusual even when there's not a global pandemic going on.
</p>

<p>
I have my feder with me so I've been able to get some practice.
</p>


<figure id="org2419a0c">
<img src="static/images/feder.jpg" alt="feder.jpg">

<figcaption><span class="figure-number">Figure 3: </span>A federschwert from Regenyei armory.</figcaption>
</figure>

<p>
It's been hardest for #3. The school is definitely not prepared for
remote education. We start each morning together by going through all
the school assignments, then select one to start with, check in when
it's done and walk through it, then a short break, and repeat
throughout the day. I'm a bit surprised the school haven't used chat
or video conference at all with more than half of the pupils at home.
</p>

<p>
My work has been understanding that I have had to shift my work day a
bit because of having to help mentoring #3.
</p>

<p>
Personally, I think it's not all bad. I sleep much better here, for
instance. It's so quiet. I also enjoy sitting by the fire and reading
in the evening.
</p>

<p>
I also started being active on my previously dormant Mastodon account.
You can find me on <a href="https://mastodon.sdf.org/@mc">@mc@mastodon.sdf.org</a>. I'm enjoying it much more
than Twitter. Feel free to follow.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Sweetmorn, the 28 day of Discord in the YOLD 3186 (<time datetime="2020-04-11">2020-04-11</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/quarantine.html</link>
  <guid>https://hack.org/~mc/blog/quarantine.html</guid>
  <pubDate>Sat, 11 Apr 2020 17:20:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[How Internet came to Sweden]]></title>
  <description><![CDATA[<p>
Originally published 2020-04-08 20:45 +0200. Republished with links to
videos instead of just embedding them so the people in the feed can
follow them. Republished again 2020-09-28 when Invidious had closed
down. And again in 2024-08-02 when I realized that embedding Youtube
adds a lot of tracking. Sorry!
</p>

<p>
Looking through some old RFCs I came across this in
<a href="https://tools.ietf.org/html/rfc900">RFC 900</a> from June 1984:
</p>

<div class="org-src-container">
<pre class="src src-nil">R 192.005.050.rrr   CTH-CS-NET    Chalmers CSN Local Net [93,UXB]
</pre>
</div>

<p>
This is the first mention I have found of IP addresses allocated for
something in Sweden. 
</p>

<p>
If we consider "having an IP address" as "being on the Internet" this
is probably how Internet came to Sweden.
</p>

<p>
"Chalmers" is, of course, <a href="https://chalmers.se">Chalmers Institute of Technology</a> in
Gothenburg, Sweden. The IP range still seems to belong to Chalmers.
WHOIS says:
</p>

<pre class="example" id="org0ff9d6f">
inetnum:        192.5.50.0 - 192.5.50.255
netname:        CTH-CS-NET
descr:          Chalmers University of Technology
descr:          Gothenburg, Sweden
</pre>

<p>
and at least the reverse DNS says so too:
</p>

<pre class="example" id="org160239a">
tp2:~ % host 192.5.50.1
1.50.5.192.in-addr.arpa domain name pointer cth-192-5-50-gw.chalmers.se.
tp2:~ %
</pre>

<p>
"UXB" mentioned above is:
</p>

<div class="org-src-container">
<pre class="src src-nil">[UXB]     Ulf Bilting         CHALMERS  bilting@purdue.ARPA
</pre>
</div>

<p>
Some kind of gateway is also mentioned:
</p>

<div class="org-src-container">
<pre class="src src-nil">This section lists the mapping between the Internet Addresses and the
Public Data Network Addresses (X.121).

...

      Internet           Public Data Net    Description       References
      ---------------   -----------------   -----------       ----------

...

      014.000.000.011   2405-015-50300 00   CHALMERS               [UXB]
</pre>
</div>

<p>
A reasonable guess is that this was an X.25 gateway for the Chalmers
network.
</p>

<p>
I reached out to Ulf Bilting to find out more about this. He
graciously answered a number of questions from me. There's also this
interview <a href="https://internetstiftelsen.se/">the Swedish Internet Foundation</a> did with Ulf for <a href="https://www.internetmuseum.se/">their
series about the history of the Internet</a> but it's rather shallow on
the technical details:
</p>

<p>
<a href="https://youtube.com/watch?v=Fkyvap_RXUc">https://youtube.com/watch?v=Fkyvap_RXUc</a>
</p>

<p>
The actual IP gateway at the Chalmers end was a VAX 11/780 running
4.2BSD. The X.25 connection was made through a small PDP-11 running
SNIP (Small Network Interface Processor) developed by a department
(Teletrafik &amp; Datorsystem) at KTH, the Royal Institute of Technology,
in Stockholm. The SNIP was connected to the VAX through a parallel
interface card.
</p>

<p>
A user process Ulf wrote himself in C was the endpoint on the VAX.
This process used a raw socket directly towards the BSD kernel. It
used encapsulation according to <a href="https://tools.ietf.org/html/rfc877">RFC 877</a> to send IP packets over X.25
and connected to the SNIP, which dealt with the actual X.25 traffic.
The other end of the IP-over-X.25 tunnel was Purdue University,
Indiana, USA on the <a href="https://en.wikipedia.org/wiki/CSNET">CSNET</a>.
</p>

<p>
The X.25 network the SNIP was connected to was an early attempt by the
Swedish University Network (SUNET) to connect universities in Sweden.
As far as I understand this was the Swedish state authority
Televerket's X.25 network. At the start of the SUNET project this was
mainly used to connect terminal servers, so you could dial in to your
local terminal server and access a host elsewhere without having to
dial expensive long distance calls.
</p>

<p>
It's a little unclear which one of Televerket's networks were used.
Early on Televerket had a network called Telepak (sometimes Databas
300), which I believe was Tymnet/McDonnel Douglas hardware and had a
connection to the US part of Tymnet. The connections from SUNET was
probably through this network. Later generations were called Datapak I
and II and used different network hardware.
</p>

<p>
The throughput from Chalmers to the US was rather low, about ~2
kilobits/second, likely because of both tunnelling overhead, the poor
fit of TCP over X.25, and the fact that the Tymnet connection to the
US was shared with all the other Televerket users.
</p>

<p>
Jacob Palme keeps some texts available from the early <a href="https://people.dsv.su.se/~jpalme/s1/history-of-KOM.html">KOM conference
system</a>, basically an early multi-user BBS, at:
</p>

<p>
<a href="https://people.dsv.su.se/~jpalme/qzkom/">https://people.dsv.su.se/~jpalme/qzkom/</a>
</p>

<p>
There's a conference called <a href="https://people.dsv.su.se/~jpalme/qzkom/sunet-erf-8308-000030.html">"Sunet erfarenhetsutbyte"</a> which gives some
insights on the early Sunet network. Here's a post by Ulf:
</p>

<div class="org-src-container">
<pre class="src src-nil">(Text 110099) 83-07-12  08.46  Ulf Bilting CTH info.beh.
Mottagare: SUNET 'Swedish University Network'
 Sändare: Ulf Bilting CTH info.beh. -- Sänt: 83-07-12  08.46
Ärende:  CSNET, goda nyheter.

Vid ett möte igår i Oslo beslutades att upprätta en testförbindelse
mellan Csnet och Sunet. 
Den kommer att installeras i åiGöteborg och kommunicera via x25
till en gateway i Csnet. 
Tjänsten som erbjuds är post (mail som det heter) till samliga
Csnetmedlemmar och samliga noder på Arpanätet.
Vi kommer att tillåtas att upprätta en egen gateway för vidare
distribution inom Sunet.
</pre>
</div>

<p>
which talks about an early test connection, initially for just mail,
between SUNET and CSNET, probably what turned into the Chalmers site
which had real IP connectivity.
</p>

<p>
It's interesting that the tunnel was between Chalmers in Gothenburg on
the Swedish west coast and Indiana, USA, instead of something
closer&#x2026; For instance, NORSAR, the Norwegian Seismic Array, in
Kjeller outside of Oslo is much closer to Gothenburg and had ARPANET
connectivity since 1973! In fact, the NORSAR satellite uplink was
Tanum in Sweden, just to the north of Gothenburg!
</p>

<p>
The real reason to connect to CSNET instead of using the uplink in
Tanum was probably political rather than technical.
</p>

<p>
Note that the rest of SUNET didn't get access to the Internet just
because parts of Chalmers did. As far as I understand an official
connection to Internet for the entire SUNET didn't happen until 1988.
</p>

<p>
Fun fact: Ulf is an early computer musician. He has a number of noise
compositions on Youtube.
</p>

<p>
Ulf Bilting: "Two phrases":
</p>

<p>
<a href="https://youtube.com/watch?v=QWWo_4qwAHY">https://youtube.com/watch?v=QWWo_4qwAHY</a>
</p>

<p>
With Zbigniew Karkowski:
</p>

<p>
<a href="https://youtube.com/watch?v=9x_2ibK48LE">https://youtube.com/watch?v=9x_2ibK48LE</a>
</p>

<p>
<a href="https://youtube.com/watch?v=JAFSbBSfvFo">https://youtube.com/watch?v=JAFSbBSfvFo</a>
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Prickle-Prickle, the 26 day of Discord in the YOLD 3186 (<time datetime="2020-04-09">2020-04-09</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/how-internet-came-to-sweden.html</link>
  <guid>https://hack.org/~mc/blog/how-internet-came-to-sweden.html</guid>
  <pubDate>Thu, 09 Apr 2020 12:58:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[No more X11!]]></title>
  <description><![CDATA[<p>
From my Sway configuration:
</p>

<div class="org-src-container">
<pre class="src src-conf">xwayland disable
</pre>
</div>


<figure id="orgb7b8e7b">
<img src="https://hack.org/mc/images/20200310_21h39m08s_grim.png" alt="20200310_21h39m08s_grim.png">

</figure>

<p>
In January I finally stopped using the X Window System. 
</p>

<p>
I had found native Wayland programs for most of my needs, so I turned
off the Xwayland X server in my <a href="https://swaywm.org/">Sway</a>
configuration and removed both the Xwayland and the X.org X server
from my personal laptop.
</p>

<p>
I've been waiting for this moment a long time. I was never very happy
with X and for a long time I refused to run what I perceived as a
bloated, slow system with a strange design. At first I continued to
use the old <a href="https://hack.org/mc/mgr">MGR window system</a> on SunOS
(even porting it to Solaris!), then trying to stay in the Linux
console and/or the Plan 9 8½ window system, until I gave up like
everyone else and even wrote <a href="https://github.com/mchackorg/mcwm">my
own X window manager, mcwm</a>.
</p>

<p>
Acccepting X might have had something to do with the use of a rather
nice fanless 1024x1024 NCD 16 X terminal. This terminal also supported
the Xremote protocol that was rather usable even over 9600 or 19200
b/s from home. Here's a picture of me in front of the NCD 16 and flat
mate Magnus in front of his much more fancy DEC VXT 2000:
</p>


<figure id="orgec706e1">
<img src="https://hack.org/mc/blog/static/images/magnus+mc.jpg" alt="magnus+mc.jpg">

<figcaption><span class="figure-number">Figure 1: </span>Magnus and MC in front of X terminals</figcaption>
</figure>

<p>
The best image I found of my NCD 16 (sorry!):
</p>


<figure id="orgf618abf">
<img src="https://hack.org/mc/blog/static/images/ncd16.jpg" alt="ncd16.jpg">

<figcaption><span class="figure-number">Figure 2: </span>NCD 16</figcaption>
</figure>

<p>
Of course, I would have preferred the contemporary A&amp;T 630 (the
successor of the Blit and 5620)!
</p>


<figure id="orgd5e127e">
<img src="https://hack.org/mc/blog/static/images/att630.jpg" alt="att630.jpg">

<figcaption><span class="figure-number">Figure 3: </span>AT&amp;T 630 MTG terminal</figcaption>
</figure>

<p>
Back to Wayland&#x2026; Sway on my personal Thinkpad x230 feels like a new
computer! No tearing! So fast! Yes, of course I used compton when I
had X to avoid tearing, but I got a lot of frames dropped when, say,
playing video. No more!
</p>

<p>
Sway uses Pango to draw text. Pango recently lost support for bitmap
fonts. This means ordinary bitmap fonts won't work anymore. No more
sweet <a href="http://terminus-font.sourceforge.net/">Terminus</a> unless you can
find it in or convert it to OTF&#x2026; A workaround is to use
<a href="https://files.ax86.net/terminus-ttf/">the TTF version</a>.
</p>

<p>
Here's a neat script to make unfocused windows partly transparent, in
case you want to see your background or if you just want to dim
unfocused windows:
</p>

<p>
<a href="https://github.com/swaywm/sway/commit/0d5aaf5359c671a51bd319bd7972e0f5e7bcde84">https://github.com/swaywm/sway/commit/0d5aaf5359c671a51bd319bd7972e0f5e7bcde84</a>
</p>
<div id="outline-container-toolkits" class="outline-2">
<h2 id="toolkits">Toolkits</h2>
<div class="outline-text-2" id="text-toolkits">
<ul class="org-ul">
<li>GTK3 supports Wayland directly so many GTK3 applications does as well.</li>
<li>Qt5 applications will use Wayland.</li>
<li>SDL 2 needs <code>SDL_VIDEODRIVER=wayland</code>. SDL 1 unfortunately doesn't
support Wayland so I can't run
<a href="http://schismtracker.org/">SchismTracker</a> anymore! Help!</li>
</ul>
</div>
</div>
<div id="outline-container-wayland-terminal-emulators" class="outline-2">
<h2 id="wayland-terminal-emulators">Wayland terminal emulators</h2>
<div class="outline-text-2" id="text-wayland-terminal-emulators">
<p>
Since I've been using <a href="https://st.suckless.org/">st</a> for a long time I
looked for an alternative with a Wayland backend. I found
<a href="https://github.com/michaelforney/st">Michael Forney's Wayland st</a>. It
uses Michael's own drawing library,
<a href="https://github.com/michaelforney/wld">wld</a>, to actually draw
something in Wayland. There's a strange fork called
<a href="https://github.com/majestrate/wterm">wterm</a> which mainly seems to
have reindented the code and includes wld in the same repo.
</p>

<p>
Both of them have problems with cut &amp; paste.
</p>

<p>
<a href="https://codeberg.org/dnkl/foot">foot</a>
(<a href="https://gitlab.com/dnkl/foot">Gitlab mirror</a>) is a native Wayland
terminal emulator. Rather minimalist. Written in C.
</p>

<p>
foot dynamically fixes the font when moving windows between different
DPI screens! It also support SIXEL graphics! I added a trivial change to
get M-RET to send ESC Return.
</p>

<p>
<a href="https://gitlab.gnome.org/GNOME/gnome-terminal">GNOME Terminal</a> works
in Wayland. But it has a lot of dependencies and stuff I don't care
about.
</p>

<p>
<a href="http://www.pleyades.net/david/projects/sakura">sakura</a> also uses
libvte like GNOME Terminal and works in Wayland. Less dependencies than
GNOME Terminal but still rather large.
</p>

<p>
<a href="https://github.com/alacritty/alacritty">alacritty</a> works fine in
Wayland. It still has the X11 backend, though, and it seems it's
currently not able to be built as Wayland-only. It's written in Rust,
though, which is interesting.
</p>
</div>
</div>
<div id="outline-container-specific-apps" class="outline-2">
<h2 id="specific-apps">Specific apps</h2>
<div class="outline-text-2" id="text-specific-apps">
</div>
<div id="outline-container-org1614389" class="outline-3">
<h3 id="org1614389">Web browser</h3>
<div class="outline-text-3" id="text-org1614389">
<p>
Firefox needs the <code>MOZ_ENABLE_WAYLAND=1</code> variable set. I've seen some
crashes but it mostly works. But see below about screen sharing.
</p>
</div>
</div>
<div id="outline-container-orgb23097a" class="outline-3">
<h3 id="orgb23097a">Lock the screen</h3>
<div class="outline-text-3" id="text-orgb23097a">
<p>
swaylock. Set it in Sway's config file with something like:
</p>

<div class="org-src-container">
<pre class="src src-conf">set $lock <span style="color: #ffa07a;">'swaylock -f -F -c 000000'</span>

exec swayidle -w \
         timeout 600 $lock \
         timeout 900 <span style="color: #ffa07a;">'swaymsg "output * dpms off"'</span> \
              resume <span style="color: #ffa07a;">'swaymsg "output * dpms on"'</span> \
        before-sleep $lock &amp;
</pre>
</div>

<p>
and call it directly if you want to lock.
</p>
</div>
</div>
<div id="outline-container-orgb9d57fd" class="outline-3">
<h3 id="orgb9d57fd">Screen brightness</h3>
<div class="outline-text-3" id="text-orgb9d57fd">
<p>
<a href="https://github.com/Hummer12007/brightnessctl/">brightnessctl</a>
</p>
</div>
</div>
<div id="outline-container-org5dcbf3b" class="outline-3">
<h3 id="org5dcbf3b">Notifications (dunst replacement)</h3>
<div class="outline-text-3" id="text-org5dcbf3b">
<p>
<a href="https://github.com/emersion/mako">mako</a>, but also
<a href="https://gitlab.com/dnkl/fnott">fnott</a>.
</p>
</div>
</div>
<div id="outline-container-orgee7dd7c" class="outline-3">
<h3 id="orgee7dd7c">Screenshots</h3>
<div class="outline-text-3" id="text-orgee7dd7c">
<p>
grim &amp; slurp.
</p>
</div>
</div>
<div id="outline-container-org9725a5b" class="outline-3">
<h3 id="org9725a5b">PDF viewer</h3>
<div class="outline-text-3" id="text-org9725a5b">
<p>
zathura works fine in Wayland.
</p>
</div>
</div>
<div id="outline-container-orgb7f4f7d" class="outline-3">
<h3 id="orgb7f4f7d">Image viewers</h3>
<div class="outline-text-3" id="text-orgb7f4f7d">
<p>
<a href="https://github.com/eXeC64/imv">imv</a> for viewing a single image at
the time. I use gthumb for thumbnails and photo handling. Would have
liked an sxiv for Wayland but haven't found anything yet.
</p>
</div>
</div>
<div id="outline-container-orgd98cff6" class="outline-3">
<h3 id="orgd98cff6">Watching movies</h3>
<div class="outline-text-3" id="text-orgd98cff6">
<p>
mpv needs:
</p>

<pre class="example" id="org58b47c9">
gpu-context=wayland
</pre>
</div>
</div>
<div id="outline-container-org2b4278c" class="outline-3">
<h3 id="org2b4278c">PIN Entry for GPG Agent</h3>
<div class="outline-text-3" id="text-org2b4278c">
<p>
~/.gnupg/gpg-agent:
</p>

<pre class="example" id="orge15a7a5">
pinentry-program /usr/bin/pinentry-gnome3
</pre>
</div>
</div>
<div id="outline-container-org37fa8f2" class="outline-3">
<h3 id="org37fa8f2">SSH password</h3>
<div class="outline-text-3" id="text-org37fa8f2">
<p>
Note that <code>ssh-add</code> won't start the askpass program unless DISPLAY is
set, so fake it even though we don't have any X server running:
</p>

<div class="org-src-container">
<pre class="src src-sh"><span style="color: #b0c4de;">export</span> <span style="color: #eedd82;">SSH_ASKPASS</span>=/usr/lib/openssh/gnome-ssh-askpass
<span style="color: #b0c4de;">export</span> <span style="color: #eedd82;">DISPLAY</span>=:0
</pre>
</div>

<p>
Then again, since we're no longer using X it's no longer a complete
disaster to type passwords in the terminal&#x2026;
</p>
</div>
</div>
</div>
<div id="outline-container-emacs" class="outline-2">
<h2 id="emacs">Emacs</h2>
<div class="outline-text-2" id="text-emacs">
<p>
As you all know,
<a href="http://emacshorrors.com/posts/psa-emacs-is-not-a-proper-gtk-application.html">Emacs
is not a real GTK3 program</a>. It uses X requests directly for most of
what it does. This, of course, means it won't work in a pure-Wayland
environment.
</p>

<p>
There has been some very impressive work on a
<a href="https://github.com/masm11/emacs">pure GTK Emacs</a>, however. It
compiles and, yes, suddenly you have Emacs as a pure GTK app that runs
under Wayland! Last I checked there were issues with input, though.
</p>

<p>
At the moment I live with an Emacs compiled with no window system
support what so ever (and no libxml2, et cetera ad nauseam). I run it in
a foot terminal. I will certainly follow what happens in the pgtk
branch, though.
</p>

<p>
This is some really helpful elisp to make the internal cut &amp; paste in
Emacs play well with Wayland:
</p>

<div class="org-src-container">
<pre class="src src-elisp">(<span style="color: #00ffff;">setq</span> wl-copy-process nil)

(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">wl-copy</span> (text)
  (<span style="color: #00ffff;">setq</span> wl-copy-process (make-process <span style="color: #b0c4de;">:name</span> <span style="color: #ffa07a;">"wl-copy"</span>
                                      <span style="color: #b0c4de;">:buffer</span> nil
                                      <span style="color: #b0c4de;">:command</span> '(<span style="color: #ffa07a;">"wl-copy"</span> <span style="color: #ffa07a;">"-f"</span> <span style="color: #ffa07a;">"-n"</span>)
                                      <span style="color: #b0c4de;">:connection-type</span> 'pipe))
  (process-send-string wl-copy-process text)
  (process-send-eof wl-copy-process))

(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">wl-paste</span> ()
  (<span style="color: #00ffff;">if</span> (<span style="color: #00ffff;">and</span> wl-copy-process (process-live-p wl-copy-process))
      nil <span style="color: #ff7f24;">; </span><span style="color: #ff7f24;">should return nil if we're the current paste owner
</span>    (shell-command-to-string <span style="color: #ffa07a;">"wl-paste -n | tr -d \r"</span>)))

(<span style="color: #00ffff;">setq</span> interprogram-cut-function 'wl-copy)
(<span style="color: #00ffff;">setq</span> interprogram-paste-function 'wl-paste)
</pre>
</div>

<p>
Taken from
<a href="https://gist.github.com/yorickvP/6132f237fbc289a45c808d8d75e0e1fb">https://gist.github.com/yorickvP/6132f237fbc289a45c808d8d75e0e1fb</a>
</p>
</div>
</div>
<div id="outline-container-keyboard-mapping" class="outline-2">
<h2 id="keyboard-mapping">Keyboard mapping</h2>
<div class="outline-text-2" id="text-keyboard-mapping">
<p>
Sway can use your ordinary XKB definitions that you used with <code>xkbcomp</code>
under X11. Put only the symbols file in <code>~/.xkb/symbols</code> and add
something like this to your Sway config:
</p>

<div class="org-src-container">
<pre class="src src-conf"><span style="color: #98fb98;">input *</span> {
      xkb_layout <span style="color: #ffa07a;">"thinkpad,hhkb"</span>
      repeat_delay 240
      repeat_rate 40
      xkb_options <span style="color: #ffa07a;">"grp:alt_space_toggle"</span>
}
</pre>
</div>

<p>
This means I use my custom Thinkpad keyboard layout as default and
change to the custom Happy Hacking Keyboard layout when I hit Alt+Space.
</p>

<p>
<a href="https://hack.org/mc/writings/xkb.html">My article about XKB</a> includes
my HHKB layout.
</p>
</div>
</div>
<div id="outline-container-other-interesting-compositors" class="outline-2">
<h2 id="other-interesting-compositors">Other interesting compositors</h2>
<div class="outline-text-2" id="text-other-interesting-compositors">
<ul class="org-ul">
<li><a href="https://hub.darcs.net/raichoo/hikari">Hikari</a>, cwm-like
FreeBSD-first compositor.</li>

<li><a href="https://github.com/swaywm/wlroots/tree/master/tinywl">tinywl</a>: A
tiny example compositor using the wlroots library. I forked it and
added a simple tiling mode. Hopefully I'll find some more time to work
on this.</li>
</ul>
</div>
</div>
<div id="outline-container-problems" class="outline-2">
<h2 id="problems">Problems</h2>
<div class="outline-text-2" id="text-problems">
<ul class="org-ul">
<li><p>
Screen sharing in Firefox doesn't work out of the box. I did some
experiments with Simon Ser's
<a href="https://github.com/emersion/xdg-desktop-portal-wlr">xdg-desktop-portal-wlr</a>
when it appeared but didn't get it to work.
<a href="https://www.reddit.com/r/swaywm/comments/fq1qoe/how_to_use_xdgdesktopportalwlr_to_share_the_screen/">Some
people on Reddit</a> have reported success.
</p>

<p>
This is mostly a problem at work, though. I don't use screen sharing
on my personal computers.
</p></li>

<li>The camera and microphone permissions popup in Firefox sometimes
disappears! There's a workaround, though: Click the padlock by the
URL, go to "More information", then to the "Permissions" tab, uncheck
"Use default" on "Camera" and allow it.</li>

<li>No signal on DisplayPort on my Thinkpad x230. Sway detects the
external screen just fine but the HP 27" monitor says "no signal".
External screens works fine on my x270, both over DP over USB-C and
HDMI.</li>
</ul>
</div>
</div>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Setting Orange, the 22 day of Discord in the YOLD 3186 (<time datetime="2020-04-05">2020-04-05</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/no-more-x11.html</link>
  <guid>https://hack.org/~mc/blog/no-more-x11.html</guid>
  <pubDate>Sun, 05 Apr 2020 15:44:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Locked Shields 2019]]></title>
  <description><![CDATA[
<figure id="org8339022">
<img src="https://hack.org/mc/blog/static/images/LockedShieldsD2-6.jpg" alt="LockedShieldsD2-6.jpg">

<figcaption><span class="figure-number">Figure 1: </span>Unnamed, me and Johan in the Apps subteam. Photo by Anders G Warne.</figcaption>
</figure>

<p>
<a href="https://ccdcoe.org/exercises/locked-shields/">Locked Shields</a> is an
annual blue team computer security exercise organised by NATO's
<a href="https://ccdcoe.org/">Cooperative Cyber Defence Centre of Excellence
(CCDCOE)</a>. Many countries, both NATO and non-NATO, participate in the
exercise. This year there were 24 teams.
</p>

<p>
The narrative during the exercise is that there is some tension between
two fictive countries, Berylia and Crimsonia. Berylia might be attacked
by Crimsonia at any time, especially in the cybers. The blue team is
part of an expert team dropped into Berylia to help them defend
themselves.
</p>

<p>
Through <a href="https://www.netnod.se/">$DAYJOB</a> I was invited to join the
Swedish blue team for Locked Shields 2019 in April this year. The
Swedish part of the exercise was held at <a href="https://www.fhs.se/">Swedish
Defence University</a> in Stockholm.
</p>

<p>
The actual exercise was just two days but we had three initial training
days to familiarize ourselves with the network and the machines, prepare
our tools and our own version control systems. There were about 150
machines: some Windows boxes, some Linux boxes, some industrial control
systems, different firewalls, routers and switches.
</p>

<p>
After some initial confusion I ended up in the newly created Apps
subteam. We took responsibility of all the Berylian in-house software,
the development systems, the continous integration and the Docker swarm.
Everything was, of course, rather broken and insecure. I was really
impressed by the people who had been setting this up.
</p>

<p>
The CCDCOE red team started attacking our systems almost immediately. We
had our hands full trying to harden the systems, fixing things,
reporting cracked systems and coordinating with other subteams.
</p>

<p>
The Berylian software developers themselves were curiously missing
during the entire exercise but their users were present and complaining
about systems that didn't work.
</p>

<p>
Several times other subteams had hardened their part of the network and
effectively brought our systems down by, for instance, demanding strong
authentication and encrypted connections which the Berylian software
didn't support. We had to add features like that on the fly.
</p>

<p>
At times things were miserable but all in all we learned much and had a
lot of fun.
</p>


<figure id="org5d45182">
<img src="https://hack.org/mc/blog/static/images/LockedShieldsD2-611.jpg" alt="LockedShieldsD2-611.jpg">

<figcaption><span class="figure-number">Figure 2: </span>Team leader Erik Biverot looking at something funny on my screen. Photo by Anders G Warne.</figcaption>
</figure>

<p>
<a href="https://ccdcoe.org/news/2019/france-wins-cyber-defence-exercise-locked-shields-2019/">Result</a>:
The Swedish team ended up in third place! Congratulations to the French
and Czech teams!
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Sweetmorn, the 65 day of Confusion in the YOLD 3185 (<time datetime="2019-07-30">2019-07-30</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/locked-shields-2019.html</link>
  <guid>https://hack.org/~mc/blog/locked-shields-2019.html</guid>
  <pubDate>Tue, 30 Jul 2019 13:12:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Bakelite phone]]></title>
  <description><![CDATA[
<figure id="orgb8ae3c6">
<img src="https://hack.org/mc/blog/static/images/bakelittelefon.jpg" alt="bakelittelefon.jpg">

</figure>

<p>
Found this beauty, an LM Ericsson m/50, in a second hand shop. It was
made between 1947 and 1962. Initial testing makes me believe it actually
still works. I've done some testing with an ATA box as well. It would be
very funny to have this as a SIP phone.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Setting Orange, the 64 day of Confusion in the YOLD 3185 (<time datetime="2019-07-29">2019-07-29</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/bakelit.html</link>
  <guid>https://hack.org/~mc/blog/bakelit.html</guid>
  <pubDate>Mon, 29 Jul 2019 16:47:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[NTS developments]]></title>
  <description><![CDATA[
<figure id="org56a281d">
<img src="https://hack.org/mc/blog/static/images/hackathon1.jpg" alt="hackathon1.jpg">

</figure>

<p>
Once again <a href="https://www.netnod.se/">$DAYJOB</a> sponsored a mini hackathon in Malmö during the IETF
hackathon. <a href="https://www.netizen.se/">Martin "cos" Samuelsson</a>, <a href="https://lublin.se/">Daniel "quite" Lublin</a> and I
gathered in Netnod's southern office for two days of hacking on
<a href="https://datatracker.ietf.org/doc/draft-ietf-ntp-using-nts-for-ntp/">Network Time Security (NTS)</a>, the authenticated flavour of the Network
Time Protocol (NTP).
</p>

<p>
See <a href="https://hack.org/mc/blog/nts.html">my first post about Network Time Security</a> for an introduction to
NTS.
</p>

<p>
The first few hours my daughter graced us with her presence and left a
few traces&#x2026;
</p>


<figure id="org7647b07">
<img src="https://hack.org/mc/blog/static/images/whiteboard.jpg" alt="whiteboard.jpg">

</figure>

<p>
Omni also came by for a while and helped us reading specs.
</p>

<p>
The hackathon sort of dragged on for a couple of days into my summer
vacation. We now have a working NTS client written in Go!
</p>
<div id="outline-container-ntsntp-package" class="outline-2">
<h2 id="ntsntp-package">NTS/NTP package</h2>
<div class="outline-text-2" id="text-ntsntp-package">
<p>
A friendly fork of beevik/ntp with NTS support:
</p>

<p>
<a href="https://github.com/mchackorg/ntp">https://github.com/mchackorg/ntp</a>
</p>

<p>
Use it like this:
</p>

<div class="org-src-container">
<pre class="src src-go"><span style="color: #eedd82;">options</span> := <span style="color: #98fb98;">ntp.QueryOptions</span>{ <span style="color: #7fffd4;">NTS</span>: <span style="color: #7fffd4;">true</span>, <span style="color: #7fffd4;">C2s</span>: c2sKey, <span style="color: #7fffd4;">S2c</span>: s2cKey }
<span style="color: #eedd82;">resp</span>, <span style="color: #eedd82;">err</span> := ntp.<span style="color: #87cefa;">QueryWithOptions</span>(server, options)
</pre>
</div>

<p>
Authenticated time is now available in <code>resp.Time</code>.
</p>
</div>
</div>
<div id="outline-container-nts-ke" class="outline-2">
<h2 id="nts-ke">NTS-KE</h2>
<div class="outline-text-2" id="text-nts-ke">
<p>
An NTS-KE library for doing the initial key exchange:
</p>

<p>
<a href="https://gitlab.com/hacklunch/ntske">https://gitlab.com/hacklunch/ntske</a>
</p>
</div>
</div>
<div id="outline-container-nts-client" class="outline-2">
<h2 id="nts-client">NTS client</h2>
<div class="outline-text-2" id="text-nts-client">
<p>
A small NTS client using the above libraries:
</p>

<p>
<a href="https://gitlab.com/hacklunch/ntsclient/">https://gitlab.com/hacklunch/ntsclient/</a>
</p>

<p>
Use with <code>-set</code> to actually set system time.
</p>

<p>
This is still a work in progress but seems to work fine against for
example <code>time.cloudflare.com:1234</code> and <code>zoo.weinigel.se:4446</code>.
</p>

<p>
I'm not formally working on NTS during work hours so I'm glad I had the
chance to do at least something on the project.
</p>
</div>
</div>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Setting Orange, the 64 day of Confusion in the YOLD 3185 (<time datetime="2019-07-29">2019-07-29</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/nts2.html</link>
  <guid>https://hack.org/~mc/blog/nts2.html</guid>
  <pubDate>Mon, 29 Jul 2019 15:10:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Fiber to the (weekend) home]]></title>
  <description><![CDATA[<p>
The new fiber connection to my little cottage in the woods recently lit
up!
</p>

<p>
I've had a maxed out ADSL giving me something like 8/2 Mbit/s since we
bought the cottage. With ~3 km of old copper cables I couldn't get any
higher bandwidth but on the other hand I got customized customer support
over IRC! Thanks, Philip! Too bad my old ISP didn't get enough interest
for fiber here in the woods. Telia/Skanova is increasingly abandoning
the copper network under the euphemism
<a href="https://www.telia.se/privat/om/framtidensnat">The Network of the
Future</a>, often leaving people depending on ADSL with only capped and
metered mobile network as the only alternative.
</p>

<p>
With the new fiber I could have had a full symmetric gigabit/s but it
was rather expensive and most of my stuff here can't even get to those
speeds over wireless, so I settled for a symmetrical 100 Mbit/s. Plenty
of bandwidth for most stuff and especially the upstream (backups,
anyone?) is now really nice.
</p>

<p>
It's kind of strange that I still don't have a fiber connection to my
flat in the city but a fiber connection to my weekend cottage. In town
we're in a house with Internet over cable TV cables. Granted, it's
something like 250/10 Mbit/s, but still not fiber.
</p>

<p>
On the other hand, the new fiber connection doesn't have IPv6 and not
even real v4 adresses since they use CG-NAT. I've asked the ISP about a
public v4 address. Rumours has it that they even have a 6rd gateway
somewhere, but of course I can't use it behind CG-NAT.
</p>

<p>
I'm trying to think about my bandwidth history at home. Something like
this:
</p>

<ul class="org-ul">
<li>1987 300 b/s dial-up.</li>
<li>1988 1200/75 b/s dial-up.</li>
<li>1989&#x2014;1995 2400 b/s dial-up.</li>
<li>1995&#x2014;1997 9600 b/s dial-up.</li>
<li>1997&#x2014;1998 19.2(?) kb/s leased line in the T1 collective shared with
two others.</li>
<li>1999 ISDN (2 * 64 kbit/s) in the area 41 collective, shared with three
other adults.</li>
<li>2000&#x2013;2001 Telia cable TV Internet.</li>
<li>2002&#x2013;2004 ADSL, something like 2/1 Mbit/s. Static IP!</li>
<li>~2004&#x2013;2006 - VDSL 10 Mbit/s!</li>
<li>2006&#x2013;2011 Ethernet 10 Mbit/s later upgraded to 100 Mbit/s.</li>
<li>2011&#x2013;now (in town) DOCSIS cable TV 100/10, later increased to 250
Mbit/s downstreams.</li>
<li>2015&#x2013;2019 (cottage) ADSL 8/2 Mbit/s.</li>
<li>2019&#x2013;now (cottage) Ethernet 100 Mbit/s.</li>
</ul>

<p>
What does your Internet connection look like at home?
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Mungday in the YOLD 3185 (<time datetime="2019-01-05">2019-01-05</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/ftth.html</link>
  <guid>https://hack.org/~mc/blog/ftth.html</guid>
  <pubDate>Sat, 05 Jan 2019 21:20:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[Managing reading]]></title>
  <description><![CDATA[<p>
I'm on a Twitter break since January. Suddenly, I had a lot of free
time! I'm afraid I filled much of it with an almost immobilising sense
of dread and panic which kept me from doing a lot of things I would like
to do.
</p>

<p>
I also spend a lot of time reading news, something I almost always
mostly regret but can't seem to stop doing. I read some carefully
curated blogs and listen to a few podcasts (<a href="https://risky.biz/">Risky
Business</a> is amazing!). On the plus side, I have also gone back to
reading something like two books every week, both fact and fiction.
</p>

<p>
When reading news on web sites I find I re-visit the site again and
again during the day and lose track of what I have read. It's not very
rewarding to reload web pages several times a day in the hope of getting
a temporary news fix.
</p>

<p>
I had an idea for a while that I should go cold turkey and not follow
any news media at all, but that turned out to be very hard most of the
time. If someone has a traning program or something to wane you off from
news feeds, let me know.
</p>

<p>
Instead, I'm trying to handle reading news by using the
<a href="https://f-droid.org/en/packages/com.nononsenseapps.feeder/">Feeder
reader</a> on my phone and, of course, the Swiss army chainsaw known as
<a href="http://gnus.org/">Gnus</a> in Emacs on the laptop for some feeds. I use
both the <code>nnrss</code> backend and the wonderful <a href="http://gwene.org/">Gwene</a>
RSS to NNTP gateway. Of course, I use Gwene's sister server
<a href="http://gmane.org/">Gmane</a> for reading quite a few mailing lists as if
they were good old Usenet.
</p>

<p>
Even mainstream Swedish newspapers such as <a href="https://dn.se/">Dagens
Nyheter</a> and <a href="https://sydsvenskan.se/">Sydsvenskan</a> and many others
still expose RSS feeds! Even if they're not full text feeds it helps a
lot in keeping track of what you have read. You can read the lead and
decide if you want to read the article proper by following the link to
their web site. Then it's automatically marked as read and you don't
have to revisit their web sites all the time. Feeder does it for you.
</p>

<p>
I also use the feed from Colin Percival's
<a href="http://www.daemonology.net/hn-daily/">Hacker News Daily</a> and the
wonderfully bitter <a href="http://n-gate.com/hackernews/">Webshit weekly</a> so
I don't have to do HN myself. <a href="https://lobste.rs/">Lobste.rs</a> also
still has an RSS feed. Two, even: one for the articles and for the
comments.
</p>

<p>
As usual, if you want to keep your SAN points, avoid the comments on
both sites even if they're probably better than most sites with comment
threads. Youtube comes to mind&#x2026; Use
<a href="https://chrome.google.com/webstore/detail/hide-youtube-comments/kehdmnjmaakacofbgmjgjapbbibhafoh">Hide
Youtube Comments</a>!
</p>

<p>
Hm&#x2026; A HN Daily but for my Twitter feed? The 10(?) most retweeted
and/or favourited tweets of the day? Sounds like a nice hack!
</p>

<p>
Speaking of saving SAN, I totally avoid mainstream computer news such as
IDG and friends, altough, yes, even IDG has RSS! OK, I do follow
<a href="https://motherboard.vice.com">VICE Motherboard</a> but they have full
text RSS! And, of course, Motherboard has
<a href="https://lorenzofb.com/">Lorenzo Franceschi-Bicchierai</a>.
</p>

<p>
For books, I keep an <a href="http://orgmode.org/">Org mode</a> file with
headings for "Read" and "To read". I'm afraid I still haven't taken full
inventory of the "To read" list. Books are stacked in several pillars
all over my living room, waiting either to be read or to be sorted and
inserted into our bookshelves. Oh, and we need at least two new
bookshelves to add to our existing twelve.
</p>

<p>
Some highlights of what I've read since starting my Twitter break:
</p>

<ul class="org-ul">
<li>Derek Landy's restart of the Skulduggery Pleasant/Valkyrie Kain
series: <i>Resurrection</i> and <i>Midnight</i>.</li>

<li>Niklas Natt och dag's <i>1793</i>, which has a protagonist called Jean
Michael Cardell which I thought was quite funny, although the actual
story is very far from being funny. Really hair raising history-noir
thriller.</li>

<li>Rutger Bregman's <i>Utopia for realists</i>, a book about universal basic
income, a 15-hour workweek and open borders. He's not much of a leftie
and even mentions von Hayek and von Mises as his idols, but that goes
to show that basic income is not a left-right thing. He both rants and
generalizes, especially when introducing something, but all in all an
inspiring read.</li>

<li>China Miéville's wonderful <i>October</i>, his non-fiction about the
Russian revolution. I had only read his surreal fantasy fiction
before. This was something else but still with the same magnificent
storytelling. Too little mentions of Anarchists, though, but I guess
I'll have to go to other sources than a Trotskyite like China for
that.</li>

<li>Tobias Berglund &amp; Niclas Sennerteg: <i>Finska inbördeskriget</i> (<i>The
Finnish civil war</i>), a Swedish book about the Finnish civil war 1918,
something that is more or less forgotten in Sweden, despite many
Swedish volunteers, but still a sore point among some Finnish
acquaintances. An incredibly well-researched and important book, not
least because of all the victims of the White's camps after the war
needs to more well known and because by responding to the Finnish
Social democrats radical turn the Swedish Social democratic party
found its way.</li>

<li>Jan-Olof Grahn <i>Om svensk signalspaning: andra världskriget</i>, a book
about Swedish signals intelligence during WWII including, of course,
the breaking of the Siemens and Halske T52 (the machine known as
Sturgeon at Bletchley Park) by Arne Beurling. Very well researched and
not as anecdotal as Beckman's classic <i>Svenska kryptobedrifter</i>. An
interesting note is that the <a href="http://fra.se/">FRA's</a> listening
station in a villa in Malmö still stands.</li>

<li>Re-read both <i>Fear and Loathing in Las Vegas</i> and some of the
<i>Transmetropolitan</i> albums. I am, again, surprised how well Warren
Ellis and Darek Robertson foretold our current world, at least
politically.</li>
</ul>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Setting Orange, the 1 day of Bureaucracy in the YOLD 3184 (<time datetime="2018-08-08">2018-08-08</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/managing-reading.html</link>
  <guid>https://hack.org/~mc/blog/managing-reading.html</guid>
  <pubDate>Wed, 08 Aug 2018 16:26:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Collaborative working and writing]]></title>
  <description><![CDATA[<p>
Updated 2018-08-07 23:22 with some edits and to include links to NEXUS
FAQs and mention FIXION.
</p>

<p>
The Internets this morning are talking about
<a href="http://www.scp-wiki.net/">the SCP foundation</a>, a collaborative
writing project. It made me think about an idea spreading around in the
early 1990s about writing stories in a science fiction setting about
yourself and your friends as you <i>wanted</i> the future to turn out. Then
you were supposed to act in a way to make the stories come true.
</p>

<p>
In my mind this idea is connected to the NEXUS-Gaia crowd. NEXUS was a
meme possibly best explained in Dwayne "ddraig" Jones-Evans' wonderful
<a href="http://evolutionzone.mariuswatz.com/kulturezone/futurec/nexus.manifesto.html">NEXUS
manifesto</a>. The NEXUS movement was about combining housing collectives
and worker cooperatives to share an Internet connection. Internet could
then be used as a means for forming a federation of nexi for commerce
and coordination. NEXUS-Gaia was the main mailing list of the movement,
all the nexi of Gaia.
</p>

<p>
My own living in the T1 collective 1996&#x2013;1997, known for its early
cheapernet Internet connection, and the Area 41 collective (1998&#x2013;2002
&#x2014; four adults, two kids, 18 computers and redundant Internet
connections!) might be said to have been a small part of it. I'm sure
many others tried to live the dream.
</p>

<p>
Here's my flatmate Magnus and me in front of X terminals in T1's office
space, probably in 1997:
</p>


<figure id="orge387fb4">
<img src="https://hack.org/mc/images/magnus+mc.jpg" alt="magnus+mc.jpg">

<figcaption><span class="figure-number">Figure 1: </span>Magnus and MC in front of X terminals</figcaption>
</figure>

<p>
We had a 19.2 kbit/s leased line when most homes in Sweden had dial-up
at best.
</p>

<p>
In some of these stories I read/wrote back then we re-interpeted the
Gaia of NEXUS-Gaia as the Global Association of Internet Anarchists, a
rather suitable name for an association of free nexi.
</p>

<p>
Both the NEXUS meme of collaborative spaces and the idea of
collaborative writing and trying to make it come true may have
originated, or was at least much discussed, on the Future Culture
mailing list in the early 90s.
</p>

<p>
I'm still subscribed to FUTUREC, but I can't seem to find much about
this in the current archives. They only go back to 1996 and the mailing
list itself was started (on another host) in ~1992. Some things are
mentioned on <a href="http://mariuswatz.com/">Marius Watz'</a>
<a href="http://evolutionzone.mariuswatz.com/kulturezone/futurec/">old FUTUREC
pages</a>, but not much. Still, have a look at Marius' pages for some
really good vibes from FUTUREC of old!
</p>

<p>
After publishing the first version of this blog post Carl Winbäck
reached out over IRC and pointed me to
<a href="https://twitter.com/heath_rezabek">Heath Rezabek</a>'s old FAQs about
the NEXUS movement:
</p>

<p>
<a href="http://www.slackware.com/~msimons/toasternet/nexus-mini-faq.txt">http://www.slackware.com/~msimons/toasternet/nexus-mini-faq.txt</a>
</p>

<p>
<a href="http://www.slackware.com/~msimons/toasternet/nexus-1-faq.txt">http://www.slackware.com/~msimons/toasternet/nexus-1-faq.txt</a>
</p>

<p>
<a href="http://www.slackware.com/~msimons/toasternet/nexus-2-faq.txt">http://www.slackware.com/~msimons/toasternet/nexus-2-faq.txt</a>
</p>

<p>
Something to note about the FAQs is how much text is about trying to get
a decent Internet connection to your home. It was difficult and much of
the point of a local NEXUS was sharing the cost of Internet, a total
non-issue for most of us today.
</p>

<p>
In <a href="http://www.slackware.com/~msimons/toasternet/nexus-1-faq.txt">FAQ
1</a> rez writes:
</p>

<blockquote>
<p>
[The NEXUS meme] found its way into a body of collaborative prose,
based on a fusion of fact and vision, called FIXION.
</p>
</blockquote>

<p>
Ah-ha! FIXION might have been what I was thinking about. I'm not sure.
What it would be like living in a NEXUS was probably vividly imagined in
FIXION. I'm sure it was on FutureCulture. Probably on LERI-L, too, and
perhaps on the IRC counterparts #leri and #future as well.
</p>

<p>
The FIXION archives were here at one time:
</p>

<p>
<a href="ftp://ftp.netcom.com/pub/fixion/">ftp://ftp.netcom.com/pub/fixion/</a>
</p>

<p>
but the Wayback Machine has nothing from them.
</p>

<p>
FIXION grew into <a href="http://www.scrytch.net/scrytfaq.html">scrytching</a>
which Carl pointed me to. I don't think I ever heard about that before,
although rez might have mentioned it on FUTUREC.
</p>

<p>
It's funny that writing about yourself in the future is just what Alan
Moore, one of my favourite magicians, talked about in a clip I happened
to watch last night, <a href="https://www.youtube.com/watch?v=vw1Sv04YQS4">Alan
Moore on Language, Writing and Magic</a>, but that's just the usual
synchronicity at work, I guess.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Prickle-Prickle, the 73 day of Confusion in the YOLD 3184 (<time datetime="2018-08-07">2018-08-07</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/colloborative-writing.html</link>
  <guid>https://hack.org/~mc/blog/colloborative-writing.html</guid>
  <pubDate>Tue, 07 Aug 2018 14:55:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Network Time Security]]></title>
  <description><![CDATA[<p>
Update: Code available <a href="https://github.com/mchackorg/gonts">on
Github</a>.
</p>

<p>
The Network Time Protocol (NTP) was born on an interesting PDP-11
operating system called
<a href="https://www.eecis.udel.edu/~mills/gallery/gallery10.html">Fuzzball</a>.
Fuzzballs were used as routers in the National Science Foundation part
of the early Internet. They were remarkably picky about time
synchronization.
</p>

<p>
NTP has been with us ever since and most of Internet (and more) relies
on the venerable NTP to synchronize clocks. It's probably one of the
oldest protocols still in use.
</p>

<p>
$DAYJOB keeps a hardware (Verilog) implementation of NTP with attached
atomic clocks running in several locations in Sweden. Yes, you speak NTP
directly to the FPGA chip! No software involved! The service is
available to the public worldwide on <code>ntp.se</code>, which resolves to anycast
v4 and v6 addresses.
</p>

<p>
This is, for most purposes, the Swedish time. More about this
<a href="https://www.netnod.se/ntp">on Netnod's project pages.</a>
</p>

<p>
But can you trust it? How do you know that the packets comes from the
right sender? UDP spoofing is simple and NTP runs on top of UDP. Most(?)
NTP clients use a random TransmitTime in their requests to mitigate
this, but it's still sensitive to a man in the middle attack.
</p>

<p>
NTPv3 introduced support for symmetric authentication on time data using
pre-shared keys. It's unchanged in the current v4 of the protocol. It
looks remarkably old-fashioned to modern eyes. It's similar to TSIG in
DNS, which is also dated, but a bit more useful than the NTP
authentication. I think NTP authentication as it currently stands is
very seldom used.
</p>

<p>
Network Time Security (NTS) is an attempt in the
<a href="https://datatracker.ietf.org/wg/ntp/about/">IETF NTP working group</a>
to change the NTP authentication to something slightly more useful.
</p>

<p>
During the
<a href="https://trac.ietf.org/trac/ietf/meeting/wiki/102hackathon">IETF 102
hackathon</a> (14&#x2013;15 July) I teamed up with my friends
<a href="https://lublin.se/">Daniel "quite" Lublin</a>, omni and raccoon to make
an attempt at implementing the
<a href="https://datatracker.ietf.org/doc/draft-dansarie-nts/">Dansarie NTS
spec</a> $DAYJOB has contributed to.
</p>

<p>
None of us has had much to do with the NTP project before, so we knew
next to nothing when we started.
</p>

<p>
We couldn't attend the IETF meeting in Montreal physically, so we spent
two days in Netnod's Malmö office instead. Well, evenings and nights,
really, in some effort to match the time zone in Montreal and, of
course, because it's a well-known fact that you hack best at night,
occassionally boosted by Club-Mate.
</p>

<p>
We coordinated work mostly on ##nts on FreeNode and the occasional
MeetEcho video conference provided by the IETF, to be able to see the
kickoff and the presentations at the end of the hackathon.
</p>

<p>
We started with <a href="https://github.com/beevik/ntp">Brett Vickers' Go NTP
package</a> which is a pure-Go SNTP implementation. SNTP is a simpler
version of the NTP protocol but wire-compatible with its big brother, so
we thought it would probably work for our purposes.
</p>

<p>
However, Brett's package only supports client-side SNTP, so we cut and
pasted from internal structures to quickly whip together a very basic
SNTP server.
</p>

<p>
NTS-KE, the key exchange part of NTS, is based on TLS. Go's own TLS
implementation doesn't support TLS 1.3 and no RFC 5705 key extraction.
Instead, we found the <a href="https://github.com/bifurcation/mint">mint TLS
1.3 library</a> and used that to create basic TLS clients and servers.
Unfortunately, mint only supports draft-22 of TLS 1.3, but we found
<a href="https://github.com/martinthomson/mint/tree/draft-28">a pull request</a>
supposedly bringing it up to draft-28.
</p>

<p>
It worked fine against Mozilla's TLS 1.3-only (HTTPS) test server,
</p>

<p>
<a href="https://tls13.crypto.mozilla.org/">https://tls13.crypto.mozilla.org/</a>
</p>

<p>
but not against Martin Langer's OpenSSL-based NTS test server. We got
TLS handshake errors. We gave up trying to make it work. It will
probably work fine in the end when mint has been brought up to date.
</p>

<p>
On top of our TLS client and server we used mint's RFC 5705-support to
extract keys, then negotiate the "ntske/1" ALPN application protocol on
top of TLS. Inside all of that we implemented NTS-KE proper which turned
out to be a really simple protocol.
</p>

<p>
The thing we had the most problem with was the cookies. We had a few
false starts. It finally dawned on us after reading about the very
similar TLS session tickets in RFC 5077.
</p>

<p>
What we accomplished:
</p>

<ul class="org-ul">
<li>NTS-KE client that sends a request and can parse NTS-KE replies.</li>
<li>NTS-KE server with hardcoded replies.</li>
<li>A very basic SNTP client.</li>
<li>A very basic SNTP server.</li>
<li>Communication between the NTS-KE client and the SNTP client to send
initial cookie and key material.</li>
<li>Learned a lot and had a lot of fun!</li>
<li>After the hackathon proper: Saw some very nice C64 demos and drank a
few beers.</li>
</ul>

<p>
Still left to do:
</p>

<ul class="org-ul">
<li>Implement NTP Extension fields in Brett's NTP package.</li>
<li>Implement NTS using the extension fields.</li>
<li>Generating cookies.</li>
<li>Management of shared secret between the NTS-KE server and the NTP
server for encryption of cookies.</li>
</ul>

<p>
We worked on FreeBSD and Linux machines but the code is very portable
and cross-compiled cleanly to Windows, but we haven't yet tested
anything on Windows.
</p>

<p>
I haven't touched this since the hackathon. The code is still in a
private repo. It will probably end up on Github.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Pungenday, the 67 day of Confusion in the YOLD 3184 (<time datetime="2018-08-01">2018-08-01</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/nts.html</link>
  <guid>https://hack.org/~mc/blog/nts.html</guid>
  <pubDate>Wed, 01 Aug 2018 19:56:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Incompatible Timesharing System]]></title>
  <description><![CDATA[<p>
<img src="static/images/PDP-10_1090.jpg">
</p>

<p>
(Photo by Michael L. Umbricht, CC BY-SA.)
</p>

<p>
ITS, the Incompatible Timesharing System, is seen in hackerdom as one of
the most hacker friendly operating system for the wonderful PDP-10
series of computers (pictured above). It has its own chapter in Stephen
Levy's remarkable book <i>Hackers: Heroes of the Computer Revolution</i>, a
book whose first third I often re-read when news about modern computing
brings me down.
</p>

<p>
ITS was first described in AI memo 161/A from 1968/69 by Donald E.
Eastlake 3rd, incidentally the same DEE3 we can blame for DNSSEC. A
friendly MIT librarian scanned 161A for me when I asked about in the mid
1990s. Dave Carter later made it available as plain text, a copy of
which I keep here:
</p>

<p>
<a href="https://hack.org/mc/texts/its-reference-1.5.txt">https://hack.org/mc/texts/its-reference-1.5.txt</a>
</p>

<p>
I once based a lecture on AI memo 161A. I lectured to unsuspecting
first-year Informatics students at Linköping University, invited to do
so by their senior students. I think at most a few understood what I was
talking about, but it was very well received as a fake lecture. Fake
lectures are traditionally held during the first weeks, typically with
an equally fake student asking advanced questions in the audience.
Another year I introduced the INTERCAL programming language, mostly with
a straight face.
</p>

<p>
Another great text about ITS is Alan Bawden's paper on how the ITS
operating system made system calls restartable:
<a href="https://hack.org/mc/texts/pclsr.txt">PCLSRing: Keeping Process State
Modular</a>.
</p>

<p>
ITS has been available for some time to run on emulators. Björn Victor
has it running on a <a href="https://github.com/PDP-10/klh10">KLH-10 emulator</a>
on a Raspberry Pi. He has written a web server in MacLisp for it so it
can serve its own web pages at:
</p>

<p>
<a href="http://up.update.uu.se/">http://up.update.uu.se/</a>
</p>

<p>
Björn also keeps TOPS-20 running on KLH-10 on a similar raspi, a clone
of the real TOPS-20 system AIDA in Uppsala: TINA Is not AIDA:
</p>

<p>
<a href="http://tina.update.uu.se/">http://tina.update.uu.se/</a>
</p>

<p>
Funny quote from Björn that might also cover the ITS machine:
</p>

<blockquote>
<p>
The emulated system cost about 1/20000 of the original, weighs about
1/60000, using 1/6000 of the power, and still runs about 3 times
faster than the original system.
</p>
</blockquote>

<p>
Here's me hugging the real AIDA a few years ago during a visit to a
museum:
</p>


<figure id="orge275168">
<img src="https://hack.org/mc/images/aida.jpg" alt="aida.jpg">

</figure>

<p>
See my blog post <a href="https://hack.org/mc/blog/aida.html">Visiting Aida</a>.
</p>

<p>
Paul "pul-s" Svensson has also written a web server for ITS, but in the
MIDAS assembler:
</p>

<p>
<a href="http://its.svensson.org/">http://its.svensson.org/</a>
</p>

<p>
<a href="http://its.svensson.org/hack%3Bwebser">MIDAS source for the web
server</a>.
</p>

<p>
You can connect to both these machines with
<a href="https://github.com/PDP-10/supdup">SUPDUP</a> for the complete
experience. You can run the original TECO Emacs, for instance. ITS feels
rather modern, considering its age.
</p>

<p>
Björn keeps an ITS wiki:
</p>

<p>
<a href="http://its.victor.se/wiki/">http://its.victor.se/wiki/</a>
</p>

<p>
Lars Brinkhoff and friends are trying to make it easy to build ITS from
scratch:
</p>

<p>
<a href="https://github.com/pdp-10/its">https://github.com/pdp-10/its</a>
</p>

<p>
They are also trying to get the Knight TV consoles, the bitmap graphics
terminals used at the MIT AI lab, working in emulation.
</p>

<p>
Very little is known about the Knight TV system but it seems they are
digging up an awful lot of information. The TV consoles had PDP-11s as
frontends to the PDP-10 backend. They were bitmapped but had no window
system.
</p>

<p>
<img src="static/images/knight-console.jpg">
</p>

<p>
(Photo by C. Stacy.)
</p>

<p>
One of the interesting thing with the Knight consoles was the keyboard,
here connected to a modern Novena laptop:
</p>

<p>
<img src="static/images/novena-knight-keyboard.jpg">
</p>

<p>
(Photo by <a href="https://www.flickr.com/people/35596940@N00">Mike McMahon</a>.
CC BY.)
</p>

<p>
The Knight keyboard was the main inspiration to the later Space Cadet
keyboard on the Lisp Machines, which is probably one of the reasons we
have Meta and Super keys in X11.
</p>

<p>
Incidentally, if someone has a Knight or Space Cadet keyboard (or a
Novena, for that matter!), my birthday is coming up soon&#x2026;
</p>

<p>
Lars extracted the default Knight TV font and made it available both as
an X11 BDF font and a VT220 soft font:
</p>

<p>
<a href="https://github.com/larsbrinkhoff/Knight-TV-font">https://github.com/larsbrinkhoff/Knight-TV-font</a>
</p>

<p>
He made the screenshot using
<a href="https://github.com/Swordfish90/cool-retro-term">cool-retro-term</a>, not
an actual, nor emulated, Knight console.
</p>

<p>
I'm sure Lars and friends will welcome any help even though I warn you
that this is a real time sink that I have been down before.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Pungenday, the 67 day of Confusion in the YOLD 3184 (<time datetime="2018-08-01">2018-08-01</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/its.html</link>
  <guid>https://hack.org/~mc/blog/its.html</guid>
  <pubDate>Wed, 01 Aug 2018 14:32:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[#3, Mars and the blood moon]]></title>
  <description><![CDATA[<p>
Last Friday night, about 21:30 local time. Me and #3 were walking
through the city. We climbed the stairs to the roof of a car park, 12
storeys high.
</p>

<p>
We found about 70&#x2013;80 other people already on the roof. Some were having
a picnic on an empty parking lot. One guy had climbed onto some higher
structure on top of the roof. He sat there crosslegged, quietly smoking,
looking to the south-east while the sun came down.
</p>

<p>
The surveillance cameras must have seen us all but no guards came.
</p>

<p>
At 21:15 the moon should have been over the horizon but we had to wait a
while longer since there were some tall buildings to the south-east.
Then it slowly rose above them, the blood moon! We hung around for a
while longer, #3 jumping up and down in excitement, and then we saw Mars
as well. Really, really clear, slightly orange and beaming towards us.
</p>

<p>
I think I only had pointed out Jupiter and Venus to her before. She was
really excited to be able to see Mars.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Pungenday, the 67 day of Confusion in the YOLD 3184 (<time datetime="2018-08-01">2018-08-01</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/blood-moon.html</link>
  <guid>https://hack.org/~mc/blog/blood-moon.html</guid>
  <pubDate>Wed, 01 Aug 2018 00:25:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[CopperheadOS]]></title>
  <description><![CDATA[<p>
Update 2018-07-25: Copperhead seems to be going through a lot of drama
lately. There is a rift between the CEO and the lead developer, made
even more complex since they both seem to own 50% each of the company.
The old signing key for updates has been deleted! This has left me
stranded, unsure if I want to re-install CopperheadOS, the only way to
get new updates, or if I want do something completely different.
<a href="https://lineageos.org/">Lineage</a>, perhaps? A friend has even chosen
to go without a phone.
</p>

<p>
In December 2016, about the same time I ditched Apple in favour of good
old FreeBSD on my laptop, I gave my mother my old iPhone as a Newtonmas
present. To replace it I bought myself a Nexus 5x and immediately
installed <a href="https://copperhead.co/android/">CopperheadOS</a> on it. It has
served me well since then.
</p>

<p>
Installation of CopperheadOS was a breeze. Tools such as <code>fastboot</code> and
<code>adb</code> was readily available as FreeBSD packages that was easily
installed on my Thinkpad without having to install a humongous Android
Studio or a huge Android SDK or anything.
</p>

<p>
Copperhead keeps a fork of Signal called Noise in their F-Droid repo. At
the start, this was necessary since the Android flavour of Signal used
Google Cloud Messaging to push messages. The Noise fork instead keeps a
websocket open all the time. Bad for the battery, perhaps, but keeps you
free from the Google services.
</p>

<p>
The upstreams Signal has since been patched to do the same thing, but
you'll have to install it from <a href="https://signal.org/android/apk/">the
APK</a> since it's not available on the F-Droid repo.
</p>

<p>
The Conversations XMPP client also keeps a connection alive all the
time, but my battery time has been quite acceptable.
</p>

<p>
<a href="https://f-droid.org/">The F-Droid package repo</a> is excellent. The
FLOSS scene on Android is so much better than on iOS, where almost all
free apps are closed source and many have advertisments. Some of the
apps I use besides the built-in in Copperhead apps are:
</p>

<ul class="org-ul">
<li><a href="https://f-droid.org/en/packages/eu.siacs.conversations/">Conversations</a> -
XMPP client. See the Legacy version if you need OTR support. The new
version only allows OMEMO and, strangely enough, PGP!</li>
<li><a href="https://f-droid.org/packages/com.menny.android.anysoftkeyboard/">AnySoftKeyboard</a> -
Keyboard replacement.</li>
<li><a href="https://f-droid.org/packages/com.nononsenseapps.feeder/">Feeder</a> -
Really nice RSS/Atom reader.</li>
<li><a href="https://f-droid.org/packages/de.danoeh.antennapod/">AntennaPod</a> -
Podcast client.</li>
<li><a href="https://f-droid.org/packages/org.schabi.newpipe/">NewPipe</a> -
Youtube client.</li>
<li><a href="https://guardianproject.info/apps/orbot/">Orbot</a> - Tor connection.</li>
<li><a href="https://f-droid.org/packages/com.smithdtyler.prettygoodmusicplayer/">Pretty
Good Music Player</a> - very simple music player.</li>
<li><a href="https://f-droid.org/packages/org.yaaic/">Yaaic</a> - IRC client.</li>
<li><a href="https://f-droid.org/packages/com.vrem.wifianalyzer/">WiFiAnalyzer</a> -
Great way to see what's in the air.</li>
<li><a href="https://f-droid.org/packages/com.github.axet.maps/">Maps</a> - Offline
maps from OpenStreetMap based on the MAPS.ME project. Much better than
the OsmAnd+ I used before.</li>
<li><a href="https://f-droid.org/en/packages/com.simplemobiletools.calendar/">Calendar</a> -
a calendar that I like much more than the built-in Etar.</li>
<li><a href="https://f-droid.org/en/packages/net.khertan.forrunners/">ForRunners</a> -
a tracking app for runners which, unlike most of its kind, doesn't
report your location to a server somewhere.</li>
</ul>

<p>
I don't do e-mail on my phone. If I did I would probably use the K9
e-mail client.
</p>

<p>
My work phone is still an iPhone and thoroughly connected to both the
Apple and Google universes, but it's nice to think that at least my
personal phone is free from them.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Pungenday, the 2 day of Confusion in the YOLD 3184 (<time datetime="2018-05-28">2018-05-28</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/copperhead.html</link>
  <guid>https://hack.org/~mc/blog/copperhead.html</guid>
  <pubDate>Mon, 28 May 2018 19:36:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[org-static-blog]]></title>
  <description><![CDATA[<p>
A few days ago I found Bastian Bechtold's wonderfully simple
<a href="https://github.com/bastibe/org-static-blog">org-static-blog</a>,
probably after finding some wise words in <a href="https://bastibe.de/">his
blog</a>. org-static-blog is a simple Emacs blog exporter for entries
written in <a href="https://orgmode.org/">Org mode</a>.
</p>

<p>
Since I use Org every day, both in my free time and at work, it seemed
natural I would want to write my blog entries in org-mode instead of
Markdown. I considered for a while using <a href="https://gohugo.io/">Hugo's</a>
new Org parsing, but was charmed by the really simple org-static-blog,
so I decided to do a few experiments.
</p>

<p>
First I made the HTML output validate, then, with a go-ahead from
Bastian, I turned it into HTML 5. I also have a branch generating an
Atom feed instead of RSS, but it isn't quite working yet.
</p>

<p>
There are some rough edges still, for instance how to handle relative
paths in the feed, but it's promising. I also probably made a few
mistakes in setting it up for my own blog because, for instance, the
rendered date of the post seems to be included in the feed&#x2026;
</p>

<p>
I converted my old Markdown posts with John MacFarlane's wonderfully
<a href="https://pandoc.org/">generic pandoc</a> utility. Actually installing
pandoc on my laptop would install 128 dependencies and a total of 3 GiB
of additional software! For a one-time job! Instead, I found
<a href="https://github.com/jagregory/pandoc-docker">James Gregory's pandoc
Docker image</a> which made the job quite easy. Well, that and a
throw-away Go program that parsed the Hugo metadata into Org metadata.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Pungenday, the 45 day of Discord in the YOLD 3184 (<time datetime="2018-04-28">2018-04-28</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/org-static-blog.html</link>
  <guid>https://hack.org/~mc/blog/org-static-blog.html</guid>
  <pubDate>Sat, 28 Apr 2018 12:18:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[The now page movement]]></title>
  <description><![CDATA[<p>
Most web sites have an "about" page. This one does, <a href="https://hack.org/mc/bio.html">too</a>. <a href="https://sivers.org/">Derek Sivers</a>
suggests adding a <a href="https://sivers.org/nowff">now</a> page as well.
</p>

<p>
What you put on the now page is up to you, of course, but the idea is
that you write something like what you would be telling a long-lost
friend about you and yours.
</p>

<p>
Derek has even started something like a community of people with now
pages over at:
</p>

<p>
<a href="https://nownownow.com/">https://nownownow.com/</a>
</p>

<p>
See <a href="https://nownownow.com/about">their about page</a> for more. At a first glance, however, it seems
like some of the entries on the community pages are used for rather
transparent SEO, but I still think the now page is a good idea.
</p>

<p>
Of course, I've added <a href="https://hack.org/mc/now">a now page of my own</a>, so if you wonder what
happened to me and what I'm doing now, just head over to my /now page!
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Prickle-Prickle, the 41 day of Discord in the YOLD 3184 (<time datetime="2018-04-24">2018-04-24</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/now.html</link>
  <guid>https://hack.org/~mc/blog/now.html</guid>
  <pubDate>Tue, 24 Apr 2018 09:29:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Teleservice offers IPv6 over 6rd]]></title>
  <description><![CDATA[<p>
The local ISP I use in my holiday home,
<a href="http://teleservice.net/">Teleservice Skåne</a>, doesn't offer native
IPv6 to us lowly ADSL customers. However, they <i>do</i> operate a 6rd
gateway! This configuration in my OpenWRT's <code>/etc/config/network</code> made
all the difference:
</p>

<pre class="example" id="org5727360">
config interface wan6
        option proto '6rd'
        option peeraddr '85.30.128.12'
        option ip6prefix '2a02:83::'
        option ip6prefixlen 32
</pre>

<p>
Ta-da! Thanks, Philip @ Teleservice!
</p>

<p>
Ask your local ISP if they can do the same!
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Setting Orange, the 64 day of Confusion in the YOLD 3182 (<time datetime="2016-07-29">2016-07-29</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/6rd.html</link>
  <guid>https://hack.org/~mc/blog/6rd.html</guid>
  <pubDate>Fri, 29 Jul 2016 12:57:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Going native on a Chromebook]]></title>
  <description><![CDATA[<p>
I've spent the last few days on my vaction experimenting with native
GNU/Linux on my Toshiba Chromebook 2. I wrote about it in
<a href="https://hack.org/mc/writings/native-chromebook.html">Native GNU/Linux
on a Toshiba Chromebook 2</a>. I'll try to keep the document updated.
</p>

<p>
Main points:
</p>

<ul class="org-ul">
<li>It's surprisingly easy to get a native distribution running.</li>
<li>Linux and friends have changed somewhat since I last used them on a
machine close to me: new stuff like systemd, pulseaudio, et cetera.</li>
<li>X11 is still a security nightmare, but by running two sets of X
servers you might be able to ward off the worst. Also, Wayland is
coming along.</li>
<li>I've missed <a href="https://hack.org/mc/projects/mcwm/">mcwm</a> but find
<a href="http://dwm.suckless.org/">dwm</a> utterly charming on this small
screen.</li>
<li>I've missed <a href="https://hack.org/mc/writings/xkb.html">my own keymap</a>.</li>
</ul>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Setting Orange, the 64 day of Confusion in the YOLD 3182 (<time datetime="2016-07-29">2016-07-29</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/native-chromebook.html</link>
  <guid>https://hack.org/~mc/blog/native-chromebook.html</guid>
  <pubDate>Fri, 29 Jul 2016 12:47:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Running CP/M: Microbee, Compis, and Yaze-AG]]></title>
  <description><![CDATA[<p>
A couple of days ago I talked with a friend about computers in our
primary schools. At her school they had a set of Microbee computers, a
family of Australian Z80-based micros running CP/M. I don't know exactly
what model they had, but after asking around among other friends some
sort of Microbees seems to have been rather common in Swedish school in
the mid-80s.
</p>

<p>
I remember seeing ads for Microbees in the 1980s and much later had an
opportunity to play with a 32IC for a while. Quite nice little machines.
</p>

<p>
From 1985/86 my school had Compis computers, which I think was slightly
more common, Compis being The Official Swedish School Computer. Compis
was a 80186-based CP/M-86 machine with really nice, low keyboard and
fairly high resolution monitors.
</p>

<p>
The system at my school were 640x400 monochrome (green) and a single
colour-based machine with much slower graphics that everyone avoided.
Allegedly there was also a version with 1280x800 monochrome (b/w), but I
never saw anything like that.
</p>

<p>
The machines had floppy drives but were also connected to a shared 10
MiB hard disk. The hard-drive was only available in read-only form,
except for one drive letter which only could have one user at a time. I
remember a program called <code>boxloss</code> which unmounted this virtual drive
from anyone who happened to be using it and mounting it for you. The
password was "Fredrika". I don't remember how you were supposed to mount
it without stealing it like this. Anyone?
</p>

<p>
There was some kind of menu system, but if you really wanted to you
could get at the CP/M prompt. This prompt, unfortunately, was the
standard CCP, not any of the fancy ZCPR stuff that people running CP/M
on Z80s were used to by then.
</p>

<p>
One thing that struck me during our conversation, and from many other
conversations about computers in Swedish primary schools in the 1980s,
was that the computers were very seldom <i>used</i> for anything! For
instance, we were not allowed to use the computers to write texts! There
were no word processor or text editor available, at least to my
knowledge, and we were certainly not allowed to use the computers
outside of specific "computer classes".
</p>

<p>
This is particularly interesting if you look at the Microbee, since as
far as I can tell all models had a <i>built-in</i> text editor!
</p>

<p>
We weren't allowed to use any advanced development tools either. On the
Compis we had to write programs in COMAL, a language looking a lot like
BASIC, but with proper procedures and functions. Really frustrating when
I had the wonderful Turbo Pascal at home and I <i>knew</i> that Turbo Pascal
was available on CP/M and for the Compis as well.
</p>

<p>
After our conversation I decided to look back at some development
environments on CP/M and see if I could have lived with the environments
back then&#x2026;
</p>

<p>
I looked around for a Microbee emulator and found an emulator in
Javascript, <a href="http://www.nanowasp.org/">NanoWasp</a>.
<a href="https://github.com/dgchurchill/nanowaspjs">Code on GitHub</a>.
</p>

<p>
NanoWasp is unfortunately limited to a tape-drive system. It would be
fun to work with something with floppy disk support. Anyone?
</p>

<p>
I didn't find any Compis emulators, but thought I'd look around for some
more generic emulator to run CP/M on.
</p>

<p>
A popular emulator for CP/M seems to be the
<a href="http://www.mathematik.uni-ulm.de/users/ag/yaze-ag/">YAZE-AG Z80
emulator</a>.
</p>

<p>
YAZE-AG comes pre-loaded with CP/M 3.1 and a lot of development tools. I
was totally blown away by Turbo Modula-2! Look at drive <code>M:</code>.
</p>

<p>
Wikipedia tells me TM-2 was never marked by Borland but later became
TopSpeed Modula-2 for MS-DOS. I had never used it before but it's really
incredible. The environment is reminiscent of Turbo Pascal 3.0 with a
small menu system and an WordStar-like editor, but the language is much
richer.
</p>

<p>
According to this
<a href="http://www.retroarchive.org/cpm/cdrom/CPM/TURBOM2/MODULA2.TXT">blurb</a>
the cost of TM-2 was $69.95. Tremendous value, indeed!
</p>

<p>
I would have been very happy indeed if this had been available at my
school. I don't think TM-2 was available for CP/M-86, though, although
it seems Logitech's Modula-2 compiler was. I think I would have been
quite happy with just TP 3.0 as well, which was what I was programming
in at home, but more important than this would have been <i>access to the
computers</i>!
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Setting Orange, the 27 day of Discord in the YOLD 3182 (<time datetime="2016-04-10">2016-04-10</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/cpm.html</link>
  <guid>https://hack.org/~mc/blog/cpm.html</guid>
  <pubDate>Sun, 10 Apr 2016 00:00:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[IPv6 Only FreeBSD ]]></title>
  <description><![CDATA[<p>
I'm setting up a couple of FreeBSD jails in an IPv6-only world. I was a
bit surprised to note that although <code>pkg.freebsd.org</code> has a AAAA in DNS
it's impossible to reach the DNS server that gives the AAAA answer over
IPv6!
</p>

<p>
Only if I use a resolver that are both on IPv6 and legacy IP will I be
able to install packages.
</p>

<p>
What can I do to help?
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Sweetmorn, the 13 day of Discord in the YOLD 3182 (<time datetime="2016-03-27">2016-03-27</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/ipv6-only.html</link>
  <guid>https://hack.org/~mc/blog/ipv6-only.html</guid>
  <pubDate>Sun, 27 Mar 2016 00:00:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[32nd Chaos Communication Congress]]></title>
  <description><![CDATA[<p>
Never underestimate the bandwidth of a van full of cypherpunks hurling
down the highway. Never mind that the van originally wouldn't start and
that we had to get off and push it until it finally started. Now we were
hurling along the Autobahn towards Berlin, praying silently to Eris that
we wouldn't get an engine failure right there, with BMW's and Porsche's
being shot from a cannon behind us.
</p>

<p>
Hours later we ended up in a fairly up-scale collective, or as the
inhabitants called it, a "Wohnungsgemeinschaft", in Kreuzberg. There was
beer cooling in the snow on the balcony, fair wifi and plans for a vegan
buffet for New Year's Eve.
</p>

<p>
The real treat of the trip was of course the ~4000 hackers that were
noisily gathering close to Alexanderplatz for the annual Chaos
Communication Congress.
</p>

<p>
This was the start of my first ever C3 conference, a wonderful gathering
of hackers and makers that I for a long time had mistakenly thought was
just about computer security. I was <i>so</i> wrong. The conference is very
much about technology and politics and how they interact and far from
being just about computer (in)security.
</p>

<p>
Now, many years later, the many C3s I've been to have been the best
conferences of my life. The organizers and the many volunteers continue
to impress me, for example by having their own phone networks (one GSM,
one DECT), a working pneumatic tube system covering the entire congress,
and one of the best conference networks ever made: this year 4 * 10
Gigabit/s upstream and a wifi with a peak of 8150 clients.
</p>

<p>
They also offer a temporary co-location facility for your own servers
for the duration of the conference.
</p>

<p>
All talks are streamed in real-time, now without Flash, on some talks
including real-time interpretation and subtitling to English and/or
German, as well recording everything and offering it to the public.
</p>

<p>
The talks, workshops and, perhaps best of all, the chance meetings with
interesting individuals is why I keep going back year after year.
</p>
<div id="outline-container-c3-highlights" class="outline-2">
<h2 id="c3-highlights">32C3 Highlights</h2>
<div class="outline-text-2" id="text-c3-highlights">
<p>
The 2015 version of the C3 had increased to about 14000 attendees with
~170 talks spread over four days from 11:30 to midnight every day.
</p>

<p>
If you just watch one of the talks, you should watch <a href="https://media.ccc.de/v/32c3-7368-shopshifting">Shopshifting</a>,
where Karsten Nohl et al breaks commonly used payment protocols by&#x2026;
reading the manual! This includes attacks both against the customer
and against the merchant.
</p>

<p>
If you have time for more, you should watch Alex Halderman's &amp; Nadia
Heninger's great talk about <a href="https://media.ccc.de/v/32c3-7288-logjam_diffie-hellman_discrete_logs_the_nsa_and_you">logjam: Diffie-Hellman, discrete logs, the
NSA, and you</a>. See, especially, the web page they have set up for
helping mitigate the logjam:
</p>

<p>
<a href="https://weakdh.org/">https://weakdh.org/</a>
</p>

<p>
A natural extension of the logjam talk is a talk about what happens if
your adversary has a quantum computer (pro tip: they don't, yet) and how
you might be able to mitigate that with post-quantum cryptography:
<a href="https://media.ccc.de/v/32c3-7210-pqchacks">PQCHacks</a> with Daniel "djb" Bernstein and Tanja Lange.
</p>

<p>
Every year at least one of the talks at the C3 gets picked up by
mainstream press. This year I would have guessed that the Shopshifting
talk would get all the press. I was surprised to note that the thing
the Swedish tabloids picked up was a closer look on a North Korean
Linux distribution, <a href="https://events.ccc.de/congress/2015/Fahrplan/events/7174.html">Lifting the Fog on Red Star OS</a>! I didn't even go
to that talk, mostly because it seemed to mirror a similar talk on an
earlier conference.
</p>

<p>
All talks are available at:
</p>

<p>
<a href="https://media.ccc.de/c/32c3">https://media.ccc.de/c/32c3</a>
</p>

<p>
The congress main page is kept up at:
</p>

<p>
<a href="https://events.ccc.de/congress/2015/">https://events.ccc.de/congress/2015/</a>
</p>

<p>
The schedule or, as the C3 people call it, der Fahrplan:
</p>

<p>
<a href="https://events.ccc.de/congress/2015/Fahrplan/">https://events.ccc.de/congress/2015/Fahrplan/</a>
</p>
</div>
</div>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Pungenday, the 10 day of Discord in the YOLD 3182 (<time datetime="2016-03-24">2016-03-24</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/32c3.html</link>
  <guid>https://hack.org/~mc/blog/32c3.html</guid>
  <pubDate>Thu, 24 Mar 2016 00:00:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[Apple Photos and photo captions]]></title>
  <description><![CDATA[<p>
For a while I've been using an iPhone as my main camera. When importing
photos from the phone with Apple Photos it's possible to edit photos,
tag them and add captions to them before exporting them to a directory
where I can generate web galleries with
<a href="file://hack.org/mc/projects/simgal/">simgal</a>.
</p>

<p>
I'm sad to say it, but adding captions to photos in Apple Photos is much
easier than doing it with Emacs, as I usually do.
</p>

<p>
The comments added by Apple Photos are not the familiar JFIF comments,
however, but is instead the "caption" field in IPTC data. Fortunately
for me, jhead knows how to parse IPTC as well. It says something like:
</p>

<pre class="example" id="orga3f71e6">
...
======= IPTC data: =======
City          : G
Record vers.  : 2
Object Name   : totoro
Caption       : totoro on kitchen floor
</pre>

<p>
which I can easily get into simgal with:
</p>

<div class="org-src-container">
<pre class="src src-sh"><span style="color: #eedd82;">exifdata</span>=<span style="color: #fa8072;">`jhead $current |awk '/^Date.*/ { print $3,$4 } ; /^Comment/ { print substr($0, index($0,$3)) } ; /^Caption/ { print substr($0, index($0,$3)) }'`</span>
</pre>
</div>

<p>
which I just then dump unceremoniously to the web page.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Pungenday, the 58 day of Chaos in the YOLD 3182 (<time datetime="2016-02-27">2016-02-27</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/apple-photos.html</link>
  <guid>https://hack.org/~mc/blog/apple-photos.html</guid>
  <pubDate>Sat, 27 Feb 2016 00:00:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[Using Hugo as a blog generator]]></title>
  <description><![CDATA[<p>
I just switched from <a href="http://blog.getpelican.com/">Pelican</a> to
<a href="https://gohugo.io/">Hugo</a> for my blog. Hugo, written in Go, is much
more interesting than Pelican and I think this means I will update more
often.
</p>

<p>
Most of the old URLs to individual blog items should work. However, the
feed URLs changed. I apologize. I hope people subscribing will notice
and find the new feed URL easily. It should be auto-discoverable.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Boomtime, the 52 day of Chaos in the YOLD 3182 (<time datetime="2016-02-21">2016-02-21</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/hugo-blog.html</link>
  <guid>https://hack.org/~mc/blog/hugo-blog.html</guid>
  <pubDate>Sun, 21 Feb 2016 00:00:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[mub - a minimalist IRC client in Go]]></title>
  <description><![CDATA[<p>
Me and some friends wrote an IRC client in Go. We have tried it under OS
X, FreeBSD, GNU/Linux and even on Windows.
</p>

<p>
Project page here:
</p>

<p>
<a href="https://hack.org/mc/projects/mub/">https://hack.org/mc/projects/mub/</a>
</p>

<p>
By default it gives you a readline-like user interface with command
history and the usual command line editing with arrow keys and Emacs
keys. If you give it the argument <code>-sub</code> it uses a dumb TTY interface
instead which may be usable if you write your own UI interface. So far
we have a graphical user interface written in C# (not yet released) that
works under Windows and an experimental websockets interface in its
early phases.
</p>

<p>
Tell me what you think!
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Sweetmorn, the 51 day of Chaos in the YOLD 3182 (<time datetime="2016-02-20">2016-02-20</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/mub.html</link>
  <guid>https://hack.org/~mc/blog/mub.html</guid>
  <pubDate>Sat, 20 Feb 2016 00:00:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[Disk crash brought down hack.org & others]]></title>
  <description><![CDATA[<p>
While I was on vacation the main hack.org server, totoro, suffered a
disk crash. Timeline:
</p>

<ul class="org-ul">
<li>2015-07-24 totoro crashed. Investigated where to set up a virtual
server before mail started to bounce.</li>

<li>2015-07-25 Got hold of someone in the co-lo and had them flip the
power switch. totoro came back up with one less disk in the ZFS
mirror.</li>

<li>2015-08-07 The second disk in the mirror crashed! Three year old
Seagate disks in a ZFS mirror. I guess they were from the same batch
or something&#x2026; No hot spare, unfortunately.</li>

<li>2015-08-08 VPSes created and configured. Backup restored. Mail starts
flowing again. Also properly set up everything in Ansible. Most of our
stuff was already in Ansible playbooks, but not everything.</li>
</ul>

<p>
totoro was later brought to my home. If I removed the hard disks and
turned one of them up-side down I heard a loud "click"!
</p>

<p>
We had backup of many things but not of the XMPP server data, so
accounts, rosters, and any offline messages not yet delivered were lost.
</p>

<p>
If you don't see any presence from your hack.org XMPP contacts, add them
again.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Boomtime, the 23 day of Bureaucracy in the YOLD 3181 (<time datetime="2015-08-30">2015-08-30</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/disk-crash.html</link>
  <guid>https://hack.org/~mc/blog/disk-crash.html</guid>
  <pubDate>Sun, 30 Aug 2015 00:00:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Go and xmpp-client]]></title>
  <description><![CDATA[<p>
The last two weeks I've been programming mostly in
<a href="https://golang.org/">Go</a>. The language, I think, feels a lot like
Python would if it had been re-designed by an old C programmer. I got
productive rather quickly and it feels very much at home. I'll probably
write something about my experience later.
</p>

<p>
I've been mostly happy with
<a href="http://emacs-jabber.sourceforge.net/">emacs-jabber</a> as my XMPP chat
client for the last few years but as more and more of my contacts move
to mandatory use of OTR encryption it leaves something to be desired.
There's Magnus'
<a href="https://github.com/legoscia/emacs-jabber-otr">jabber-otr</a> which uses
a pure-Python OTR implementation under the hood, but it's rather fragile
and very much a work in progress.
</p>

<p>
<a href="https://twitter.com/ln4711">Linus Nordberg</a> pointed me to
<a href="https://imperialviolet.org/">Adam "agl" Langley's</a>
<a href="https://github.com/agl/xmpp-client">xmpp-client</a> a couple of months
ago. It's a minimalist command line XMPP chat client written in Go with
excellent OTR support. I started using it, but missed emacs-jabber a
bit.
</p>

<p>
When I started learning Go two weeks ago I had an idea that I would do
an Emacs frontend to xmpp-client and get back some of the emacs-jabber
goodness. My idea was that, if the current user interface in xmpp-client
was isolated from the functionality, I could write my own user interface
code, specifically meant to be easy to parse from Emacs Lisp.
</p>

<p>
I delved into the code, but found that the terminal user interface is
sprinkled all over xmpp-client together with the code that defines its
function as a chat client. This means that if I go this way I would
either have to reproduce a lot of the chat client functionality in my
code or, probably better, do a lot of work to isolate the UI code.
</p>

<p>
While I was in the xmpp-client code I decided to at least make it nicer
for me to use. I added a few commands and a new configuration item. My
changes so far:
</p>

<ul class="org-ul">
<li>/whois command. Gives information about a user, their current state
online/offline away/chatty/xa/dnd and if we have a current OTR
session.</li>

<li>/who command. Lists online users in a short form. This ties in to the
next feature.</li>

<li>InitialAwayIsOnline, a new configuration item. If true it means people
in our roster which are initially marked as "away" are considered
online as far as /who is concerned. If set to false, those people are
not listed. This is the default and the same as the old behaviour.</li>

<li>/m command. Like /query in most IRC clients. Sets the default target
we're chatting with. Also prints some data about our target: are they
even online? Do we have an OTR encryption session? Are their
identities verified?</li>
</ul>

<p>
Code here:
</p>

<p>
<a href="https://github.com/mchackorg/xmpp-client">https://github.com/mchackorg/xmpp-client</a>
</p>

<p>
All features merged in master branch. Each future is on a similarly
named topic branch. InitialAwayIsOnline is on the "who" branch.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Boomtime, the 16 day of Confusion in the YOLD 3181 (<time datetime="2015-06-11">2015-06-11</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/xmpp-client.html</link>
  <guid>https://hack.org/~mc/blog/xmpp-client.html</guid>
  <pubDate>Thu, 11 Jun 2015 00:00:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Symbolics and the Lisp machines]]></title>
  <description><![CDATA[<p>
Some time ago the first domain name in DNS, symbolics.com, turned 30
years old. WHOIS says:
</p>

<pre class="example" id="orgbb87e52">
Domain Name: SYMBOLICS.COM
Registrar: NETWORK SOLUTIONS, LLC.
Sponsoring Registrar IANA ID: 2
Whois Server: whois.networksolutions.com
Referral URL: http://networksolutions.com
Name Server: NS1.AMERINOC.COM
Name Server: NS2.AMERINOC.COM
Status: clientTransferProhibited http://www.icann.org/epp#clientTransferProhibited
Updated Date: 05-jun-2011
Creation Date: 15-mar-1985
Expiration Date: 16-mar-2016
</pre>

<p>
Behind the domain name was once Symbolics, Inc., a legendary
manufacturer of Lisp machines, computers with a special architecture
suitable to run Lisp programs at high speed.
</p>

<p>
There's something in the eye of an old hacker when she thinks about Lisp
machines. From what I can gather, they seem to have been the ultimate
hacker computer: a completely dynamic environment with easy access to
source for <i>everything</i>, including the lowest levels of the operating
system, easily changed from within the interactive environment with the
effects taking place immediately.
</p>

<p>
There were several LispM makers back before the AI Winter: Symbolics,
LMI, Xerox and even Texas Instruments, with their TI Explorer. A brief
history of lisp machines can be found here:
</p>

<p>
<a href="http://www.andromeda.com/people/ddyer/lisp/">http://www.andromeda.com/people/ddyer/lisp/</a>
</p>

<p>
I'm too young to have experienced the LispM directly myself. When I
started at Linköping University the Computer Science department had just
thrown out some Xerox LispMs and replaced them with Sun SPARCstation-1s.
They still ran some Lisp assignments in an emulator called Medley but
since I didn't even had official access to the the Suns, I never
experienced it.
</p>

<p>
I don't know where the Xerox machines ended up. For some reason
<a href="http://www.lysator.liu.se/">Lysator</a>, the academic computing society
at LiU, didn't get them. <a href="http://www.update.uu.se/">Update</a>, Lysator's
counterpart in Uppsala, has a few Symbolics machines.
</p>

<p>
To get a feeling of what it was like to work on a LispM, here's a movie
of someone playing with a TI Explorer in Unisys disguise for an hour:
</p>

<p>
<a href="https://www.youtube.com/watch?v=xx6QPgi7RSQ">https://www.youtube.com/watch?v=xx6QPgi7RSQ</a>
</p>

<p>
and here's a collection of screenshots from Symbolics' Genera
environment:
</p>

<p>
<a href="http://lispm.de/symbolics-ui-examples/symbolics-ui-examples.html">http://lispm.de/symbolics-ui-examples/symbolics-ui-examples.html</a>
</p>

<p>
Remember that many of these screenshots are from the early 1980s, before
the first Mac, for instance.
</p>

<p>
The CPU in most of the LispMs were developed from the architecture of
the CONS and CADR machines from MIT's AI Lab. Both Symbolics' and LMI's
first machines was based directly on the CADR.
</p>

<p>
For a couple of years it's been possible to run the CADR machine on an
emulator written by Brad Parker. All the source from the original CADR
system is also available:
</p>

<p>
<a href="http://www.unlambda.com/cadr/">http://www.unlambda.com/cadr/</a>
</p>

<p>
Björn Victor has collected some information about running emulated
LispMs:
</p>

<p>
<a href="http://bjorn.victor.se/lispm.php">http://bjorn.victor.se/lispm.php</a>
</p>

<p>
Some people still seem to dream about running Lisp on the bare metal.
Here are two such projects:
</p>

<ul class="org-ul">
<li>CL on x86 - <a href="http://common-lisp.net/project/movitz">http://common-lisp.net/project/movitz</a></li>

<li>Scheme on Raspberry PI - <a href="https://gitorious.org/lambdapi/">https://gitorious.org/lambdapi/</a></li>
</ul>

<p>
Other than that, the best way of experiencing something like the LispM
environment on modern computers is probably to use Emacs as your main
environment. This is what I do, although I have sometimes looked
longingly at <a href="http://racket-lang.org/">Racket</a>.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Boomtime, the 64 day of Discord in the YOLD 3181 (<time datetime="2015-05-17">2015-05-17</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/symbolics.html</link>
  <guid>https://hack.org/~mc/blog/symbolics.html</guid>
  <pubDate>Sun, 17 May 2015 00:00:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Experiments with Raspberry Pis]]></title>
  <description><![CDATA[<p>
I'm a bit late to the <a href="http://www.raspberrypi.org/">Raspberry Pi</a>
party, but when the local electronics shop had a sale of model B+ I
bought two on a whim. The new RPi 2 looks nicer, but B+ seems pretty
nice too.
</p>

<p>
My Squeezebox recently broke down and I figured I might use one of the
Raspis as the new livingroom music player. The sound quality might not
be as good, but I thought I'd do a test and if I wasn't happy with it I
would shell out for a better DAC.
</p>

<p>
I ended up running <a href="https://minibianpi.wordpress.com/">Minibian</a> with
<a href="http://www.musicpd.org/">MPD</a> as the music player. It mounts the
music directoy from the FreeBSD file server with NFS 3. It seems to work
fine and the audio quality is at least bearable.
</p>

<p>
I'm mostly controlling MPD with
<a href="https://www.gnu.org/software/emms/">EMMS</a> in Emacs on the laptop or
<a href="https://github.com/abarisain/dmix/">MPDroid</a> on the phone. I really
don't miss the Squeezebox remote.
</p>

<p>
The other Raspi is destined for our country house. I'm probably going to
connect a <a href="http://www.telldus.se/products/tellstick_duo">Tellstick
Duo</a> and use some wireless thermometers and hygrometers around the
house. I'm writing some simple scripts so that the Raspi can call home
over 4G and report data now and then.
</p>

<p>
When I got the raspis I tested some different operating systems: Raspian
(Debian-based Linux), Minibian (also Debian-based Linux - but much
smaller standard image), RISCOS (minimal OS originally for the
Archimedes, the first ARM computer), FreeBSD and Plan 9.
</p>

<p>
I'm running FreeBSD on most servers and would have gone that way on
raspi as way, but FreeBSD on the raspi meant living without binary
packages and compiling everything from source was veeeery sloooow. Had a
look into cross compiling ports, but it seemed a hazzle. NanoBSD might
be an option but I haven't tested it.
</p>

<p>
Plan 9 was fun, as usual, but not very practical. Haven't done anything
on Plan 9 for a while. Tried a modern Plan 9 on my Thinkpad a few years
ago and now on the raspi. A raspi seems to be a pretty good (and very
cheap) Plan 9 terminal. Interesting to think back and compare the RPi
against, say, the MIPS Magnum 3000 and the NeXTStation that Bell Labs
once considered as low-end workstations they used as Plan 9 terminals.
</p>

<p>
The end user experience in Plan 9 hasn't changed much since I had Plan 9
on my workstation at work in the middle 1990s. Some things have changed
behind the scenes, though, with a file server these days typically
storing blocks of data indexed by their hash. The window system has
changed a bit as well: rio, the 8 1/2 replacement, does graphics a bit
faster.
</p>

<p>
Not much seems to happen on Plan 9 at Bell Labs. Most of the Plan 9
hackers seems to have left for Google and seems to work on the Go
programming language. Plan 9 lived a long time at Coraid, though,
embedded in their storage over Ethernet products, but Coraid seems to
have shut down! Some development seems to happen over at
<a href="http://9front.org/">9front</a>, a forked Plan 9.
</p>

<p>
It would be fun to do something with Plan 9 on the raspi, but I will
probably just use some Linux distribution for the summer house raspi as
well.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Boomtime, the 64 day of Discord in the YOLD 3181 (<time datetime="2015-05-17">2015-05-17</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/raspis.html</link>
  <guid>https://hack.org/~mc/blog/raspis.html</guid>
  <pubDate>Sun, 17 May 2015 00:00:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[IPv6 tunnel from HE with dynamic endpoint on FreeBSD]]></title>
  <description><![CDATA[<p>
<a href="https://tunnelbroker.net/">Hurricane Electric's tunnelbroker</a> offers IPv6 tunnels that you can use
without any extra client software. No need for <a href="https://www.sixxs.net/tools/aiccu/">AICCU</a>, OpenVPN or
anything else.
</p>

<p>
HE's tunnels use built-in support in most most operating systems for
the 6in4 tunneling protocol. It even works if you're home router might
an odd duck, such as <a href="http://www.cs.bell-labs.com/magic/man2html/8/6in4">Plan 9</a>. It doesn't work in all the scenarios some
of the other tunnel clients support and it doesn't protect from IP
spoofing, but it might be preferable in some situations.
</p>

<p>
My case is an EdgeRouter Lite, a rather nice MIPS-based thing (based on
Cavium Octeon) from Ubiquiti Networks. I installed FreeBSD on it, but
since this is a rather odd FreeBSD platform I don't get any binary
packages and have to rebuild the firmware myself if I want to upgrade. I
also don't get any support for the built-in network acceleration
hardware.
</p>

<p>
I tossed the original Linux, since I didn't fancy rewriting all my <code>pf</code>
rules nor adding them through a web UI, however nice. I did, however,
make a copy of the Linux image and I'm especially interested in what's
inside <code>cavium-ip-offload.ko</code> and friends. But that's for another time,
if I can find the time.
</p>

<p>
Typically, you set up a 6in4 tunnel like this on FreeBSD:
</p>

<pre class="example" id="orgcf3297b">
ifconfig gif0 create
ifconfig gif0 tunnel 83.249.0.22 216.66.80.90
ifconfig gif0 inet6 2001:470:27:9d2::2 2001:470:27:9d2::1 prefixlen 128
route -n add -inet6 default 2001:470:27:9d2::1
ifconfig gif0 up
</pre>

<p>
where 83.249.0.22 is the current IPv4 tunnel endpoint on my home router.
You want some of these in <code>rc.conf</code> to survive reboots:
</p>

<pre class="example" id="orga46d7d9">
gif_interfaces="gif0"
ifconfig_gif0_ipv6="inet6 2001:470:27:9d2::2 2001:470:27:9d2::1 prefixlen 128"
ipv6_defaultrouter="2001:470:27:9d2::1"
</pre>

<p>
My router gets its IPv4 from my ISP's DHCP, so the tunnel endpoint on my
end might change at any time. Luckily, Hurricane thought of that and
provides a web service to change my IPv4 endpoint easily by accessing:
</p>

<pre class="example" id="orgb170593">
https://${userid}:${updatekey}@ipv4.tunnelbroker.net/nic/update?hostname=${tunnelid}
</pre>

<p>
so I wrote a script, <code>he.sh</code>:
</p>

<div class="org-src-container">
<pre class="src src-sh"><span style="color: #ff7f24;">#</span><span style="color: #ff7f24;">! /bin/</span><span style="color: #00ffff;">sh</span><span style="color: #ff7f24;">
</span>
<span style="color: #eedd82;">tunnelgw</span>=216.66.80.90
<span style="color: #eedd82;">userid</span>=my-id
<span style="color: #eedd82;">updatekey</span>=my-update-key
<span style="color: #eedd82;">tunnelid</span>=my-tunnel-id

<span style="color: #00ffff;">if</span> [ $<span style="color: #eedd82;">#</span> != 1 ]
<span style="color: #00ffff;">then</span>
    <span style="color: #b0c4de;">echo</span> Usage he.sh ip-adress
    <span style="color: #00ffff;">exit</span>
<span style="color: #00ffff;">fi</span>

<span style="color: #ff7f24;"># </span><span style="color: #ff7f24;">$1 should be my own IP
</span>ifconfig gif0 tunnel $<span style="color: #eedd82;">1</span> $<span style="color: #eedd82;">tunnelgw</span>

fetch --no-verify-peer -o - <span style="color: #ffa07a;">"https://${userid}:${updatekey}@ipv4.tunnelbroker.net/nic/update?hostname=${tunnelid}"</span>

ifconfig gif0 inet6 2001:470:27:9d2::2 2001:470:27:9d2::1 prefixlen 128

ifconfig gif0 up
</pre>
</div>

<p>
and call it from <code>/etc/dhclient-exit-hooks</code>, a program which, if it
exists, runs automatically by FreeBSD <code>dhclient</code> DHCP client.
</p>

<div class="org-src-container">
<pre class="src src-sh"><span style="color: #ff7f24;">#</span><span style="color: #ff7f24;">! /bin/</span><span style="color: #00ffff;">sh</span><span style="color: #ff7f24;">
</span>
/root/he.sh $<span style="color: #eedd82;">new_ip_address</span>
</pre>
</div>

<p>
Ta-da!
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Boomtime, the 64 day of Discord in the YOLD 3181 (<time datetime="2015-05-17">2015-05-17</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/ipv6-tunnel-dynamic.html</link>
  <guid>https://hack.org/~mc/blog/ipv6-tunnel-dynamic.html</guid>
  <pubDate>Sun, 17 May 2015 00:00:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Converting a blog from Blosxom to Pelican]]></title>
  <description><![CDATA[<p>
My blog has always been just static files on a web server. From 2009
when I started blogging again I used a slightly hacked
<a href="http://blosxom.sourceforge.net/">Blosxom</a> to generate the blog from
text files written in Markdown. Blosxom is a bit dated. There are
numerous problems with it. One problem in particular is that it relies
on the modification time of the files as the publishing date. I thought
it was time for a change.
</p>

<p>
Enter <a href="http://blog.getpelican.com/">Pelican</a>, a static blog generator
written in Python with numerous themes and plugins. I experimented with
it a bit and found it quite nice.
</p>

<p>
Many of the Pelican themes are huge files of Javascript and CSS based on
popular frameworks with even more JS and CSS. I made
<a href="https://hack.org//mc/projects/mc-pelican/">a very minimalist theme</a>
instead.
</p>

<p>
Of course I wanted to convert my old Blosxom blog entries to Pelican.
Some of the things I wanted to keep through the conversion:
</p>

<ol class="org-ol">
<li>Titles should be kept from the original. In Blosxom, the first line
of the file is the title. Convert that to a "Title: title" in the new
file.</li>

<li>Modifiation time of original file should be inserted into a "Date:"
timestamp.</li>

<li>Permalinks should not be changed. I want the URL to the original blog
entry to be the same after conversion. This is possible with the
"url:" and "save_as:" metadata lines.</li>
</ol>

<p>
This is what I came up with:
</p>

<div class="org-src-container">
<pre class="src src-python"><span style="color: #ff7f24;">#</span><span style="color: #ff7f24;">! /usr/bin/env python
</span>
<span style="color: #00ffff;">import</span> os
<span style="color: #00ffff;">import</span> time

<span style="color: #eedd82;">newprefix</span> = <span style="color: #ffa07a;">'/tmp/pelicanblog/'</span>

<span style="color: #00ffff;">if</span> <span style="color: #00ffff;">not</span> os.path.isdir(newprefix):
        os.makedirs(newprefix)

<span style="color: #00ffff;">for</span> name <span style="color: #00ffff;">in</span> os.listdir(<span style="color: #ffa07a;">'.'</span>):
    <span style="color: #00ffff;">if</span> os.path.isfile(os.path.join(<span style="color: #ffa07a;">'.'</span>, name)):
        <span style="color: #ff7f24;"># </span><span style="color: #ff7f24;">Get the modification time of file
</span>        <span style="color: #eedd82;">mtime</span> = os.path.getmtime(name)

        <span style="color: #00ffff;">with</span> <span style="color: #b0c4de;">open</span>(name, <span style="color: #ffa07a;">'r'</span>) <span style="color: #00ffff;">as</span> f:
            <span style="color: #ff7f24;"># </span><span style="color: #ff7f24;">Now read first line of file as title
</span>            <span style="color: #eedd82;">title</span> = f.readline()
            <span style="color: #ff7f24;"># </span><span style="color: #ff7f24;">Write out our collected metadata to name.md instead of
</span>            <span style="color: #ff7f24;"># </span><span style="color: #ff7f24;">name.txt
</span>            <span style="color: #eedd82;">newname</span> = name.replace(<span style="color: #ffa07a;">'.txt'</span>, <span style="color: #ffa07a;">'.md'</span>)
            <span style="color: #eedd82;">nf</span> = <span style="color: #b0c4de;">open</span>(newprefix + newname, <span style="color: #ffa07a;">'w'</span>)
            nf.write(<span style="color: #ffa07a;">'Title: {}'</span>.<span style="color: #b0c4de;">format</span>(title))
            nf.write(<span style="color: #ffa07a;">'Date: {}</span><span style="color: #7fffd4;">\n</span><span style="color: #ffa07a;">'</span>.<span style="color: #b0c4de;">format</span>(time.ctime(mtime)))
            <span style="color: #eedd82;">nameurl</span> = name.replace(<span style="color: #ffa07a;">'.txt'</span>, <span style="color: #ffa07a;">'.html'</span>)
            nf.write(<span style="color: #ffa07a;">'url: {}</span><span style="color: #7fffd4;">\n</span><span style="color: #ffa07a;">'</span>.<span style="color: #b0c4de;">format</span>(nameurl))
            nf.write(<span style="color: #ffa07a;">'save_as: {}</span><span style="color: #7fffd4;">\n</span><span style="color: #ffa07a;">'</span>.<span style="color: #b0c4de;">format</span>(nameurl))

            <span style="color: #ff7f24;"># </span><span style="color: #ff7f24;">Copy rest of file from original.
</span>            <span style="color: #00ffff;">for</span> line <span style="color: #00ffff;">in</span> f:
                nf.write(line)
</pre>
</div>

<p>
Run this script while standing in the directory where you keep all your
Blosxom blog entries. You'll find the result under <code>/tmp/pelicanblog</code>.
Weed out unnecessary files and then copy it all to your Pelican's
<code>content</code> directory. Done!
</p>

<p>
The only thing that didn't go smooth in the transition is the syntax
highlightning of code snippets. Sometimes the heuristics guess the wrong
programming language. I have marked some of the entries manually.
</p>

<p>
All in all a rather smooth transition to a modern blogging tool.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Prickle-Prickle, the 39 day of Chaos in the YOLD 3181 (<time datetime="2015-02-08">2015-02-08</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/pelican.html</link>
  <guid>https://hack.org/~mc/blog/pelican.html</guid>
  <pubDate>Sun, 08 Feb 2015 00:00:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[You've got mail!]]></title>
  <description><![CDATA[<p>
I recently switched from Gnus to another mail client,
<a href="http://www.djcbsoftware.nl/code/mu/mu4e.html">mu4e</a>, which I use with
<a href="http://offlineimap.org/">offlineimap</a>. I wrote
<a href="file:///mc/blog/mu4e.html">here</a> about the change a few days ago.
</p>

<p>
Using offlineimap means I now have all my mail in the local filesystem
on my laptop again. Very handy in offline scenarios. Naturally, this
also meant I needed a new way of telling me if I've got unread mail.
</p>

<p>
I duckduckgoed around a bit and found
<a href="https://github.com/fjl/nsbiff">nsbiff</a>, a small Objective C program
that shows the number of unread mail in a single Maildir on the OS X
status bar. nsbiff is a really simple program, the real code is in
<code>BIFFAppDelegate.m</code> and the file is all of 102 lines including empty
lines. I thought it quite neat and briefly considered adding stuff like
extra Maildirs to check and other small changes&#x2026;
</p>

<p>
Then, I accidentelly discovered that the program took up 79 megabytes of
resident memory! To count files in a directory and show a number in the
status bar!? Really?
</p>

<p>
Instead, I opted for this in Emacs:
</p>

<div class="org-src-container">
<pre class="src src-lisp">(setq display-time-mail-directory <span style="color: #ffa07a;">"~/Maildir/hack/INBOX/new"</span>)

(setq display-time-string-forms
      '((<span style="color: #00ffff;">if</span> display-time-day-and-date
           (format <span style="color: #ffa07a;">"%s %s %s"</span> dayname monthname day) <span style="color: #ffa07a;">""</span>)
        (format <span style="color: #ffa07a;">"%s:%s"</span>
                24-hours minutes)
        (<span style="color: #00ffff;">if</span> mail (propertize <span style="color: #ffa07a;">" "</span> 'display display-time-mail-icon))))

(display-time)
</pre>
</div>

<p>
which shows me a small mail icon on the Emacs mode-line if there are any
files what so ever in the <code>~/Maildir/hack/INBOX/new</code> directory.
</p>

<p>
Since I spend almost all of my tube time in front of Emacs anyway, this
will have to do.
</p>

<p>
I also whipped up this small shell script to list the number of unread
mail in some important folders. It's very brute force, since it counts
all the files on every run, but on small folders it takes almost no
time.
</p>

<div class="org-src-container">
<pre class="src src-sh"><span style="color: #ff7f24;">#</span><span style="color: #ff7f24;">! /bin/</span><span style="color: #00ffff;">sh</span><span style="color: #ff7f24;">
</span>
<span style="color: #eedd82;">prefix</span>=/Users/mc/Maildir

<span style="color: #eedd82;">maildirs</span>=<span style="color: #ffa07a;">"/hack/INBOX /hack/mail.mc-plus and a lot of other folders..."</span>

<span style="color: #00ffff;">for</span> maildir<span style="color: #00ffff;"> in</span> $<span style="color: #eedd82;">maildirs</span>
<span style="color: #00ffff;">do</span>
    <span style="color: #eedd82;">count</span>=<span style="color: #fa8072;">`ls "$prefix$maildir/new" | wc -l`</span>
    <span style="color: #00ffff;">if</span> [ ${<span style="color: #eedd82;">count</span>} != <span style="color: #ffa07a;">"0"</span> ]
    <span style="color: #00ffff;">then</span>
        <span style="color: #b0c4de;">echo</span> $<span style="color: #eedd82;">maildir</span> $<span style="color: #eedd82;">count</span>
    <span style="color: #00ffff;">fi</span>
<span style="color: #00ffff;">done</span>
</pre>
</div>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Pungenday, the 71 day of The Aftermath in the YOLD 3180 (<time datetime="2014-12-29">2014-12-29</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/biff.html</link>
  <guid>https://hack.org/~mc/blog/biff.html</guid>
  <pubDate>Mon, 29 Dec 2014 11:00:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[mu4e — a powerful Emacs mail client]]></title>
  <description><![CDATA[<p>
I've been using <a href="http://www.gnus.org/">Gnus</a> as my mail and Usenet
News client for over 15 years. For a long time I kept all my mail in
local MH folders, updating them with
<a href="http://www.fetchmail.info/">fetchmail</a>. Then I moved to remote IMAP
folders with sweet, sweet server-side sorting courtesy of the
<a href="http://sieve.info/">Sieve</a> sorting language.
</p>

<p>
Gnus is great a News client but leaves something to be desired when it
comes to mail, especially when it comes to search abilities. I've
managed so far by SSHing to the server and grepping over the Maildir
backend but that, of course, requires SSH access. Naturally I don't have
SSH access on $DAYJOB's Exchange server, so grep searching is right out
and I had to cope with webmail for searching. Luckily for me, they
didn't turn off IMAP on the Exchange server so I can still use Gnus for
ordinary mail tasks.
</p>

<p>
Enter <a href="http://www.djcbsoftware.nl/code/mu/mu4e.html">mu4e</a>, a very
customisable Emacs-based mail client which works with the very fast
<a href="http://www.djcbsoftware.nl/code/mu/">mu</a> mail searching tool.
</p>

<p>
Together with <a href="http://offlineimap.org/">offlineimap</a> and the goodness
of the <a href="http://xapian.org/">Xapian search engine</a> on which mu is built
I now have very quick search available locally.
</p>

<p>
Running offlineimap on both work and play mail took a while. ~90,000
mail messages covering 1.6 GiB! Actually working with mu4e is quick
enough, though. Impressively quick.
</p>

<p>
Instead of using Emacs' own smtpmail for sending messages, I opted to
use the nice <a href="http://msmtp.sourceforge.net/">msmtp</a> mail sending
client and some Emacs Lisp to choose <i>which</i> server to send through
depending on the From: line in the message I'm currently composing. See
below.
</p>

<p>
Here's my inital mu4e configuration, subject to change. Some mail
addresses has been removed or made slightly more obscure because, you
know, spam.
</p>

<div class="org-src-container">
<pre class="src src-elisp">
(add-to-list 'load-path <span style="color: #ffa07a;">"/usr/local/share/emacs/site-lisp/mu4e"</span>)
(autoload 'mu4e <span style="color: #ffa07a;">"mu4e"</span> <span style="color: #ffa07a;">"mu for Emacs."</span> t)
(<span style="color: #00ffff;">setq</span> mu4e-date-format-long <span style="color: #ffa07a;">"%Y-%m-%d %H:%M:%S"</span>)
(<span style="color: #00ffff;">setq</span> mu4e-headers-date-format <span style="color: #ffa07a;">"%y%m%d %H:%M:%S"</span>)
(<span style="color: #00ffff;">setq</span> mu4e-view-show-images t)

<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">Silly mu4e only shows names in From: by default. Of course we also
</span><span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">want the addresses.
</span>(<span style="color: #00ffff;">setq</span> mu4e-view-show-addresses t)

    <span style="color: #ff7f24;">;;; </span><span style="color: #ff7f24;">Set defaults.
</span>(<span style="color: #00ffff;">setq</span> mu4e-sent-folder (concat <span style="color: #ffa07a;">"/hack/sent."</span> (format-time-string <span style="color: #ffa07a;">"%Y-%m"</span> (current-time))))
(<span style="color: #00ffff;">setq</span> mu4e-drafts-folder <span style="color: #ffa07a;">"/hack/draft"</span>)
(<span style="color: #00ffff;">setq</span> mu4e-trash-folder <span style="color: #ffa07a;">"/hack/trash"</span>)

<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">Re-index every 15 minutes.
</span>(<span style="color: #00ffff;">setq</span> mu4e-update-interval (* 10 60))

    <span style="color: #ff7f24;">;;; </span><span style="color: #ff7f24;">Bookmarks list demands mu4e loaded.
</span>(<span style="color: #00ffff;">require</span> '<span style="color: #7fffd4;">mu4e</span>)

    <span style="color: #ff7f24;">;;; </span><span style="color: #ff7f24;">Create new bookmarks to quickly visit an INBOX and show only
</span>    <span style="color: #ff7f24;">;;; </span><span style="color: #ff7f24;">flagged and unread messages.
</span>
(add-to-list 'mu4e-bookmarks
             '(<span style="color: #ffa07a;">"maildir:/hack/INBOX flag:flagged OR maildir:/hack/INBOX flag:unread"</span> <span style="color: #ffa07a;">"Unread or flagged in hack.org INBOX"</span> ?h))

(add-to-list 'mu4e-bookmarks
             '(<span style="color: #ffa07a;">"maildir:/$dayjob/INBOX flag:flagged OR maildir:/$dayjob/INBOX flag:unread"</span> <span style="color: #ffa07a;">"Unread or flagged in $DAYJOB INBOX"</span> ?s))

(<span style="color: #00ffff;">setq</span> mu4e-user-mail-address-list
      '(
        <span style="color: #ffa07a;">"long list of e-mail addresses deleted for spam harvesting
          reasons."</span>
        ))

    <span style="color: #ff7f24;">;;; </span><span style="color: #ff7f24;">Default html2text is no good. Can't use shr since I don't link
</span>    <span style="color: #ff7f24;">;;; </span><span style="color: #ff7f24;">Emacs with libxml2. So use w3m instead.
</span>(<span style="color: #00ffff;">setq</span> mu4e-html2text-command <span style="color: #ffa07a;">"w3m -I utf8 -O utf8 -T text/html"</span>)

    <span style="color: #ff7f24;">;;; </span><span style="color: #ff7f24;">FIXME: Should depend on what folder I'm replying from.
</span>(<span style="color: #00ffff;">setq</span> mu4e-compose-signature <span style="color: #ffa07a;">"MC, https://hack.org/mc/\nIRC: mchack @ Freenode, OFTC\nTwitter: @mchackorg"</span>)

(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">mc-set-from-address</span> ()
  <span style="color: #ffa07a;">"Set the From address based on where the folder of the parent,
    if this is a reply. Otherwise, use default."</span>
  (<span style="color: #00ffff;">setq</span> user-mail-address
        (<span style="color: #00ffff;">if</span> mu4e-compose-parent-message
            (<span style="color: #00ffff;">cond</span>
             ((string-match <span style="color: #ffa07a;">"</span><span style="color: #ffc0cb; font-weight: bold;">\</span><span style="color: #ffa07a;">/slu.*"</span> (mu4e-message-field mu4e-compose-parent-message <span style="color: #b0c4de;">:maildir</span>))
              <span style="color: #ffa07a;">"michael.cardell.widerkrantz@$dayjob.se"</span>)
             (t <span style="color: #ffa07a;">"mc at the domain hack.org"</span>))
          <span style="color: #ffa07a;">"mc at the domain hack.org"</span>)))

(add-hook 'mu4e-compose-pre-hook 'mc-set-from-address)

(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">mc-set-archive-folder</span> ()
  <span style="color: #ffa07a;">"Set archive and draft folder name based on time and which mail server we use."</span>
  (<span style="color: #00ffff;">interactive</span>)
  (<span style="color: #00ffff;">let</span> ((from-address (message-field-value <span style="color: #ffa07a;">"From"</span>))
        (to-address (message-field-value <span style="color: #ffa07a;">"To"</span>)))
    (<span style="color: #00ffff;">cond</span>
     ((string-match <span style="color: #ffa07a;">"mc at the domain hack.org"</span> from-address)
      (<span style="color: #00ffff;">setq</span> mu4e-sent-folder
            (concat <span style="color: #ffa07a;">"/hack/sent."</span> (format-time-string <span style="color: #ffa07a;">"%Y-%m"</span> (current-time))))
      (<span style="color: #00ffff;">setq</span> mu4e-drafts-folder <span style="color: #ffa07a;">"/hack/draft"</span>))
     ((string-match <span style="color: #ffa07a;">"michael.cardell.widerkrantz@$dayjob.se"</span> from-address)
      (<span style="color: #00ffff;">setq</span> mu4e-sent-folder
            (concat <span style="color: #ffa07a;">"/$dayjob/sent."</span> (format-time-string <span style="color: #ffa07a;">"%Y-%m"</span> (current-time))))
      (<span style="color: #00ffff;">setq</span> mu4e-drafts-folder <span style="color: #ffa07a;">"/$dayjob/draft"</span>))
     )))

(add-hook 'mu4e-compose-mode-hook 'mc-set-archive-folder)

<span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">Borrowed from http://ionrock.org/emacs-email-and-mu.html
</span>(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">choose-msmtp-account</span> ()
  <span style="color: #ffa07a;">"Choose account label to feed msmtp -a option based on From
    header in Message buffer. This function must be added to
    message-send-mail-hook for on-the-fly change of From address
    before sending message since message-send-mail-hook is processed
    right before sending message."</span>
  (<span style="color: #00ffff;">if</span> (message-mail-p)
      (<span style="color: #00ffff;">save-excursion</span>
        (<span style="color: #00ffff;">let*</span>
            ((from (<span style="color: #00ffff;">save-restriction</span>
                     (message-narrow-to-headers)
                     (message-fetch-field <span style="color: #ffa07a;">"from"</span>)))
             (account
              (<span style="color: #00ffff;">cond</span>
               ((string-match <span style="color: #ffa07a;">"mc at the domain hack.org"</span> from) <span style="color: #ffa07a;">"hack"</span>)
               ((string-match <span style="color: #ffa07a;">"michael.cardell.widerkrantz@$dayjob.se"</span> from) <span style="color: #ffa07a;">"$dayjob"</span>)
               )))
          (<span style="color: #00ffff;">setq</span> message-sendmail-extra-arguments (list '<span style="color: #ffa07a;">"-a"</span> account))))))

(<span style="color: #00ffff;">setq</span> message-sendmail-envelope-from 'header)
(add-hook 'message-send-mail-hook 'choose-msmtp-account)

(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">mc-message-mode</span> ()
  <span style="color: #ffa07a;">"Define shortcuts to sign or encrypt a message."</span>
  (define-key message-mode-map (kbd <span style="color: #ffa07a;">"\C-cp"</span>) 'mml-secure-message-sign-pgpmime)
  (define-key message-mode-map (kbd <span style="color: #ffa07a;">"\C-ce"</span>) 'mml-secure-message-sign-encrypt))

(add-hook 'message-mode-hook 'mc-message-mode)

(<span style="color: #00ffff;">setq</span> message-send-mail-function 'message-send-mail-with-sendmail
      sendmail-program <span style="color: #ffa07a;">"/usr/local/bin/msmtp"</span>)
</pre>
</div>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Prickle-Prickle, the 67 day of The Aftermath in the YOLD 3180 (<time datetime="2014-12-25">2014-12-25</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/mu4e.html</link>
  <guid>https://hack.org/~mc/blog/mu4e.html</guid>
  <pubDate>Thu, 25 Dec 2014 23:25:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[Using DuckDuckGo as a Tor Hidden Service in Firefox search box]]></title>
  <description><![CDATA[<p>
I mainly use the <a href="https://duckduckgo.com/">DuckDuckGo search engine</a>.
DuckDuckGo is also available as a
<a href="https://www.torproject.org/docs/hidden-services.html.en">Tor Hidden
Service</a> at:
</p>

<p>
<a href="http://3g2upl4pq6kufc4m.onion/">http://3g2upl4pq6kufc4m.onion/</a>
</p>

<p>
Using this .onion address means you never leave the Tor network and
will, of course, require you to have
<a href="https://www.torproject.org/">Tor</a> installed to be able to get at it
at all.
</p>

<p>
I've made a simple search plugin for Firefox that uses this hidden
service. No fancy packaging yet. You will have to copy it to the right
place yourself. Get it at
<a href="https://hack.org/mc/projects/duckduckgo-tor/">https://hack.org/mc/projects/duckduckgo-tor/</a>.
</p>

<p>
UPDATE: If you go to <a href="http://3g2upl4pq6kufc4m.onion/html/">http://3g2upl4pq6kufc4m.onion/html/</a> and go to
the search bar menu you will see an extra menu option:
</p>

<blockquote>
<p>
Add "DuckDuckGo (HTML)"
</p>
</blockquote>

<p>
This will do the same thing as installing my plugin, except for the
name.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Prickle-Prickle, the 35 day of Bureaucracy in the YOLD 3180 (<time datetime="2014-09-11">2014-09-11</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/duckduckgo-tor.html</link>
  <guid>https://hack.org/~mc/blog/duckduckgo-tor.html</guid>
  <pubDate>Thu, 11 Sep 2014 23:13:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[OS X User Notifications from rcirc]]></title>
  <description><![CDATA[<p>
Modern OS X has a nice way of alerting a user that something happened
called User Notifications. They pop up in a corner of the screen and
usually fade away after a while. Typically this is used for instant
messages and mail notifications, et cetera.
</p>

<p>
I found that I would like to have User Notification when my nick was
mentioned on an IRC channel or I was sent a private message. Here's how
to do it.
</p>

<p>
First, grab
<a href="https://github.com/alloy/terminal-notifier">terminal-notifier</a>, a
neat little program that generates User Notifications. Install it and
test it out with, say:
</p>

<pre class="example" id="org9d90e01">
/Applications/terminal-notifier.app/Contents/MacOS/terminal-notifier -title Title -message Message
</pre>

<p>
If that works, on to the next step. Now grab
<a href="https://github.com/wfarr/rcirc-notify-el/blob/master/rcirc-notify.el">rcirc-notify.el</a>.
Patch it like so:
</p>

<pre class="example" id="orgddcf999">
--- a/rcirc-notify.el
+++ b/rcirc-notify.el
@@ -34,9 +34,9 @@ same person.")
 (defun rcirc-send-notification (title message)
   (cond ((and (or (eq window-system 'mac)
                   (eq window-system 'ns))
-              (executable-find "growlnotify"))
-         (start-process "rcirc-notify" nil "growlnotify"
-                        "-t" title "-m" message "-a" "Emacs.app" (if rcirc-notify-sticky "-s" "")))
+              (executable-find "/Applications/terminal-notifier.app/Contents/MacOS/terminal-notifier"))
+         (start-process "rcirc-notify" nil "/Applications/terminal-notifier.app/Contents/MacOS/terminal-notifier"
+                        "-title" title "-message" message))
         ((and (eq window-system 'x)
               (executable-find "notify-send"))
          (start-process "rcirc-notify" nil
</pre>

<p>
Eval the buffer and turn notify on with <code>M-x turn-on-rcirc-notify RET</code>.
</p>

<p>
Also add something like this to your <code>.emacs.el</code>:
</p>

<pre class="example" id="orge98181a">
(autoload 'rcirc-notify "rcirc-notify.el" "Notify me when something happens in IRC" t)

(eval-after-load 'rcirc
  '(require 'rcirc-notify))
</pre>

<p>
Enjoy your User Notifications.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Boomtime, the 52 day of Chaos in the YOLD 3180 (<time datetime="2014-02-21">2014-02-21</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/rcirc-notify.html</link>
  <guid>https://hack.org/~mc/blog/rcirc-notify.html</guid>
  <pubDate>Fri, 21 Feb 2014 10:53:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[New release of the simgal gallery generator]]></title>
  <description><![CDATA[<p>
I just did a new release of my simple ImageMagick-wielding gallery
generator shell script,
<a href="https://hack.org/mc/projects/simgal/">simgal</a>. It hasn't been touched
since 2011 but I use it myself and thought it more or less working, but
apparently I haven't used it with JPEG comments for a while&#x2026;
</p>

<p>
Embarrasingly I discovered that there was a bug that only showed the
first word of any JFIF comment in a JPEG file instead of the entire
comment! A case of <code>print $3</code> versus <code>print substr($0, index($0,$3))</code>,
of course.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Chaoflux in the YOLD 3180 (<time datetime="2014-02-19">2014-02-19</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/new-simgal.html</link>
  <guid>https://hack.org/~mc/blog/new-simgal.html</guid>
  <pubDate>Wed, 19 Feb 2014 18:32:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[rcirc and the bouncer]]></title>
  <description><![CDATA[<p>
(Edit to add Links to the IRC networks.)
</p>

<p>
Like many people involved in free software I use IRC a lot. I'm on three
different IRC networks all the time: <a href="http://freenode.net/">Freenode</a>,
<a href="http://www.oftc.net/">OFTC</a> and an internal IRC server at $DAYJOB.
</p>

<p>
To manage all this, and not miss interesting messages sent when I'm not
in attendance, I use the <a href="http://bip.milkypond.org/">bip bouncer
program</a>. bip sits on my shell box and keeps me connected all the time
and keeps a backlog of messages that it sends to my client when I
connect.
</p>

<p>
My IRC client of choice is the fairly lightweight rcirc client that
comes with Emacs. Many moons ago I used to use
<a href="http://www.zenirc.org/">ZenIRC</a>, but rcirc is nicer in many ways.
</p>

<p>
Way back in 1991 when I first discovered IRC I used ircII and a bunch of
silly scripts to do silly actions and whatnot, but I might just be a
little more mature now. If someone recognizes Teakettle from that time,
get in touch!
</p>

<p>
rcirc identifies an IRC server by its FQDN. This is a problem if you
want to have several connections to the same server, like you would if
you connect to a bip bouncer several times. A workaround is to add
something like this to <code>/etc/hosts</code>:
</p>

<pre class="example" id="orgbd03cf2">
194.109.217.58  freenode
194.109.217.58  oftc
2001:888:22b3::2    freenode
2001:888:22b3::2    oftc
</pre>

<p>
Then you can use something like:
</p>

<pre class="example" id="orgf5f114d">
(setq rcirc-server-alist
      '(
        ("freenode"
         :port NNNN
         :encryption tls)

        ("oftc"
         :port NNNN :encryption tls)))
</pre>

<p>
(where "NNNN" is the bip port number, obviously.)
</p>

<p>
Not very pretty, I know, but it works.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Chaoflux in the YOLD 3180 (<time datetime="2014-02-19">2014-02-19</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/rcirc-bouncer.html</link>
  <guid>https://hack.org/~mc/blog/rcirc-bouncer.html</guid>
  <pubDate>Wed, 19 Feb 2014 13:23:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[Using EMMS on OS X]]></title>
  <description><![CDATA[<p>
I spend most of my tube time in Emacs. Many years ago I used mpg123.el
to play music in Emacs. For some reason, perhaps because I started using
more audio formats, I changed to other music players. I mostly used mpd
with ncmpc.
</p>

<p>
When I made the switch to Macintosh I continued to live in Emacs but
continued to use terminal-based music players. No longer! It's time
Emacs did what it does best&#x2026; er&#x2026; play music!
</p>

<p>
Install mpg321, flac123 and libtag from Homebrew.
</p>

<p>
Clone latest version of EMMS from git:
</p>

<pre class="example" id="org9b2780d">
% git clone git://git.sv.gnu.org/emms.git
% cd emms
% make
</pre>

<p>
Copy the emms-print-metadata program (that uses libtag to be able to
edit music metadata) to my program directory:
</p>

<pre class="example" id="org6ab8a29">
% cp src/emms-print-metadata ~/bin/
</pre>

<p>
Add to <code>~/.emacs.el</code>:
</p>

<div class="org-src-container">
<pre class="src src-elisp"><span style="color: #ff7f24;">; </span><span style="color: #ff7f24;">Emacs Multimedia System (EMMS)
</span>(add-to-list 'load-path <span style="color: #ffa07a;">"~/hacks/emms/lisp"</span>)
(<span style="color: #00ffff;">require</span> '<span style="color: #7fffd4;">emms-setup</span>)
(emms-standard)
(<span style="color: #00ffff;">require</span> '<span style="color: #7fffd4;">emms-tag-editor</span>)
(<span style="color: #00ffff;">require</span> '<span style="color: #7fffd4;">emms-info</span>)

<span style="color: #ff7f24;">; </span><span style="color: #ff7f24;">Use only libtag for tagging.
</span>(<span style="color: #00ffff;">require</span> '<span style="color: #7fffd4;">emms-info-libtag</span>)
(<span style="color: #00ffff;">setq</span> emms-info-functions '(emms-info-libtag))
(<span style="color: #00ffff;">setq</span> emms-info-libtag-program-name <span style="color: #ffa07a;">"/Users/mc/bin/emms-print-metadata"</span>)

(emms-default-players)
(<span style="color: #00ffff;">setq</span> emms-source-file-default-directory <span style="color: #ffa07a;">"~/Music/"</span>)

<span style="color: #ff7f24;">; </span><span style="color: #ff7f24;">Play FLAC with flac123.
</span>(<span style="color: #00ffff;">define-emms-simple-player</span> flac123 '(file) 
  <span style="color: #ffa07a;">"\\.flac$"</span> <span style="color: #ffa07a;">"/usr/local/bin/flac123"</span>)
(add-to-list 'emms-player-list emms-player-flac123)

<span style="color: #ff7f24;">; </span><span style="color: #ff7f24;">Add music file or directory to EMMS playlist on ! in dired.
</span>(define-key dired-mode-map <span style="color: #ffa07a;">"!"</span> 'emms-add-dired)
</pre>
</div>

<p>
<i>Note well</i>: Tag information won't work if you have spaces in file
names.
</p>

<p>
If you really need to change large amount of files and directories,
consider using the Perl <code>rename</code> script from Homebrew and then do:
</p>

<pre class="example" id="orgcdd1af3">
% find . -depth -name "* *" -execdir rename 's/ /_/g' "{}" \;
</pre>

<p>
over your music collection.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Setting Orange, the 35 day of Chaos in the YOLD 3180 (<time datetime="2014-02-04">2014-02-04</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/emms.html</link>
  <guid>https://hack.org/~mc/blog/emms.html</guid>
  <pubDate>Tue, 04 Feb 2014 22:19:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[First day at new job]]></title>
  <description><![CDATA[<p>
First day at the new job <a href="http://www.slu.se/en/bibliotek/">at a
university library</a>!
</p>

<p>
Flying to Uppsala was uneventful, but as usual included a 'random' pat
down at the airport, and some much colder weather than expected.
</p>

<p>
Half the day was spent in meetings, then some tech stuff where I was
brought up to speed with the systems I'll manage. More of the same
tomorrow.
</p>

<p>
I'm now at the hotel, with a beer and a sauna.
</p>

<p>
First day's t-shirt: "We come in peace", 27C3's official t-shirt.
</p>

<p>
Tomorrow's t-shirt: "Miscatonic University, Arkham, Mass.".
</p>

<p>
Today's music: Sidewalking, The Jesus and Mary Chain.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Pungenday, the 13 day of Chaos in the YOLD 3180 (<time datetime="2014-01-13">2014-01-13</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/slu1.html</link>
  <guid>https://hack.org/~mc/blog/slu1.html</guid>
  <pubDate>Mon, 13 Jan 2014 21:26:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[FreeBSD serial console on another port]]></title>
  <description><![CDATA[<p>
On many of my FreeBSD servers I use a serial console. It's pretty
straightforward to set up as the
<a href="https://www.freebsd.org/doc/handbook/serialconsole-setup.html">Handbook
illustrates</a>.
</p>

<p>
Combined with a serial port server with SSH access (thanks
<a href="http://www.xs4all.nl/">XS4all!</a>) or, say, HP's iLO which can also
provides SSH access to the serial port it's a very nice way to be able
to access your server even if you need to boot to single-user or if you
locked yourself out. Even better, combine this with a firmware that
knows something about console redirection and you also get at the BIOS
setup over the same port.
</p>

<p>
I recently found myself in a situation where I couldn't use COM1 as the
serial console port on a new server. The Handbook
<a href="https://www.freebsd.org/doc/handbook/serialconsole-setup.html#serialconsole-howto">says</a>:
</p>

<blockquote>
<p>
If there is no COM1 (sio0), get one. At this time, there is no way to
select a port other than COM1 for the boot blocks without recompiling
the boot blocks.
</p>

<p>
[&#x2026;]
</p>

<p>
25.6.4.2. Using a Serial Port Other Than sio0 for the Console
</p>

<p>
Using a port other than sio0 as the console requires the boot blocks,
the boot loader, and the kernel to be recompiled as follows.
</p>
</blockquote>

<p>
which sounds a bit scary. I'm not foreign to the notion of running a
customized kernel. However, on a stock x86 server in co-lo which I hope
to be able to update with <code>freebsd-update(8)</code>, I don't really want to
run a custom kernel. Thinking it through a little and looking at the
<code>uart(4)</code> manual page I got an idea.
</p>

<p>
There is an alternative to compile your own kernel, and I admit it might
fall under the tip "get one" above: Change your COM3 (or whatever) to
COM1! Here's how I did it:
</p>

<p>
Normal <code>/boot/device.hints</code> lists the first serial port as:
</p>

<pre class="example" id="orgd970591">
hint.uart.0.at="isa"
hint.uart.0.port="0x3F8"
hint.uart.0.flags="0x10"
hint.uart.0.irq="4"
</pre>

<p>
Note that <code>sio(4)</code> as mentioned in the Handbook is not listed in
<code>device.hints</code> anymore.
</p>

<p>
The serial port I want to use as console is on the PCI bus, so I changed
<code>uart.0</code> to:
</p>

<pre class="example" id="org5d8c879">
hint.uart.0.at="pci"
hint.uart.0.port="0xEC00"
hint.uart.0.flags="0x10"
hint.uart.0.irq="B"
</pre>

<p>
and it just works! The details were taken from what the BIOS setup told
me about what it called "COM3". The AMI BIOS of a Supermicro C7X58
motherboard can see at least a 16C550 compatible PCI serial cards just
fine.
</p>

<p>
If you later want to enter the BIOS setup over the serial port, use ESC
4 when it tells you to press F4. Move around by pressing arrow keys and
TAB <i>after each arrow key</i>.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Setting Orange, the 43 day of The Aftermath in the YOLD 3179 (<time datetime="2013-12-01">2013-12-01</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/serial-console.html</link>
  <guid>https://hack.org/~mc/blog/serial-console.html</guid>
  <pubDate>Sun, 01 Dec 2013 00:19:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[Personality types]]></title>
  <description><![CDATA[<p>
[Corrected spelling.]
</p>

<p>
During the mid-90's there was a brief fad of doing web-based personality
tests in my small part of Swedish hackerdom. Typically you would then
publish your result in your .signature, customised mail header,
finger-able .plan file, those newfangled web pages or some corresponding
metadata.
</p>

<p>
It was seen as a good thing to qualify as an INTP or INTJ in the
Myers-Briggs Type Indicator system. I think it may have originated with
Eric Raymond's famous <a href="http://catb.org/jargon/html/appendixb.html">A
Portrait of J. Random Hacker</a>, an appendix in ESR's version of
<a href="http://catb.org/jargon/">The Jargon File</a> based on questions posed to
readers of a Usenet newsgroup back in the Olden Days.
</p>

<p>
I'm usually sceptical about personality tests and about many
psychological tests in general. It's often much too easy to fake the
result and many of them have poor test-retest results. The exception,
perhaps, are depression scale tests like Montgomery-Åsberg Depression
Rating Scale, which I believe are genuinly useful and occassionally
lifesaving.
</p>

<p>
But of course I fell for the group pressure. So I did a test. I seem to
remember it was some bastardised form of the Keirsey temperament sorter
combined with Myers-Briggs, probably an abridged version of the 'real
thing', if there is such a thing. I ended up as Architect/INTP. Quotes
from the Wikipedia page on the
<a href="http://en.wikipedia.org/wiki/Architect_%28role_variant%29">Architect
role</a>:
</p>

<blockquote>
<p>
[&#x2026;] introspective, logical, rational, pragmatic, clear-headed,
informative, and attentive.
</p>

<p>
Architects are designers of theoretical systems and new technologies.
Rearranging the environment to fit their design is a distant goal of
Architects.
</p>
</blockquote>

<p>
Time passes&#x2026;
</p>

<p>
In 2009 my wife was handpicked for a series of leadership courses.
Myers-Briggs testing was a part of the course. I piggybacked on the test
and finally did a 'real' Myers-Briggs test. Like many tests I found that
it probably would be easy to fake a result that you want, but I decided
to do this one honestly.
</p>

<p>
One of the funny things with the real Myers-Briggs test, at least as it
was given in this course, is that as a part of the test you were
supposed to guess your result! I guessed, based on the earlier
experiences with the (uncomplete and online) Keirsey/MBTI test that I
would end up INTP (although I know that there is much debate that
Keirsey's INTP and Myers-Brigg's INTP are different things), but&#x2026;
</p>

<p>
Result: ISFP with only a slightly higher S over N, rather ISFP than
INFP.
</p>

<p>
Some descriptions of the ISFP type:
</p>

<ul class="org-ul">
<li><a href="http://www.personalitypage.com/ISFP.html">Portrait of an ISFP, 'The
Artist'</a></li>

<li><a href="http://www.teamtechnology.co.uk/personality/types/isfp/overview/">Team
Technology's ISFP</a></li>

<li><a href="http://similarminds.com/jung/isfp.html">A particularly funny and/or
harsh description</a>.</li>
</ul>

<p>
You can find the corresponding INFP descriptions easily. Et cetera ad
nauseam.
</p>

<p>
Getting ISFP instead of INTP could, of course, be explained by poor
test-retest, but my artist mentality is slightly offended by that&#x2026;
</p>

<p>
I'm a sensitive artist, dammit!
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Pungenday, the 41 day of The Aftermath in the YOLD 3179 (<time datetime="2013-11-29">2013-11-29</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/personality.html</link>
  <guid>https://hack.org/~mc/blog/personality.html</guid>
  <pubDate>Fri, 29 Nov 2013 09:19:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[Autumn is here]]></title>
  <description><![CDATA[
<figure id="orgff9e0f4">
<img src="https://hack.org/mc/images/autumn-colours.jpg" alt="autumn-colours.jpg">

</figure>

<p>
Les sanglots longs<br>
Des violons<br>
De l'automne<br>
Blessent mon cœur<br>
D'une langueur<br>
Monotone.
</p>

<p>
Autumn is here and with it the usual diseases: the flu, the common cold,
the melancholia. Consequently, I'm at home nursing a sick child. It
wouldn't be so bad except for the little one's constant crying when
she's not asleep. I try my best to cheer her up, but a high fever is
hard to live with.
</p>

<p>
This weekend I revisited the isolated cottage I
<a href="https://hack.org/mc/blog/cottage.html">first wrote of in 2011</a>. As
usual, we had a nice evening of good food, decent wine and a fine
brandy. The night was cold and clear with a spectacular full moon and
lots of stars visible.
</p>

<p>
We listened to a lot of music fitting for the season and the mood,
including some film music by <a href="http://www.preisner.com/">Zbigniew
Preisner</a> and <a href="http://www.yanntiersen.com/">Yann Tiersen</a>. I was glad
to discover that Zbigniew Preisner's entire <i>Requiem for my friend</i>
(dedicated to his friend Krzysztof Kieślowski) is
<a href="http://www.youtube.com/watch?v=QN1HA5yplMY">available on Youtube.</a>
</p>

<p>
I'm looking forward to hearing Brahm's <i>Ein deutches Requiem</i> on
November 2.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Setting Orange, the 3 day of The Aftermath in the YOLD 3179 (<time datetime="2013-10-22">2013-10-22</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/autumn-2013.html</link>
  <guid>https://hack.org/~mc/blog/autumn-2013.html</guid>
  <pubDate>Tue, 22 Oct 2013 16:13:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Surviving OS X on a Macbook Air]]></title>
  <description><![CDATA[<p>
For almost two months I've been using a new computer. It's a mid-2013
Apple Macbook Air (MacbookAir6,1) running OS X 10.8.4. It has the
optional 8 GiB RAM, 128 GiB SSD and an ANSI style keyboard. A friend who
saw it said "Oh, it has one of those programmer's keyboards!". As you
can imagine, ANSI style keyboards are pretty rare in Sweden.
</p>

<p>
The computer is very fast, incredibly light and quiet. So far I've never
even heard the fan. I've been travelling quite a lot this summer and
it's been very comfortable to travel with the Air. It's like a luxary
version of my Efika Smartbook but with a lot more oomph.
</p>

<p>
OS X itself feels very much like a real Unix. I feel right at home. That
said, I mainly spend my time in Emacs or in ssh sessions to our
development servers. Emacs with TRAMP (and a little help from rsync and
ssh) works quite OK for remote development.
</p>

<p>
Here are some notes I wrote about what I've learned so far about OS X
and how to configure it to my liking:
<a href="https://hack.org/mc/writings/mac-survival.html">OS X survival guide</a>.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Sweetmorn, the 17 day of Bureaucracy in the YOLD 3179 (<time datetime="2013-08-24">2013-08-24</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/mac.html</link>
  <guid>https://hack.org/~mc/blog/mac.html</guid>
  <pubDate>Sat, 24 Aug 2013 15:02:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Using the pomodoro technique with Emacs]]></title>
  <description><![CDATA[<p>
This week I've been trying out the
<a href="http://www.pomodorotechnique.com">pomodoro technique</a>. It's a
time-management technique that looks something like this:
</p>

<ol class="org-ol">
<li>Work for 25 minutes.</li>
<li>Take a short break, typically five minutes.</li>
<li>Work for 25 minutes.</li>
<li>Short break.</li>
<li>Work for 25 minutes.</li>
<li>Short break.</li>
<li>Work for 25 minutes.</li>
<li>Take a longer break, typically 15&#x2013;30 minutes.</li>
</ol>

<p>
Then repeat the whole thing again and again during the day.
</p>

<p>
This looks simple enough. So simple, in fact, that there must be
something more to the system. There is. The real magic is not in this
simple list. The real magic is in scheduling all your work items in
sizable 25 minute chunks.
</p>

<p>
When I have something I'm able to complete in just 25 minutes, I find
it's much easier to focus on the task. I'm not allowed to check my
e-mail, respond to instant messages or doing something else during those
25 minutes unless it's an emergency.
</p>

<p>
The original pomodoro is named after the Francesco Cirillo's kitchen
timer, which was in the shape of a tomato ("pomodoro" in Italian). He
simply set his tomato timer according to the list above.
</p>

<p>
Unlike Francesco I'm not using a physical timer. I'm using Dave
Kerschner's <a href="https://github.com/baudtack/pomodoro.el">pomodoro.el</a> in
Emacs to keep time.
</p>

<p>
I'm on a Mac these days, so I customized <code>pomodoro-sound-player</code> to the
OS X built-in sound player <code>/usr/bin/afplay</code>. I recorded a small sound
(a discreet "Hrmph!") with QuickTime to use with the timer.
</p>

<p>
I found the counter in the mode line counting down the seconds a little
hysterical. I changed it to show only minutes left to the next period
instead.
</p>

<p>
The original code just displayed the time for the current period, say
"w24:59", but I wanted to see where in the cycle I was, so I changed it
to say "w1-24" for 24 minutes left of the the first work period, "w2-09"
for 9 minutes left of the second work period, et cetera.
</p>

<p>
I also added a function I call <code>pomodoro-reset</code> to reset the counters to
the beginning of a work set.
</p>

<p>
Here's a diff:
</p>

<pre class="example" id="org4604276">
diff --git a/pomodoro.el b/pomodoro.el
index 85069f1..b3b86dd 100644
--- a/pomodoro.el
+++ b/pomodoro.el
@@ -102,6 +102,12 @@
 (defvar pomodoro-mode-line-string "")
 (defvar pomodoro-end-time) ; the data type should be time instead of integer

+(defun pomodoro-reset ()
+  "Reset counters."
+  (interactive)
+  (setq pomodoro-current-cycle "w")
+  (setq pomodoros 0))
+
 (defun pomodoro-set-end-time (minutes)
   "Set how long the pomodoro timer should run"
   ;; no slave can work 2^16 seconds without rest!
@@ -132,8 +138,9 @@
             (setq pomodoro-current-cycle pomodoro-work-cycle)
             (pomodoro-set-end-time pomodoro-work-time))))
     (setq pomodoro-mode-line-string
-          (format (concat "%s" (format-seconds "%.2m:%.2s " time))
-                  pomodoro-current-cycle))
+          (format (concat "%s%s-" (format-seconds "%.2m " time))
+                  pomodoro-current-cycle 
+                  (+ 1 (mod pomodoros pomodoro-nth-for-longer-break))))
     (force-mode-line-update)))

 ;;;###autoload
</pre>

<p>
Happy pomodoring,<br>
MC
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Setting Orange, the 16 day of Bureaucracy in the YOLD 3179 (<time datetime="2013-08-23">2013-08-23</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/pomodoro.html</link>
  <guid>https://hack.org/~mc/blog/pomodoro.html</guid>
  <pubDate>Fri, 23 Aug 2013 11:07:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Gislövs läge]]></title>
  <description><![CDATA[<p>
For <a href="http://malmofestivalen.se/">some reason</a> Malmö is noisier than
usual this time of year. I live and work in the city centre. I can't
sleep at night. I can't hear myself think during the day. Rather than
going mad(der), I took my refuge to this:
</p>


<figure id="org33454b0">
<img src="https://hack.org/mc/images/gislov-house.jpg" alt="gislov-house.jpg">

</figure>

<p>
View from the house:
</p>


<figure id="orgadfa182">
<img src="https://hack.org/mc/images/gislov-view-kid.jpg" alt="gislov-view-kid.jpg">

</figure>


<figure id="org8bbe590">
<img src="https://hack.org/mc/images/gislov-view.jpg" alt="gislov-view.jpg">

</figure>

<p>
I'm working here:
</p>


<figure id="orgfe32ff9">
<img src="https://hack.org/mc/images/gislov-desk.jpg" alt="gislov-desk.jpg">

</figure>

<p>
and sometimes in a comfortable armchair.
</p>

<p>
My daily lunch walks has been a lot nicer than usual:
</p>


<figure id="org3fad7df">
<img src="https://hack.org/mc/images/gislov-beach.jpg" alt="gislov-beach.jpg">

</figure>


<figure id="orgdabe5b8">
<img src="https://hack.org/mc/images/gislov-brygga.jpg" alt="gislov-brygga.jpg">

</figure>


<figure id="org55b3ef4">
<img src="https://hack.org/mc/images/gislov-path1.jpg" alt="gislov-path1.jpg">

</figure>


<figure id="org2e3f83a">
<img src="https://hack.org/mc/images/gislov-path2.jpg" alt="gislov-path2.jpg">

</figure>

<p>
As seen from the kitchen window:
</p>


<figure id="org48c6448">
<img src="https://hack.org/mc/images/gislov-exhibit-a-rabbit.jpg" alt="gislov-exhibit-a-rabbit.jpg">

</figure>

<p>
Yes, that's a rabbit!
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Setting Orange, the 16 day of Bureaucracy in the YOLD 3179 (<time datetime="2013-08-23">2013-08-23</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/gislov.html</link>
  <guid>https://hack.org/~mc/blog/gislov.html</guid>
  <pubDate>Fri, 23 Aug 2013 00:43:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Barcelona]]></title>
  <description><![CDATA[<p>
I recently spent a week in Barcelona with wife and daughter.
</p>

<p>
Barcelona in 2013 is not the revolutionary city of 1936 that I have
dreamt of since first reading the wonderful <i>Homage to Catalonia</i>, the
amazing <i>Syndikalismen vid makten</i> and other books about the Spanish
civil war. There were no red/black flags meeting the eye, no happy
workers or militia members on La Rambla, no <i>A las barricadas</i> blaring
from loudspeakers day and night.
</p>

<p>
Instead of the red/black, most everywhere I looked I saw one of the
versions of the Catalan nationalist flag. There are, however, some
red/black traces left&#x2026;
</p>

<p>
CNT's bookshop, La Rosa de Foc:
</p>


<figure id="org251fb77">
<img src="https://hack.org/mc/images/anarchist-bookshop.jpg" alt="anarchist-bookshop.jpg">

</figure>

<p>
Shrapnel marks on a wall from one of at least 200 bombings of Barcelona
by the Italian airforce:
</p>


<figure id="orgd2da478">
<img src="https://hack.org/mc/images/shrapnel.jpg" alt="shrapnel.jpg">

</figure>

<p>
The graffiti says "Always remember the victims of fascist regimes".
</p>

<p>
The Telefónica building where the 1937 May events started is still in
use:
</p>


<figure id="org5c4d5d0">
<img src="https://hack.org/mc/images/telefonica.jpg" alt="telefonica.jpg">

</figure>

<p>
A revolutionary street sign recently uncovered:
</p>


<figure id="orgbbab38f">
<img src="https://hack.org/mc/images/unknown-militiaman.jpg" alt="unknown-militiaman.jpg">

</figure>

<p>
If you don't know Catalan I'm told it says "The Unknown Militiaman
Square".
</p>

<p>
Some of these sights were included in
<a href="http://iberianature.com/barcelona/history-of-barcelona/spanish-civil-war-tour-in-barcelona/">Nick
Lloyd's wonderful Spanish Civil War tour</a>. Well worth the three hours
and the 20 euros.
</p>

<p>
Apparently someone else also thought Orwell's <i>Homage to Catalonia</i> was
good, so they named a square after him:
</p>


<figure id="org29c3ef0">
<img src="https://hack.org/mc/images/orwell.jpg" alt="orwell.jpg">

</figure>

<p>
At this square there are no less than <i>two</i> vegetarian restaurants! It
was really no problem at all to be vegan in Barcelona.
</p>

<p>
I found some other traces of a living Anarchist culture as well. I
passed <a href="http://laotracarboneria.net/">La Otra Carboniera</a>, a squat
with a social center ("Centre Social Okupat"), a few times.
</p>


<figure id="orgeaf6b2f">
<img src="https://hack.org/mc/images/cso.jpg" alt="cso.jpg">

</figure>

<p>
Of course, we visited most of the tourist traps, including the hideous
La Sagrada Família:
</p>


<figure id="org05bccf1">
<img src="https://hack.org/mc/images/sagrada.jpg" alt="sagrada.jpg">

</figure>

<p>
I concur with Orwell that the Anarchists showed bad taste in not blowing
it up when they had the chance. Mind you, other Gaudi houses and Parc
Güell are quite beautiful.
</p>

<p>
I leave you with a photo from the slopes of Montjuïc, close to Hotel
Miramar:
</p>


<figure id="orgd463b9e">
<img src="https://hack.org/mc/images/montjuic.jpg" alt="montjuic.jpg">

</figure>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Setting Orange, the 34 day of Confusion in the YOLD 3179 (<time datetime="2013-06-29">2013-06-29</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/barcelona2013.html</link>
  <guid>https://hack.org/~mc/blog/barcelona2013.html</guid>
  <pubDate>Sat, 29 Jun 2013 22:18:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Wayland, window managers and suicide]]></title>
  <description><![CDATA[<p>
I received a disturbing e-mail a few days ago:
</p>

<pre class="example" id="org4c3503f">
From: "Anonymous Remailer (austria)" &lt;mixmaster AT THE DOMAIN remailer.privacy.at&gt;
To: mc AT THE DOMAIN hack.org
Subject: I have sad, tragic news, mister widerkrantz

Dear Sir,

with wayland, running mcwm will not be possible anymore.
We have to give up our litte window managers and switch
to GNOME or KDE. Sad as it is, that is called progress, I guess.

Good-bye, I'm going to kill myself once that comes true

Anonymous
</pre>

<p>
Dear Anonymous,
</p>

<p>
Like you, I often get emotionally attached to my tools. I would find it
hard to live in a world without, say, Emacs. I admit that I have strong
feelings about the user interface of programs I use, and, yes, about
window managers, too.
</p>

<p>
The <a href="http://wayland.freedesktop.org/">Wayland system</a> is a replacement
for the aging X system. Wayland defines a protocol for clients to speak
with a compositor for later display, much like the X11 protocol is a
protocol for clients to speak with the X server, although there are many
differences.
</p>

<p>
Unlike X, which typically uses a separate process for window management,
the window management functionality in Wayland is by design a part of
the compositor. This means, as the letter writer above suggests, that
it's not possible to change the window manager without also changing
compositor. But why would that be a problem?
</p>

<p>
In the default Wayland system the compositor is called
<a href="http://cgit.freedesktop.org/wayland/weston/">Weston</a>. Weston seems to
be built mostly by function calls to libraries. It wouldn't be that hard
to replace Weston entirely by using the same library functions in your
own compositor. In fact, this is probably what KDE and Gnome intend to
do.
</p>

<p>
There are already alternatives to Weston available:
</p>

<ul class="org-ul">
<li>Enlightenment has
<a href="http://git.enlightenment.org/core/enlightenment.git/log/?h=devs%2Fdevilhorns%2Fwayland&amp;qt=grep&amp;q=wayland">a
branch with Wayland support</a>.</li>
<li><a href="https://github.com/detomastah/adwc">ADWC</a> is a tiling alternative.</li>
<li>The <a href="http://www.maui-project.org/">Maui Linux distribution's</a> Hawaii
desktop environment is based on Wayland and uses its own compositor,
<a href="https://github.com/hawaii-desktop/greenisland">Green Island</a>.</li>
</ul>

<p>
Here's a video where a developer using Enlightenment as a Wayland
compositor:
</p>

<p>
<a href="https://www.youtube.com/watch?v=dfnvYAKKPZI">https://www.youtube.com/watch?v=dfnvYAKKPZI</a>
</p>

<p>
Here's a video with someone using ADWC:
</p>

<p>
<a href="https://www.youtube.com/watch?v=vKcvE6Rhbk4">https://www.youtube.com/watch?v=vKcvE6Rhbk4</a>
</p>

<p>
A short demo of the Hawaii desktop environment is here:
</p>

<p>
<a href="https://www.youtube.com/watch?v=yWvgxUqkr7I">https://www.youtube.com/watch?v=yWvgxUqkr7I</a>
</p>

<p>
I don't know what will happen with Wayland and if it will replace X on
any major Linux distribution soon. My guess is that it will probably be
some time before that happens. This means there will be <i>plenty of time</i>
to write a compositor/window manager that doesn't suck too much.
</p>

<p>
Complicating the picture is Canonical's recent announcement that they
won't be using Wayland after all. Instead, they're going with something
they call <a href="https://wiki.ubuntu.com/MirSpec">Mir</a>.
</p>

<p>
I haven't looked that much at Mir and I'm not sure I understand the
reasons they don't want to use Wayland other than that they seem to
prefer C++. <b>shiver</b>
</p>

<p>
My guess, however, is that it's quite possible to the same thing in Mir
and replace the default compositor with something that you can <i>live</i>
with.
</p>

<p>
Take care,<br>
MC.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Syaday in the YOLD 3179 (<time datetime="2013-05-31">2013-05-31</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/wayland-window-managers.html</link>
  <guid>https://hack.org/~mc/blog/wayland-window-managers.html</guid>
  <pubDate>Fri, 31 May 2013 11:15:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Openiked, a FreeBSD port and partial NAT-T on FreeBSD and Linux]]></title>
  <description><![CDATA[<p>
Slightly updated. Originally posted 2013-05-17 14:58.
</p>

<p>
When I tried to implement <a href="https://hack.org/mc/projects/btns/">Better-than-nothing Security</a> I chose to work
with OpenBSD's new IKEv2 daemon, <code>iked</code>. When Reyk and Mike ported
<code>iked</code> to Apple's OS X and created the portabled version, <a href="http://openiked.org/">Openiked</a>, it
seemed only natural that I would try to port it to FreeBSD and Linux.
</p>

<p>
To afford to spend time on porting, I applied for funds from <a href="https://www.iis.se/vad-vi-gor/internetfonden/">.SE's
Internet Fund</a>. However, before I even started with the project,
someone, probably Mike and/or Reyk, ported Openiked to FreeBSD and
Linux! This was in late 2012.
</p>

<p>
I lost a bit of steam there, but I decided that I could at least make a
software package for FreeBSD of Openiked (in the FreeBSD ports system)
and try to implement NAT-traversal configuration when <code>iked</code> runs on
FreeBSD and Linux.
</p>

<p>
Openiked is submitted to FreeBSD ports as <code>security/openiked</code>. You can
follow its progress here:
</p>

<p>
<a href="http://www.freebsd.org/cgi/query-pr.cgi?pr=177651">http://www.freebsd.org/cgi/query-pr.cgi?pr=177651</a>
</p>

<p>
<i>Please note</i>: There hasn't been any official releases of Openiked yet,
so my port is based on the Git version as it was on 2013-03-12. When any
official releases is made, I will update the port.
</p>

<p>
On <a href="https://hack.org/mc/projects/openiked/">my Openiked project web page</a> there's also a patch available to
configure the IPsec stack on both FreeBSD and Linux to encapsulate the
ESP packets in UDP for traversing a NAT. However, something seems to
be missing. The IKEv2 dialogue detects a NAT, the configuration works
and outgoing ESP is duly encapsulated in UDP. Traffic comes through to
the other end&#x2026; <i>and is immediately thrown away</i>!
</p>

<p>
I don't know why this happens. I've been staring at the code and going
through kernel code for what seems like ages. I have to admit that I'm
stuck. If someone can find out what's wrong I would appreciate it if you
contacted me.
</p>

<p>
I have done a sort of brain dump about the problem and what I've already
tried on the project page. Perhaps it will be of some help if someone
else (even myself, at a later date), tries to figure out what's wrong.
For more, see:
</p>

<p>
<a href="https://hack.org/mc/projects/openiked/">https://hack.org/mc/projects/openiked/</a>
</p>

<p>
Reyk recently presented <a href="http://www.bsdcan.org/2013/schedule/events/413.en.html">Openiked at BSDCan 2013</a>. I wish him luck and I
hope that the project will get the interest it deserves.
</p>

<p>
I will continue to follow the Openiked project, updating the FreeBSD
port <code>security/openiked</code> as needed. If there's any new development on
the NAT-T front, I will also update my patch, but from now on I won't
spend much time on it.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Setting Orange, the 67 day of Discord in the YOLD 3179 (<time datetime="2013-05-20">2013-05-20</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/openiked.html</link>
  <guid>https://hack.org/~mc/blog/openiked.html</guid>
  <pubDate>Mon, 20 May 2013 09:38:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Bletchley Park & The National History of Computing Museum]]></title>
  <description><![CDATA[<p>
I spent the Easter weekend in the UK with Biological Expirement #1 and
#2.
</p>

<p>
We were mostly in London, visited <a href="http://www.britishmuseum.org/">British Musuem</a>, went to the <a href="http://www.iwm.org.uk/visits/hms-belfast">HMS
Belfast</a> and, of course, had some nice vegan meals. One restaurant in
particular gets a mention: the wonderful south Indian <a href="http://www.sagarveg.co.uk/">Sagar</a>. Not the
best service but great food.
</p>

<p>
We had some incidents that might have turned rather difficult. I
realized only two days before flying from Copenhagen that we might
need passports! It turns out that, although a member of the European
Union, the UK hasn't signed the <a href="https://en.wikipedia.org/wiki/Schengen_Area">Schengen Agreement</a> allowing free
travel. I didn't know. I was lucky that I checked. Imagine being sent
back on a return flight!
</p>

<p>
I had to shell out to have three emergency passports made. Later, #2
forgot his bag in a restaurant <i>with the passport in it!</i> Luckily, we
got the bag back.
</p>

<p>
However, what probably interests the readers of my blog more is that
we also visited <a href="http://bletchleypark.org.uk/">Bletchley Park</a>, the home of the Government Code &amp;
Cypher School during World War II. Co-located within Bletchley Park is
<a href="http://www.tnmoc.org/">The National History of Computing Museum</a>, also well worth a visit.
</p>

<p>
It was really easy to get to Bletchley Park. There are direct trains to
Bletchley from London Euston. Not all trains stop at the Bletchley train
station but you can also go to nearby Milton Keynes and go back by bus.
From Bletchley station it's very easy to find your way to Bletchley
Park.
</p>

<p>
This seems to be the right way:
</p>


<figure id="org1d480cf">
<img src="https://hack.org/mc/images/bletchley-sign.jpg" alt="bletchley-sign.jpg">

</figure>

<p>
And here's the gate to the park:
</p>


<figure id="org9e2f8f0">
<img src="https://hack.org//mc/images/bletchley-gate.jpg" alt="bletchley-gate.jpg">

</figure>

<p>
Bletchley Park was much bigger than I thought. During WWII ~9000 people
worked here! In the literature I've read about an ugly mansion and some
"huts", but it's seldom mentioned that these huts were later replaced by
brick buildings several storeys high! The different departments kept
their "hut" designation even after the move.
</p>

<p>
Bletchley Park is also a living place, what with the
<a href="http://www.bpsic.com/">Bletchley Park Science and Innovation Centre</a>
occupying several of the huts and the upper floor of the mansion.
</p>

<p>
We took a tour around the premises. Highly recommended. We also got to
see a working Bombe replica actually operating!
</p>

<p>
Here's Ludvig in front of the Bombe replica:
</p>


<figure id="org4f02e16">
<img src="https://hack.org/mc/images/ludde-bombe-small.jpg" alt="ludde-bombe-small.jpg">

</figure>

<p>
Then we were off to the real excitement: Colossus! Depending on the day
you visit there will be a presentation of Colossus and it will actually
be running.
</p>

<p>
Colossus during the presentation:
</p>


<figure id="org40022a5">
<img src="https://hack.org/mc/images/colossus.jpg" alt="colossus.jpg">

</figure>

<p>
Inside Colossus:
</p>


<figure id="org98c8737">
<img src="https://hack.org/mc/images/colossus-inside.jpg" alt="colossus-inside.jpg">

</figure>

<p>
In early reports on the Colossus, it was explained that it was an early
computer. After having read two books on the development of Colossus I'm
not so sure I agree. For example, Colossus lacks conditional branching.
Still, it's definitely a great step forward into using electronics.
</p>

<p>
The Colossus replica is shared with <a href="http://www.tnmoc.org/">The National History of Computing
Museum</a>. If you want to see the entire collection, and not just the
(Heath) Robinson replica and the Colossus, you will have to pay for an
extra ticket, but it's well worth it!
</p>

<p>
There are guided tours on Tuesdays and Sundays but as we were there on a
Saturday we missed that. It would have been nice to know a little more
about where some of the computers had been used.
</p>

<p>
A lot of the machines were in running condition and some of them were
turned on. One of the biggest was an entire ICL 2966 mainframe, complete
with a huge disk farm! However, the most impressive was the 1951 vintage
Harwell Dekatron, also known as WITCH, here with Ludvig:
</p>


<figure id="orge26c4af">
<img src="https://hack.org//mc/images/witch-ludde.jpg" alt="witch-ludde.jpg">

</figure>

<p>
<a href="http://www.tnmoc.org/special-projects/harwell-dekatron-witch">More about the WITCH</a>.
</p>

<p>
The work on the machines were mostly done by volunteers from the
<a href="http://www.computerconservationsociety.org/">Computer Conservation
Society</a>, who also <a href="http://www.computerconservationsociety.org/witch.htm">have a page about WITCH</a>.
</p>

<p>
There was also a full 'classroom' of BBC Micros!
</p>

<p>
With the exception of the classroom full of BBC Micros with plenty of
books and mostly BASIC programs there was very little software on
display. They had a large poster describing programming language
history, but not much in the form of hands-on experience. The software
gallery on the TNMOC web pages is also mostly empty:
</p>

<p>
<a href="http://www.tnmoc.org/explore/software-gallery">http://www.tnmoc.org/explore/software-gallery</a>
</p>

<p>
but it seems they are working on it together with <a href="http://sw.ccs.bcs.org/CCs/">the CCS' software
preservation project</a>.
</p>

<p>
I tried to have a closer look at the Perq, an early windowed
workstation, but the boys wanted to move on.
</p>

<p>
Here's a picture of the ICL/Three Rivers Perq and, surprisingly, a Norsk
Data ND-100 Satellite:
</p>


<figure id="org2c84ee2">
<img src="https://hack.org//mc/images/perqs-nd100.jpg" alt="perqs-nd100.jpg">

</figure>

<p>
I was a bit surprised to note that TNMoC didn't have a PDP-10. Several
PDP-11s were present and two of them were running, displaying radar
reflections on two large radar screens (labelled "Ericsson"!). There was
also at least one Prime, a 750, but it wasn't running and there was no
information displayed about it. I had thought Prime computers were
pretty common in the UK and expected more, perhaps even a possibility to
play with PRIMOS.
</p>

<p>
Before leaving I bought three books from the Bletchley Park bookshop:
<i>Colossus: The Secrets of Bletchley Park's Codebreaking Computers</i> by B.
Jack Copeland et al, Paul Gannon's <i>Colossus: Bletchley Park's Greatest
Secret</i> and Andrew Hodges' biography <i>Alan Turing: The Enigma</i>.
</p>

<p>
As I'm writing this I've read Paul Gannon's great book on the Colossus
development and, really, a rather general history of telecommunications
and the work at Bletchley Park and I'm halfway through the really good
Turing biography. Highly recommended!
</p>

<p>
Statue of Turing at Bletchley Park:
</p>


<figure id="org1ac13f7">
<img src="https://hack.org/mc/images/turing.jpg" alt="turing.jpg">

</figure>

<p>
On our way back to the hotel from Euston station we happened to notice
that we we're right beside where BBC's <i>Sherlock</i> placed 221B Baker
Stret: 187 North Gower Street. I couldn't resist taking a photo, so I
leave you with the photo of the mock Baker Street:
</p>


<figure id="orgce059c9">
<img src="https://hack.org/mc/images/sherlock-house.jpg" alt="sherlock-house.jpg">

</figure>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Boomtime, the 34 day of Discord in the YOLD 3179 (<time datetime="2013-04-17">2013-04-17</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/bletchley.html</link>
  <guid>https://hack.org/~mc/blog/bletchley.html</guid>
  <pubDate>Wed, 17 Apr 2013 11:25:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Status Report YOLD 3179]]></title>
  <description><![CDATA[<p>
Central Malmö, southern Sweden. Sweetmorn, the 11 day of Chaos in the
YOLD 3179.
</p>

<p>
Hail Eris!
</p>

<p>
We have arrived at the Year 3179 of Our Lady of Discord.
</p>

<p>
New Year's Eve was a calm event with just me, Petra and #3. Come
midnight we turned off the lights and looked out through the large
windows on our new flat and saw some marvellous fireworks.
</p>

<p>
After slightly more than my fair share of disease that made December a
less than productive month we moved to a new flat just before
Newtonmass. It was chaotic. 147 boxes are now emptied but the new flat
is still a mess and there's a huge heap of junk in the middle of our
living room.
</p>


<figure id="org402c723">
<img src="https://hack.org/mc/images/nya2-small.jpg" alt="nya2-small.jpg">

</figure>

<p>
I'm in the process of giving away things, including some old computers
that have been standing unattended in a closet for much too long. This
is what one of my old Suns said when I booted it:
</p>


<figure id="org12e8ebb">
<img src="https://hack.org/mc/images/gained-3130-small.jpg" alt="gained-3130-small.jpg">

</figure>

<p>
3130 days since I booted it? Time to get rid of this junk!
</p>

<p>
The chaos is also present on my desk in the new flat.
</p>


<figure id="orgcc283bc">
<img src="https://hack.org/mc/images/desk-20130105-small.jpg" alt="desk-20130105-small.jpg">

</figure>

<p>
If you look closely on the desk you can see that Newtonmass brought a
new toy, a <a href="http://www.snom.com/en/products/ip-phones/snom-300/">Snom
300 SIP phone</a>.
</p>


<figure id="org4d3ba91">
<img src="https://hack.org/mc/images/snom300.jpg" alt="snom300.jpg">

</figure>

<p>
I haven't done any real work for many weeks, but I hope I'll be back at
it soon, Goddess allowing.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Sweetmorn, the 11 day of Chaos in the YOLD 3179 (<time datetime="2013-01-11">2013-01-11</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/3179.html</link>
  <guid>https://hack.org/~mc/blog/3179.html</guid>
  <pubDate>Fri, 11 Jan 2013 13:02:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[IPsec at FSCONS 2012]]></title>
  <description><![CDATA[<p>
This weekend I attended <a href="http://fscons.org/">FSCONS 2012</a>. I presented
my IPsec work. As usual, I was incredibly nervous but at least the
audience seemed interested.
</p>

<p>
The (corrected) slides are here:
</p>

<p>
<a href="https://hack.org/mc/projects/btns/pres-btns.pdf">https://hack.org/mc/projects/btns/pres-btns.pdf</a>
</p>

<p>
Typically, the URLs to the project pages was wrong in the original
slides.
</p>

<p>
You can find my presentation notes here:
</p>

<p>
<a href="https://hack.org/mc/projects/btns/notes-btns.html">https://hack.org/mc/projects/btns/notes-btns.html</a>
</p>

<p>
More about the projects:
</p>

<p>
<a href="https://hack.org/mc/projects/ipsec/">https://hack.org/mc/projects/ipsec/</a>
</p>

<p>
<a href="https://hack.org/mc/projects/btns/">https://hack.org/mc/projects/btns/</a>
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Sweetmorn, the 24 day of The Aftermath in the YOLD 3178 (<time datetime="2012-11-12">2012-11-12</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/fscons2012-2.html</link>
  <guid>https://hack.org/~mc/blog/fscons2012-2.html</guid>
  <pubDate>Mon, 12 Nov 2012 10:51:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[Hacker school at Internet discovery day]]></title>
  <description><![CDATA[<p>
I presented an idea of a hacker school on the Internet discovery day
(IDD) at <a href="http://www.stockholmwaterfront.com/">the Stockholm Waterfront
congress centre</a> last Monday. IDD is a chance for entrepreneurs to meet
financers and to network with likeminded people. I was supposedly one of
the entrepreneurs.
</p>

<p>
I traveled to IDD with nothing but an idea and was given a piece of
brown paper (180x96 cm) stuck to the wall and some felt pens. Then I was
expected to present my idea to some 800(!) visitors from 13:00 to 17:00!
</p>

<p>
I was, of course, ridiculously nervous. Therapists call these things
exposures for good reason.
</p>

<p>
Anyway, I have this idea that, to be a good programmer, you don't
necessarily need to know calculus. Instead, you might need to know how
to, I don't know, <i>program a computer</i>? Many university programmes seems
to take the reverse position. Many vocational schools in Sweden seems to
focus on turning you into a web designer rather than a programmer.
Meanwhile, the industry is screaming for real programmers: C, networks,
sockets, Python, Perl, cross compilers, embedded programming, et cetera,
et cetera.
</p>

<p>
I made some drafts about a new curriculum and presented an idea about
<a href="http://utsl.se/skola.html">a hacker school</a> (in Swedish) at IDD to
see what kind of response I would get.
</p>

<p>
The basic idea is to issue a call for proposals to companies already
using free and open source software (FOSS). The companies are asked to
suggest student projects. The students work on real projects, using real
code and real tools together with a few very experienced lead
programmers/mentors from the school shared by all student groups. Every
company that gets a project accepted will also have to give something
like 20% of one of their programmer's time as a project leader and to do
integration of code back into their platform.
</p>

<p>
All new code is free software and given back to the community and, of
course, back to the company proposing the project. Think
<a href="https://code.google.com/soc/">Google Summer of Code</a>. But backwards.
Also, compare <a href="http://hackerschool.com/">Hackerschool</a>, but consider
longer and/or more projects and resulting in a real degree.
</p>

<p>
All this would be free for the students and free for the involved
companies, except the 20% of someone's time per chosen project.
</p>

<p>
Most of the work would be done remotely. We would use the net quite a
bit: chat, VoIP, mailing lists, distributed VCS, remote pair programming
(or troika when one of the lead programmers looks over their virtual
shoulders). Everyone will be expected on a (voice) roll call each
morning where we go through what was done yesterday and what is to be
done today. Hacking! Not slacking.
</p>

<p>
We would get together for physical
<a href="http://en.wikipedia.org/wiki/hackathon">hackathons</a> at the beginning
and at the end of a project. To keep costs down we could perhaps use one
of the inolved companies for space during these hackathons.
</p>

<p>
We would earn money by becoming a state-financed vocational school
(every student comes with a bag of the state's money) and by doing
active recruitment of the students. We, the teachers/lead programmers,
would be in a unique position to place the right hacker at the right
place.
</p>

<p>
That's it. That's what I presented at the IDD. I stirred up at least a
little bit of interest with that provocative "hacker" name.
</p>

<p>
Unlike most of the projects at IDD I wasn't looking for money. I was
looking for contacts in existing educational organisations and other
likeminded hackers that would be willing to spend time as lead
programmers/mentors/co-founders. I may have found a few. If you feel you
may be one more, get in touch!
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Boomtime, the 10 day of The Aftermath in the YOLD 3178 (<time datetime="2012-10-29">2012-10-29</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/hackerschool.html</link>
  <guid>https://hack.org/~mc/blog/hackerschool.html</guid>
  <pubDate>Mon, 29 Oct 2012 14:39:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[Visiting Aida]]></title>
  <description><![CDATA[<p>
Last weekend I had the good fortune to visit the amazing
<a href="http://www.gustavianum.uu.se/">Museum Gustavianum</a> in Uppsala, a
science museum with a focus on the 16th and 17th centuries, placed in
what at the time was the main university building. They have simply
amazing stuff in their collections and one of the world's finest
examples of an anatomical theatre.
</p>

<p>
The real reason for my visit to Gustavianum, however, was that
<a href="http://www.update.uu.se/">the Update Computer Club</a> had placed some
of their more rare computers on display, including my old friend AIDA, a
DEC 2065 that used to run TOPS-20, no less than <i>two</i>
<a href="https://en.wikipedia.org/wiki/KOM_%28BBS%29">KOM conference systems</a>
and a copy of the original <a href="https://en.wikipedia.org/wiki/MUD1">Essex
MUD</a>. Here's a picture of me hugging AIDA like some hunchback haunting
the science museum:
</p>


<figure id="org1292d50">
<img src="https://hack.org/mc/images/aida.jpg" alt="aida.jpg">

</figure>

<p>
Bad photo, I'm afraid. Taken without flash with my mobile phone.
</p>

<p>
Here are some much better photos taken by an Update member during the
inauguration of their displays at Gustavianum:
</p>

<p>
<a href="http://www.update.uu.se/~jeppe/tmp/vernissage/">http://www.update.uu.se/~jeppe/tmp/vernissage/</a>
</p>

<p>
Here's a particularly nice one of AIDA:
</p>


<figure id="org7337f7a">
<img src="http://www.update.uu.se/~jeppe/tmp/vernissage/13.jpg.html" alt="13.jpg.html">

</figure>

<p>
RAM, CPU and PDP-11 frontend in the grey/terracotta casing to the right.
Hard disks in front. Tape drive to the left.
</p>

<p>
I was a bit disappointed that none of the terminals present were hooked
up to anything. It would have been a nice way to present TOPS-20 to
people if a real terminal would have been hooked into a small PC running
a PDP-10 emulator with TOPS-20 on it.
</p>

<p>
Update has two similar projects running already: TINA (TINA Is Not AIDA)
which is a copy of AIDA running on an emulator and UP, an ITS instance
running on a PDP-10 emulator. <a href="http://up.update.uu.se/">UP</a> is
actually hosting its own HTTP server writting in MacLisp!
</p>

<p>
After visiting Uppsala I went to Stockholm for the Internet discovery
day (see separate post) and the
<a href="http://internetdagarna.se/">Internetdagarna</a> conference. I was struck
down by a temperature on the first day and didn't really recover until
days later. I spent a few lonely nights shivering in a hotel room in
central Stockholm. In case you knew I was coming to Stockholm and didn't
hear from me, that's why.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Boomtime, the 10 day of The Aftermath in the YOLD 3178 (<time datetime="2012-10-29">2012-10-29</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/aida.html</link>
  <guid>https://hack.org/~mc/blog/aida.html</guid>
  <pubDate>Mon, 29 Oct 2012 14:35:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[Local newspaper writes about hacker/maker culture]]></title>
  <description><![CDATA[<p>
Local newspaper Sydsvenskan writes about the hacker culture in a
<a href="http://www.sydsvenskan.se/kultur--nojen/jo-man-hackar/">recent
article</a> (in Swedish). I was interviewed over a cup of coffee for the
article.
</p>

<p>
It's a nice change that, for once, the difference between hacker and
crackers is highlighted. My only gripe about the article is that the
journalist exaggerates quite a bit when he says that I have more than 30
years of experience with the hacker culture!
</p>

<p>
I mentioned to him that I first programmed a computer in 1981 and I
guess he took 1981 as the starting point of my hacker career. I wouldn't
say that a nine-year-old typing BASIC into his cousin's Sinclair ZX81 is
a member of the hacker culture just like that, but there you go.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Boomtime, the 73 day of Bureaucracy in the YOLD 3178 (<time datetime="2012-10-19">2012-10-19</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/sydsvenskan-hackers.html</link>
  <guid>https://hack.org/~mc/blog/sydsvenskan-hackers.html</guid>
  <pubDate>Fri, 19 Oct 2012 14:16:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Delete your Facebook account]]></title>
  <description><![CDATA[<p>
Here's an important URL:
</p>

<p>
<a href="https://www.facebook.com/help/contact.php?show_form=delete_account">https://www.facebook.com/help/contact.php?show_form=delete_account</a>
</p>

<p>
Some background, if you really need it:
</p>

<p>
<a href="http://www.businessinsider.com/10-reasons-to-delete-your-facebook-account-2010-5">10
reasons to delete your Facebook account.</a>
</p>

<p>
<a href="https://www.eff.org/deeplinks/2010/04/facebook-timeline/">Facebook's
Eroding Privacy Policy: A Timeline.</a>
</p>

<p>
<a href="http://www.guardian.co.uk/commentisfree/andrewbrown/2010/may/14/facebook-not-your-friend">Facebook
is not your friend.</a>
</p>

<p>
<a href="http://rield.com/faq/why-is-facebook-bad">Why is Facebook bad? How to
Delete an Account?</a>
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Pungenday, the 69 day of Bureaucracy in the YOLD 3178 (<time datetime="2012-10-15">2012-10-15</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/facebook.html</link>
  <guid>https://hack.org/~mc/blog/facebook.html</guid>
  <pubDate>Mon, 15 Oct 2012 08:36:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[MC speaking at FSCONS 2012]]></title>
  <description><![CDATA[<p>
I'm glad to announce that I will be speaking about how to make IPsec
scale at this year's <a href="https://fscons.org/">FSCONS</a> on 9, 10 &amp; 11
November, in Göteborg, Sweden. <a href="https://fscons.org/2012/schedule/">The
schedule</a> says my slot is on Sunday at 11.
</p>

<p>
My talk will cover two experimental implementations of IPsec key
management, <a href="https://hack.org/mc/projects/ipsec/">using DNS as a key
distribution channel</a> and
<a href="https://hack.org/mc/projects/btns/">anonymous keying,
Better-than-nothing security</a>.
</p>

<p>
See you there!
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Pungenday, the 64 day of Bureaucracy in the YOLD 3178 (<time datetime="2012-10-10">2012-10-10</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/fscons2012.html</link>
  <guid>https://hack.org/~mc/blog/fscons2012.html</guid>
  <pubDate>Wed, 10 Oct 2012 14:16:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[BTNS Progress Report 4]]></title>
  <description><![CDATA[<p>
New patch released. Get it at <a href="https://hack.org/mc/projects/btns/">the
project page</a>. <a href="https://hack.org/mc/projects/btns/howto.html">The
howto document</a> has been updated.
</p>

<p>
The new patch adds a new keyword, "btns", that you can add to a policy,
like this:
</p>

<pre class="example" id="org15c89c7">
ikev2 active esp from 10.0.0.6 to 10.0.0.4 srcid ipsec3.hack.org btns
</pre>

<p>
The "btns" keyword means it's not an error if we can't validate the
public key the peer sends us, that is, Better-than-nothing security.
</p>

<p>
Work continues&#x2026;
</p>

<p>
Happy hacking,<br>
MC.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Boomtime, the 43 day of Bureaucracy in the YOLD 3178 (<time datetime="2012-09-19">2012-09-19</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/btns4.html</link>
  <guid>https://hack.org/~mc/blog/btns4.html</guid>
  <pubDate>Wed, 19 Sep 2012 08:22:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Progress in the BTNS project: Raw RSA key in CERT payload]]></title>
  <description><![CDATA[<p>
Edit to correct language.
</p>

<p>
Edit to add BTNS working.
</p>

<p>
Sickness has delayed the BTNS project. I apologise if someone out there
is holding their breath. Please exhale. This will take the time it
takes.
</p>

<p>
I am, however, very pleased to announce the following:
</p>

<pre class="example" id="org66f15e9">
sa_state: VALID -&gt; ESTABLISHED from 10.0.0.6:500 to 10.0.0.4:500 policy 'policy1'
</pre>

<p>
What you see is OpenBSD's iked telling us that is established a Security
Association with a peer. Nothing unusual in that. However, this time it
is preceeded by:
</p>

<pre class="example" id="orgd5be4cf">
MC!!!!! ca_getcert: type RSA key

MC: validate_pubkey: id_type: 2, len: 270
ca_validate_pubkey: looking up pubkeys/fqdn/ipsec3.hack.org
MC: Found the key on file.
MC: The public keys are the same.
</pre>

<p>
which means that iked is not using the ordinary X.509 certificates.
Instead, it's using raw RSA public keys in the CERT payload.
</p>

<p>
You can find my incredibly crude first patch linked on
<a href="https://hack.org/mc/projects/btns/">the project page</a>.
</p>

<p>
If you apply that patch iked will validate the raw RSA key in the CERT
payload against a file with the peer's public key. If you apply a small
patch to ignore the key validation you have Better-Than-Nothing
Security! Hardcoded and incredible crude, but working.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Sweetmorn, the 22 day of Bureaucracy in the YOLD 3178 (<time datetime="2012-08-29">2012-08-29</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/btns3.html</link>
  <guid>https://hack.org/~mc/blog/btns3.html</guid>
  <pubDate>Wed, 29 Aug 2012 20:32:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[MC turns 40]]></title>
  <description><![CDATA[<p>
Repost because of broken images.
</p>

<p>
I recently turned 40. My birthday was heralded by a bleeding ulcer. I've
had better times. As a result my birthday was spent in relative quiet
having coffee and cake with a few friends and relatives. Sickness is
also the reason why the journal has been unusually quiet and why I
haven't been more active in my code repositories, mailing lists, et
cetera.
</p>

<p>
I didn't really expect any presents on my birthday and was rather
surprised when I got a
<a href="http://www.certina.com/Collection/Gent-Automatic-Collection/DS-1.aspx?m=14">Certina
DS-1</a> mechanical wrist watch! One of Certina's promotional photos of my
model:
</p>


<figure id="org3fc6348">
<img src="https://hack.org/mc/images/certina.png" alt="certina.png">

</figure>

<p>
Bad wrist photo taken with my mobile phone:
</p>


<figure id="orgebb3748">
<img src="https://hack.org/mc/images/ds1-wrist.jpg" alt="ds1-wrist.jpg">

</figure>

<p>
Interestingly, my watch is about six times more expensive than my mobile
phone! Some people get high tech smartphones. I get the 1950s version of
high tech. The DS 1 was introduced in 1960. My first mechanical watch!
Thank you!
</p>

<p>
Another surprise among several was <i>The Annotated Alice</i>, a combined
<i>Alice in Wonderland</i> and <i>Through the Looking-glass</i> with extensive
commentary by Martin Gardner. Many years ago I found it in the
university library and I have wanted a copy since. I hadn't realized
there had been a new, improved edition in 1999! But someone did. Thanks!
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Pungenday, the 14 day of Bureaucracy in the YOLD 3178 (<time datetime="2012-08-21">2012-08-21</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/mc-40.html</link>
  <guid>https://hack.org/~mc/blog/mc-40.html</guid>
  <pubDate>Tue, 21 Aug 2012 08:46:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[hack.org blocked by web filtering companies]]></title>
  <description><![CDATA[<p>
For a few years I have been increasingly annoyed that web filtering
companies have categorised the hack.org web server (and, presumably, the
*.hack.org subdomains) under a category they call "hacking" that
Websense defines as:
</p>

<blockquote>
<p>
Sites that provide information about or promote illegal or
questionable access to or use of computer or communication equipment,
software, or databases.
</p>
</blockquote>

<p>
and Trend Micro defines as:
</p>

<blockquote>
<p>
Sites that provide software for bypassing computer security systems.
</p>
</blockquote>

<p>
It seems a bit of a stretch to categorise my personal web pages under
this category but I realise how the mistake was made: They call their
category "hacking" and the words "hacking" and "hacker" do show up a lot
on my web pages and, after all, the domain <i>itself</i> contains the word
"hack". I can see how automatic software looking for keywords can make
the wrong decision. Of course, their software doesn't know anything
about the <a href="https://hack.org/faq-hacker.html">hacker vs cracker</a>
confusion.
</p>

<p>
My guess is that most of the web filtering companies use automatic
software looking for keywords and I guess most of these programs are
really, really bad at trying to understand what a web page is really
about. My advice to people even thinking about buying into a service
like this is to ask the companies technical questions on how their
scanning works. For instance, scanning for known signatures of malware
is an entirely different ballgame compared to trying to categorise web
content from keywords.
</p>

<p>
Of course, I have tried several times to report back to Websense and
Trend Micro and other web filtering companies that they have
miscategorised hack.org. It seems the best I have managed to do was to
trigger an <i>automatic</i> rescanning which, of course, found the same
amount of keywords it was looking for and failed to change the category.
</p>

<p>
Just the other day I received an alarming message. It said that if you
use a Trend Micro product and tried to look at my personal web pages it
would stop you and say:
</p>

<blockquote>
<p>
Verified fraud page or threat source.
</p>
</blockquote>

<p>
Wow! This is something entirely different than placing my web pages in
the wrong content category. This is verging on libel!
</p>

<p>
<i>Verified</i> fraud or threat? Verified how, exactly? What have they
verified and how did they do it? I really want to know. If anyone has
any insights into Trend Micro's database, please get in touch.
</p>

<p>
Trend Micro has a public service here:
</p>

<p>
<a href="http://global.sitesafety.trendmicro.com/">http://global.sitesafety.trendmicro.com/</a>
</p>

<p>
If I type in hack.org I get a result that says:
</p>

<blockquote>
<p>
Is it safe?
</p>

<p>
Dangerous: The latest tests indicate that this URL contains malicious
software or could defraud visitors.
</p>

<p>
How would you categorize this URL?
</p>

<p>
Hacking: Sites that provide software for bypassing computer security
systems
</p>
</blockquote>

<p>
It's still wrong, of course, but at least better than "verified fraud"!
Trend Micro has categorised hack.org as "hacking" for many years now. No
change there.
</p>

<p>
What the "Dangerous" label is about, I don't know. It has also been the
same for many years now. I wonder what their tests found? A careful
review of the few personal web pages at the main hack.org server doesn't
yield anything suspicious.
</p>

<p>
Of course, I can't answer for any contents on any other web servers
ending in hack.org, but I doubt that this is the real problem here. A
simple test with a small web server I keep for test reasons, which
almost doesn't contain any information at all, gets the same result from
Trend Micro, probably just because it ends with "hack.org".
</p>

<p>
I can live with the entire domain being in the wrong category in web
filtering software, but I really want to get rid of at least the
libellous "verified fraud or threat" and "dangerous" classification.
</p>

<p>
Any suggestions? A libel suit seems a bit over the top, don't you think?
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Setting Orange, the 24 day of Confusion in the YOLD 3178 (<time datetime="2012-06-19">2012-06-19</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/hack-blocked.html</link>
  <guid>https://hack.org/~mc/blog/hack-blocked.html</guid>
  <pubDate>Tue, 19 Jun 2012 15:51:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Ludvig's graduation]]></title>
  <description><![CDATA[<p>
Last week my eldest son, Ludvig, graduated from
<a href="http://www.skolverket.se/2.3894/in_english/the_swedish_education_system/upper_secondary_school/upper_secondary_school/what-is-upper-secondary-school-1.101973">upper
secondary school</a>. For three years he's been studying at the
<a href="http://www.skolverket.se/2.3894/in_english/the_swedish_education_system/upper_secondary_school/upper_secondary_school/art-music-and-drama-programme-1.101983">Art,
Music and Drama Programme</a> with a special focus on musical composition
and songwriting.
</p>

<p>
We met up with Ludvig at his school and took some pictures. This is me
next to the beaming composer-to-be:
</p>


<figure id="orgda99d18">
<img src="https://hack.org/mc/images/mc+ludde-student.jpg" alt="mc+ludde-student.jpg">

</figure>

<p>
Helena, Ludvig's mother, visited us for the occasion. Here's Ludvig and
his mother. You can also see Ludvig's youngest sister in the baby
carrier.
</p>


<figure id="org776fb00">
<img src="https://hack.org/mc/images/helena+ludde-student.jpg" alt="helena+ludde-student.jpg">

</figure>

<p>
Afterwards we had a nice dinner before Ludvig took off to the pub.
</p>

<p>
My little boy is all grown up!
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Sweetmorn, the 20 day of Confusion in the YOLD 3178 (<time datetime="2012-06-15">2012-06-15</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/graduation.html</link>
  <guid>https://hack.org/~mc/blog/graduation.html</guid>
  <pubDate>Fri, 15 Jun 2012 14:32:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Errors in press release about BTNS project]]></title>
  <description><![CDATA[<p>
<a href="https://hack.org/mc/blog/btns.html">Yesterday I wrote</a> that .SE will finance my <a href="https://hack.org/mc/hacks/btns/">BTNS project</a>. .SE has now
published a <a href="https://www.iis.se/pressmeddelanden/ses-internetfonden-finansierar-14-nya-projekt">press release (in Swedish)</a> but it originally had an
unfortunate error: The project title and the description describes
parts (specifically Scenario 2) of <i>another</i> project, <a href="https://hack.org/mc/hacks/ipsec/">Using DNS for
IPsec authentication</a>.
</p>

<p>
When I noticed the error, I contacted .SE and they have now fixed the
text in the press release. Of course, the press release had already
gone out and quite possibly some media had already published it. For
instance, there are articles on <a href="https://www.idg.se/2.1085/1.453975/miljoner-till-nya-natprojekt">IDG (in Swedish)</a> and the <a href="http://www.cisionwire.se/se/r/se-s-internetfonden-finansierar-tva-nya-projekt-fran-malmo,c9271898">news portal
Cisionwire (in Swedish)</a> with the error still in it.
</p>

<p>
If you notice any errors in other media, and have the possibility to do
so, please correct them. Thanks.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Setting Orange, the 19 day of Confusion in the YOLD 3178 (<time datetime="2012-06-14">2012-06-14</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/btns2.html</link>
  <guid>https://hack.org/~mc/blog/btns2.html</guid>
  <pubDate>Thu, 14 Jun 2012 13:47:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Better-than-nothing security]]></title>
  <description><![CDATA[<p>
I'm pleased to announce that the <a href="https://www.iis.se/en/om-se">.SE
Foundation</a> has again deemed me worthy to receive funding for my
research.
</p>

<p>
This time I'm tackling Better-than-nothing security, often known as
BTNS. BTNS is an unauthenticated mode of IPsec.
</p>

<p>
Unlike ordinary IPsec BTNS can be used even if we can't fully
authenticate the peer. We simply trust that the node is who she says she
is and work from there.
</p>

<p>
This is not without merits. OK, so we don't know that we're speaking to
the right node, but we still get all the other benifits of traditional
IPsec: confidentiality, integrity, et cetera. We also get continuity of
association, a guarantee that we're still speaking to the same party as
we did when the conversation started.
</p>

<p>
For more on this, see <a href="https://hack.org/mc/hacks/btns/">the BTNS
project page</a>.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Prickle-Prickle, the 18 day of Confusion in the YOLD 3178 (<time datetime="2012-06-13">2012-06-13</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/btns.html</link>
  <guid>https://hack.org/~mc/blog/btns.html</guid>
  <pubDate>Wed, 13 Jun 2012 11:08:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Ubuntu LTS: Unity, Sugar and Wayland]]></title>
  <description><![CDATA[<p>
As you probably know I'm not usually running Linux but I confess that
there are a number of GNU/Linux systems in my home. Both my sons use
GNU/Linux systems and my little ARM netbook, the Genesi Efika MX
Smartbook, also runs Linux.
</p>

<p>
Ludvig and I recently upgraded the Debian distribution installed on his
computer. Unfortunately, some strange things happened. Some packages
simply disappeared, among them update-notifier. It was weird, but
re-installing the package helped. Sadly, I couldn't find the time to
figure out what <i>really</i> happened.
</p>

<p>
Dad's Inofficial Computer Support won't be open all the time and when
Ludvig moves out this autumn for college it would be good if he was
running something with a little more long-time support. Enter the latest
Ubuntu LTS with a pledged support of five years, even for the desktop
distribution. It's a possible solution.
</p>

<p>
I have no real experience of Ubuntu but since it's more or less a Debian
system I seem to be able to find my way around in it. However, Ubuntu
has recently changed their default desktop to something called Unity
which I don't know much about. I just had to check it out first.
</p>

<p>
A lot of people have expressed their horrors about Unity and I dreaded
what I was going to see when I tried to install Ubuntu on my test
machine. To my surprise it was rather usable! Yes, it used almost 300
MiB RAM just after login, without even having started any applicatons
yet, but that's what I've come to expect from modern desktop
environments. I don't think it's much worse than, say, Gnome or KDE or
whatever kids run these days.
</p>

<p>
I showed Unity to Ludvig and we played around for a bit. He says he
might come to like it even though he's been using XFCE for the last few
years. We'll see. If not, it shouldn't bee too hard to install XFCE,
although you might loose some of the integrated features, I guess.
</p>

<p>
Obviously, I'm staying with a much more
<a href="https://hack.org/mc/hacks/mcwm/">lightweight solution</a> myself. I see
no reason for me to start using a desktop environment. It wouldn't add
much to my user experience.
</p>

<p>
While playing around with Ubuntu I also found, to my surprise, the
<a href="http://wiki.laptop.org/go/Sugar">Sugar</a> environment from the
<a href="http://www.laptop.org/">One Laptop Per Child project</a>. I tried it but
it almost immediately hanged: The Python process running Sugar used 100%
CPU until I killed it a few minutes later when nothing appeared to
happen.
</p>

<p>
If you want to try Sugar don't forget to install some activities
(Sugar's way of saying "program") as well. Of the activities I found and
tested no-one seemed very child friendly compared to what is offered in
the Unity or Gnome environments. In some cases I think programs running
in a straight terminal would suffice. Yes, really!
</p>

<p>
Sugar didn't look very stable. Perhaps I was using some pre-Alpha
release? It said 0.90, after all.
</p>

<p>
To my suprise I also found that the
<a href="http://wayland.freedesktop.org/">Wayland project's</a> Weston compositor
is included in Ubuntu! If you don't know, Wayland is a replacement of
the X Window System with some rather nice ideas about direct rendering.
Most of the criticism against Wayland has been about the lack of network
transparency. Wayland fans argue that this should be easily remedied by
an X server on top of Wayland or using VNC or similar technologies.
</p>

<p>
I tried Weston with the Weston-terminal terminal emulator on my test
machine. The compositor on my laptop 1024x768 screen weighed in at 16
megs resident (74 meg virtual). The terminal emulator seemed to chew
about 10-15% of the CPU! While idle! It seems a bit strange but I guess
it's still early in development.
</p>

<p>
I admit that I sometimes still dream of a more lightweight window system
for Unix systems, perhaps something in the tradition of Plan 9's rio or
8½, Blit's mux or even the old MGR, something exceedingly simple, easy
to understand and easy to program.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Prickle-Prickle, the 71 day of Discord in the YOLD 3178 (<time datetime="2012-05-24">2012-05-24</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/ubuntu.html</link>
  <guid>https://hack.org/~mc/blog/ubuntu.html</guid>
  <pubDate>Thu, 24 May 2012 13:05:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Presentation of mcwm at FSCONS 2011]]></title>
  <description><![CDATA[<p>
I held a presentation about the <a href="https://hack.org/mc/hacks/mcwm/">mcwm
window manager</a> at the the <a href="http://www.fscons.org/">FSCONS 2011</a>
conference in November, 2011. The presentation was filmed. They recently
published the result.
</p>

<p>
You can view the resulting movie <a href="https://hack.org/mc/hacks/mcwm/fscons2011.html">in your web browser</a> or download the
75 MiB WebM file: <a href="https://hack.org/mc/movies/mcwm.webm">Local copy.</a> <a href="http://videos.fscons.org/fscons/videos/FSCONS2011/mcwm-a-minimalist-floating-window-manager/mcwm-a-minimalist-floating-window-manager.webm">Original at fscons.org.</a>
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Boomtime, the 29 day of Discord in the YOLD 3178 (<time datetime="2012-04-12">2012-04-12</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/mcwm-presentation-fscons2011.html</link>
  <guid>https://hack.org/~mc/blog/mcwm-presentation-fscons2011.html</guid>
  <pubDate>Thu, 12 Apr 2012 15:06:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[In praise of silent terminals]]></title>
  <description><![CDATA[<p>
A while ago I bought a new computer. I asked local company <a href="http://mullet.se/">Mullet</a> to
build me a <a href="http://www.supermicro.com/superworkstations/">Supermicro Superworkstation</a> with a 6 core (* 2 with HT)
Intel Xeon W3680 CPU. A real monster of a CPU.
</p>

<p>
I maxed out the memory with 24 gigs of three-way ECC RAM and had two
mirrored 2 TiB disks installed in a 8 piece hot-swap drive bay for
storage. Standing right next to it, connected with Gigabit Ethernet, is
a fileserver with additional storage.
</p>


<figure id="orgfbee27f">
<img src="https://hack.org/mc/images/supermicro.jpg" alt="supermicro.jpg">

</figure>

<p>
I call the new box totoro because it's huge and really screams. I just
might paint it blue!
</p>

<p>
I had originally planned to use totoro as a traditional workstation
standing under my desk. I even went so far as buying an Nvidia Quadro
600 graphics card so I could hook up both my HP ZR24w 24" displays and
even do decent 3D graphics. (Yeah, right, I know. Me using 3D?)
</p>

<p>
However, the box is very noisy. I can't work in the same room.
</p>

<p>
Apparently I've been using terminals and fairly silent laptops for so
many years that a supposedly whisper-quiet workstation is way too noisy.
Of course, the absolutely huge heat-sink necessary on my choice of CPU
makes it impossible to use the air shroud that Supermicro is so famous
for. That might be one part of the problem. Another is that I'm rather
sensitive to noise.
</p>

<p>
After trying to work with the huge box standing under my desk for a few
weeks I finally had enough and moved it into the closet next to the
fileserver. Instead, I brought back an old Hewlett-Packard t5125 thin
client into service. It was in heavy use as an X terminal from 2005 to 2010.
</p>


<figure id="org44a13c5">
<img src="https://hack.org/mc/images/t5125-terminal.jpg" alt="t5125-terminal.jpg">

</figure>

<p>
I connected the t5125 on the second NIC on totoro and created a private
network where I could run VNC without SSH tunneling. I think performance
would be awful with SSH running on the very slow t5125. Using X instead
of VNC would also be way to slow on this terminal if I were to run
complicated clients such as, for example, Firefox. For terminal
emulators and Emacs frames, however, X would be probably be faster than
VNC.
</p>

<p>
The t5125 is basically a very low-powered PC with a Via Eden (Samuel 2)
CPU at 400 MHz, 128 megs of RAM, 32 megs of flash and a 100 Mbit/s
Ethernet. It currently runs an ancient Linux booted from a DOM.
</p>

<p>
Of course, using the t5125 meant I couldn't use any of my 24"
monitors, much less both of them at once. Instead I had to make do
with an old Samsung 17" LCD I had lying around and using 1280x1024
instead of 1920x1200 (times two).
</p>

<p>
For a couple of weeks this was rather satisfactory. It worked much
better than I anticipated. And, of course, there were no moving parts!
Ah! The wonderful silence!
</p>

<p>
Just the other day my upgrade arrived. It's an <a href="http://h10010.www1.hp.com/wwpc/us/en/sm/WF05a/12454-12454-321959-338927-3640406-3996169.html?dnr=1&amp;jumpid=re_R11260_us/en/PSG/smb/thin_client_computing/hpthinclient/t5745/">HP t5745</a>, a much more
modern version of the t5125. Specs: Intel Atom N280 CPU, GL40 chipset
(including the GM45 Express GPU), 1 gig RAM expandable to 8 GiB(!),
Broadcom gigabit Ethernet and VGA and DisplayPort(!) connections.
</p>

<p>
I'm a little surprised that these terminals still have a serial port,
but that might come in handy for a serial console connection to any
embedded projects.
</p>

<p>
There is <i>no fan</i>. The terminal is dead quiet. It's also cool. Running
full speed with a process taking 100% CPU for an hour or so the CPU
temperature hits 28 degrees Celsius. Idling CPU temperature seems to be
around 21 degrees.
</p>

<p>
It comes with HP Thinpro, a Debian based GNU/Linux distribution,
installed on a 1 GiB DOM. It boots into a selection where you can
connect with all sorts of thin client protocols, ICA, RDP and, perhaps
more important, XDMCP and SSH. You can also start a local Firefox which
seems to work quite well.
</p>

<p>
VNC is lacking from the connection menu, however, but a TightVNC viewer
<i>is</i> installed. You can find it under the Advanced label, start an xterm
and then start it with vncviewer. A bit silly, I think, that they didn't
include in the standard connection manager.
</p>

<p>
Anyway, I wasn't going to waste all this CPU power and a gig of RAM just
running as a thin client. I'm going to use this as a sort of small
workstation.
</p>

<p>
I experimented for a while booting different Linux distributions from
USB sticks. I even tried booting Plan 9 which, I'm sorry to say, didn't
work. Finally I installed FreeBSD on a USB stick and that's what I'm
running now.
</p>

<p>
Everything, including sound, seems to work under FreeBSD 9 except for
one important thing: the DisplayPort connection. The screen just goes
blank if I start X with the monitor on DP. VGA works fine. My guess is
that FreeBSD's old X.org simply doesn't support DisplayPort with Intel
graphics drivers.
</p>

<p>
No suprise there, really, since Intel has moved on to work only with
KMS/GEM. Coming soon to a FreeBSD distribution near you, I hear. I might
experiment with FreeBSD's new KMS/GEM/DRI code eventually but right now
I'm busy with other things. The VGA connection and a single 24" monitor
at 1920x1200 will have to do for now.
</p>

<p>
I'm not going to use the local filesystem much except for booting and
starting applications because writing to the USB stick it's booting from
makes things crawl to a halt. This probably won't be a problem in my
scenario but might be a problem for others. Installing the OS on the DOM
might help, but I wanted to keep that pristine just in case. Installing
a bigger SSD might be an option as well but I don't know if there's any
space in the box.
</p>

<p>
Other than the snag about not being able to use the DisplayPort
connection right now, this terminal/light workstation is really, really
nice. I'm thinking about buying another so I can have one in the office
and one downstairs on a small office desk in the living room.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Boomtime, the 24 day of Discord in the YOLD 3178 (<time datetime="2012-04-07">2012-04-07</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/silent-terminals.html</link>
  <guid>https://hack.org/~mc/blog/silent-terminals.html</guid>
  <pubDate>Sat, 07 Apr 2012 08:53:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[screen & tmux]]></title>
  <description><![CDATA[<p>
In 1991 I discovered a wonderful program called
<a href="http://www.gnu.org/software/screen/">screen</a>. Screen is a terminal
multiplexer, something like a window system for a character terminal. It
makes it easy to run lots of simultaneous programs, even several
full-screen curses-style programs, using an ordinary character terminal
or a terminal emulator.
</p>

<p>
Screen was already a few years old when I was introduced to it in the
underground headquarters of the <a href="http://www.lysator.liu.se/">Lysator
Academic Computer Society</a> in 1991. It was originally written by Oliver
Laumann starting in 1987. It would have been very nice to have on my
ABCenix/D-NIX box in 1988 but I didn't know about it back then.
</p>

<p>
Another great thing with screen is that you can detach your session (by
choice or by, say, network failure) and attach it later, possibly from
another terminal without disturbing your running programs. For me, this
meant I was able to start working using a terminal at home connected
through a dial-up modem, then detach screen, turn off the terminal and
bike to the university, re-attach my screen and continue like I had
never moved. Or vice versa: re-attach when I got home without losing any
state.
</p>

<p>
I have used screen almost every day ever since I discovered it. 21
years. Not bad.
</p>

<p>
Even in this modern world of ubiquitous window systems, screen is still
very useful. I usually run screen on remote servers I manage. It's a
very easy way to flip among several running programs: a build running in
one virtual screen, a configuration file being edited in another, idling
on a friendly channel in an IRC client in a third, et cetera, et cetera.
</p>

<p>
I also usually run a screen on my local workstation. This makes it very
easy for me to get at important stuff even from the downstairs terminal
or while using the portable terminal (aka Genesi Smartbook).
</p>

<p>
In screen I usually also run several <code>emacsclient -t</code> that attaches to
my main Emacs process (usually started with <code>emacs --daemon</code>). Under X
on the workstation I use <code>emacsclient -c</code> to create new Emacs frames
that attaches to the same Emacs process. Very nice.
</p>

<p>
However, over the years screen has become more and more complex. For
instance, to mention just a few features, screen now has support for
hardware Braille displays, builtin serial communications, a built-in
telnet client and a rather complex setup of access control lists for
multi-user session sharing.
</p>

<p>
I don't use many of screen's features. When I do want to use telnet or
serial communications, say, I would rather use an external program, even
while running inside screen.
</p>

<p>
As you can imagine, the code has also suffered a bit from adding more
features. It has, according to some, become more or less unmaintainable
and hard to audit. This is bad, especially when one part of screen is
usually run as root.
</p>

<p>
Enter <a href="http://tmux.sourceforge.net/">tmux</a>. It's a new terminal
multiplexer with interesting design choices and what appears to be more
maintainable code. It also doesn't have screen's somewhat strange access
control lists for multi-user sessions. Instead you can just control the
permissions on the Unix domain socket it uses between client and server.
</p>

<p>
tmux also has some nice features not available in screen: it's possible
to run several sessions of virtual screens at once and move screens
between these sessions. It also has support for tiling windows, although
I'm not personally very interested in the latter feature.
</p>

<p>
If you want to use tmux in a multi-user setting for, say, pair
programming I recently found
<a href="https://github.com/zolrath/wemux">wemux</a>, a program that helps in
setting up tmux for multi-user sessions. It seems nice but I haven't
actually tried it yet.
</p>

<p>
tmux itself is very nice and easy to use. I changed some of the key
bindings, though, since I'm so used to my key bindings from screen.
Here's my <a href="https://hack.org/mc/files/.tmux.conf">.tmux.conf</a>.
</p>

<p>
I use <a href="http://emacs-jabber.sourceforge.net/">emacs-jabber</a> for instant
messaging. When I was using screen I got a small message from screen
everytime someone sent me a message or someone said something in a MUC.
Naturally, I would like this feature in tmux as well. It seemed easy
enough:
</p>

<pre class="example" id="orgb400a16">
(defun jabber-tmux-message (msg)
  "Show MSG in tmux"
  (call-process "tmux" nil nil nil "display-message" msg))

; Automatically defines jabber-{message,muc,presence,info}-tmux
; functions.
(define-jabber-alert tmux "Show a message through the tmux terminal multiplexer"
  'jabber-tmux-message)
</pre>

<p>
With this you can add <code>jabber-message-tmux</code> to
<code>jabber-alert-message-hooks</code> and <code>jabber-muc-tmux</code> to
<code>jabber-alert-muc-hooks</code> as you like and get the expected result, just
like the screen support in emacs-jabber.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Prickle-Prickle, the 1 day of Discord in the YOLD 3178 (<time datetime="2012-03-15">2012-03-15</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/tmux.html</link>
  <guid>https://hack.org/~mc/blog/tmux.html</guid>
  <pubDate>Thu, 15 Mar 2012 14:29:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[µWM — Another XCB-based Stacking Window Manager]]></title>
  <description><![CDATA[<p>
Updated.
</p>

<p>
My window manager, <a href="https://hack.org/mc/hacks/mcwm/">mcwm</a>, is not the
only stacking window manager based on XCB after all. I found another
stacking window manager that uses XCB:
<a href="http://uwm.sourceforge.net/">µWM</a>.
</p>

<p>
Shortened list of features:
</p>

<ul class="org-ul">
<li>stacking window manager</li>
<li>written in C (with many comments)</li>
<li>less dependencies (only XCB and X11 required)</li>
<li>doesn't use/need GNU autoconfigure and other auto-tools</li>
<li>executable &lt; 200k</li>
<li>&lt; 20k Source Lines of Code</li>
<li>low memory footprint during runtime ~ 1800k RES</li>
<li>low X11 resource usage ~ 200k (without desktop backgrounds)</li>
<li>configurable and themeable</li>
<li>no XML config file</li>
<li>builtin menu(s)</li>
<li>builtin panel(s) (other names are slit/bar/dock).</li>
<li>builtin tooltips</li>
<li>builtin background setter</li>
<li>composite support with xcompmgr (sample X compositing manager)</li>
<li>multiple desktops</li>
<li>multiple screen (xinerama)</li>
</ul>

<p>
An impressive list. As you can see it's not quite as minimalist as mcwm:
the executable is about ten times bigger and it includes lots more
graphical features that are handled by external programs in mcwm.
</p>

<p>
I haven't even got it to build on FreeBSD. Too swamped with other things
at the moment.
</p>

<p>
The author is Lutz Sammer, known for his work on Freecraft, the Warcraft
II clone that turned into the
<a href="https://launchpad.net/stratagus">Stratagus</a> game engine.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Boomtime, the 67 day of Chaos in the YOLD 3178 (<time datetime="2012-03-08">2012-03-08</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/uwm.html</link>
  <guid>https://hack.org/~mc/blog/uwm.html</guid>
  <pubDate>Thu, 08 Mar 2012 09:29:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[Be Lucky Window Manager]]></title>
  <description><![CDATA[<p>
<b><b>Updated*2</b></b>.
</p>

<p>
I recently found a window manager called
<a href="https://github.com/moetunes/Be_Lucky_Window_Manager">Be Lucky Window
Manager</a>. In the README it says:
</p>

<blockquote>
<p>
I started this from my port of catwm (
<a href="https://bbs.archlinux.org/viewtopic.php?id=100215&amp;p=1">https://bbs.archlinux.org/viewtopic.php?id=100215&amp;p=1</a> ) july 2011 With
the source for mcwm ( <a href="https://hack.org/mc/hacks/mcwm/">https://hack.org/mc/hacks/mcwm/</a> ) open in front
of me. Cheers for the code sharing :) See bluckywm.c or config.h for
thanks and licensing.
</p>
</blockquote>

<p>
They seem to have copied at least some mcwm code verbatim, including
comments. After looking through the blwm code I find it's not that much,
really, but I think I should mention it.
</p>

<p>
Neither beluckywm.c nor config.h has any information on licensing.
</p>

<p>
My guess is that this is just an oversight on moetunes' part.
</p>

<p>
At first I didn't know how to contact moetunes. I didn't see any contact
information on the github profile or the commits in github. Then I
realized I might be able to see an e-mail address in the git repo
itself. After cloning I found an e-mail address. I sent a message.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Setting Orange, the 65 day of Chaos in the YOLD 3178 (<time datetime="2012-03-06">2012-03-06</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/blwm.html</link>
  <guid>https://hack.org/~mc/blog/blwm.html</guid>
  <pubDate>Tue, 06 Mar 2012 11:51:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[Icons in mcwm and new program: hidden]]></title>
  <description><![CDATA[<p>
About a week ago, while on the train to Linköping to celebrate the ex
wife's birthday, I finished a small program, hidden. It's purpose in
life is to list hidden windows, that is, windows with their WM_STATE
hint set to Iconic. It's available from the mcwm git repo as hidden.c.
See <a href="https://hack.org/mc/hacks/mcwm/">the mcwm project pages</a>.
</p>

<p>
I have also changed the small 9icon script somewhat to better deal with
windows with strange titles, for instance including shell glob symbols
such as “*”. It works OK unless, of course, you have a quote in the
window title. Sigh.
</p>

<p>
My own program, hidden, seems to have problems with some titles. I'm not
sure it's me causing the problem, though.
</p>

<p>
During the same train trip I also wrote a program to display a menu
window using only XCB. It's not finished but at least it maps a window
and draws some text into it. Most of the time. About one in five times
it doesn't draw anything at all. I admit I'm puzzled. I don't have time
right now to hunt down the bug, though.
</p>

<p>
The plan is to eventually merge my small menu program with hidden. This
will replace the functionality of 9icon in one small program that can
easily be called from mcwm.
</p>

<p>
Writing GUI programs using only XCB is pretty painful, so I abstracted
away some of it and finally ended up with a small program looking
something like this:
</p>

<pre class="example" id="org741b7c3">
init();
win = window(1, 1, WIDTH, HEIGHT);
setfont(win, "12x24", "yellow", "black");
printat(win, 1, 20, "foo");
cleanup();
</pre>

<p>
Perhaps this is the beginning of a small UI toolkit?
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Prickle-Prickle, the 64 day of Chaos in the YOLD 3178 (<time datetime="2012-03-05">2012-03-05</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/mcwm13.html</link>
  <guid>https://hack.org/~mc/blog/mcwm13.html</guid>
  <pubDate>Mon, 05 Mar 2012 09:37:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[Three Happy Hacking Keyboards]]></title>
  <description><![CDATA[
<figure id="orge0a35b9">
<img src="https://hack.org/mc/images/3hhkb.jpg" alt="3hhkb.jpg">

<figcaption><span class="figure-number">Figure 1: </span>Three HHKBs.</figcaption>
</figure>

<p>
Thanks to <a href="http://blog.fnord.se/">Gsson</a> I'm now the proud owner of
yet another <a href="http://www.pfu.fujitsu.com/hhkeyboard/hhkbpro2/">Happy
Hacking Keyboard Professional 2</a>.
</p>

<p>
This means I have two Professional 2 with no keytops, one white and one
black. The white keyboard will be used on my new workstation and the
black will probably travel with my laptop.
</p>

<p>
<a href="http://deskthority.net/wiki/Topre_switches">Topre switches</a> FTW!
</p>

<p>
I also have one of the original HHKB, as you can see on the photo above.
The original has an equally great
<a href="https://hack.org/mc/images/type3-keyboard.jpg">Sun Type 3-like
layout</a> but it's otherwise an ordinary, but good, rubber dome keyboard.
</p>

<p>
You might also be interested in a description of
<a href="https://hack.org/mc/writings/xkb.html">my own keyboard layout</a> which
also serves as instructions on how to remap your keyboard using the XKB
extension without touching system files.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Prickle-Prickle, the 54 day of Chaos in the YOLD 3178 (<time datetime="2012-02-23">2012-02-23</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/3hhkb.html</link>
  <guid>https://hack.org/~mc/blog/3hhkb.html</guid>
  <pubDate>Thu, 23 Feb 2012 10:26:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[Resolver now loads IPSECKEY into racoon]]></title>
  <description><![CDATA[<p>
I have written a small forwarding DNS resolver in Perl that I use in the
<a href="https://hack.org/mc/hacks/ipsec/">opportunistic IPsec project</a>. It
was the first thing I wrote when I started this project back in
December, 2011. Today I changed it to use the patched racoonctl I
<a href="https://hack.org/mc/blog/ipsec+dns9.html">wrote about yesterday</a>.
</p>

<p>
This means that if you use my racoon patches and my resolver together
you can now have opportunistic encryption with fairly strong DNS
authentication.
</p>

<p>
Typically you will trigger the authentication and encryption
automagically just by querying DNS and then sending traffic to the other
node. This means a simple, say,
</p>

<pre class="example" id="org2a1cc1c">
% ping6 ipsec1.hack.org
</pre>

<p>
will automatically authenticate that you're talking to the right node
and then encrypt all your precious traffic.
</p>

<p>
I have updated the
<a href="https://hack.org/mc/hacks/ipsec/howto.html">HOWTO</a>. Please try to
follow the instructions and test. Report back to me.
</p>

<p>
Please note that all this is still very experimental.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Boomtime, the 52 day of Chaos in the YOLD 3178 (<time datetime="2012-02-21">2012-02-21</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/ipsec-dns10.html</link>
  <guid>https://hack.org/~mc/blog/ipsec-dns10.html</guid>
  <pubDate>Tue, 21 Feb 2012 14:50:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[Patches to racoonctl]]></title>
  <description><![CDATA[<p>
Here be a new set of patches to racoonctl and racoon:
</p>

<p>
<a href="https://hack.org/mc/hacks/ipsec/ipseckey-20120210.patch.bz2">ipseckey-20120220.patch.bz2</a>
</p>

<p>
racoonctl can now load a binary RSA public key from a file into a
running racoon.
</p>

<p>
I have also updated the
<a href="https://hack.org/mc/hacks/ipsec/howto.html">HOWTO document</a>.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Sweetmorn, the 51 day of Chaos in the YOLD 3178 (<time datetime="2012-02-20">2012-02-20</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/ipsec-dns9.html</link>
  <guid>https://hack.org/~mc/blog/ipsec-dns9.html</guid>
  <pubDate>Mon, 20 Feb 2012 14:41:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[racoonctl talks to racoon]]></title>
  <description><![CDATA[<p>
Today I got the administrative tool <code>racoonctl</code> to talk to racoon and
load an RSA key. Typical debug output from racoon:
</p>

<pre class="example" id="orgc98a992">
Received loadkey command from admin socket, len = 610
Key for addresses:
IP address: 2001:16d8:ffff:1::4
IP address: 2001:16d8:ffff:1::3
Key length 514.
RSA key exp: 3
RSA key mod: ...
</pre>

<p>
This means that the small capturing DNS resolver I wrote can load keys
into racoon when it captured a user process in the process of querying
for A/AAAA.
</p>

<p>
One step closer to <a href="https://hack.org/mc/hacks/ipsec/">authenticated but
opportunistic IPsec encryption</a>.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Pungenday, the 48 day of Chaos in the YOLD 3178 (<time datetime="2012-02-17">2012-02-17</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/ipsec-dns8.html</link>
  <guid>https://hack.org/~mc/blog/ipsec-dns8.html</guid>
  <pubDate>Fri, 17 Feb 2012 14:05:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[mcwm + icons = true]]></title>
  <description><![CDATA[<p>
After including Christian's patch to allow other clients to unmap
windows in <a href="https://hack.org/mc/hacks/mcwm/">mcwm</a> I also added a key
to hide windows. Press MODKEY + i and the focused window disappears.
</p>

<p>
Still no internal way of getting windows back, though. In the little
free time I can find I'm experimenting on how I want to do this. I have
a small external program that is almost finished that does what
Christian's 9icon script does. I'm also thinking about including a menu
in mcwm proper, but I'll see about that.
</p>

<p>
Currently, mcwm <i>never</i> draws anything, not even the borders. It's a
feature in the X server that draws the borders automatically. It would
be quite nice to keep it that way.
</p>

<p>
I'll have to think about this&#x2026;
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Pungenday, the 48 day of Chaos in the YOLD 3178 (<time datetime="2012-02-17">2012-02-17</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/mcwm12.html</link>
  <guid>https://hack.org/~mc/blog/mcwm12.html</guid>
  <pubDate>Fri, 17 Feb 2012 13:32:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[My Window Manager Gets Icons]]></title>
  <description><![CDATA[<p>
Finally got around to include <a href="http://chneukirchen.org/">Christian
Neukirchen's</a> patch to <a href="https://hack.org/mc/hacks/mcwm/">mcwm</a> which
will allow windows to be unmapped by client request, that is, to be be
iconified or hidden. No, you can relax, they don't leave any silly icon
<i>images</i> behind. The windows are completely unmapped.
</p>

<p>
I've hidden the patch behind a flag (-i) that you will have to use when
starting mcwm to allow windows to be hidden. You can also change the
default in <code>config.h</code> if you like.
</p>

<p>
I did it like this because currently there is no way of getting unmapped
windows back from within mcwm. You will have to use an external program
to do that. Christian has provided us with one called 9icon, which is
distributed as <code>scripts/9icon</code> in mcwm. You might want to use some sort
of panel instead, perhaps. Note that there is still not much support for
EWMH, so panels that use the Extended Window Manager Hints won't work
very well.
</p>

<p>
If someone knows of a standalone icon manager, please tell me about it.
Preferably it would be written in C, use the XCB library and be able to
be used both in popup mode and persistent on screen. If there isn't one
I guess I have to write one unless, of course, someone else gets there
first.
</p>

<p>
No release yet. Everything is in git. Use
</p>

<p>
git://hack.org/mcwm
</p>

<p>
<i>Please note</i>: If you use the version in git you will need xcb-util
0.3.8 to build.
</p>

<p>
Please test and report back to me. If everything looks fine for everyone
I will probably make a new release.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Sweetmorn, the 46 day of Chaos in the YOLD 3178 (<time datetime="2012-02-15">2012-02-15</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/mcwm11.html</link>
  <guid>https://hack.org/~mc/blog/mcwm11.html</guid>
  <pubDate>Wed, 15 Feb 2012 12:44:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[Running Firefox as Another User]]></title>
  <description><![CDATA[<p>
Back in October, 2010, I wrote a
<a href="https://hack.org/mc/blog/firefox-annan-user.html">blog entry in
Swedish</a> about running Firefox as another user as a sort of sandbox
light. I had reason to repeat that when I installed a new computer so I
rewrote the text in English:
<a href="https://hack.org/mc/writings/firefox-another-user.html">Running
Firefox as Another User</a>.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Boomtime, the 42 day of Chaos in the YOLD 3178 (<time datetime="2012-02-11">2012-02-11</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/firefox2.html</link>
  <guid>https://hack.org/~mc/blog/firefox2.html</guid>
  <pubDate>Sat, 11 Feb 2012 15:30:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[New Racoon Patches]]></title>
  <description><![CDATA[<p>
I finally found the time to work on the racoon IKE server again for the
<a href="https://hack.org/mc/hacks/ipsec/">opportunistic IPsec project</a>. The
result is a new set of patches that works better than the old set. Get
it here:
</p>

<p>
<a href="https://hack.org/mc/hacks/ipsec/ipseckey-20120210.patch.bz2">ipseckey-20120210.patch.bz2</a>
</p>

<p>
and apply it to <a href="http://ipsec-tools.sf.net/">ipsec-tools</a> 0.8.0.
</p>

<p>
The new stuff is mainly that rekeying works, both for ISAKMP-SA and
IPsec-SA, because the public key is loaded from DNS into a list which is
checked when authentication has to be done again.
</p>

<p>
I want the key in the list because in Scenario 1 I need an external
program, the resolver, to load the key into the IKE server.
</p>

<p>
Feel free to test things.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Sweetmorn, the 41 day of Chaos in the YOLD 3178 (<time datetime="2012-02-10">2012-02-10</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/ipsec-dns7.html</link>
  <guid>https://hack.org/~mc/blog/ipsec-dns7.html</guid>
  <pubDate>Fri, 10 Feb 2012 22:22:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[IPsec HOWTO]]></title>
  <description><![CDATA[<p>
I have written a beginning HOWTO type document on how to use IPSECKEY
DNS records with my very early racoon patches. Please see
<a href="https://hack.org/mc/hacks/ipsec/howto.html">Using Racoon with IPSECKEY
Records on FreeBSD</a>.
</p>

<p>
The text is mostly for testing and development purposes, not for
production use.
</p>

<p>
I have only tested on FreeBSD 8 and 9 but it might work equally well
under Linux. Please test and report.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Setting Orange, the 40 day of Chaos in the YOLD 3178 (<time datetime="2012-02-09">2012-02-09</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/ipseckey-howto.html</link>
  <guid>https://hack.org/~mc/blog/ipseckey-howto.html</guid>
  <pubDate>Thu, 09 Feb 2012 15:01:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[OE IPsec part 6, Racoon Patches and Configuration]]></title>
  <description><![CDATA[<p>
I have cleaned up my racoon patches for the
<a href="https://hack.org/mc/hacks/ipsec/">opportunistic encryption project</a>
at least a little bit. They are not complete (rekeying is not supported,
for instance). I will of course continue to work on them. Without
further ado, here's a first version:
</p>

<p>
<a href="https://hack.org/mc/hacks/ipsec/ipseckey-20120130.patch.bz2">ipseckey-20120130.patch.bz2</a>
</p>

<p>
Apply them to racoon from <a href="http://ipsec-tools.sf.net/">ipsec-tools</a>
0.8.0.
</p>

<p>
You can use them with this configuration file:
</p>

<p>
<a href="https://hack.org/mc/hacks/ipsec/racoon-ipseckey.conf">racoon-ipseckey.conf</a>
</p>

<p>
Note that I override the use of "dnssec" authentication for my own
purposes.
</p>

<p>
Please note well that these patches by themselves are enough to
implement Scenario #2. However, Scenario #2 is likely vulnerable to a
MitM attack. See a <a href="https://hack.org/mc/blog/ipsec+dns5.html">previous
blog entry</a>.
</p>

<p>
Of course, before using it you need to generate RSA key pairs for all
nodes involved and insert the public key and the corresponding A or AAAA
record into the proper DNS zone.
</p>

<p>
To generate a key, use:
</p>

<pre class="example" id="org390292e">
% plainrsa-gen -b 4096 -f ipsec1.rsa
</pre>

<p>
In the .rsa file you will find the public key in the commented out
"pubkey" line. Insert that into your DNS zone without the first "0s"
(which just marks it as BASE64). In BIND's zone format, it looks like
this:
</p>

<pre class="example" id="orgdc87ebb">
ipsec1                  IN      IPSECKEY ( 10 0 2
                                           .
                                           AQOqVjnhO/eQdETVCH7r2am7yUixEcWUgyffNhdmTigiLS7VZODtxC2ii3ySKEOD6ADxykvgn6KVotSYmSq2kNAdmbElkMl3stAHE+E327vSkX3vKR3/l23Wrrv0iUlJFm+5WK1TJC6jTkjH8Fc0j77mdATGfmWYC4MdONuPUDMeEaMu9/XJm+X0ZWfGG/q1158smfkwsRvKh1KZCJLuGYv+Y85kRnMwnejtQRpDMZbjNr8dtS90MR7kGgQIJ/ctgc//MRjpTo8NTWncDp9KKvuNcBxsPPL08YTF/BkcG60SeeKD1jqjdnY+VRFkrv3BO0WyFEib/fuxeA2FJLYMYOuGG3n1KKSLckD7B5AfNOKKME94f+glY65M8njVVAIKahufUzp+DIW9AgURxuAwNoCiRpS3i+sh7lY/dT5AzbZ8Ewl2jgsdX/neAXCiOWrSMUZGyARNcvAsOleRk93pb0y43FEU8f8OcS027p+ZbBHVbHYbLFEX6eg3NbJso3LTL6Gx8SxWX8W6KvBjFf7sWO4ehEcXPJXJ+lsY/UQfAbeFlUTicQd83+rVuuHfJvbxYWx0Sia6bERlKRSYTWT4FBwH3AwMTLQRskWasyBTbLbk1KHkUBZv4Ts5J+pGzAVsbPLINLnb5/lifjZdPGca6yn+5mbkKdjPSyV0ZHYfqiO4qQ==

ipsec1                  IN      AAAA    2001:16d8:ffff:1::3
</pre>

<p>
Happy hacking,<br>
MC
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Setting Orange, the 30 day of Chaos in the YOLD 3178 (<time datetime="2012-01-30">2012-01-30</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/ipsec-dns6.html</link>
  <guid>https://hack.org/~mc/blog/ipsec-dns6.html</guid>
  <pubDate>Mon, 30 Jan 2012 13:26:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[OE IPsec part 5, The (Wo)Man in the Middle]]></title>
  <description><![CDATA[<p>
In my <a href="https://hack.org/mc/hacks/ipsec/">opportunistic encryption
project</a> I envisioned two possible scenarios. Unfortunately it seems
like one of them is open to a man in the middle attack at least in the
use I envisioned.
</p>

<p>
In the first scenario I need a local DNS resolver that captures any A or
AAAA queries and also looks up the IPSECKEY record for the same name.
The resolver then loads the public key into the IKE daemon before
returning the query results. When the IKE dialogue starts the peer is
authenticated with the preloaded key and we send our own ID to it.
</p>

<p>
I have written a small resolver that does all this except loading the
key into the IKE daemon.
</p>

<p>
In the second scenario the two IKE daemons send their FQDN as IDs and
the IKE daemons queries DNS for the IPSECKEY of their peers.
Unfortunately this scenario is likely vulnerable to a man in the middle
attack even if we're using signed DNS records at least as long as we use
forward zones. The bond is weak between the connection identifier, the
IP address, and the name.
</p>

<p>
Imagine if someone, the Evil Eavesdropper Eve, were to listen in on an
IKE dialogue where Alice is initalizing the dialogue with Bob. Alice has
queried for Bob's address and is attempting to start an IKE dialogue
with that IP address.
</p>

<p>
Eve captures all the traffic and spoofs replies from the intended peer,
Bob. Instead of getting Bob's FQDN (bob.example.org) Alice gets Eve's
FQDN (eve.example.org) as ID. Alice then queries for the IPSECKEY for
eve.example.org and it validates fine in DNSSEC since it's <i>Eve's</i>
record, not Bob's, and Alice continues the dialogue, not realizing that
she's not talking to Bob.
</p>

<p>
Of course, all this might be visible in logs since Eve sends her real
name as ID but by then it is probably too late.
</p>

<p>
I believe scenario #1 isn't vulnerable, since the FQDN used to query for
A/AAAA and IPSECKEY comes from the user or a local process and not the
peer, but more analysis is needed.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Setting Orange, the 30 day of Chaos in the YOLD 3178 (<time datetime="2012-01-30">2012-01-30</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/ipsec-dns5.html</link>
  <guid>https://hack.org/~mc/blog/ipsec-dns5.html</guid>
  <pubDate>Mon, 30 Jan 2012 13:01:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[OE IPsec part 4, It Works!]]></title>
  <description><![CDATA[<p>
Here's a short status update about my racoon hacking
(<a href="https://hack.org/mc/hacks/ipsec/">project pages</a>). I've made some
progress and found a few silly mistakes.
</p>

<p>
First, the IPSECKEY RRs I added to the hack.org zone had a mistake. I
accidentally marked the keys as DSA keys (algorithm 1) instead of RSA
(algorithm 2). On the other hand, my code didn't even look at the
algorithm to see that we actually had an RSA key. When I added this, it
was the first time I noticed the mistake.
</p>

<p>
I've also changed the way keys are loaded. Instead of loading the public
key to the internal list of keys, I just set it to be the peer's public
key (the <code>struct ph1handler</code> element called <code>rsa_p</code>) after querying DNS.
</p>

<p>
I was stuck for a while here because when loading the binary key with
<code>binbuf_pubkey2rsa()</code> I got an even modulus! It took a while to find out
why. The reason was I accidentally allocated too large a buffer for the
key.
</p>

<p>
Anyway, here's the debug output for node ipsec1 documenting the first
<i>successful</i> security association setup between two nodes with transport
mode opportunistic encryption using DNS keys:
</p>

<pre class="example" id="orgb1d2b1b">
Querying for IPSECKEY for ipsec1.hack.org.
Precedence: 10
GW type: 0
Algorithm: 2
About to load binary RSA key.
rdlength = 514
RSA key exp: 3
RSA key mod:
694913600036185438993921168228021937466057130393896470658117457642787491739628277347739214111009475566180366417075914489628611802311555976477394376215746650261879176034066424255318465503312147134539969215567953271646717204598342561705430835742785081980058810243747062929669386297941389266784069911908790958669624829252049368204263159776885004920853508395529997309049004264686570844655837509348340996362563661222290110998461210029247714608874709448708852854486035445398182880541292532261465658595945459794731603692369323935808537825251587769487509831287328187917490553609545412965997565515176372090553125521899596249141830135227228738309881444637223802982958463985902185081179057608461585384189650076205267084415494806805358202249321673305590906361755185424944833600130678011130562219609244020874378039663815076008003580667266737166092938960118742823445186464541147935210725546258002614112386720194987823671990667030489122370399617127538186975887826632841701328093084393632959251063222976988423463690745266575203616531356014967825161718241064781805911511758034131272770962425058529622542274935036119622969141568437886118555468855661770674419607044935142805396752764250140058372653682999058293922316647030399183884626344870920539322537
2012-01-26 12:37:26: WARNING: CERT validation disabled by
configuration
Checking signature.
Signature OK!!!!!
2012-01-26 12:37:26: INFO: ISAKMP-SA established
2001:16d8:ffff:1::4[500]-2001:16d8:ffff:1::3[500]
spi:4dbf33cd73600138:1f003e83f65af8e8
2012-01-26 12:37:26: [2001:16d8:ffff:1::3] INFO: received
INITIAL-CONTACT
2012-01-26 12:37:27: INFO: initiate new phase 2 negotiation:
2001:16d8:ffff:1::4[500]&lt;=&gt;2001:16d8:ffff:1::3[500]
2012-01-26 12:37:27: INFO: respond new phase 2 negotiation:
2001:16d8:ffff:1::4[500]&lt;=&gt;2001:16d8:ffff:1::3[500]
2012-01-26 12:37:27: INFO: Update the generated policy :
2001:16d8:ffff:1::3/128[0] 2001:16d8:ffff:1::4/128[0] proto=any dir=in
2012-01-26 12:37:27: INFO: IPsec-SA established: ESP/Transport
2001:16d8:ffff:1::4[500]-&gt;2001:16d8:ffff:1::3[500]
spi=58166992(0x3778ed0)
2012-01-26 12:37:27: INFO: IPsec-SA established: ESP/Transport
2001:16d8:ffff:1::4[500]-&gt;2001:16d8:ffff:1::3[500]
spi=160491056(0x990e630)
2012-01-26 12:37:27: INFO: IPsec-SA established: ESP/Transport
2001:16d8:ffff:1::4[500]-&gt;2001:16d8:ffff:1::3[500]
spi=215844934(0xcdd8846)
2012-01-26 12:37:27: INFO: IPsec-SA established: ESP/Transport
2001:16d8:ffff:1::4[500]-&gt;2001:16d8:ffff:1::3[500]
spi=25812946(0x189dfd2)
</pre>

<p>
In case you're worried the line about the CERT validation being disabled
is of no concern. It's just racoon's way of saying that we're not trying
to compare the name in the CN in an X.509 cert with the peer's ID. It
would be quite silly to check that in this scenario when there's no CN
and no cert.
</p>

<p>
I need to polish the code at least a bit before publishing. Stay tuned.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Sweetmorn, the 26 day of Chaos in the YOLD 3178 (<time datetime="2012-01-26">2012-01-26</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/ipsec-dns4.html</link>
  <guid>https://hack.org/~mc/blog/ipsec-dns4.html</guid>
  <pubDate>Thu, 26 Jan 2012 13:45:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[OE IPsec part 3]]></title>
  <description><![CDATA[<p>
At least <i>some</i> progress to report in my
<a href="https://hack.org/mc/hacks/ipsec/">IPsec project</a>. See below for
output of racoon in a rather verbose debug mode.
</p>

<p>
Seen here, racoon gets an FQDN from the peer, queries DNS for its
IPSECKEY, parses the IPSECKEY reply, loads the RSA public key into the
key list and then fails miserable in trying to find it. It fails because
I haven't added the IP addresses to the key item. The addresses are not
readily available in the function where I add the key. Still, it's
progress.
</p>

<pre class="example" id="org47433d0">
ipsec1# ./racoon -F -f /usr/local/etc/racoon/racoon.conf
Foreground mode.
2012-01-20 13:22:24: INFO: @(#)ipsec-tools 0.8.0 (http://ipsec-tools.sourceforge.net)
2012-01-20 13:22:24: INFO: @(#)This product linked OpenSSL 0.9.8q 2 Dec 2010 (http://www.openssl.org/)
2012-01-20 13:22:24: INFO: Reading configuration from "/usr/local/etc/racoon/racoon.conf"
2012-01-20 13:22:24: INFO: 2001:16d8:ffff:1::3[500] used as isakmp port (fd=6)
2012-01-20 13:22:24: INFO: fe80:1::5054:ff:fe12:3456[500] used as isakmp port (fd=7)
2012-01-20 13:22:24: INFO: 10.0.0.23[500] used as isakmp port (fd=8)
2012-01-20 13:22:24: INFO: 127.0.0.1[500] used as isakmp port (fd=9)
2012-01-20 13:22:24: INFO: ::1[500] used as isakmp port (fd=10)
2012-01-20 13:22:24: INFO: fe80:3::1[500] used as isakmp port (fd=11)
2012-01-20 13:22:33: INFO: respond new phase 1 negotiation: 2001:16d8:ffff:1::3[500]&lt;=&gt;2001:16d8:ffff:1::4[500]
2012-01-20 13:22:33: INFO: begin Identity Protection mode.
Querying for IPSECKEY for ipsec2.hack.org.
0000000 0a 00 01 01 03 ba f7 3b 96 c3 d7 97 e7 dc 67 66 
0000010 3c d2 37 e3 7d 0d 47 05 22 6d 21 b5 bd 97 44 b4 
0000020 e1 2d a5 59 0b 5b 91 54 9c 16 d9 29 1e 2e b9 49 
0000030 ba 2a 3a 89 9a a1 dd 64 b6 39 f1 d8 72 7f 33 13 
0000040 41 f4 a1 59 da 1b 9f f7 f2 e9 bf e8 b5 4d ff 2b 
0000050 0e 59 7b 7c 14 f5 30 57 83 d5 ca 39 49 25 80 b5 
0000060 e4 d4 76 fa 1e a4 35 b4 79 67 c5 cf cf 42 31 be 
0000070 d6 0e d8 17 ac e3 8c 6a db 62 f4 f7 3f dc 5e 8a 
0000080 20 fe 05 bc 0f 34 66 41 26 7e 3a b5 03 3f 1d c6 
0000090 ed e8 f6 a5 ff cf f3 c4 cf 73 10 e1 ca 97 d7 24 
00000a0 28 1c f0 83 11 68 3a 46 2a c2 de 93 30 d6 54 e5 
00000b0 cf 43 93 48 88 92 b0 7c 0e 16 32 ea 61 b3 80 71 
00000c0 b8 b8 ac 60 93 d2 e9 30 a5 d3 97 46 2a 54 ae 43 
00000d0 8c da 43 8b b1 30 cd 6a 5f 54 6f 2d 13 fc b6 90 
00000e0 9f 68 db 09 cc 08 60 72 2a 91 6c fd af 9e f7 9c 
00000f0 c9 71 c2 eb 26 82 b9 20 f4 2c 3c f5 cf 6b 8b 5d 
0000100 24 01 bb 1a c5 e4 5f b2 53 27 32 a9 9b 7b 42 f0 
0000110 4d d7 73 e4 e6 3c 39 7b 66 02 b0 cc cf c9 d1 70 
0000120 e9 e6 55 01 ca c9 a2 5f 63 4e be 96 c4 1f d9 dd 
0000130 3d 1c 03 3f 43 da 70 40 84 27 fc 1f fe e4 7c 6a 
0000140 9c 8a f6 3c 77 ed 9f b8 d9 77 8f ef 09 eb c1 36 
0000150 bf b9 ed 25 06 6e fc 38 db ec ab 3a a6 31 02 1c 
0000160 44 b5 2a 44 30 c0 bf 88 08 a4 21 a6 a0 91 4b 67 
0000170 b2 b5 d8 01 5c 90 a3 bc f1 90 62 a6 d1 29 cb 82 
0000180 8f bc 0c b7 11 82 78 38 50 c2 ad 3b 58 c5 44 ff 
0000190 4f 6e db 1a 38 de 46 21 d1 de 90 45 f8 b4 12 65 
00001a0 05 58 99 3c 73 b5 18 51 33 9d f8 10 48 8a 29 ed 
00001b0 92 e5 02 65 75 80 88 fc 65 91 41 13 95 6b a2 e6 
00001c0 88 e6 ba f3 98 aa 92 03 4e 35 03 f2 12 cc 60 c1 
00001d0 ef 96 39 cf 73 b3 9e b9 5b 89 c8 27 8a 4e 74 be 
00001e0 e5 f1 e1 b1 97 42 60 bb 25 c2 8d 4d 2d cd b0 cb 
00001f0 3a 8f 6b d2 42 13 9f 9f 71 84 bc 84 52 12 2e bb 
0000200 80 51 11 6f 2b 
About to parse binary RSA key.
rdlength = 514
0000000 01 03 ba f7 3b 96 c3 d7 97 e7 dc 67 66 3c d2 37 
0000010 e3 7d 0d 47 05 22 6d 21 b5 bd 97 44 b4 e1 2d a5 
0000020 59 0b 5b 91 54 9c 16 d9 29 1e 2e b9 49 ba 2a 3a 
0000030 89 9a a1 dd 64 b6 39 f1 d8 72 7f 33 13 41 f4 a1 
0000040 59 da 1b 9f f7 f2 e9 bf e8 b5 4d ff 2b 0e 59 7b 
0000050 7c 14 f5 30 57 83 d5 ca 39 49 25 80 b5 e4 d4 76 
0000060 fa 1e a4 35 b4 79 67 c5 cf cf 42 31 be d6 0e d8 
0000070 17 ac e3 8c 6a db 62 f4 f7 3f dc 5e 8a 20 fe 05 
0000080 bc 0f 34 66 41 26 7e 3a b5 03 3f 1d c6 ed e8 f6 
0000090 a5 ff cf f3 c4 cf 73 10 e1 ca 97 d7 24 28 1c f0 
00000a0 83 11 68 3a 46 2a c2 de 93 30 d6 54 e5 cf 43 93 
00000b0 48 88 92 b0 7c 0e 16 32 ea 61 b3 80 71 b8 b8 ac 
00000c0 60 93 d2 e9 30 a5 d3 97 46 2a 54 ae 43 8c da 43 
00000d0 8b b1 30 cd 6a 5f 54 6f 2d 13 fc b6 90 9f 68 db 
00000e0 09 cc 08 60 72 2a 91 6c fd af 9e f7 9c c9 71 c2 
00000f0 eb 26 82 b9 20 f4 2c 3c f5 cf 6b 8b 5d 24 01 bb 
0000100 1a c5 e4 5f b2 53 27 32 a9 9b 7b 42 f0 4d d7 73 
0000110 e4 e6 3c 39 7b 66 02 b0 cc cf c9 d1 70 e9 e6 55 
0000120 01 ca c9 a2 5f 63 4e be 96 c4 1f d9 dd 3d 1c 03 
0000130 3f 43 da 70 40 84 27 fc 1f fe e4 7c 6a 9c 8a f6 
0000140 3c 77 ed 9f b8 d9 77 8f ef 09 eb c1 36 bf b9 ed 
0000150 25 06 6e fc 38 db ec ab 3a a6 31 02 1c 44 b5 2a 
0000160 44 30 c0 bf 88 08 a4 21 a6 a0 91 4b 67 b2 b5 d8 
0000170 01 5c 90 a3 bc f1 90 62 a6 d1 29 cb 82 8f bc 0c 
0000180 b7 11 82 78 38 50 c2 ad 3b 58 c5 44 ff 4f 6e db 
0000190 1a 38 de 46 21 d1 de 90 45 f8 b4 12 65 05 58 99 
00001a0 3c 73 b5 18 51 33 9d f8 10 48 8a 29 ed 92 e5 02 
00001b0 65 75 80 88 fc 65 91 41 13 95 6b a2 e6 88 e6 ba 
00001c0 f3 98 aa 92 03 4e 35 03 f2 12 cc 60 c1 ef 96 39 
00001d0 cf 73 b3 9e b9 5b 89 c8 27 8a 4e 74 be e5 f1 e1 
00001e0 b1 97 42 60 bb 25 c2 8d 4d 2d cd b0 cb 3a 8f 6b 
00001f0 d2 42 13 9f 9f 71 84 bc 84 52 12 2e bb 80 51 11 
0000200 6f 2b 
2012-01-20 13:22:33: ERROR: Public RSA key not found for 2001:16d8:ffff:1::3[500] &lt;-&gt; 2001:16d8:ffff:1::4[500]
</pre>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Setting Orange, the 20 day of Chaos in the YOLD 3178 (<time datetime="2012-01-20">2012-01-20</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/ipsec-dns3.html</link>
  <guid>https://hack.org/~mc/blog/ipsec-dns3.html</guid>
  <pubDate>Fri, 20 Jan 2012 14:40:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[Year of Our Lady Discordia 3178]]></title>
  <description><![CDATA[<p>
As you all know it is now YOLD 3178 according to
<a href="https://hack.org/mc/discdate.html">the Discordian calendar</a>.
</p>

<p>
As usual, I went to Berlin after Newtonmass, attending the 28th
incarnation of the Chaos Communication Congress. I thought the most
interesting talk this time was Meredith L. Patterson's
<a href="http://events.ccc.de/congress/2011/Fahrplan/events/4763.en.html">The
Science of Insecurity</a>.
<a href="http://www.youtube.com/watch?v=3kEfedtQVOY">Youtube video available</a>.
Of course, a lot of other talks were interesting as well, but if I had
to choose just one it would be Meredith's. It's worth noting, though,
that Jake and Roger from <a href="http://www.torproject.org/">Tor</a> got a
standing ovation for their work.
</p>

<p>
28C3 was a bit tainted by my back ache. I missed out almost completely
on the third day and stayed in our Prenzlauer Berg flat instead. Thank
goddess for easily available painkillers.
</p>

<p>
As usual we also managed to visit not only
<a href="http://www.dolores-online.de/index_mitte.html">Dolores</a> for burritos
a couple of times but also had brunch twice at the wonderful
<a href="http://www.cafe-morgenrot.de/">Cafe Morgenrot</a>.
</p>

<p>
New year's eve was spent with friends outside of Linköping. I'm back in
Malmö since yesterday. Expect more soon.
</p>

<p>
Carved in 100% recycled electrons by MC on this day, Pungenday, the 3
day of Chaos in the YOLD 3178.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Pungenday, the 3 day of Chaos in the YOLD 3178 (<time datetime="2012-01-03">2012-01-03</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/3178.html</link>
  <guid>https://hack.org/~mc/blog/3178.html</guid>
  <pubDate>Tue, 03 Jan 2012 15:14:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[New xcb-util breaks mcwm, part 2]]></title>
  <description><![CDATA[<p>
Note that David's patches also introduces new functionality and
overrides certain key bindings besides unbreaking the build. I'm not
sure about all his new code. I'll look into it when I'm back in Sweden.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Boomtime, the 70 day of The Aftermath in the YOLD 3177 (<time datetime="2011-12-28">2011-12-28</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/mcwm10.html</link>
  <guid>https://hack.org/~mc/blog/mcwm10.html</guid>
  <pubDate>Wed, 28 Dec 2011 12:04:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[New xcb-util breaks mcwm]]></title>
  <description><![CDATA[<p>
Those of you living on the bleeding edge (hello Arch Linux users!) might
have noticed that the new xcb-util library breaks mcwm. David Jacobs
presented me with this patch:
</p>

<p>
<a href="https://gist.github.com/1478365">https://gist.github.com/1478365</a>
</p>

<p>
I haven't found the time to test it myself but perhaps it can be useful
to some of you.
</p>

<p>
Renato Botelho do Couto, garga@, is importing the new xcb-util to
FreeBSD ports and said he is going to add David's patch to the mcwm port
as well.
</p>

<p>
When I'm back from <a href="http://events.ccc.de/congress/2011/">28C3 @
Berlin</a> I'll have a closer look at all this.
</p>

<p>
If you're also at the 28C3, feel free to get in touch. I'm at 95445 on
the conference phone network.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Boomtime, the 70 day of The Aftermath in the YOLD 3177 (<time datetime="2011-12-28">2011-12-28</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/mcwm9.html</link>
  <guid>https://hack.org/~mc/blog/mcwm9.html</guid>
  <pubDate>Wed, 28 Dec 2011 11:45:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[OE IPsec part 2]]></title>
  <description><![CDATA[<p>
I recently posted a first <a href="https://hack.org/blog/ipsec+dns.html">blog
entry</a> about my Opportunistic Encryption project. Right now I updated
the <a href="https://hack.org/mc/hacks/ipsec/">IPsec project page</a> with an
insight about using rather slack but all-encompassing security policies
like these:
</p>

<pre class="example" id="orgeac58bc">
#!/sbin/setkey -f 

spdflush ; 

spdadd ::/0 ::/0 any -P in ipsec esp/transport//use ; 
spdadd ::/0 ::/0 any -P out ipsec esp/transport//use ; 

spdadd 0.0.0.0 0.0.0.0 any -P in ipsec esp/transport//use ; 
spdadd 0.0.0.0 0.0.0.0  any -P out ipsec esp/transport//use ;
</pre>

<p>
Using this with my racoon configuration with statically configured
public key files works fine.
</p>

<p>
Now racoon only needs to get the public key loaded on demand. This might
happen from my resolver or perhaps with a patch to racoon itself. It can
already lookup CERT records in DNS, albeit the obsolete RFC 2538
version. I might be able to reuse this code to do an IPSECKEY lookup.
</p>

<p>
More later&#x2026;
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Pungenday, the 61 day of The Aftermath in the YOLD 3177 (<time datetime="2011-12-19">2011-12-19</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/ipsec-dns2.html</link>
  <guid>https://hack.org/~mc/blog/ipsec-dns2.html</guid>
  <pubDate>Mon, 19 Dec 2011 13:01:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[Opportunistic Encryption on the IP Layer]]></title>
  <description><![CDATA[<p>
I have spent the last two weeks looking into the problem of doing
opportunistic encryption on the IP layer using IPsec Transport Mode and
public keys in DNS.
</p>
<div id="outline-container-summary" class="outline-2">
<h2 id="summary">Summary</h2>
<div class="outline-text-2" id="text-summary">
<p>
What I have done so far:
</p>

<ul class="org-ul">
<li>Designed a system based on existing standards and practises how to
make end-to-end opportunistic IP layer encryption a real possibility.
See below for details I believe to work.</li>

<li>Read standard texts, documentation and looked briefly at least a few
existing resolvers and IPsec implementations.</li>

<li><p>
Developed a forwarding DNS resolver. When this resolver sees A and
AAAA queries it also looks up a public key (IPSECKEY) for the
corresponding name and sets up a security policy for the addresses
involved to use IPsec when possible.
</p>

<p>
This forwarding resolver needs to talk to a full resolver to work.
This full resolver might implement DNSSEC validation for protection
against active attacks. The full resolver can run on the same node.
</p></li>

<li>Created a website for <a href="https://hack.org/mc/hacks/ipsec/">the
project</a>.</li>

<li>Written this text.</li>
</ul>

<p>
What I plan to do next:
</p>

<ul class="org-ul">
<li>Patch an IKE daemon (probably <a href="http://ipsec-tools.sf.net/">racoon</a>
but not entirely sure yet) to lookup IPSECKEY records and set up new
peers with public keys when given an FQDN as identifier.</li>

<li>Patch the IKE daemon to be able to set up new peers and load public
keys on demand through commands on an administration socket.</li>

<li>Add code to my resolver to use the above command.</li>
</ul>
</div>
</div>
<div id="outline-container-introduction" class="outline-2">
<h2 id="introduction">Introduction</h2>
<div class="outline-text-2" id="text-introduction">
<p>
Storing public keys in DNS and using them together with an IPsec key
daemon makes it possible to use opportunistic encryption on the IP
layer. To do this there are already at least two methods to store a
public key for use with IPsec in DNS, plain public keys in the IPSECKEY
record, <a href="http://www.rfc-editor.org/rfc/rfc4025.txt">RFC 4025</a>
(standards track), and X.509 or SPKI certificates,
<a href="http://www.rfc-editor.org/rfc/rfc4398.txt">RFC 4398</a> (proposed
standard). There is also an established method of using IPSECKEY public
key records to establish IPsec tunnels, usually between security
gateways protecting local networks,
<a href="http://www.rfc-editor.org/rfc/rfc4322.txt">RFC 4322</a> (informational).
</p>

<p>
The implementations I have found that use RFC 4025 and RFC 4322 are the
descendants of the now dead Linux FreeS/WAN project,
<a href="http://www.openswan.org/">Openswan</a> and
<a href="http://strongswan.org/">Strongswan</a>. These systems can be used to
establish tunnels with opportunistic encryption, typically between
security gateways as outlined in RFC 4322.
</p>

<p>
RFC 4398's CERT records are supported by the well-known and portable
<a href="http://ipsec-tools.sf.net/">racoon</a> IKE daemon but naturally only
when a peer initiates contact and not for the use of the initiating
node.
</p>

<p>
I want to fix at least some of this by writing new software or by
patching existing software. My focus is on end-to-end encryption and
authentication: I want to use Transport Mode instead of tunnels and
forward zones in DNS instead of reverse zones. I also want to keep away
from the X.509 format and the well known problems of ASN.1 encoding. I
intend to work with plain public keys and the IPSECKEY record.
</p>

<p>
Typical scenario:
</p>

<ol class="org-ol">
<li>A process on Internet node Alice wants to talk to a process on node
Bob.</li>

<li>Alice looks up the IPv4 address (A record) or IPv6 address (AAAA) in
DNS.</li>

<li>Alice <i>also</i> looks up Bob's public key (IPSECKEY) in DNS.</li>

<li>If the A or AAAA <i>and</i> the IPSECKEY records exist Alice asks her IKE
daemon to establish a security association for Bob (or just sets up a
peer with the public key in the IKE daemon and sets up a security
policy for the involved addresses &#x2013; the security association will be
negotiated if any traffic ever comes).</li>

<li>Alice's IKE daemon talks to Bob's and checks that Bob knows the
private key matching the public key found in DNS and tries to
establish a Security Association.</li>

<li>Through IKE Bob realizes that Alice wants to talk and looks up her
public key in DNS so he can authenticate her as well. Note that the
identifier sent must be the FQDN, not the IP address.</li>

<li>If everything looks fine Alice and Bob have authenticated each other
and have established an IPsec Security Association.</li>
</ol>

<p>
The way to make use of this in everyday communications between arbitrary
nodes is, of course, to be able to control your node's forward DNS
records. This is usually much easier than controlling the PTR record
(reverse zone) for the IP address(es) you happen to use.
</p>

<p>
The usual way of automatically updating your forward zone is by using
the DNS Update protocol,
<a href="http://www.rfc-editor.org/rfc/rfc2136.txt">RFC 2136</a>. Many DHCP
clients support this protocol out of the box. Other systems, for
instance those using IPv6 SLAAC, will have to use some other means,
perhaps by calling the <code>nsupdate</code> program bundled with BIND whenever an
interface is configured.
</p>

<p>
However, even though DNS Update itself is widely supported it's not
certain that the implementations support the IPSECKEY RR. I hope to fix
that, too, at least for some cases.
</p>

<p>
The method outlined above might be used both to protect nodes in an
end-to-end scenario and to protect whole networks behind a security
gateway in a typical NAT44 network.
</p>

<p>
Using IPSECKEY public keys stored in plain DNS should protect against
passive surveillance. If the IPSECKEY record is signed and validated
using DNSSEC it should also protect against an active attack. The
weakest part of the scenario is <i>probably</i> the DNS Update authentication
but I will need help from others in analysing the security implications.
Please feel free to get in touch with me!
</p>

<p>
To make this all work I will have to:
</p>

<ul class="org-ul">
<li>Write a resolver that catches A or AAAA lookups on Alice and initiate
a lookup of the IPSECKEY record as well.</li>

<li>Have the resolver set up security policies for the addresses involved
on the initiating node.</li>

<li>Patch the IKE daemon to lookup IPSECKEY and set up a new peer with a
public key when it receives an FQDN as an identifier.</li>

<li>Possibly patch the IKE daemon to be able to take orders from the
resolver and set up new peers and load a public key on demand.</li>
</ul>

<p>
Other interesting methods for IP layer opportunistic encryption are
<a href="http://www.rfc-editor.org/rfc/rfc5386.txt">RFC 5386,
Better-Than-Nothing Security (BTNS)</a> (standards track), a way of
encrypting traffic <i>without</i> authentication, and the use of IPv6
Cryptographically Generated Addresses (CGA)
(<a href="http://www.rfc-editor.org/rfc/rfc5386.txt">RFC 3972</a>) for public key
authentication purposes.
</p>

<p>
The CGA hack only works on IPv6 but BTNS should work on both IPv4 and
IPv6. Implementing BTNS might be a natural followup on this project.
</p>
</div>
</div>
<div id="outline-container-resolver" class="outline-2">
<h2 id="resolver">Resolver</h2>
<div class="outline-text-2" id="text-resolver">
</div>
<div id="outline-container-forwarding-resolver" class="outline-3">
<h3 id="forwarding-resolver">Forwarding Resolver</h3>
<div class="outline-text-3" id="text-forwarding-resolver">
<p>
I have written a small forwarding resolver in Perl using
<a href="http://www.net-dns.org/">Net::DNS</a> that catches A and AAAA records
and looks up the corresponding IPSECKEY record for the same name. Here's
a typical debug run where I do a lookup for the host name
ipsec2.hack.org in another window:
</p>

<pre class="example" id="org823f1dc">
ipsec1# ./ns.pl
Adding local address:
2001:16d8:ffff:1:0:0:0:3
Any AAAA records for ipsec2.hack.org?
Oh! It's A or AAAA!
Lookup IPSECKEY.
We got an IPSECKEY!
Public key (RSA): AQO69zuWw9eX59xnZjzSN+N9DUcFIm0htb2XRLThLaVZC1uRVJwW2SkeLrlJuio6iZqh3WS2OfHYcn8zE0H0oVnaG5/38um/6LVN/ysOWXt8FPUwV4PVyjlJJYC15NR2+h6kNbR5Z8XPz0IxvtYO2Bes44xq22L09z/cXoog/gW8DzRmQSZ+OrUDPx3G7ej2pf/P88TPcxDhypfXJCgc8IMRaDpGKsLekzDWVOXPQ5NIiJKwfA4WMuphs4BxuLisYJPS6TCl05dGKlSuQ4zaQ4uxMM1qX1RvLRP8tpCfaNsJzAhgciqRbP2vnvecyXHC6yaCuSD0LDz1z2uLXSQBuxrF5F+yUycyqZt7QvBN13Pk5jw5e2YCsMzPydFw6eZVAcrJol9jTr6WxB/Z3T0cAz9D2nBAhCf8H/7kfGqcivY8d+2fuNl3j+8J68E2v7ntJQZu/Djb7Ks6pjECHES1KkQwwL+ICKQhpqCRS2eytdgBXJCjvPGQYqbRKcuCj7wMtxGCeDhQwq07WMVE/09u2xo43kYh0d6QRfi0EmUFWJk8c7UYUTOd+BBIiintkuUCZXWAiPxlkUETlWui5ojmuvOYqpIDTjUD8hLMYMHvljnPc7OeuVuJyCeKTnS+5fHhsZdCYLslwo1NLc2wyzqPa9JCE5+fcYS8hFISLruAURFvKw==
Setting up security policy between 2001:16d8:ffff:1:0:0:0:3 and 2001:16d8:ffff:1:0:0:0:4
</pre>

<p>
Everything here is actually happening and showing real data although the
SPD manipulation is a bit crude at the moment. I call <code>setkey(8)</code> for
every pair of addresses and feed it on stdin.
</p>

<p>
A possible followup on this project might be to implement this simple
forwarding resolver in C and using the PF_KEY interface directly or,
perhaps better, to patch an existing resolver like Unbound.
</p>

<p>
Please note that there is no DNSSEC validation in this case. We rely on
the full resolver, which might run on the same node, to do any
validation of the resource records. This might change in the future.
</p>

<p>
The source code for the resolver is available at
<a href="https://hack.org/mc/hacks/ipsec/">the project website</a>.
</p>
</div>
</div>
<div id="outline-container-full-resolver" class="outline-3">
<h3 id="full-resolver">Full Resolver</h3>
<div class="outline-text-3" id="text-full-resolver">
<p>
The <a href="http://unbound.net/">Unbound</a> DNS resolver is extendable using
Python. I had an idea to write a Python module to do what the forwarding
resolver above does but using Unbound's DNSSEC validation.
</p>

<p>
I have done initial experiments with a simple Python script but I'm
still not sure if I can do the actual IPSECKEY query from <i>within</i> the
script or if I have to patch the C code. For now, I'll keep
experimenting with my Net::DNS resolver to try to make the entire system
work before looking at something else.
</p>

<p>
Here's some sample code for a skeleton of a Python module:
</p>

<pre class="example" id="org9a07d5f">
def init(id, cfg):
    log_info("pythonmod: init called, module id is %d port: %d script: %s" % (id, cfg.port, cfg.python_script))
    return True

def deinit(id):
    log_info("pythonmod: deinit called, module id is %d" % id)
    return True

def inform_super(id, qstate, superqstate, qdata):
    return True

def operate(id, event, qstate, qdata):
    print "operate(): event is ", event

    if event == MODULE_EVENT_NEW or event == MODULE_EVENT_PASS:
        print("Sending original query \"%s\", type %s (%d), class %s (%d) " % (
            qstate.qinfo.qname_str, qstate.qinfo.qtype_str,
            qstate.qinfo.qtype,
            qstate.qinfo.qclass_str, qstate.qinfo.qclass)) 

        # Pass on the new event to the iterator for a lookup.
        qstate.ext_state[id] = MODULE_WAIT_MODULE 
        return True

    if event == MODULE_EVENT_MODDONE:
        # Iterator finished. We might have a reply.

        print("Reply for query \"%s\", type %s (%d), class %s (%d) " % (
            qstate.qinfo.qname_str, qstate.qinfo.qtype_str,
            qstate.qinfo.qtype,
            qstate.qinfo.qclass_str, qstate.qinfo.qclass)) 

        if qstate.return_msg and qstate.qinfo.qtype_str == "A":
            print("Store away reply for A record.")

            # TODO: Store away the original message.

            # Look up IPSEC.
            print("Look up IPSECKEY")

            # XXX Now what?

        # We're done.
        qstate.ext_state[id] = MODULE_FINISHED 
        return True

    qstate.ext_state[id] = MODULE_ERROR
    return True

log_info("pythonmod: script loaded.")
</pre>

<p>
At the "XXX Now what" I tried with what I thought was the obvious:
Create a new qstate and fill it with an IPSEC query and then do:
</p>

<pre class="example" id="orgd491eb1">
# Pass on the new event to the iterator for a lookup.
newq.ext_state[id] = MODULE_WAIT_MODULE
</pre>

<p>
but it didn't work. I'm sure I made some mistake. I tried a lot of
different versions of this but nothing I did worked and I needed to
spend time on other things.
</p>

<p>
Someone more knowledgeable about the insides of Unbound might want to
pick this up or at least comment on it. If it's impossible to do from
Python I would appreciate if someone told me so I can focus on patching
Unbound in C instead, if I can find the time.
</p>
</div>
</div>
</div>
<div id="outline-container-key-daemon" class="outline-2">
<h2 id="key-daemon">Key Daemon</h2>
<div class="outline-text-2" id="text-key-daemon">
<p>
The resolver naturally needs to work in concert with a key daemon to
dynamically set up new peers with public keys for authentication.
</p>

<p>
The key daemon can also be controlled by the resolver to initiate a
security association but the initiation might also be triggered by a
security policy which, in turn, might have been set by the resolver. I'm
not yet sure which is the best alternative. The current implementation
of the resolver sets IPsec security policies by calls to <code>setkey</code> on the
initiating side.
</p>

<p>
On the responding side I use racoon's automatic policy generation
("generate_policy on") to set up the security policy for traffic.
</p>
</div>
<div id="outline-container-available-key-daemons" class="outline-3">
<h3 id="available-key-daemons">Available Key Daemons</h3>
<div class="outline-text-3" id="text-available-key-daemons">
<p>
Here are some available key daemons I have found:
</p>

<ul class="org-ul">
<li>racoon from
<a href="http://ipsec-tools.sf.net">ipsec-tools</a>/<a href="http://www.kame.net/">KAME</a>.
BSD license. C. Supports public keys. Supports CERT DNS lookups.
Supports automatic policy generation. IKEv1.</li>

<li><a href="http://www.racoon2.wide.ad.jp/">racoon2</a> from WIDE. BSD license. C.
Doesn't support plain public keys? Supports X.509. IKEv1 and v2.</li>

<li>OpenBSD
<a href="http://www.openbsd.org/cgi-bin/man.cgi?query=isakmpd&amp;sektion=8">isakmpd</a>.
BSD license. C. Supports X.509.</li>

<li>OpenBSD
<a href="http://www.openbsd.org/cgi-bin/man.cgi?query=iked&amp;sektion=8">iked</a>.
ISC license. C. Supports X.509 and plain public keys.</li>

<li>charon (<a href="http://strongswan.org/">Strongswan</a> and
<a href="http://www.openswan.org/">Openswan</a>). GPLv2. C. Supports public
keys. IKEv2. Supports IPSECKEY lookups?</li>

<li>pluto (<a href="http://strongswan.org/">Strongswan</a> and
<a href="http://www.openswan.org/">Openswan</a>). GPLv2. C. Supports public
keys. IKEv1. Supports IPSECKEY lookups? Not available on FreeBSD.</li>

<li><a href="http://sourceforge.net/projects/ikev2">IKEv2</a>. Alpha status. Linux
only? Web page <a href="http://ikev2.zemris.fer.hr/">http://ikev2.zemris.fer.hr/</a> not available.</li>

<li><a href="http://openikev2.sourceforge.net/">OpenIKEv2</a>. C++. IKEv2.</li>
</ul>

<p>
Of these racoon, racoon2, isakmpd and Strongswan's charon are the ones
available in the FreeBSD's ports tree.
</p>

<p>
I chose to look closer at racoon since it has a permissive license, it's
multiplatform (FreeBSD, NetBSD and Linux), it's written in a language I
understand and it has some nice features like automatic policy
generation. Time permitting I will look closer at at least Strongswan's
charon and OpenBSD's iked as well.
</p>
</div>
</div>
<div id="outline-container-experiments" class="outline-3">
<h3 id="experiments">Experiments</h3>
<div class="outline-text-3" id="text-experiments">
<p>
For reference, here are some notes on how I configured two qemu
instances running FreeBSD to use IPsec with public key authentication
using racoon and my own resolver to set up the security policy.
</p>

<p>
I run IPsec enabled FreeBSD kernels. This requires a kernel recompile
with "option IPSEC" and "device crypto". They run on two qemu instances
connected through a bridged host interface. I start them like this:
</p>

<pre class="example" id="orga60346c">
qemu -enable-kqemu -nographic -hda /backup/slask/fbsd.img -m 512M -net nic,model=e1000 -net tap,name=tap0,script=no

qemu -enable-kqemu -nographic -hda /backup/slask/fbsd2.img -m 512M -net nic,model=e1000,macaddr=52:54:00:12:34:57 -net tap,name=tap1,script=no
</pre>

<p>
The use of the tap interface was configured like this on the host
running the qemu instances:
</p>

<p>
Add this to <code>/etc/sysctl.conf</code>:
</p>

<pre class="example" id="org23de1a1">
net.link.tap.user_open=1
net.link.tap.up_on_open=1
</pre>

<p>
<code>/etc/devfs.conf</code>:
</p>

<pre class="example" id="org12291ca">
perm    /dev/tap0       0660
perm    /dev/tap1       0660
</pre>

<p>
This will allow users in group wheel (default owner of /dev/tap*) to use
the devices. Add yourself to the wheel group.
</p>

<p>
The bridge was created by adding this to <code>/etc/rc.conf</code>:
</p>

<pre class="example" id="org1a19d2d">
cloned_interfaces="tap0 tap1 bridge0"
ifconfig_bridge0="addm em0 addm tap0 addm tap1 up"
</pre>

<p>
I manually configured IPsec with public key authentication using using
the racoon IKE daemon from
<a href="http://ipsec-tools.sf.net">ipsec-tools</a>/<a href="http://www.kame.net/">KAME</a>.
</p>

<p>
I generated the key pairs like this:
</p>

<pre class="example" id="org4546768">
% plainrsa-gen -b 4096 -f privatekey.rsa
</pre>

<p>
At the top of the generated file there is a public key beginning with
"#: PUB". Copy the public key to your public key directory (path
certificate in the racoon configuration below) on the other host and
remove the "#".
</p>

<p>
I created this racoon configuration:
</p>

<pre class="example" id="orgc802740">
path certificate "/usr/local/etc/racoon/certs";

remote anonymous
{       
        exchange_mode main;
        # Doesn't really matter if we use main mode or aggressive
        # mode. Our identy isn't secret and we don't send any
        # hashes of a pre-shared key in the clear.
        # exchange_mode aggressive;
        lifetime time 24 hour;
        my_identifier fqdn "ipsec2.hack.org";
        # On the other host:
        # my_identifier fqdn "ipsec1.hack.org";
        certificate_type plain_rsa "privatekey.rsa";

        # The other host's public key:
        peers_certfile plain_rsa "pubkey1.rsa";
        # On the other side:
        # peers_certfile plain_rsa "pubkey2.rsa";

        # Automatically generate a Security Policy when the other
        # side initiates dialogue.
        generate_policy on;
        
        proposal
        {       
                encryption_algorithm aes;
                hash_algorithm sha256;

                # Use public key authentication:
                authentication_method rsasig;

                dh_group 2;
        }
}

sainfo anonymous
{        
         lifetime time 1 hour;
         encryption_algorithm aes;
         authentication_algorithm hmac_sha256;
         compression_algorithm deflate;
}
</pre>

<p>
This configuration file will automatically generate fitting security
policies on the responding side after suggestions from the initiator. If
you want to set policies manually instead, create files like these and
run them (on one host, reverse it on the other host)::
</p>

<pre class="example" id="org0f20304">
#!/sbin/setkey -f

spdflush;
spdadd 10.0.0.22 10.0.0.23 any -P out ipsec esp/transport//require ;
spdadd 10.0.0.23 10.0.0.22 any -P in ipsec esp/transport//require ;
</pre>

<p>
I tried with a "require" policy on IPv6 as well but for some reason yet
to be discovered it didn't work. This, however, did:
</p>

<pre class="example" id="org1856527">
spdadd 2001:16d8:ffff:1::3 2001:16d8:ffff:1::4 any -P out ipsec esp/transport//use ;
spdadd 2001:16d8:ffff:1::4  2001:16d8:ffff:1::3 any -P in ipsec esp/transport//use ;
</pre>

<p>
It might be a problem with Neighbor Discovery. I will investigate
further.
</p>

<p>
Using this I can initiate an IKE dialogue between the two racoons by
simply pinging the other host. After the IKE dialogue is finished the
pings goes through and all traffic between the two hosts is encrypted.
</p>

<p>
Starting without security policies I can run my forwarding resolver,
ns.pl, and have it set up policies as required on the initiating node.
When it's running I can ping the other host by name and the resolver
catches the name lookup, sets up a security policy and the racoon on my
side starts negotiating. With racoon's automatic policy generation on
the responding side traffic starts to flow.
</p>

<p>
I configured both the hosts in my DNS zone like this (one of the hosts):
</p>

<pre class="example" id="org5b59145">
ipsec1                  IN      AAAA    2001:16d8:ffff:1::3

ipsec1                  IN      IPSECKEY ( 10 0 1
                                           .
                                           AQOqVjnhO/eQdETVCH7r2am7yUixEcWUgyffNhdmTigiLS7VZODtxC2ii3ySKEOD6ADxykvgn6KVotSYmSq2kNAdmbElkMl3stAHE+E327vSkX3vKR3/l23Wrrv0iUlJFm+5WK1TJC6jTkjH8Fc0j77mdATGfmWYC4MdONuPUDMeEaMu9/XJm+X0ZWfGG/q1158smfkwsRvKh1KZCJLuGYv+Y85kRnMwnejtQRpDMZbjNr8dtS90MR7kGgQIJ/ctgc//MRjpTo8NTWncDp9KKvuNcBxsPPL08YTF/BkcG60SeeKD1jqjdnY+VRFkrv3BO0WyFEib/fuxeA2FJLYMYOuGG3n1KKSLckD7B5AfNOKKME94f+glY65M8njVVAIKahufUzp+DIW9AgURxuAwNoCiRpS3i+sh7lY/dT5AzbZ8Ewl2jgsdX/neAXCiOWrSMUZGyARNcvAsOleRk93pb0y43FEU8f8OcS027p+ZbBHVbHYbLFEX6eg3NbJso3LTL6Gx8SxWX8W6KvBjFf7sWO4ehEcXPJXJ+lsY/UQfAbeFlUTicQd83+rVuuHfJvbxYWx0Sia6bERlKRSYTWT4FBwH3AwMTLQRskWasyBTbLbk1KHkUBZv4Ts5J+pGzAVsbPLINLnb5/lifjZdPGca6yn+5mbkKdjPSyV0ZHYfqiO4qQ==
</pre>

<p>
and the corrresponding in the reverse zone:
</p>

<pre class="example" id="org6fc4ec2">
3.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1.0.0.0.f.f.f.f.8.d.6.1.1.0.0.2.ip6.arpa. IN PTR ipsec1.hack.org.
</pre>

<p>
That is all for now. Please visit the
<a href="https://hack.org/mc/hacks/ipsec/">project web</a> and stay tuned for
more.
</p>
</div>
</div>
</div>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Pungenday, the 61 day of The Aftermath in the YOLD 3177 (<time datetime="2011-12-19">2011-12-19</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/ipsec-dns.html</link>
  <guid>https://hack.org/~mc/blog/ipsec-dns.html</guid>
  <pubDate>Mon, 19 Dec 2011 10:39:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[Privilege seperation in radns]]></title>
  <description><![CDATA[<p>
<i>Finally</i> committed my changes for privelege seperation to the
<a href="https://hack.org/mc/hacks/radns">radns project</a>. See the git repo.
</p>

<p>
The major change is a small and pretty stupid helper program called
<code>raresolv</code> whose only job is to read single characters ("+" or "-") on a
pipe and to call the <code>resolvconf</code> program to add or delete <code>resolv.conf</code>
data.
</p>

<p>
I've had the code finished since late October but haven't got around to
committing it until now.
</p>

<p>
I've just tested it on Debian Linux with the resolvconf program and on
FreeBSD with
<a href="http://roy.marples.name/projects/openresolv">openresolv</a>.
</p>

<p>
I'm not ready for a new release just yet. I'm sure I did some mistakes.
I also need to have a patch ready for the FreeBSD ports files.
</p>

<p>
Please pull and test!
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Setting Orange, the 48 day of The Aftermath in the YOLD 3177 (<time datetime="2011-12-06">2011-12-06</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/radns7.html</link>
  <guid>https://hack.org/~mc/blog/radns7.html</guid>
  <pubDate>Tue, 06 Dec 2011 14:55:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[New release of mcwm and some speculations]]></title>
  <description><![CDATA[<p>
As you may know if you subscribe to the mcwm-announce mailing list I
released a new version of <a href="https://hack.org/mc/hacks/mcwm/">the mcwm window manager</a> in late november.
</p>

<p>
<i>Please note</i> that from this release <code>-b</code> is no longer a boolean
option. It now requires a numeric argument, the number of pixels in
the border. 0 means mcwm asks the X server not to draw any borders.
</p>

<p>
From the NEWS file:
</p>

<pre class="example" id="org1ec3aac">
2011-11-22

  * Now optionally starts programs when MODKEY + mouse buttons are
    pressed on root window. See config.h for configuration and the
    manual page for an example.

    Also simplified starting programs.

2011-11-17

  * In a ConfigureRequest we no longer obey window movements not
    initiated by the user.

  * Fixed bug where client-initiated resize could resize outside of
    physical screen.

  * Fixed bug with topright command on other physical screens.

  * -b no longer boolean. Now takes parameter number of pixels.
</pre>

<p>
There are a few items left in the TODO file. I'm currently swamped
with other things but two things stand out: 1) window operations menu,
and, 2) separate workspaces per physical screens.
</p>

<p>
<a href="http://chneukirchen.org/">Christian Neukirchen</a> sent me a nice patch for hiding windows and
getting them back again with the help of a script he wrote and the
9menu program. I'm thinking about what to do with them. Chances are
I'm going to include a menu handling for hidden windows in the mcwm
proper instead of relying on an external program.
</p>

<p>
More later&#x2026;
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Prickle-Prickle, the 47 day of The Aftermath in the YOLD 3177 (<time datetime="2011-12-05">2011-12-05</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/mcwm8.html</link>
  <guid>https://hack.org/~mc/blog/mcwm8.html</guid>
  <pubDate>Mon, 05 Dec 2011 09:56:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[FSCONS 2011]]></title>
  <description><![CDATA[<p>
I recently attended the <a href="http://fscons.org/">FSCONS conference</a> in Gothenburg. As usual, my
friend Måns (<a href="http://bergodalbana.blogspot.com/">blog in Swedish here</a>) graciously allowed me to stay at
his place. There was hardly any time outside the conference but we had
a really nice, long dinner at the vegetarian restaurant <a href="http://www.restaurangsolrosen.se/">Solrosen</a> in
excellent company. Thanks!
</p>

<p>
This was my third(?) year visiting the conference but the first year I
held a presentation. I presented my window manager, <a href="https://hack.org/mc/hacks/mcwm/">mcwm</a> and the <a href="http://xcb.freedesktop.org/">X
Protocol C-language Binding</a>. 17:15 on a Sunday might have been an
unfortunate time slot, perhaps, but there were still some 20&#x2013;30
people attending my talk.
</p>

<p>
Of course, given my slight social phobia and the usual stage fright
that comes with that, I was really nervous. I was especially nervous
about doing the presentation in English. I think it went reasonably
well in the end. Thank Goddess for beta blockers.
</p>

<p>
The talk was filmed. You will probably eventually find the film linked
from the <a href="http://my.fscons.org/schedule/session/79/">FSCONS schedule slot for my talk</a>.
</p>

<p>
<a href="https://hack.org/mc/writings/mcwm-slides.pdf">My slides</a> weren't that interesting but you can look at them anyway if
you like. Most information was given orally. I have to clean up my
notes for the talk a bit before publishing them. Stay tuned.
</p>

<p>
I attended many other talks. The most interesting talk was the
<a href="http://my.fscons.org/schedule/session/47/">OpenRISC presentation</a>, about a small MIPS-like CPU that can be used on
an FPGA and or be synthesized on an ASIC. It's available under a free
license at <a href="http://opencores.org/">OpenCores</a>.
</p>

<p>
The OpenCores repository itself is now managed by Swedish company
<a href="http://www.orsoc.se/">ORSoC</a>. They have more information on their own web pages about <a href="http://orsoc.se/openrisc1200-platform-2/">the
OpenRISC 1200 Platform</a>.
</p>

<p>
ORSoC also sells FPGA development boards. They showed us a <a href="http://opencores.org/or1k/Ordb2a-ep4ce22">new board</a>
at FSCONS based on an Altera FPGA, with SDRAM, Ethernet, USB, SD, JTAG
and UARTs. It seems a really complete little board to do lots of cool
stuff with. Really cool and pretty cheap.
</p>

<p>
I also enjoyed <a href="http://www.jemarch.net/">Jose Marchisi</a>'s <a href="http://my.fscons.org/schedule/session/80/">Algol 68 talk</a>. He has done impressive
work writing a Brainfuck frontend for GCC in Algol 68! The next step
is, of course, to write a real Algol 68 frontend in Algol 68. 
That's a brainfuck if I ever saw one.
</p>

<p>
After FSCONS I was really washed out and needed some time by myself or
close to my family. Naturally, I also succumbed to a case of the
common cold. This prevented me from using the free ticket to <a href="https://www.iis.se/en/">.SE</a>'s
yearly <a href="http://www.internetdagarna.se/">Internet Days</a> in Stockholm. The ticket went to my friend
Martin. I'm waiting as I write for some report on the conference and
especially any poster sessions not listed in the schedule.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Boomtime, the 35 day of The Aftermath in the YOLD 3177 (<time datetime="2011-11-23">2011-11-23</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/fscons2011.html</link>
  <guid>https://hack.org/~mc/blog/fscons2011.html</guid>
  <pubDate>Wed, 23 Nov 2011 10:46:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[The Country Cottage]]></title>
  <description><![CDATA[<p>
Your humble correspondent recently had the pleasure to be invited to
this nice country cottage:
</p>


<figure id="org2d8faff">
<img src="https://hack.org/mc/images/stuga.jpg" alt="stuga.jpg">

<figcaption><span class="figure-number">Figure 1: </span>A cottage on a lonely road.</figcaption>
</figure>

<p>
There was a slightly overgrown but very nice garden with a few berries
still left. In October!
</p>


<figure id="org3f4614d">
<img src="https://hack.org/mc/images/smultron.jpg" alt="smultron.jpg">

<figcaption><span class="figure-number">Figure 2: </span>Mmm.</figcaption>
</figure>

<p>
I was reminded about Lawrence's Clouds Hill, although I believe this
cottage has many facilities in comparison with T.E.'s ascetic digs.
Nevertheless, I think it serves much the same purpose for its owner. I
admit to being a bit jealous.
</p>

<p>
In the evening I cooked a simple vegan dinner with an apple pie for
dessert. There was wine and a very good brandy (Braastad's XO) to go
with the coffee. We sat and talked late about many things; going all the
way from the foundation of mathematics we even touched the rather dull
subject of computer security.
</p>

<p>
I left the day after feeling a bit down, wishing I could isolate myself
quite as easily. Since then I haven't turned on my computer and mostly
spent my time at home, caring for a sick daughter and reading a
biography of Kim Philby and no less than two Le Carré novels.
</p>

<p>
After reading the spy novels I have to admit I'm almost ashamed that I
had suspected Mr. Cornwell of writing pulp fiction. This is great
literature.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Prickle-Prickle, the 60 day of Bureaucracy in the YOLD 3177 (<time datetime="2011-10-06">2011-10-06</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/cottage.html</link>
  <guid>https://hack.org/~mc/blog/cottage.html</guid>
  <pubDate>Thu, 06 Oct 2011 10:59:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[pfSense looks at radns]]></title>
  <description><![CDATA[<p>
Seth Mos told me that the <a href="http://pfsense.org/">pfSense</a>
firewall/router project is looking to incorporate my radns program.
</p>

<p>
More information here:
</p>

<p>
<a href="http://redmine.pfsense.org/issues/1836">http://redmine.pfsense.org/issues/1836</a>
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Boomtime, the 53 day of Bureaucracy in the YOLD 3177 (<time datetime="2011-09-29">2011-09-29</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/radns-pfsense.html</link>
  <guid>https://hack.org/~mc/blog/radns-pfsense.html</guid>
  <pubDate>Thu, 29 Sep 2011 09:02:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[radns in FreeBSD ports]]></title>
  <description><![CDATA[<p>
<a href="https://hack.org/mc/hacks/radns/">radns</a> is now in the FreeBSD ports
system as <code>dns/radns</code>. Yay!
</p>

<p>
This means I have three programs in ports:
<a href="https://hack.org/mc/hacks/kbdscan">kbdscan</a>, a small program to show
raw keyboard scancodes in the console (<code>misc/kbdscan</code> &#x2013; I would have
chosen sysutils, but I didn't commit it), my window manager
<a href="https://hack.org/mc/hacks/mcwm/">mcwm</a> (<code>x11-wm/mcwm</code>) and now
<code>dns/radns</code>.
</p>

<p>
Yes, I know that <code>rtsold</code> in the coming release, FreeBSD 9, also
supports the RDNSS option in IPv6 RA. Still, radns is more portable to
non-BSDs and has had RDNSS support longer.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Sweetmorn, the 52 day of Bureaucracy in the YOLD 3177 (<time datetime="2011-09-28">2011-09-28</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/radns6.html</link>
  <guid>https://hack.org/~mc/blog/radns6.html</guid>
  <pubDate>Wed, 28 Sep 2011 13:10:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[XS4All and Service Above and Beyond the Call of Duty]]></title>
  <description><![CDATA[<p>
We have a machine in co-location at <a href="http://www.xs4all.nl/en/">XS4All</a>
in Amsterdam, The Netherlands. A few weeks ago the machine suddenly
died. No response on the serial console and nothing happened if I
remotely toggled the power switch (both the serial console and the
remote power control were selling points when we decided on XS4All).
</p>

<p>
When nothing seemed to help we called the helpdesk and an on-site
technician went to have a look. He said “I can see the problem. It's
your power supply.“ Uh-oh!
</p>

<p>
A little while later the same technician, Gerben, called back and said
"You're in a bit of luck". Apparently XS4All also use Supermicro boxen
and he simply lifted a power supply from one of their decommissioned
servers and replaced ours!
</p>

<p>
Now that's service above and beyond the call of duty. Thanks, Gerben! I
hope you liked the cookies.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Setting Orange, the 51 day of Bureaucracy in the YOLD 3177 (<time datetime="2011-09-27">2011-09-27</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/xs4all.html</link>
  <guid>https://hack.org/~mc/blog/xs4all.html</guid>
  <pubDate>Tue, 27 Sep 2011 14:40:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Sherlock Holmes]]></title>
  <description><![CDATA[
<figure id="org69c9bfc">
<img src="https://hack.org/mc/images/Sherlock_Holmes_Portrait_Paget.jpg" alt="Sherlock_Holmes_Portrait_Paget.jpg">

<figcaption><span class="figure-number">Figure 1: </span>Paget portrait of Sherlock.</figcaption>
</figure>

<p>
I'm a fan of all things Sherlock Holmes. When I somewhat disillusioned
resigned from my latest job to become an at-home dad almost three years
ago the first thing I did was to re-read <i>all</i> the Sherlock Holmes
stories. I felt a lot better afterwards.
</p>

<p>
There's much to be said about Sir Arthur, about his silly infatuation
with spiritism and how he was fooled by the
<a href="http://www.randi.org/library/cottingley/">Cottingley fairies
photographs</a>, but I'm glad he invented Sherlock. Of course, Sherlock
himself is not always as scientific as I would like him to be, but
there's a lot to be said about the feeling of intellectual wonder I get
when reading the adventures.
</p>

<p>
I don't know why it has taken me so long to view the new Sherlock Holmes
TV-series, <a href="http://www.imdb.com/title/tt1475582/">Sherlock</a>, but not
owning a TV set might be a part of the explaination. The series won the
2011 BAFTA Television Award for Best Drama Series and it's a wonderful
adaption to modern times. It's based on new material and not just an
adaption of the original adventures, but a lot of the material is taken
more or less unchanged from the originals. I like the modern twists a
lot.
</p>

<p>
Unfortunately, the new TV-series was only three episodes. I hear a
second season is in production and I'm looking forward to see what they
make of it.
</p>

<p>
My only gripe with the series is Moriarty. When we finally meet him he
strikes me as more creepy than evil. What a letdown!
</p>

<p>
Benedict Cumberbatch is great as a young Sherlock and dresses
wonderfully in a very good looking Spencer Hart suit and a dramatic
Belstaff coat. Of course, in my mind, Sherlock still looks like Jeremy
Brett:
</p>


<figure id="org22c330f">
<img src="https://hack.org/mc/images/brett-sherlock1.jpg" alt="brett-sherlock1.jpg">

<figcaption><span class="figure-number">Figure 2: </span>Jeremy Brett as Sherlock.</figcaption>
</figure>

<p>
I was a little surprised seeing Rupert Graves as DI Lestrade. I don't
remember seeing Rupert since he was playing Freddie in
<a href="http://www.imdb.com/title/tt0091867/">A Room with a View</a>, one of my
teenage favourites. Yes, I confess that my infatuation with the movie
probably had at least something to do with a young Helena Bonham-Carter
but I blame Julian Sands, too.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Setting Orange, the 51 day of Bureaucracy in the YOLD 3177 (<time datetime="2011-09-27">2011-09-27</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/sherlock.html</link>
  <guid>https://hack.org/~mc/blog/sherlock.html</guid>
  <pubDate>Tue, 27 Sep 2011 10:39:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Jaeger-LeCoultre]]></title>
  <description><![CDATA[<p>
The other day I was standing ~10 cm from some Jaeger-LeCoultre Master
Ultra Thins. So close and so far away.
</p>


<figure id="org65be6fc">
<img src="https://hack.org/mc/images/jlc.jpg" alt="jlc.jpg">

</figure>

<p>
<a href="http://www.thepurists.com/watch/features/8ohms/jlchw/index.html">Wonderful
walkthrough of the MUT by John Davis.</a>
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Setting Orange, the 51 day of Bureaucracy in the YOLD 3177 (<time datetime="2011-09-27">2011-09-27</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/jlc.html</link>
  <guid>https://hack.org/~mc/blog/jlc.html</guid>
  <pubDate>Tue, 27 Sep 2011 08:55:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Post-It Invaders]]></title>
  <description><![CDATA[<p>
The Post-It craze reaches the neighbours.
</p>


<figure id="org8a9019c">
<img src="https://hack.org/mc/images/invaders.jpg" alt="invaders.jpg">

<figcaption><span class="figure-number">Figure 1: </span>Space Invader made of Post-It Notes</figcaption>
</figure>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Setting Orange, the 51 day of Bureaucracy in the YOLD 3177 (<time datetime="2011-09-27">2011-09-27</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/invaders.html</link>
  <guid>https://hack.org/~mc/blog/invaders.html</guid>
  <pubDate>Tue, 27 Sep 2011 08:33:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[radns, part 5]]></title>
  <description><![CDATA[<p>
As you may or may not know, I have received some funding for the
<a href="https://hack.org/mc/hacks/radns/">radns project</a>, my IPv6 Router
Advertisment client from <a href="http://www.iis.se/">.SE</a>, the foundation
behind the Swedish ccTLD.
</p>

<p>
I wrote <a href="https://hack.org/mc/hacks/radns/slutrapport-radns.pdf">a
report on the work</a> (in Swedish) in August that some of you might want
to read.
</p>

<p>
On August 9 I sent radns to FreeBSD ports. I also have a preliminary
Debian package ready. See <a href="https://hack.org/mc/hacks/radns/">the
project web pages</a>.
</p>

<p>
Since then I haven't spent much time with radns but what I <i>have</i> done
is to add better integration with the resolvconf program in Debian. You
see, resolvconf assumes that you're running as root and radns quickly
gives up root and runs as a non-privileged user. I have added some sort
of privelege seperation to work around this. I did the work in a
separate program and will soon integrate with radns. Look for it in the
git repo.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Boomtime, the 48 day of Bureaucracy in the YOLD 3177 (<time datetime="2011-09-24">2011-09-24</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/radns5.html</link>
  <guid>https://hack.org/~mc/blog/radns5.html</guid>
  <pubDate>Sat, 24 Sep 2011 13:02:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[JohnnyLove and the Nano Technology]]></title>
  <description><![CDATA[<p>
No, it's not a movie or a comic book. I have a new coat. Here's a photo
of me trying it on in front of the large mirror in Ludvig's room:
</p>


<figure id="orgc35b7a4">
<img src="https://hack.org/mc/images/coat-small.jpg" alt="coat-small.jpg">

</figure>

<p>
I wouldn't normally write about it here but after the purchase I noticed
the phrase "Made with Nano Technology" on
<a href="http://www.johnnylovefashion.com/ds_product_info.php/cPath/37/products_id/375">JohnnyLove's
web site</a>. I would like to comment on that.
</p>

<p>
Nanotechnology? Really? Is the coat full of tiny robots that rebuild the
coat when needed like in a Charlie Stross novel? While that would be
insanely cool it's not even close to the truth. What they really mean is
that the cotton garment has been treated with silicone and seems more or
less water resistant and wind proof. Considering the really wet and
windy summer we've had here in the south of Sweden this is certainly a
good thing but I don't think nanotechnology comes into it.
</p>

<p>
Funny.
</p>

<p>
Btw, the price mentioned on the web page, €4200, is clearly wrong too,
by an order of magnitude or so&#x2026;
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Boomtime, the 48 day of Bureaucracy in the YOLD 3177 (<time datetime="2011-09-24">2011-09-24</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/johnny-love-coat.html</link>
  <guid>https://hack.org/~mc/blog/johnny-love-coat.html</guid>
  <pubDate>Sat, 24 Sep 2011 12:48:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[English]]></title>
  <description><![CDATA[<p>
I've been asked several times if I would consider writing my blog in
English. I'm going to try it for a while. I'm sure my English could use
the practise.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Boomtime, the 48 day of Bureaucracy in the YOLD 3177 (<time datetime="2011-09-24">2011-09-24</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/english.html</link>
  <guid>https://hack.org/~mc/blog/english.html</guid>
  <pubDate>Sat, 24 Sep 2011 11:29:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Genesi Efika MX Smartbook]]></title>
  <description><![CDATA[<p>
Jag fick ganska nyligen en
<a href="http://www.genesi-usa.com/products/smartbook">Genesi Smartbook</a> av
min vän <a href="http://www.df.lth.se/~triad/">Linus</a>. Det är en kul liten
maskin på under 1 kg helt utan rörliga delar.
</p>

<p>
Den är byggd runt en Freescale i.MX515 SoC med en ARM Cortex-A8 (ARMv7)
på 800MHz och 512 meg RAM. Det är 16 gig fastlödd SSD på den men det
finns plats för SD och microSD. Den är alltså ganska långsam och har
lite ont om resurser jämfört med andra netbooks och ultraportabla
laptops.
</p>

<p>
Den bootar trots sin sega CPU ändå snabbt. Det tar 16 sekunder från att
jag trycker på strömbrytaren tills jag har en login-prompt i console.
Det tar 6 sekunder att starta X och få en prompt som frågar efter min
SSH-lösenfras. Direkt efteråt har jag en terminalemulator att börja
arbeta i, snabbare om jag skippar X, förstås.
</p>

<p>
Shutdown tar 4 sekunder. Jag har inte fått suspend att fungera. Någon
som fått det att fungera?
</p>

<p>
Dess största nackdel är att en ganska blank skärm:
</p>


<figure id="orgd0105fd">
<img src="https://hack.org/mc/images/smartbook-mirror.jpg" alt="smartbook-mirror.jpg">

<figcaption><span class="figure-number">Figure 1: </span>En spegel?</figcaption>
</figure>

<p>
och att den inte har trådat nät. Det senare löste jag med ett USB
Ethernet som jag hittade på som noname-produkt på
<a href="http://www.clasohlson.se/Product/Product.aspx?id=162258986">Claes
Ohlson</a> för 200 spänn! Det är i själva verket en
<a href="http://www.goodway.com.tw/en/ca/product3.asp?listid=3&amp;id=4&amp;subid=10&amp;pid=753&amp;typeid=97">Good
Way AE2220</a> och fungerar både under Linux och FreeBSD.
</p>

<p>
För att göra burken lite mer användbar stängde jag av en massa saker.
Med 512 meg RAM och seg CPU vill man inte köra en full Gnome-desktop, om
man nu någonsin vill det. I stället kompilerade jag mcwm på den och
försöker låta bli att köra tungrodda Firefox eller Chromium på den. Det
är ganska slött. Emacs, en bunt urxvt och lite kompileringar fungerar
bra på den och som SSH-terminal fungerar den utmärkt.
</p>

<p>
Jag har också mappat om det amriska tangentbordet till min egen svenska
layout både i console och i X. Jag slänger upp konfigurationsfilerna för
det någonstans snart. Hojta till om ni vill ha dem och det är bråttom.
</p>

<p>
Knapparna för backlight fungerar inte i min miljö, så jag skrev ett
litet tämligen trivialt program för att sätt backlight-nivån. Publiceras
snart. Dito för batteriindikatorn.
</p>

<p>
Tyvärr är burken lite instabil. Den kraschar ibland men den har aldrig
kraschat när jag arbetat på den. Jag tror det har något att göra med
någon strömsparfunktion, kanske för skärmen. Även om jag slår av
skärmsläckaren med "xset s off" så slår den nämligen av skärmen. Ibland
går den inte att väcka. Jag har inte haft tid eller möjlighet att
debugga.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Pungenday, the 39 day of Bureaucracy in the YOLD 3177 (<time datetime="2011-09-15">2011-09-15</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/smartbook.html</link>
  <guid>https://hack.org/~mc/blog/smartbook.html</guid>
  <pubDate>Thu, 15 Sep 2011 12:46:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Ny release av mcwm]]></title>
  <description><![CDATA[<p>
Det finns <a href="https://hack.org/mc/hacks/mcwm/mcwm-20110721.tar.bz2">en ny
release av mcwm</a>.
</p>

<p>
Det stora nya är förstås RANDR-stödet. Nu vet alltså mcwm åtminstone
något om olika fysiska skärmar. Det finns också nya tangentkombinationer
för att flytta fönster mellan skärmar.
</p>

<p>
Jag har faktiskt även hunnit peta in lite ändringar även efter releasen.
Det allra senaste finns förstås i git:
</p>

<p>
<code>git://hack.org/mcwm</code>
</p>

<p>
Om ni inte sett det finns en brevlista för mcwm. Det är bara jag som
skriver på den och det kommer ganska sällan brev. Skriv ”subscribe” i
body på ett mail till
</p>

<blockquote>
<p>
<b>mcwm-announce-request</b> på <b>list.hack.org</b>
</p>
</blockquote>

<p>
för att gå med i den.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Boomtime, the 61 day of Confusion in the YOLD 3177 (<time datetime="2011-07-26">2011-07-26</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/mcwm7.html</link>
  <guid>https://hack.org/~mc/blog/mcwm7.html</guid>
  <pubDate>Tue, 26 Jul 2011 22:15:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[CST L-Trac-X]]></title>
  <description><![CDATA[<p>
Lite för tidigt har jag fått årets födelsedagspresent från mig själv.
Det är en styrkula från Clearly Superior Technology. Modellen heter
<a href="http://www.clearlysuperiortech.com/ltracx.html">L-Trac-X</a>. Jag köpte
den från <a href="http://www.computerware.co.uk/">ComputerWare UK</a>.
</p>

<p>
Den har tre ordinare knappar (riktigt mittenknapp är viktigt!) och
dessutom scrollhjul. Den har dessutom uttag för två ytterligare knappar.
Kanske försöker jag hitta ett par pedaler!
</p>

<p>
Unboxing:
</p>


<figure id="org3589721">
<img src="https://hack.org/mc/images/cst1-small.jpg" alt="cst1-small.jpg">

</figure>


<figure id="orgefa80bc">
<img src="https://hack.org/mc/images/cst2-small.jpg" alt="cst2-small.jpg">

</figure>


<figure id="org79a071e">
<img src="https://hack.org/mc/images/cst3-small.jpg" alt="cst3-small.jpg">

</figure>


<figure id="orgb9e3e4e">
<img src="https://hack.org/mc/images/cst4-small.jpg" alt="cst4-small.jpg">

</figure>


<figure id="org3cf0146">
<img src="https://hack.org/mc/images/cst5-small.jpg" alt="cst5-small.jpg">

</figure>


<figure id="org4bcea3a">
<img src="https://hack.org/mc/images/cst6-small.jpg" alt="cst6-small.jpg">

</figure>

<p>
På lägsta känsligheten, 800 cpi, är den lätt att ha att göra med. Just
nu kör jag den på det dubbla och det tar nog en stund att vänja sig vid
hur lite jag behöver röra kulan.
</p>

<p>
En intressant sak är att kulan är exakt samma diameter som en
biljardboll! Jag funderar på att köpa en biljardboll, kanske en 3:a, att
ersätta den med. Någon som vet var jag kan köpa enstaka biljardbollar?
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Sweetmorn, the 55 day of Confusion in the YOLD 3177 (<time datetime="2011-07-20">2011-07-20</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/cst-ltracx.html</link>
  <guid>https://hack.org/~mc/blog/cst-ltracx.html</guid>
  <pubDate>Wed, 20 Jul 2011 14:29:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[HHKB-möte]]></title>
  <description><![CDATA[<p>
Min barndomsvän Magnus var nyligen på besök hos oss. Han hade med sig
sitt favorittangentbord som nog är främsta anledningen att vi fick
kontakt med varandra igen. Här är det framför mitt eget:
</p>


<figure id="org0368c14">
<img src="https://hack.org/mc/images/hhkb-meeting.jpg" alt="hhkb-meeting.jpg">

<figcaption><span class="figure-number">Figure 1: </span>2 * HHKB Pro 2.</figcaption>
</figure>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Setting Orange, the 54 day of Confusion in the YOLD 3177 (<time datetime="2011-07-19">2011-07-19</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/hhkb-hhkb.html</link>
  <guid>https://hack.org/~mc/blog/hhkb-hhkb.html</guid>
  <pubDate>Tue, 19 Jul 2011 22:07:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Ändra tangentbordslayout med XKB]]></title>
  <description><![CDATA[<p>
Efter att ha gått igenom konverteringen av min xmodmap till XKB skrev
jag ner mina erfarenheter i illustrerad form på engelska som
<a href="https://hack.org/mc/writings/xkb.html">Changing Keyboard Layouts with
XKB</a>. Det kan kanske hjälpa andra och inte bara svenskar, tänkte jag.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Boomtime, the 51 day of Confusion in the YOLD 3177 (<time datetime="2011-07-16">2011-07-16</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/xkb.html</link>
  <guid>https://hack.org/~mc/blog/xkb.html</guid>
  <pubDate>Sat, 16 Jul 2011 13:02:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Happy Hacking Keyboard och XKB, del 2]]></title>
  <description><![CDATA[<p>
Som jag skrev i <a href="https://hack.org/mc/blog/hhkb3.html">förra inlägget</a>
så vill jag gärna låta bli att skriva i systemfiler för att göra något
så enkelt som att mappa om mitt tangentbord. Tänk om jag inte har root,
liksom?
</p>

<p>
Med <code>xmodmap</code> är det förstås busenkelt. Nu är det äntligen löst med XKB
också. Det nämns inte mycket om det här i manualer så det tog en stund
att klura ut.
</p>

<p>
Så här gör man:
</p>

<p>
Skapa en beskrivning av ditt totala tangentbord. Så här ser min ut
beskrivning ut:
</p>

<pre class="example" id="orgd25b97e">
xkb_keymap {
  xkb_keycodes { include "xfree86+aliases(qwerty)" };
  xkb_types { include "complete" };
  xkb_compat { include "complete" };
  xkb_symbols { include "pc+se(se)+mchack(se)" };
  // xkb_symbols { include "pc+us+mchack(us)" };
  xkb_geometry { include "hhk(win2)" };
};
</pre>

<p>
Spara den här beskrivningen i en katalog för XKB. Jag har den i
<code>~/mc/conf/xkb/mchack.xkb</code>.
</p>

<p>
Observera ”mchack(se)”. Det är det som är mina egna definitioner.
</p>

<p>
En rad är utkommenterad. Använd den i stället om du vill ha amriskt
tangentbord men med svenska tecken med AltGr + krullar och hakar, som i
swascii.
</p>

<p>
Skapa sedan en katalog som heter <code>symbols</code> i samma katalog och stoppa in
dina förändringar och döp den filen till vad du skrivit ovan, alltså i
mitt fall ”mchack”. Där stoppar jag in:
</p>

<pre class="example" id="orgb3b2414">
// Swedish map for use with HHKB Pro 2 with SW 01 1010, that is Lite ext,
// Backspace on rubout and diamond gives Alt.
default partial alphanumeric_keys modifier_keys
xkb_symbols "se" {
    include "latin(type2)"
    include "se(se)"

    key &lt;AE04&gt; { [ 4, dollar ] };
    key &lt;BKSL&gt; { [ apostrophe, asterisk, grave ] };
    key &lt;TLDE&gt; { [ less, greater ] };
    key &lt;AD11&gt; { [ aring, Aring, braceright, bracketright ] };
    key &lt;AD12&gt; { [ asciitilde, asciicircum, dead_diaeresis, dead_circumflex] };
    key &lt;AC10&gt; { [ odiaeresis, Odiaeresis, bar, backslash ] };
    key &lt;AC11&gt; { [ adiaeresis, Adiaeresis, braceleft, bracketleft ] };

    key &lt;LWIN&gt; { [ Hyper_L ] };
    key &lt;LALT&gt; { [ Meta_L ] };

    // Override default in se(se) which has RALT as Level 3 shift.
    // Stops xkbcomp's complaints about multiple symbols.
    key &lt;RALT&gt; { 
      type[Group1]="TWO_LEVEL",
      type[Group2]="TWO_LEVEL",
      type[Group3]="TWO_LEVEL",
      type[Group4]="TWO_LEVEL",
      symbols[Group1] = [ Meta_R ], 
      symbols[Group2] = [ Meta_R ], 
      symbols[Group3] = [ Meta_R ], 
      symbols[Group4] = [ Meta_R ]
    };

    key &lt;RWIN&gt; { [ ISO_Level3_Shift ] };

    modifier_map Mod1 { Meta_L, Meta_R };
    modifier_map Mod4 { Hyper_L };
    modifier_map Mod5 { ISO_Level3_Shift };
};

// American version of the above but with Swedish characters on
// AltGr+brackets, braces, backslash and bar.
partial alphanumeric_keys modifier_keys
xkb_symbols "us" {
    include "us"

    key &lt;AD11&gt; { [ bracketleft, braceleft, adiaeresis, Adiaeresis ] };
    key &lt;AD12&gt; { [ bracketright, braceright, aring, Aring ] };
    key &lt;BKSL&gt; { [ backslash, bar, odiaeresis, Odiaeresis ] };

    key &lt;LWIN&gt; { [ Hyper_L ] };
    key &lt;LALT&gt; { [ Meta_L ] };
    key &lt;RALT&gt; { [ Meta_R ] };
    key &lt;RWIN&gt; { [ ISO_Level3_Shift ] };

    modifier_map Mod1 { Meta_L, Meta_R };
    modifier_map Mod4 { Hyper_L };
    modifier_map Mod5 { ISO_Level3_Shift };
};
</pre>

<p>
Ladda allt det goda med:
</p>

<pre class="example" id="orgcc32ae0">
% xkbcomp -I/home/mc/conf/xkb ~/conf/xkb/keymap/mchack.xkb $DISPLAY
</pre>

<p>
eller din motsvarighet för hemkatalog.
</p>

<p>
OBS! Det skall inte vara något mellanslag efter ”-I”.
</p>

<p>
Klart!
</p>

<p>
Jag får fortfarande lite felmeddelanden från xkbcomp men alla handlar om
obundna keycodes. De obundna symbolerna spelar nog ingen roll.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Boomtime, the 51 day of Confusion in the YOLD 3177 (<time datetime="2011-07-16">2011-07-16</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/hhkb4.html</link>
  <guid>https://hack.org/~mc/blog/hhkb4.html</guid>
  <pubDate>Sat, 16 Jul 2011 00:35:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Happy Hacking Keyboard och XKB]]></title>
  <description><![CDATA[<p>
Som ni alla vet har jag två Happy Hacking Keyboard-tangentbord, ett
original och ett Professional 2 med de alldeles fantastiska
Topre-brytarna. Originalet används numera ganska sällan men jag sitter
nästan alltid med Pro-varianten som också får följa med på resor även om
jag varit rädd att det skall gå sönder. Topre-brytarna gör verkligen
skillnad och layouten på HHKB är något jag uppskattar oerhört mycket.
</p>

<p>
Jag har nästan så länge jag använt X kört min egen tangentbordslayout på
många olika fysiska tangentbord. Jag har hela den tiden använt <code>xmodmap</code>
för att mappa om tangentbordslayouten. Några av mina layouter finns här:
</p>

<p>
<a href="https://hack.org/mc/files/">https://hack.org/mc/files/</a>
</p>

<p>
Observera att mappningarna är beroende av vilken X-server man kör och
möjligen vad man ställt in tangentbordet på, om det nu går att anpassa,
som till exempel HHKB-familjen.
</p>

<p>
Det har bitit mig några gånger under utvecklingen av
<a href="https://hack.org/mc/hacks/mcwm/">min fönsterhanterare</a> att jag kört
en tangentbordslayout som varit långt från det som etablerats som de
facto-standard. Till exempel hade det inte slagit mig att Mod2 brukade
användas för Num Lock! Hade jag kommit ihåg det hade jag förstås inte
valt den som modifier för att göra saker med fönstren!
</p>

<p>
När jag upptäckte det bytte jag förstås fort till att använda Mod4 som
magisk modifier för mcwm:s fönsteroperationer. Mod4 är traditionellt
bunden till Hyper och Hyper är i sin tur oftast bunden till
Windows-tangenterna på ett modernt PC-tangentbord. Windows-tangenten
passar ju bra för just fönsteroperationer.
</p>

<p>
Sedan jag ändrade fungerar alltså mcwm rätt OK på ett
standardtangentbord utan att behöva mappa om det. Den stora majoriteten
av användare mappar nog inte om sitt tangentbord överhuvudtaget och
nöjer sig med att, på sin höjd, välja default för sitt språk.
</p>

<p>
Ett HHKB, emellertid, har förstås inga Windows-tangenter. Jag fortsatte
alltså köra min egen xmodmap för HHKB där jag mappade den vänstra av de
tangenter det står ”Alt” på (eller där det skulle ha stått Alt om det
stod något alls på knapparna på mitt tangentbord) till att generera
Mod4-modifiermasken.
</p>

<p>
Jag hade inte brytt mig om dipswitcharna på mitt HHKB särskilt mycket så
de keycodes jag fick var de som ges per default. Jag kollade helt enkelt
efter med <code>xev</code> vad som genererades och mappade om som jag ville ha det.
</p>

<p>
Jag har kommit på att det kanske är ett misstag att göra så, alldeles
särskilt om jag skulle få för mig att trycka in mitt HHKB Pro 2 i en
annan maskin någonstans och vill att det skall fungera åtminstone
någorlunda som ett vanligt PC-tangentbord.
</p>

<p>
Jag har följaktligen just ställt om mitt tangentbord till 011010, som
betyder ”Lite ext” som ger mig Windows-tangenter överhuvudtaget,
”Backspace” för att radera och att diamantangenterna skall ge
Alt-tangenternas keycodes. Efter det bestämde jag för att göra en ny
layout utifrån de keycodes som ges nu, men denna gång tänkte jag försöka
använda XKB-utökningen.
</p>

<p>
Som ni säkert känner till har X inte mindre än två sätt att ändra
tangentbordslayouter: det gamla core-protokollets sätt, som man normalt
som användare kommer åt med kommandot <code>xmodmap</code>, och en utökning, kallad
XKB (eller ibland XKEYBOARD), som man till exempel kommer åt med
<code>setxkbmap</code>.
</p>

<p>
Det är nog bara gamla stötar som jag som fortfarande använder xmodmap, i
alla fall om man använder en X-server som X.org eller XFree86. Jag har
tidigare inte riktigt orkat sätta mig in i den något håriga XKB men igår
ikväll gjorde jag ett första försök.
</p>

<p>
Resultatet ser hittills ut så här:
</p>

<pre class="example" id="orgbbd3aac">
// For use with HHKB Pro 2 with SW 01 1010, that is Lite ext,
// Backspace on rubout and diamond gives Alt.
partial alphanumeric_keys modifier_keys
xkb_symbols "mc2" {
    include "latin(type2)"
    include "se(se)"

    key &lt;AE04&gt; { [ 4, dollar ] };
    key &lt;BKSL&gt; { [ apostrophe, asterisk, grave ] };
    key &lt;TLDE&gt; { [ less, greater ] };
    key &lt;AD11&gt; { [ aring, Aring, braceright, bracketright ] };
    key &lt;AD12&gt; { [ asciitilde, asciicircum, dead_diaeresis, dead_circumflex] };
    key &lt;AC10&gt; { [ odiaeresis, Odiaeresis, bar, backslash ] };
    key &lt;AC11&gt; { [ adiaeresis, Adiaeresis, braceleft, bracketleft ] };

    key &lt;LWIN&gt; { [ Hyper_L ] };
    key &lt;LALT&gt; { [ Meta_L ] };
    key &lt;RALT&gt; { [ Meta_R ] };
    key &lt;RWIN&gt; { [ ISO_Level3_Shift ] };

    modifier_map Mod1 { Meta_L, Meta_R };
    modifier_map Mod4 { Hyper_L };
    modifier_map Mod5 { ISO_Level3_Shift };
};
</pre>

<p>
Det där tryckte jag in i, i mitt fall,
<code>/usr/local/share/X11/xkb/symbols/se</code> och gjorde sedan:
</p>

<pre class="example" id="org0f11a19">
% setxkbmap -v 100 -geometry "hhk(win2)" se mc2
</pre>

<p>
Det verkar fungera. Frågar jag X-servern hur layouten ser ut med
<code>xkbprint</code> får jag detta som svar:
</p>


<figure id="orgfb0b894">
<img src="https://hack.org/mc/images/hhkb-layout-small.png" alt="hhkb-layout-small.png">

<figcaption><span class="figure-number">Figure 1: </span>Bild av layouten på mitt HHKB.</figcaption>
</figure>

<p>
Jag har ännu inte listat ut hur jag får det där i en egen
konfigurationsfil skild från systemets men det kan väl inte vara svårt?
</p>

<p>
En annan sak som är smått irriterande är att för att generera Control-]
måste jag nu trycka Control-AltGr-Shift-å i stället för, som förr, bara
Control-å! Det har jag inte löst ännu. Tips är välkomna.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Confuflux in the YOLD 3177 (<time datetime="2011-07-15">2011-07-15</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/hhkb3.html</link>
  <guid>https://hack.org/~mc/blog/hhkb3.html</guid>
  <pubDate>Fri, 15 Jul 2011 15:13:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[mcwm del 6]]></title>
  <description><![CDATA[<p>
Som jag hintade om i <a href="https://hack.org/mc/blog/radns4.html">radns del
4</a> så har jag hackat lite på mcwm och stoppat in en början på stöd för
RANDR. Jag har nu pushat min feature branch "randr". Finns i git:
</p>

<p>
<a href="https://hack.org/mc/git/mcwm/">https://hack.org/mc/git/mcwm/</a>
</p>

<p>
Obs! Ingen webfront. Använd git direkt.
</p>

<p>
Det är inte färdigt än. Jag har till exempel inte testat att byta modes.
Det finns heller ännu inte separata workspaces på olika fysiska skärmar.
Det kommer.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Boomtime, the 6 day of Confusion in the YOLD 3177 (<time datetime="2011-06-01">2011-06-01</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/mcwm6.html</link>
  <guid>https://hack.org/~mc/blog/mcwm6.html</guid>
  <pubDate>Wed, 01 Jun 2011 16:16:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[radns del 4, och en teaser om mcwm]]></title>
  <description><![CDATA[<p>
27:e maj skrev jag så här till
<a href="https://hack.org/mc/mosig.html">mosig-listan</a>:
</p>

<blockquote>
<p>
Sedan tre&#x2013;fyra dagar är radns, tror jag, RFC 6106 compliant och kan
både RDNSS- och DNSSL-optionen. Det återstår naturligtvis massor av
test och koden är bergis mycket buggig. Ni får hemskt gärna testa den.
</p>
</blockquote>

<blockquote>
<p>
Jag har hittills själv bara testat under FreeBSD på x86 men jag har
fått rapport att den åtminstone kompilerar under Linux med
målarkitektur cris också.
</p>
</blockquote>

<blockquote>
<p>
OBS! Den här versionen är enbart i git än så länge.
</p>
</blockquote>

<blockquote>
<p>
<a href="https://hack.org/mc/hacks/radns/">https://hack.org/mc/hacks/radns/</a>
</p>
</blockquote>

<p>
Det är mycket kod som ändrats. Minneshanteringen är helt omskriven.
Koden är ganska mycket uppsnyggad. Den nya <i>funktionen</i> är inte så stor
men kanske tillräcklig för att vara spännande. Både adresser till
DNS-servrar (RDNSS-optionen) och en lista med domänsuffix (DNSSL) stöds
nu.
</p>

<p>
För att kompilera på Linux måste man slänga på <code>-lrt</code> också.
</p>

<p>
Det är en del varningar, framför allt från debugutskriften. Jag skall
rensa upp när jag får lite energi igen, och fixa Makefile och liknande
så det går att kompilera utan större handpåläggning på fler system.
</p>

<p>
Det är förstås en massa testande och debuggande kvar. Jag skall också
försöka paketera radns för FreeBSD ports och göra ett Debian-paket.
</p>

<p>
Bara härom dagen fick jag möjlighet att testa som hastigast under Linux
x86. Det verkar fungera!
</p>

<p>
<a href="http://blog.fnord.se/">Henrik ”gsson” Gustafsson</a> har skickat mig en
patch för MacOS X också men den har varken jag eller gsson haft
möjlighet att testa ännu. Jag stoppar troligen in den så småningom.
Tack, gsson!
</p>

<p>
När jag började hacka på radns igen så noterade jag efter ett tag att
det numera finns ganska mycket stöd för RFC 6106. En RFC som är Draft
Standard snarare än Experimental får tydligen igång utvecklare. Det
finns nu alltså patchar till både rtsold i både FreeBSD som OpenBSD för
att stöda RDNSS- och DNSSL-optionerna! Det är två separata patchar av
två olika utvecklare, alltså.
</p>

<p>
Jag försöker ändå göra klart radns, för dels siktar den på att vara
portabel på ett annat sätt, dels tror jag att flera implementationer
driver standardiseringen och best practises framåt. Det kunde man inte
minst märka när statusen på RFC 5006 diskuterades på v6ops-listan och
existerande implementationer direkt ledde till skapandet av RFC 6106.
</p>

<p>
Efter att radns blev feature complete tröttnade jag lite på att lägga
min lilla fritid (framför allt någon timme på tidiga mornar) på den. För
att slappna av lite hackade jag i stället in ett första försök till
riktigt stöd för RANDR-utökningen i mcwm.
</p>

<p>
Jag har inte pushat än, men nu vet mcwm om storleken på fysiska skärmar
och tar hänsyn till det vid sådana saker som maximering, flytt till
hörnen, et cetera. Det blev mycket trevligare att köra mcwm med flera
skärmar! Håll koll på git så får ni smaka.
</p>

<p>
<a href="https://hack.org/mc/hacks/mcwm/">https://hack.org/mc/hacks/mcwm/</a>
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Boomtime, the 6 day of Confusion in the YOLD 3177 (<time datetime="2011-06-01">2011-06-01</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/radns4.html</link>
  <guid>https://hack.org/~mc/blog/radns4.html</guid>
  <pubDate>Wed, 01 Jun 2011 08:13:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Rockbox på SanDisk Sansa Clip +]]></title>
  <description><![CDATA[<p>
På det gym jag styrketränar tre gånger i veckan spelas ganska tråkig
musik. Det slog mig nyligen att jag kan ha med min egen musik och lyssna
i hörlurar! Petra och pojkarna skrattade åt mig för att jag inte hade
tänkt på det tidigare, trots att jag tränat där i några år och sett
massor med folk med hörlurar.
</p>

<p>
Sist jag köpte en portabel musikspelare var det en minidisc-spelare. Det
var över 10 år sedan. Det var rätt smärtsamt att överföra musik till MD.
Jag orkade inte med det och slutade använda spelaren inom ett år. Sedan
dess har jag inte använt någon portabel musikspelare alls, om man inte
räknar min Thinkpad som portabel musikspelare, förstås.
</p>

<p>
Jag kollade runt lite på det nuvarande utbudet. Utvecklingen har gått
lite framåt, kan man säga.
</p>

<p>
Det jag framför allt var ute efter var något som kunde spela FLAC och
Ogg, gärna med fri programvara. En bonus vore om det fanns ett utbytbart
lagringsmedium på spelaren. Jag blev ganska förvånad då jag hittade den
ARM-baserade
<a href="http://www.sandisk.com/products/sansa-music-and-video-players/sandisk-sansa-clipplus-mp3-player">SanDisk
Sansa Clip +</a> för 300 pix på Kjell &amp; Company.
</p>

<p>
Den uppfyller alla kraven. Den kan spela Ogg och FLAC out of the box och
har plats för microSDHC, som alltså borde ge upp till 32 gig utöver det
inbyggda minnet. Spelaren stöds dessutom av det fria
firmware-alternativet <a href="http://www.rockbox.org/">Rockbox</a>!
</p>

<p>
Jag rusade förstås iväg och köpte en spelare. Fick snabbt in Rockbox på
den med RockboxUtility. Jag fick dock låna en annan dator i hushållet
eftersom Utility inte snurrar under FreeBSD ännu.
</p>

<p>
Allt fungerade bra redan från början, utom möjligen att spela Doom på
den, men det är displayens fel snarare än något annat. Hastigheten är
det inget fel på. Det är lite skrämmande att Doom överhuvudtaget är
portat till den lilla spelaren!
</p>

<p>
Jag kan bara konstatera att min lilla musikspelare, som är mindre än en
tändsticksask, har väldigt mycket mer CPU och disk än vad de datorer
som, säg, Ken och Dennis utvecklade Unix på och använde de första
tio&#x2013;femton åren. Tillsammans. Spelaren har också (<i>utan</i> SD-kort) mer
än 100 gånger så stort lagringsutrymme som min första hårddisk.
</p>

<p>
Jag har sett rykten om att SanDisk själva släppte information om
spelaren till Rockbox-projektet men jag vet inte om det är sant. Det
vore trevligt om det var så. Hur som helst är det en väldig trevlig
miljö.
</p>

<p>
Jag har inte hunnit göra något i Rockbox själv men det kanske jag kan
hitta tid till så småningom.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Sweetmorn, the 63 day of Discord in the YOLD 3177 (<time datetime="2011-05-16">2011-05-16</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/sansa-rockbox.html</link>
  <guid>https://hack.org/~mc/blog/sansa-rockbox.html</guid>
  <pubDate>Mon, 16 May 2011 18:36:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Minix på Atari ST]]></title>
  <description><![CDATA[
<figure id="org9740138">
<img src="https://hack.org/mc/images/minix-boot.png" alt="minix-boot.png">

</figure>

<p>
Så här såg det ut när Minix 1.5 bootade på Atari ST-emulatorn
<a href="http://hatari.berlios.de/">hatari</a> hemma hos mig för någon vecka
sedan.
</p>

<p>
Jag bootade med diskett-images härifrån:
</p>

<p>
<a href="http://www.minix3.org/previous-versions/Atari/">http://www.minix3.org/previous-versions/Atari/</a>
</p>

<p>
även som
<a href="http://www.minix3.org/previous-versions/bzipped/Atari.tar.bz2">bzippad
tarboll</a>.
</p>

<p>
Manualen finns här:
</p>

<p>
<a href="http://www.minix3.org/previous-versions/bzipped/Ref-man-1.5.tar.bz2">http://www.minix3.org/previous-versions/bzipped/Ref-man-1.5.tar.bz2</a>
</p>

<p>
Efter att du bootat kan du logga in som Andy Tanenbaum med ”ast” och
lösenordet ”Lösenord”, fast på nederländska: ”Wachtwoord”. root-lösen är
”Geheim”.
</p>

<p>
Det går inte snabbt men roligt är det.
</p>

<p>
Riktig ST-hårdvara troligen på gång i mitten av juni. Få se om jag kan
lyckas boota då också. Måste komma på något sätt att skriva till
diskett. Jag vet inte ens om jag har en fungerande diskettstation.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Prickle-Prickle, the 56 day of Discord in the YOLD 3177 (<time datetime="2011-05-09">2011-05-09</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/minix.html</link>
  <guid>https://hack.org/~mc/blog/minix.html</guid>
  <pubDate>Mon, 09 May 2011 16:12:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Importera Google Calendar till Emacs Calendar]]></title>
  <description><![CDATA[<p>
Min fru Petra är en Android-ägare. Hon använder sin mobiltelefon också
som kalender och har förstås upptäckt den praktiska funktionen att kunna
synkronisera sin Android-kalender med Google Calendar så att hon kan
komma åt kalendern även i en browser.
</p>

<p>
Det slog henne för ett tag sedan att det nog vore praktiskt om jag också
visste vad hon planerade om dagarna, till exempel för att veta hur sent
hon slutar en viss dag. Hon ville alltså dela med sig av sin Google
Calendar. Men hur?
</p>

<p>
Google tillåter att man delar ut sin kalender till andra som använder
Google Calendar. Det kräver förstås att man är inloggad hos Google. De
har också något de kallar en ”privat” URL till en fil i
<a href="http://tools.ietf.org/html/rfc5545">iCalender-format</a> för export. Den
kan man komma åt helt utan inloggning. Jag fick den privata URLen till
Petras kalender och skrev följande funktion:
</p>

<div class="org-src-container">
<pre class="src src-elisp">(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">pcal</span> ()
  <span style="color: #ffa07a;">"Import Petra's calendar."</span>
  (<span style="color: #00ffff;">interactive</span>)
  (<span style="color: #00ffff;">if</span> (shell-command <span style="color: #ffa07a;">"fetch -q -o ~/conf/petra-basic.ics https://www.google.com/calendar/ical/..."</span>) 
      (<span style="color: #00ffff;">progn</span>
        (<span style="color: #00ffff;">if</span> (file-exists-p <span style="color: #ffa07a;">"~/conf/petra-cal"</span>)
            (delete-file <span style="color: #ffa07a;">"~/conf/petra-cal"</span>))

        (<span style="color: #00ffff;">if</span> (get-buffer <span style="color: #ffa07a;">"petra-cal"</span>)
            (kill-buffer <span style="color: #ffa07a;">"petra-cal"</span>))

        (<span style="color: #00ffff;">if</span> (get-buffer <span style="color: #ffa07a;">"petra-basic.ics"</span>)
            (kill-buffer <span style="color: #ffa07a;">"petra-basic.ics"</span>))

        (icalendar-import-file <span style="color: #ffa07a;">"~/conf/petra-basic.ics"</span>
                               <span style="color: #ffa07a;">"~/conf/petra-cal"</span>))))
</pre>
</div>

<p>
Programmet fetch ingår i FreeBSD:s base. Det hämtar en fil på angiven
URL och lagrar den lokalt. Hade inte fetch redan funnits hade jag kanske
använt wget eller curl i stället.
</p>

<p>
Observera att funktionen icalender-import-file är stendum. Om du kör den
två gånger på samma iCalender-fil så kommer din Emacs Calendar att ha
samma händelser dubblerade. Det är därför jag raderar filen petra-cal
och tar bort eventuell kalenderbuffert innan jag gör importen.
</p>

<p>
Nu fungerar allt. Jag använder själv enbart Emacs Calendar för att ha
koll på datum och sådant men nu får jag alltså också markeringar när
Petra har antecknat något för dagen och kan lätt se när hon förväntas
hem.
</p>

<p>
För mina egna kalenderbehov använder jag en vanlig textfil per år med
veckovyer som fungerar både som löpande journal och kalender för att
komma ihåg saker. Kombinerat med Emacs Calender för att slå upp datum
fungerar det rätt bra. Jag började med det här systemet 1999 och med
tiden har jag blivit rätt van vid det. Jag brukar producera kanske
1&#x2013;2 megabyte text per år i en sådan fil. En slags <a href="http://orgmode.org/">Org Mode</a> light,
kanske. Den senaste tiden har jag lekt lite med Org Mode för att se om
jag kan gå över till det men har kommit fram till att det jag har är
gott nog, åtminstone tills vidare.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Prickle-Prickle, the 56 day of Discord in the YOLD 3177 (<time datetime="2011-05-09">2011-05-09</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/kalender.html</link>
  <guid>https://hack.org/~mc/blog/kalender.html</guid>
  <pubDate>Mon, 09 May 2011 15:58:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[MC får stipendium?]]></title>
  <description><![CDATA[<p>
För en tid sedan gick ett rykte att det saknades tekniska projekt bland
ansökningarna till
<a href="http://www.iis.se/internet-for-alla/internetfonden/om-internetfonden">.SE:s
Internetfond</a>. Jag uppmanades av flera bekanta att söka pengar antingen
för något existerande projekt eller någon av mina många idéer på nya
nätverksprojekt.
</p>

<p>
Jag velade med ansökan, för jag visste inte riktigt hur jag skulle
argumentera för att jag skulle få pengar eller vad pengarna skulle
användas till. Lön? Det har jag svårt att argumentera för. Vad skulle
jag säga?
</p>

<p>
Kanske en vecka innan deadline till Internetfonden började jag ändå
skriva på en ansökan&#x2026;
</p>

<p>
Projektet jag sökte om är <a href="https://hack.org/mc/hacks/radns/">radns</a>.
Det är ett litet klientprogram som fångar upp en adress till en
DNS-server som en IPv6-router (kanske, om RDNSS-optionen finns med)
skickar ut och stoppar adressen i systemet så att andra program kan slå
upp namn.
</p>

<p>
Min klient fungerar åtminstone under FreeBSD (primär
utvecklingsplattform), OpenBSD och Debian GNU/Linux. Åtminstone en
tidigare version kompilerade även under MacOS X men OS X har ett annat
sätt att tala om för systemet var det finns en DNS-server så den biten
är inte fixad. Det kanske någon Mac-hacker har lust att fixa? Det är
möjligt att delar av koden också skulle kunna fungera under Windows, i
alla fall om man plockar bort unixismerna om daemon-skapande och sådant.
</p>

<p>
Från början är radns en förmiddags fulhack som växte lite. Det finns en
hel del att snygga upp. Det hoppas jag också hitta lite tid att göra
någon gång.
</p>

<p>
Mer specifikt gällde min ansökan att anpassa radns till
<a href="http://tools.ietf.org/html/rfc6106">RFC 6106</a>, den nya, blivande
standarden. Den nuvarande implementationen följer alltså den äldre och
experimentella <a href="http://tools.ietf.org/html/rfc5006">RFC 5006</a>. Arbetet
att ordna anpassningen verkar närmast trivialt och radns i sig själv är
heller inget stort eller särskilt avancerat program.
</p>

<p>
Jag tar faktiskt åt mig åtminstone lite av äran att det överhuvudtaget
finns en RFC på ”standards track” numera. Det diskuterades för strax
över ett år sedan vad det skulle bli av RFC 5006 i
<a href="http://datatracker.ietf.org/wg/v6ops/">v6ops-</a> och
<a href="http://datatracker.ietf.org/wg/6man/">6man-arbetsgrupperna</a> inom
<a href="http://www.ietf.org/">Internet Engineering Task Force</a> (IETF), det
närmaste Internet kommer ett standardiseringsorgan. RDNSS-optionens liv
som framtida standard hängde rätt mycket på om det fanns körande kod och
om någon använde den. Det visade det sig göra, bland annat genom att
flera pekade på radns. Se också mitt
<a href="https://hack.org/mc/blog/radns.html">tidigare blogginlägg om saken</a>.
</p>

<p>
Eftersom det verkade vara så lite arbete att anpassa klienten till den
nya RFC:n slängde jag i ansökan också med att jag vill paketera radns
som åtminstone FreeBSD ports (nu nästan klart) och som Debian-paket. Det
har jag länge velat göra i vilket fall.
</p>

<p>
Jag sökte inte pengar för att göra själva jobbet. Jag kom som sagt inte
på hur jag skulle rättfärdiga det. I stället sökte jag pengar för att
besöka nästa IETF-möte och för att Petra skall kunna vara ledig från
jobbet under mötet.
</p>

<p>
För någon vecka sedan fick jag ett brev som bara innehöll ”Ring mig!”
från en projektledare på .SE. Jag klarade tyvärr inte av att ringa men
efter lite brevväxling blev det så småningom ett möte i Malmö. Vi möttes
faktiskt på <a href="http://www.glassfabriken.net/">Glassfabriken</a>! Dottern
var med, förstås. Citat från den yngste medlemmen på mötet: ”Kaka!
Gott!”, men det sades innan vi fick sällskap, sedan blev hon lite skygg.
</p>

<p>
Det verkar alltså som om .SE valt att sponsra min resa. .SE släppte den
13:e dennes ett pressmeddelande med titeln
<a href="http://www.iis.se/pressmeddelanden/se-internetfonden-finansierar-14-nya-projekt">Internetfonden
finansierar 14 nya projekt</a> där mitt projekt är med. Tyvärr har de inte
länkat till några projektsidor, konstigt nog.
</p>

<p>
Det återstår att se om jag får några pengar. Jag vet egentligen inte
mycket mer än.
</p>

<p>
Det är trevligt att de valt ut mitt lilla projekt även om det också är
ganska pinsamt. Det måste ju finnas värdigare, mer ambitiösa
teknikprojekt än mitt triviala hack? Jag brottades med ganska stora
skuld- och/eller skamkänslor kring det när jag först fick beskedet. Det
är också därför jag inte bloggat om det förrän nu.
</p>

<p>
Jag hoppas att det till slut kommer något bra ur det.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Prickle-Prickle, the 41 day of Discord in the YOLD 3177 (<time datetime="2011-04-24">2011-04-24</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/internetfonden.html</link>
  <guid>https://hack.org/~mc/blog/internetfonden.html</guid>
  <pubDate>Sun, 24 Apr 2011 22:34:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Fotoalbumgeneratorn simgal, del 4]]></title>
  <description><![CDATA[<p>
Igår när jag uppdaterade dotteralbumet insåg jag att min optimering
bitit mig lite. Jag uppdaterar inte längre alla HTML-filer och då har
jag förstås en HTML-fil det står att det finns ”No next” i. Om den inte
omgenereras kommer den att ljuga efter att jag lagt till nya bilder.
Oops.
</p>

<p>
Lätt fixat. Jag måste minnas mellan körningarna vilken fil som det står
”No next” i:
</p>

<pre class="example" id="orgef15ad5">
echo $imagefile &gt; .last
    
</pre>

<p>
och när det är dags att lägga till nya bilder så:
</p>

<pre class="example" id="org898c580">
if [ -f .last ]
then
    lastimage=`cat .last`
fi
</pre>

<p>
och
</p>

<pre class="example" id="orgb6b5290">
if ! [ -f $imagefile ] || [ x${imagefile} = x${lastimage} ]
</pre>

<p>
Följaktligen finns en ny release av simgal:
</p>

<p>
<a href="https://hack.org/mc/hacks/simgal/">https://hack.org/mc/hacks/simgal/</a>
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Sweetmorn, the 38 day of Discord in the YOLD 3177 (<time datetime="2011-04-21">2011-04-21</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/fotoalbum4.html</link>
  <guid>https://hack.org/~mc/blog/fotoalbum4.html</guid>
  <pubDate>Thu, 21 Apr 2011 13:24:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Fotoalbumgeneratorn simgal Bourne again]]></title>
  <description><![CDATA[<p>
Jag blev lite frustrerad över att jag blev tvungen att ta till den stora
hammaren zsh för att få till beteendet jag ville i min
fotoalbumgenerator <a href="https://hack.org/mc/hacks/simgal/">simgal</a>. Jag
erkänner att jag var frustrerad och ville ha något som fungerade <i>nu</i>.
Jag tog alltså till arrayer i zsh eftersom jag behövde komma åt
föregående och nästa filnamn i en lista.
</p>

<p>
Det är inte alls så att jag tycker speciellt bra om Bourne shell eller
speciellt illa om zsh. Jag använder zsh som mitt loginskal på de flesta
platser! Det är bara det att jag gärna skulle ha sett att simgal kunde
köras på vilken unixhoj som helst. Det är illa nog att behöva installera
ImageMagick men att dra in ett skal till också? Det finns bergis de som
är religiösa nog att tveka där.
</p>

<p>
Jag slutade tänka på det och accepterade mitt öde.
</p>

<p>
Trodde jag.
</p>

<p>
Den senaste tiden har jag skrivit en del script i rc, skalet i Plan 9
och Tenth Edition Unix. Då slog det mig: <code>shift</code> i rc finns ju i Bourne
också! Duh! En sådan här konstruktion i en <i>funktion</i> i Bourne shell:
</p>

<div class="org-src-container">
<pre class="src src-sh"><span style="color: #87cefa;">fileloop</span>() 
{
    <span style="color: #eedd82;">prev</span>=<span style="color: #ffa07a;">''</span>    
    <span style="color: #00ffff;">for</span> current
    <span style="color: #00ffff;">do</span>
        <span style="color: #b0c4de;">shift</span>
        <span style="color: #eedd82;">next</span>=$<span style="color: #eedd82;">1</span>

        <span style="color: #ff7f24;"># </span><span style="color: #ff7f24;">do something to $prev, $current and $next 
</span>        <span style="color: #ff7f24;"># </span><span style="color: #ff7f24;">...
</span>
        <span style="color: #eedd82;">prev</span>=$<span style="color: #eedd82;">current</span>    
    <span style="color: #00ffff;">done</span>
}
</pre>
</div>
<p>
ger mig ju både nuvarande, föregående och nästa filnamn! Ta-da!
</p>

<p>
Utifrån det blev jag lite inspirerad och skrev om hela simgal, nu med
funktioner och ett väldigt enkelt huvudprogram:
</p>

<div class="org-src-container">
<pre class="src src-sh">[ -d $<span style="color: #eedd82;">thumbdir</span> ] || mkdir $<span style="color: #eedd82;">thumbdir</span>
[ -d $<span style="color: #eedd82;">scaledir</span> ] || mkdir $<span style="color: #eedd82;">scaledir</span>

header
fileloop $<span style="color: #eedd82;">images</span>
footer
</pre>
</div>

<p>
SLOCCount tycker att det totalt är 127 rader kod.
</p>

<p>
Demoalbum finns här:
</p>

<p>
<a href="https://hack.org/mc/gallery/">https://hack.org/mc/gallery/</a>
</p>

<p>
Här är scriptet:
</p>

<p>
<a href="https://hack.org/mc/hacks/simgal/">https://hack.org/mc/hacks/simgal/</a>
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Boomtime, the 34 day of Discord in the YOLD 3177 (<time datetime="2011-04-17">2011-04-17</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/fotoalbum3.html</link>
  <guid>https://hack.org/~mc/blog/fotoalbum3.html</guid>
  <pubDate>Sun, 17 Apr 2011 00:52:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Siemens RTL Tiling WM, Blit, Andrew Window System och Wayland]]></title>
  <description><![CDATA[<p>
Av en slump ramlade jag över en intressant film igår:
</p>

<p>
<a href="http://www.open-video.org/details.php?videoid=8038">http://www.open-video.org/details.php?videoid=8038</a>
</p>

<p>
Det är en demonstration av en fönsterhanterare av den dynamiska
tiling-smaken från 1987. Jag vet inte vad den använder för
fönstersystem i presentationen. Det enda som nämns är ”Sun window”. I
en <a href="http://books.google.se/books?id=9TZvjK1cYJsC&amp;pg=PA174&amp;lpg=PA174&amp;dq=siemens+rtl+window&amp;source=bl&amp;ots=7MHTCG3fdF&amp;sig=8iSeSR7korP-adAaxAiD9KPa2Cs&amp;hl=sv&amp;ei=rZCiTbXmPMTAswaD_cTXBw&amp;sa=X&amp;oi=book_result&amp;ct=result&amp;resnum=7&amp;ved=0CGEQ6AEwBg">;login:-artikel</a> (här återpublicerad i AUUGN:s nyhetsbrev) kan man
emellertid läsa att den använder ”CMU/ITC Andrew Protocol”, så
gissningsvis är det Andrew-fönstersystemet vi ser.
</p>

<p>
Som nämns i artikeln så portades fönsterhanteraren sedan till X Window
System. Det finns ingen anledning att tro att det gick snabbare då,
speciellt inte på samma hårdvara.
</p>

<p>
Tänk på hastigheten som fönstren ritas om. Gah! <i>Så</i> frustrerande.
</p>

<p>
Filmen är en utmärkt illustration till varför jag länge höll mig kvar
vid att antingen köra <a href="https://hack.org/mc/mgr/">MGR</a>, som ändå var förhållandevis snabb på
vanliga fönsteroperationer och text, eller helt enkelt lät bli att
köra något fönstersystem överhuvudtaget.
</p>

<p>
Jämför gärna fönstersystemet i filmen med hastigheten på Blit som alltså
kom många år tidigare och som troligen kördes på långsammare hårdvara.
Här är länken till Rob Pikes Blit-demonstration, den som jag också
länkade till i ett tidigare inlägg:
</p>

<p>
<a href="http://www.youtube.com/watch?v=waTL1abCm9I">http://www.youtube.com/watch?v=waTL1abCm9I</a>
</p>

<p>
Visst är det intressant att det ser ut som att det gick snabbare 1982 än
1987?
</p>

<p>
För övrigt rekommenderar jag en skrift av skaparen av
Andrew-fönstersystemet där han i december 2002 skriver <a href="https://hack.org/mc/texts/gosling-wsd.pdf">Window System
Design: If I had to do it over again in 2002</a>. Författaren är James
Gosling som nu för tiden troligen är mer känd för att ha skapat Java
än för sina fönstersystem.
</p>

<p>
Med tanke på dess design kan jag tänka mig att skaparna av <a href="http://wayland.freedesktop.org/">Wayland
Display Server</a> blivit inspirerade. Jag har hittills inte tittat så
noga på Wayland men nog påminner det en hel del om vad Gosling
föreslår?
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Sweetmorn, the 28 day of Discord in the YOLD 3177 (<time datetime="2011-04-11">2011-04-11</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/siemens-rtl.html</link>
  <guid>https://hack.org/~mc/blog/siemens-rtl.html</guid>
  <pubDate>Mon, 11 Apr 2011 10:03:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Fotoalbumgeneratorn simgal]]></title>
  <description><![CDATA[<p>
Nu är den släppt, min lilla fotoalbumgenerator. Jag kallar den simgal,
dels för att det är en sammandragning av ”simple gallery” men också för
att jag tyckte att det var lite roligt att döpa något lättviktigt efter
ett av namnen på en medicin mot högt kolesterol&#x2026;
</p>

<p>
Simgal har sin egen websida här:
</p>

<p>
<a href="https://hack.org/mc/hacks/simgal/">https://hack.org/mc/hacks/simgal/</a>
</p>

<p>
och ett git-repo här:
</p>

<p>
<a href="https://hack.org/mc/git/simgal/">https://hack.org/mc/git/simgal/</a>
</p>

<p>
OBS! Bara ett repo, ingen web-frontend (än).
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Boomtime, the 24 day of Discord in the YOLD 3177 (<time datetime="2011-04-07">2011-04-07</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/fotoalbum2.html</link>
  <guid>https://hack.org/~mc/blog/fotoalbum2.html</guid>
  <pubDate>Thu, 07 Apr 2011 07:08:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[MC:s fotoalbumgenerator]]></title>
  <description><![CDATA[<p>
(Missade en bokstav i titeln. Mindre redigeringar i texten. Ber om
ursäkt för ompostningen.)
</p>

<p>
Jag har skrivit en fotalbumgenerator. Jag har inte packat ihop den på
något snyggt sätt än men ni kan se lite av dess resultat under mina
<a href="https://hack.org/mc/gallery/">publika album</a>. Jag meddelar här när
koden dyker upp på lagom plats.
</p>

<p>
Tidigare använde jag Lukas Ertls
<a href="http://homepage.univie.ac.at/l.ertl/swiggle/">swiggle</a> som jag hade
gjort en del triviala ändringar i men retade mig ibland på den och
började för ett tag sedan leta efter alternativ. Jag tyckte
<a href="http://sousmonlit.dyndns.org/~niol/playa/oss/projects/lazygal/">lazygal</a>
var rätt lovande men det hade dels en hel del beroenden och betedde sig
inte som jag hade förväntat.
</p>

<p>
Då slog det mig: Borde jag inte kunna göra något enkelt med ett litet
skalscript? Alldeles säkert har många redan gjort liknande saker. Det
verkar finnas massor i alla upptänkliga språk och skal på nätet. Kanske
en slags rite of passage för hackers som jag av någon anledning missat?
Dags att hacka!
</p>

<p>
Jag skrev ett litet script som använde convert från
<a href="http://www.imagemagick.org/">ImageMagick</a> för att göra en bunt
tumnaglar över alla bilder i en katalog (jag sorterade med
<code>ls -tr *.jpg</code>) och slänga in dem i en enda HTML-fil med länkar till de
stora bilderna. Scriptet var busenkelt, blev pyttelitet och tog
förutsägbart nog <i>jättelång</i> tid att köra över ~300 bilder.
</p>

<p>
Den uppenbara optimeringen var att låta bli att generera tumnaglar om en
tumnagel för bilden redan existerade. Vips så flög programmet fram då
det bara behövde jobba när jag lade till nya bilder.
</p>

<p>
Nästa steg var att skapa en HTML-fil per bild, för jag vill ha två steg
till det stora fotografiet: Först ett stort index med alla tumnaglar,
sedan en skalad förhandsvisning och sist den stora bilden, precis som
den kom från digitalkameran.
</p>

<p>
Det var också lätt gjort.
</p>

<p>
Efter det körde jag fast lite, för jag ville också ha länkar till
föregående och nästa bild i förhandsvisningen. Hur skulle jag göra det?
Med ett språk lite mer kraftfullt än Bourne shell hade jag gjort en
lista eller en array med filnamnen i och saken skulle vara biff.
</p>

<p>
Efter en stunds funderande gav jag upp och fuskade: Jag använde zsh:s
arrayer.
</p>

<pre class="example" id="org760e85e">
images=(`ls -tr *.jpg`)
</pre>

<p>
Vips funkade även det:
</p>

<pre class="example" id="org3c54dba">
# If this isn't the first image, link to the previous
# image with a thumbnail.
if [ $i != 1 ]
then
  echo "&lt;a href='$images[$i - 1].html' accesskey='p'&gt;&lt;img src='thumbs/$images[$i - 1]' width='150' height='150'&gt;&lt;/a&gt;"
else
  echo "No previous."
fi

# If this isn't the last image, link to the next image
# with a thumbnail.
if [ $i != $max ]
then
  echo "&lt;a href='$images[$i + 1].html' accesskey='n'&gt;&lt;img src='thumbs/$images[$i + 1]' width='150' height='150'&gt;&lt;/a&gt;"
else
  echo "No next."
fi
</pre>

<p>
Ja, zsh:s arrayer börjar faktiskt med 1. Och, ja, du kan vandra runt i
mina album med N och P. Det är Alt-Shift-N&#x2026;, i alla fall i Firefox på
unixar och Windows. IE8 verkar kräva ett slag på returtangenten också.
</p>

<p>
Färdigt. Nu var jag på samma nivå som swiggle, ungefär. Ja, OK, swiggle
kan lite tuffare sortering också.
</p>

<p>
Jag ville också ha EXIF-data, åtminstone en tidsstämpel när bilden togs.
Först använde jag <a href="http://johnst.org/sw/exiftags/">exiftags</a> men så
hittade jag <a href="http://www.sentex.net/~mwandel/jhead/">jhead</a> som kunde
inte bara det utan en del andra trevliga saker.
</p>

<p>
Med jheads hjälp (och <a href="http://jpegclub.org/">jpegtran</a>) passade jag
också på att peta in automagisk rotation av bilderna också, om nu
EXIF-data sa att det behövdes. Hustruns nya kamera känner av hur hon
håller den, nämligen.
</p>

<p>
För att stoppa in kommentarer under varje bild såg jag att JPEG-formatet
har något som kallas COM-block. I COM-blocket kan jhead stoppa in
godtyckliga strängar. Det använder jag nu för eventuella
bildkommentarer.
</p>

<p>
Efter det skrev jag lite CSS för albumen. Det ser inte så pjåkigt ut och
fungerar förstås också bra helt utan CSS.
</p>

<p>
Det här duger ganska bra för mina små krav. Självklart görs allt det
stora jobbet av convert, jhead och jpegtran. Det jag gjort är inte
särskilt avancerat i sig utan en naturlig sammanfogning av vad som redan
fanns fritt tillgängligt. Leve den fria programvaran!
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Boomtime, the 19 day of Discord in the YOLD 3177 (<time datetime="2011-04-02">2011-04-02</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/fotoalbum.html</link>
  <guid>https://hack.org/~mc/blog/fotoalbum.html</guid>
  <pubDate>Sat, 02 Apr 2011 11:44:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[MC går över till HTML5 (för ett år sedan!)]]></title>
  <description><![CDATA[<p>
Det är inget aprilskämt. Ni kanske inte har märkt det men både den här
bloggen och stora delar av min hemsida har i nästan ett år varit i det
något överhypade HTML5-formatet (bortsett från Atom-matningen som varit
och fortsätter att vara XHTML). Jag har visserligen knappt utnyttjat
något alls av vad HTML5 kan men jag valde ändå att utnyttja HTML5 när
<a href="https://hack.org/mc/blog/utf8.html">jag gick från Latin 1 till UTF-8</a>
i maj förra året och dessutom började använda mitt eget lilla script för
att generera mina sidor.
</p>

<p>
Den främsta orsaken att jag gick till HTML5 var att det var så struligt
med att servera XHTML med korrekt Content-Type. Se till exempel W3C:s
<a href="http://www.w3.org/International/articles/serving-xhtml/Overview.en">Serving
XHTML 1.0</a> för en lång diskussion om saken.
</p>

<p>
Gamla hederliga HTML4 eller till och med HTML2 hade kanske varit OK men
jag tyckte jag för en gångs skull skulle försöka leva on the edge och se
vad som hände. Jag verifierade förstås med W3C:s
<a href="http://validator.w3.org/">Validator-tjänst</a> och testade med alla
browsers jag hade tillgång till men såg ingenting konstigt.
</p>

<p>
Under det här året som gått har ingen sagt något alls om renderingen av
mina websidor överhuvudtaget. Jag tror alltså att det lilla subset av
HTML5 som jag valde var rätt OK.
</p>

<p>
Idag har jag gått till nästa nivå. Jag har framför allt stoppat in
<code>&lt;nav&gt;</code>-taggar både i bloggen och på en hel del andra websidor. Jag har
också stoppat in ytterligare taggar som ger lite semantik till texten
men som i övrigt inte märks så mycket.
</p>

<p>
Jag har skrivit CSS som beskriver hur de här skall renderas för de som
förstår sig på sådant. Hustruns IE8 förstod ingenting, så där såg
navigeringen ut som en punktad lista. Samma sak, förstås, i Lynx och
w3m. Det är OK det också, i och för sig, så jag kan tryggt säga att
sidorna degraderar på ett ganska snällt sätt.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Sweetmorn, the 18 day of Discord in the YOLD 3177 (<time datetime="2011-04-01">2011-04-01</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/html5.html</link>
  <guid>https://hack.org/~mc/blog/html5.html</guid>
  <pubDate>Fri, 01 Apr 2011 23:01:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[mcwm i FreeBSD ports]]></title>
  <description><![CDATA[<p>
Jag fick ett brev igår om att <a href="https://hack.org/mc/hacks/mcwm/">mcwm</a>
finns i FreeBSD ports!
</p>

<p>
<a href="http://www.freebsd.org/cgi/query-pr.cgi?pr=155610">http://www.freebsd.org/cgi/query-pr.cgi?pr=155610</a>
</p>

<p>
Se även Freshports:
</p>

<p>
<a href="http://www.freshports.org/x11-wm/mcwm/">http://www.freshports.org/x11-wm/mcwm/</a>
</p>

<p>
Detta betyder att mcwm nu finns paketerad för åtminstone FreeBSD,
NetBSD, PuppyLinux och OpenSuSE, om jag förstått det rätt. Jag gissar
att det nu är för sent att försöka hitta på ett bättre namn åt mcwm&#x2026;
</p>

<p>
Martin Samuelsson har byggt ett Debian-paket också. Om någon vill vara
maintainer av det så får ni gärna höra av er.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Boomtime, the 4 day of Discord in the YOLD 3177 (<time datetime="2011-03-18">2011-03-18</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/mcwm5.html</link>
  <guid>https://hack.org/~mc/blog/mcwm5.html</guid>
  <pubDate>Fri, 18 Mar 2011 07:43:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[Kreativ nostalgi med Atari ST, Blit, MGR, UW och DNet]]></title>
  <description><![CDATA[<p>
1988 hade min begagnade Luxor ABC 1600 just gått sönder. Jag hade
visserligen haft 1600:n en ganska kort tid men hade redan fått smak på
både Unix, högupplöst knivskarp grafik (till skillnad från den tidens
färgskärmar och hemdatorers koppling till TV-apparater) och till viss
del också fönstersystem. Jag hade blivit lite bortskämd.
</p>


<figure id="orgf4edd68">
<img src="https://hack.org/mc/images/luxor_abc1600-small.jpg" alt="luxor_abc1600-small.jpg">

</figure>

<p>
Jag visste inte hur jag skulle laga 1600:n och bestämde mig att i
stället köpa en ny dator. Jag hade en hel del pengar från sommarjobbet
och försäljningen av min moped (även känd som Mopeden från
Helvetet!!!!111!! eftersom den verkade vara ute efter mig).
</p>

<p>
Om någon förresten vet något alls om 1600:ns fönstersystem så meddela
gärna mig! Manualer är bra, källkod bäst!
</p>

<p>
Eftersom det inte fanns någon datorbutik för privatpersoner
överhuvudtaget i Hudiksvall på den tiden åkte jag ofta på små
pilgrimsfärder till den stora staden Sundsvall för att besöka
datorbutikerna där. Där fanns både butiker riktade till privatpersoner
och mer företagsorienterade butiker som i alla fall inte omedelbart
kastade ut tonåringar på besök.
</p>

<p>
Jag och min kompis Peter brukade hänga bland annat på Televerkets butik,
som på den tiden sålde datorer (Spectravideo 728, om någon minns den),
och prata med andra entusiaster. Någon gång 1986 eller 1987(?) såg jag
också min första Amiga 1000. Den kraschade nästan direkt då jag petade
på den, tyvärr.
</p>

<p>
När det var dags att shoppa ny dator blev jag speciellt intresserad av
Atari Mega ST, särskilt med dess relativt högupplösta monokroma skärm.
Jag vet inte vilken av Mega-modellerna det kan ha varit men det var
alltså någon gång 1988. Den jag tittade på kom med en separat hårddisk
på, tror jag, 20 megabyte och alltså en monokrom skärm med 640x400 i
72Hz. Knivskarp. Inte lika kul som 1600:ns <i>vridbara</i> skärm med
1024x768, förstås, men 1600:n kostade å andra sidan ny nästan 50 000
kronor (motsvarande 93,5 k idag), och det kan kanske inte jämföras med
något för omkring 10 000.
</p>


<figure id="org5fefb46">
<img src="https://hack.org/mc/images/megast-small.jpg" alt="megast-small.jpg">

<figcaption><span class="figure-number">Figure 1: </span>Atari Mega ST</figcaption>
</figure>

<p>
Om jag minns rätt skulle paketet med hårddisk gå på omkring 14 000
kronor (~24 k idag). Jag tvekade. Jag minns inte riktigt varför jag
tvekade. Det kan ha haft något med bristen på multi-tasking att göra. Om
det var så måste jag ha varit helt slut i huvudet när jag till slut gav
upp och köpte mig en PC/AT-klon med 20 meg disk, Hercules-grafik,
monokrom (amber) skärm och MS-DOS för samma summa!
</p>

<p>
Jag gjorde dessutom precis som nästan alla andra och körde den bara som
en snabbare PC, utan att ens försöka utnyttja 286:an till något
spännande. Jag nöjde mig alltså med att köra MS-DOS! Befängt! Till och
med en liten Forth som utnyttjade 286-instruktioner hade varit bättre.
</p>

<p>
Min retardering varade visserligen bara till -91 eller -92 då jag till
min stora lycka fick tag i inte mindre än <i>två</i> begagnade Sun 3/60 och
ordningen var återställd. För mer om det, se
<a href="https://hack.org/mc/computers.html">MC's Centre for Geek Pr0n</a>.
</p>

<p>
Då och då har jag funderat på hur det hade varit om jag hade slagit till
och köpt den där Atarin, i alla fall.
</p>

<p>
I helgen satt jag och lekte med ST-emulatorn
<a href="http://hatari.berlios.de/">hatari</a>. Systemet är förvånansvärt rappt i
användargränssnittet även om det påstås att emulatorn skall vara
skapligt cykelexakt. Kanske var det grafiska gränssnittet så pass
snabbt?
</p>

<p>
Jag drog ner lite utvecklingsmiljöer, däribland
<a href="http://markwills.co.uk/purec/">Pure C</a> och assemblermiljön
<a href="https://sites.google.com/site/stessential/development/devpac">Hisoft
Devpack</a>. Jag har hunnit skriva några exempelprogram i C men ännu inte
gett mig på assemblern. Vi får se om jag hittar någon tid till det.
</p>

<p>
Fönstersystemets API är förvånansvärt rättframt och det är enkelt att
göra något i C även om jag erkänner att jag slogs lite grann mot Pure
C:s egna motsvarighet till Make-filer.
</p>

<p>
I en gammal Byte från 1986 jag har liggande, troligen min första Byte
någonsin, såg jag dessutom nyligen en annons för en annan C-kompilator
till Atari, Mark Williams C:
</p>


<figure id="orgbefe6d9">
<img src="https://hack.org/mc/images/atari-mwc-ad.jpg" alt="atari-mwc-ad.jpg">

</figure>

<p>
Hade jag känt till vad jag känner till idag på den tiden hade jag
<i>definitivt</i> köpte en Atari! Om någon råkar ha en kopia av Mark Williams
C till Atari ST så är jag intresserad. Jag hittade också en fascinerande
recension av MWC här:
</p>

<p>
<a href="http://www.atarimagazines.com/startv2n2/markwilliamsc.html">http://www.atarimagazines.com/startv2n2/markwilliamsc.html</a>
</p>

<p>
Vad tänkte jag göra med ST-emulatorn? Jag tänkte ägna mig åt lite
kreativ nostalgi: Se vad jag med min kunskap idag skulle kunna ha gjort
<i>då</i> om jag hade skaffat mig en ST. Jag är medveten om att det här inte
alls är realistiskt men det har i alla fall potential att bli lite
roligt.
</p>

<p>
Min första tanke var att skriva ett terminalprogram med flera samtidigt
uppkopplade fönster mot värddatorn, ungefär i samma anda som Bell Labs
Blit och dess efterföljare (Teletype 5620, AT&amp;T 630, et cetera). Här
nedan en 630, introducerad 1987, från omslaget till
<a href="http://bitsavers.org/pdf/att/630_mtg/">manulen på Bitsavers</a>.
</p>


<figure id="org1c84d19">
<img src="https://hack.org/mc/images/att630.jpg" alt="att630.jpg">

<figcaption><span class="figure-number">Figure 2: </span>AT&amp;T 630 MTG</figcaption>
</figure>

<p>
Blit och dess efterföljare var strikt talat inte grafiska terminaler och
inte heller bara terminaler. Blit använder ett protokoll med paket med
etiketter som talar om vilket fönster de skall till. Eftersom det är ett
vanligt seriesnöre, möjligen över modem, behövs också felkorrigering och
flödeskontroll.
</p>

<p>
Grafik görs inte med protokollet eller ESC-sekvenser, som på en vanlig
grafikterminal, utan med nedladdade program som kör i egna fönster. Det
är alltså egentligen en slags disklös arbetstation. Ofta använde man
tvådelade program, där en del laddades ner och kördes lokalt i
terminalen och den andra delen körde på servern. Ett typexempel på
program som visar det här beteendet är texteditorn
<a href="https://en.wikipedia.org/wiki/Sam_(text_editor)">Sam</a>, som
fortfarande lever, fast nu under antingen Plan 9 eller i sin X-variant.
Jag har hört talas om att den till och med finns portad till Windows!
</p>

<p>
Rob Pike beskriver Blit i <a href="http://doc.cat-v.org/bell_labs/blit/">The
Blit: A Multiplexed Graphics Terminal</a> och det finns en film bevarad
från 1982, tror jag, där de förklarar hur den användes, inklusive en
rolig bit där de visar hur en mus fungerar. Filmen finns till exempel på
Youtube här:
</p>

<p>
<a href="http://www.youtube.com/watch?v=waTL1abCm9I">http://www.youtube.com/watch?v=waTL1abCm9I</a>
</p>

<p>
OS:et i Blit var strax över 1000 rader C och kanske några hundra rader
assembler. Det var multitaskande man saknade minnesskydd. Rätt
imponerande, tycker jag.
</p>

<p>
Blit kommersialiserades först som AT&amp;T Teletype 5620, fast med en annan
processor än originalets 68k. 1987 kom efterföljaren AT&amp;T 630 MTG, nu
återigen med en 68k. 630:n hade en 16" monokrom skärm med 1024x1024. En
bunt AT&amp;T 630 MTG hade varit fina att ha i datorsalen på gymnasiet!
</p>

<p>
Som många läsare säkert redan känner till skrev jag 2003 en text jag
kallade <a href="https://hack.org/mc/writings/datorniskolan.html">Datorn i
skolan enligt MC</a>. I den skissade jag bland annat på vad jag då önskade
att min gymnasieskola hade satsat på när de förnyade maskinparken över
sommaren mellan mitt första och andra år.
</p>

<p>
Jag blev så <i>arg</i> när jag kom tillbaka efter sommaren och insåg att de
utan medverkan av eller ens förvarning till eleverna hade slösat 1,5
miljon (idag ungefär 2,6 miljoner
<a href="http://www.scb.se/Pages/PricesCrib.aspx?id=258649">enligt SCB</a>) på en
massa IBM PS/2:or!
</p>

<p>
I texten föreslår jag att gymnasieskolan kunde ha köpt en VAX och kört
någon unixsmak i stället för en bunt oerhört underuttnyttjade IBM PS/2.
På det viset hade vi fått en mycket mer tillfredsställande
användarupplevelse för de allra flesta användarna, möjligen med undantag
för de stackars CAD-användarna som kanske var lite väl sålda på AutoCAD.
</p>

<p>
Det är inte så lite önsketänkande i texten, för jag föreslår att man
skall använda BSD. Mer realistiskt hade det kanske ändå varit med
Ultrix, så hade man fått kanske fått support från leverantören, men det
hade varit på bekostnad av tillgång till källkoden. Till och med VMS
(eller rent av en Prime med PRIMOS) hade varit ett stort lyft jämfört
med den dystra verkligheten. Det enda jag på rak arm kan komma på var
positivt med PS/2:orna var de trevliga Model M-tangentborden!
</p>

<p>
Jag tänkte mig hur som helst när jag skrev texten att användare typiskt
skulle sitta vid teckenterminaler. Jag nämner som exempel DEC:s egen
VT320 eller kanske någon av Facits terminaler, exempelvis den trevliga
Twist-terminalen.
</p>

<p>
När jag läser om den idag känns det som att riktiga terminaler kanske
skulle ha blivit för dyrt. En Facit Twist kostade till exempel vid
lanseringen 1986 över 12 000 kronor, vilket motsvarar ~23 000 idag. Jag
gissar att DEC:s originalterminaler, som den VT320 jag nämnde, kostade
mycket mer. Även om PS/2:orna kostade över 30 000 kronor i styck i den
tidens penningvärde så är det rätt mycket begärt att betala nästan lika
mycket för en bra mycket dummare teckenterminal.
</p>

<p>
Vad kostade då AT&amp;T 630, som hade varit mycket trevligare? Det vet jag
inte. Min Google-Fu är tydligen inte stark nog att hitta en prislista
från AT&amp;T. Någon?
</p>

<p>
Det uppenbara alternativet, när vi nu alltså pratar Atari ST-hackande
och terminalemulering, är att trycka in en massa Atari ST som terminaler
i stället. Mega ST-varianten med trevligare separat tangentbord hade nog
varit trevligast. Utan hårddisk men med monokrom monitor kostade de
omkring 10 000 kronor. Fläktlösa. Tysta. Aaah. Precis som
teckenterminaler, AT&amp;T:s Blit och 630:n. VAXen kan stå och brusa för sig
själv.
</p>

<p>
Burkarna borde ha varit, just det, utrustade för att köra något slags
fönsterbaserat terminalsystem, troligen också med inbyggd filöverföring.
Ett sådant system hade varit billigt och troligen också så billigt att
lärare och i alla fall de mest intresserade eleverna kunde ha samma
slags 'terminal' hemma även om det antagligen inte hade varit riktigt
lika roligt över 1200 eller 2400 bit/s som över 9600 eller 19200 b/s,
som man troligen hade kunnat köra på skolan.
</p>

<p>
Jag skrev själv en VT100-emulator på skolans uppdrag som sedan användes
i biblioteket för att automatiskt ringa upp och logga in på
stadsbibliotekets Unix-dator för sökningar. Det var förstås på en PC med
MS-DOS, men jag har svårt att föreställa mig att det hade varit så
mycket svårare på en ST.
</p>

<p>
Den eller de gymnasieeleveer som blev satta att utföra jobbet hade ju ju
inte nödvändigtvis behövt <i>börja</i> med att skriva ett <i>eget
operativsystem</i> som Rob Pike, även om det naturligtvis i längden kanske
hade varit både bra och roligt. Man behövde inte ens köra flera
terminalfönster samtidigt till att börja med. I den absoluta början
kanske till och med den VT52-emulerande terminalen som följer med
systemet i en Atari ST kan duga, tills man fått upp farten på den egna
emulatorn.
</p>

<p>
Hur som helst hade jag tänkt att detta skulle bli min första uppgift på
Atari-emulatorn: ett program på ST:n som ger mig flera samtidiga
terminaler och som pratar något enkelt protokoll över seriesnöret till
program nummer två som sitter på lagom unixhoj och ger mig pty:er för
varje fönster och pratar samma protokoll. Fönstren kunde sedan vara
antingen vanliga teckenterminaler eller rent av ha stöd för några
grafiska primitiver för att rita linjer eller geometriska figurer eller
för att placera en bitmap på någon lagom pixelposition.
</p>

<p>
Jag letade först runt efter befintliga program och hittade utan större
problem att <a href="https://hack.org/mc/mgr/">fönstersystemet MGR</a> som jag en
gång i tiden använde mycket finns portat till MiNT på Atari ST. MGR
innehåller också en mux för att multiplexa MGR-trafik över godtyckliga
förbindelser, alltså även över vanlig seriellport. Det hade faktiskt
fungerat. MiNT lanserades dock något för sent för min nostalgiska tripp.
</p>

<p>
För den intresserade nostalgikern så finns MGR för MiNT här:
</p>

<p>
<a href="ftp://ftp.funet.fi/pub/atari/INDEX">ftp://ftp.funet.fi/pub/atari/INDEX</a>
</p>

<p>
<code>atarimgr.zoo</code> är den ni söker. Sedan tillkomer <code>rmgr.arc</code> eller
<code>rmgr.lzh</code> som förklaras i indexet som ”Howard's remote windows manager”
och ”Multiple remote sessions thru a serial line”. Programmet rmgr ingår
också i den MGR-distribution jag har liggande. Howard som nämns är
Howard Chu enligt vad jag kan se i MGR-distributionen. Han skrev rmgr
1990 och baserade den på kod från screen, ett program jag liksom
alldeles säkert många läsare fortfarande använder mycket.
</p>

<p>
I samma indexfil finns också:
</p>

<pre class="example" id="orgb984214">
uw.tar.Z        Unix Windows source for host
uwbin.arc       Unix Windows binaries for ST
</pre>

<p>
Det här är John Bruners UW, ”a multiple-window interface to UNIX for the
Macintosh computer”, där klientdelen för Atari ST är skriven av
Hans-Martin Mosner, Brad Bosch och Brian Katzung. Datumet på
README-filen är -85! Senaste filen är från -89.
</p>

<p>
Jag har tagit ner UW och startat i alla fall klientdelen under hatari.
Jag har inte testat mot en seriellport än men resten av programmet ser
ut att fungera.
</p>


<figure id="orgc51838b">
<img src="https://hack.org/mc/images/uw-screen.png" alt="uw-screen.png">

<figcaption><span class="figure-number">Figure 3: </span>UW screenshot</figcaption>
</figure>

<p>
Här med defaultfonten 7x13. Det finns en pyttefont på 4x7 som faktiskt
ändå är läsbar som nog hade varit mer användbar på riktig hårdvara. Det
går tyvärr inte att ta bort menyraden i programmet men det kanske kan
fixas.
</p>

<p>
Källkoden på Unix-sidan ser ganska rättfram ut men kan inte kompilera
rätt av under FreeBSD. Det ser ut att vara pty-problem men det går nog
att ordna. I allra värsta fall kan man använda samma protokoll och
skriva en ny serversida.
</p>

<p>
Precis det jag hade tänkt göra är alltså redan gjort! Det där hade varit
väldigt användbart på 80-talet och en bra bit in på 90-talet, skulle jag
tro. Det kanske är ett välkänt program i Atari-kretsar? Varför har det
inte spridit sig mer, till andra plattformar? rmgr fanns, förvisso, som
en del av MGR men det är heller inte så känt.
</p>

<p>
Jag har ännu inte hittat källkoden till UW-klienten för Atari ST. Om
någon sitter på den, meddela gärna mig.
</p>

<p>
Jag vet inte riktigt vad nästa steg är. Troligen försöker jag få
Unix-sidan att fungera och försöker sedan lista ut hur jag får hatari
att prata seriellport, fast kanske bara på låtsas utan att faktiskt
blanda in riktiga seriellportar. Jag tänkte köra mot min bärbara för att
testa att köra UW.
</p>

<p>
I förbigående sagt fick jag också tips från Marcus Comstedt om Matt
Dillons DNet:
</p>

<blockquote>
<p>
Till Amiga finns DNet, som använder en serielina för att multiplexa
olika tjänster, t.ex. filöverföringar men även "terminalfönster".
<a href="http://aminet.net/comm/net/dnet2.10.13.lha">http://aminet.net/comm/net/dnet2.10.13.lha</a> (innehåller full
källkod, dokumentation, samt även en implementation för Unix).
</p>
</blockquote>

<p>
Det verkar också väldigt lovande.
</p>

<p>
Det vore också kul att experimentera med alternativa OS till Atari ST.
Jag tog ner en install-image för Minix men lyckades inte boota från
floppy. Skit bakom spakarna, troligen. Vore kul att se hur det fungerar.
Det vore också roligt att se om jag kan få något litet eget att boota på
bara metallen&#x2026;
</p>

<p>
Happy hacking,<br>
MC.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Setting Orange, the 70 day of Chaos in the YOLD 3177 (<time datetime="2011-03-11">2011-03-11</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/atari-st.html</link>
  <guid>https://hack.org/~mc/blog/atari-st.html</guid>
  <pubDate>Fri, 11 Mar 2011 09:51:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[Uppdatering av fönsterhanteraren mcwm]]></title>
  <description><![CDATA[<p>
Ny version av min fönsterhanterare mcwm:
</p>

<p>
<a href="https://hack.org/mc/hacks/mcwm/">https://hack.org/mc/hacks/mcwm/</a>
</p>

<p>
Jag har äntligen hittat lite tid att stoppa in en funktion så man snabbt
kan tabba tillbaka till föregående fönster.
</p>

<p>
Det här betyder alltså att när man tabbar runt med fokus med MODKEY +
Tab så minns mcwm var man började. Efter att ha bytt fokus (och alltså
släppt upp MODKEY) så kommer man lätt tillbaka till fönstret man började
i med <i>ett</i> tryck på MODKEY + Tab.
</p>

<p>
Det här är förstås samma funktion som många andra fönsterhanterare redan
har. Exempelvis gör evilwm, openbox och till och med Windows likadant.
Jag har saknat det men inte hunnit fixa det tidigare.
</p>

<p>
Observera att just nu är Alt_L hårdkodat som MODKEY för den här
funktionen även om man ändrar på MODKEY i konfigurationen. Det kommer
att ändras så fort jag får lite tid att testa om man kan använda
GetModifierMapping-anropet för att ta reda på det i stället.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Pungenday, the 68 day of Chaos in the YOLD 3177 (<time datetime="2011-03-09">2011-03-09</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/mcwm4.html</link>
  <guid>https://hack.org/~mc/blog/mcwm4.html</guid>
  <pubDate>Wed, 09 Mar 2011 14:58:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[dzen — en programmerarvänlig statuspanel]]></title>
  <description><![CDATA[<p>
Jag har inte varit mycket för paneler på min desktop. Däremot har jag en
del gånger haft en något överlastad mode-rad i Emacs. Det har det lilla
problemet att jag inte alltid sitter och tittar på min Emacs, hur
konstigt det än kan låta. Då och då gör jag faktiskt andra saker, rent
av på andra workspaces än min Emacs finns på.
</p>

<p>
Enter <a href="http://dzen.geekmode.org/">dzen</a>.
</p>

<p>
Nu har jag en statusrad högst upp på min skärm som ser ut så här:
</p>


<figure id="org7703006">
<img src="https://hack.org/mc/images/dzen-status.png" alt="dzen-status.png">

</figure>

<p>
Detta skall utttydas som datum, tid, CPU-temperatur, batterinivå, om
strömkontakten är inkopplad och hur många olästa mail jag har.
</p>

<p>
Detta är förstås bara början. Jag har just experimenterat med att få små
notiser om någon försöker prata med mig över IRC eller XMPP.
</p>

<p>
Allt det här genereras i själva verket av ett shellscript jag skrev som
just nu matar ut:
</p>

<pre class="example" id="org1b99e1b">
2011-03-09 13:31 ^fg(grey60)^i(/home/mc/images/dzen-xbm-pack/temp.xbm)^p(3)54.0C ^fg(grey60)^i(/home/mc/images/dzen-xbm-pack/power-bat2.xbm)^p(3)100% ^fg(grey60)^i(/home/mc/images/dzen-xbm-pack/power-ac.xbm) 
</pre>

<p>
Detta pipas till dzen som gör om det till något som liknar statusraden i
bilden ovan.
</p>

<p>
Temperaturen och strömkontaktstatus hämtas från sysctl:erna
<code>hw.acpi.battery.life</code> och <code>hw.acpi.acline</code>. Processortemperaturen
kommer från <code>dev.cpu.1.temperature</code>. Mailstatus räknar helt enkelt filer
i <code>Maildir/new</code>. Svårare är det inte.
</p>

<p>
Nu skall jag bara få in i <a href="https://hack.org/mc/hacks/mcwm/">mcwm</a> att
den tar hänsyn till att statusraden finns vid maximeringar och sådant
också&#x2026;
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Pungenday, the 68 day of Chaos in the YOLD 3177 (<time datetime="2011-03-09">2011-03-09</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/dzen.html</link>
  <guid>https://hack.org/~mc/blog/dzen.html</guid>
  <pubDate>Wed, 09 Mar 2011 13:48:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[De fria IPv4-adressblocken är slut!]]></title>
  <description><![CDATA[<p>
Idag tog de fria IPv4-adressblocken slut. Nåja. Enligt den officiella
listan på:
</p>

<p>
<a href="http://www.iana.org/assignments/ipv4-address-space/ipv4-address-space.txt">http://www.iana.org/assignments/ipv4-address-space/ipv4-address-space.txt</a>
</p>

<p>
så finns det fem /8-block som har status UNALLOCATED. De delas nu
automatiskt ut till de regionala organisationer (RIR) som har hand om
den praktiska utdelningen av IP-adresser.
</p>

<p>
Vad kommer att hända nu? Är IPv4-adresserna verkligen <i>slut</i>?
</p>

<p>
Det beror på. Det finns alltså inga fria /8-adressblock längre. Troligen
sitter RIRarna fortfarande på en hel del adresser som alltså i praktiken
ännu inte är utdelade till ISP:er eller organisationer. Det kommer att
ta ytterligare en tid innan de är helt utdelade.
</p>

<p>
Naturligtvis finns det många ISP:er och enskilda organisationer där ute
som inte heller gjort slut på sina redan utdelade adressblock. Det
dröjer nog innan de tar slut helt och hållet. Det kanske till och med
uppstår (har uppstått?) en handel med IPv4-adresser?
</p>

<p>
I praktiken har det redan hänt saker som indikerar att adresserna är
slut. I flera år har vi ju som alla vet levt med NAT. Det är inte längre
självklart att en nod på Internet har en globalt adresserbar adress! Det
ställer som bekant till det oerhört, till exempel för IP-telefoni och
liknande tjänster där vilken nod som helst kan vara en 'server' i någon
bemärkelse.
</p>

<p>
NAT har traditonellt använts i lokala nät men börjar allt mer användas
också av <i>internetleverantörerna</i>. Det betyder att en typisk
hemanvändares dator befinner sig bakom minst två lager av
adressöversättning: dels leverantörerns, dels hemmarouterns. Det kommer
att förstöra ännu mer saker, förutom IP-telefoni antagligen också P2P
och spel.
</p>

<p>
Mobilnäten har varit tidigt ute med levarantörs-NAT. Alla nät har inte
haft NAT men allt fler inför det på större skala. Till exempel skrev
Mikael Abrahamsson på Tele2 alldeles nyligen på v6ops-listan att de
kommer att införa NAT för sina mobilkunder. Han undrade om erfarenheter
av att köra enbart IPv6 till mobilunder. Den oerhört intressanta tråden
börjar här:
</p>

<p>
<a href="http://www.ietf.org/mail-archive/web/v6ops/current/msg06611.html">http://www.ietf.org/mail-archive/web/v6ops/current/msg06611.html</a>
</p>

<p>
I tråden nämns att den stora amerikanska leverantören T-Mobile kör ett
betatest av att leverera <i>enbart</i> IPv6 till mobiltelefoner. Det verkar
troligt att de kommer att köra det för alla sina kunder inom kort.
</p>

<p>
De kunder som får enbart IPv6 kommer att nå IPv4-noder med hjälp av
NAT64 och DNS64.
</p>

<p>
NAT64 är en teknik för att noder på ett rent IPv6-nät skall kunna prata
med IPv4-noder. Det betyder kortfattat att ett reserverat IPv6-nät kan
innehålla hela IPv4-adressrymden och används som destination när en
IPv6-nod vill prata med en IPv4-nod. En NAT64-låda någonstans översätter
det ena till det andra.
</p>

<p>
För att det där skall fungera krävs också att man busar med
DNS-uppslagningar, förstås, för en ren IPv6-nod vill ju bara ha svar på
AAAA-frågor och ställer antagligen inte ens A-frågor. Då får resolvern
helt enkelt ställa A-frågor på nodens vägnar och trycka in svaret i en
förfalskad AAAA-post med en adress i NAT64-nätet, om jag förstår det
rätt. Det är detta som kallas DNS64.
</p>

<p>
Bergis är det några fler sådana fultricks som kan behövas. Hur som helst
tycker jag det är betydligt mindre ont och fel än vanlig NAT på IPv4.
</p>

<p>
Dags att migrera till IPv6!
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Boomtime, the 32 day of Chaos in the YOLD 3177 (<time datetime="2011-02-01">2011-02-01</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/ipv4-slut.html</link>
  <guid>https://hack.org/~mc/blog/ipv4-slut.html</guid>
  <pubDate>Tue, 01 Feb 2011 14:25:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[27C3: 27th Chaos Communication Congress]]></title>
  <description><![CDATA[<p>
Publicerad 16:18. Redigerad 21:46 för att göra några språkändringar,
skjuta in några kommentarer och för att jag kom på mig själv med att
använda grammatisk kommatering!
</p>

<p>
Jag spenderade mellandagarna i Berlin på
<a href="http://events.ccc.de/congress/2010/">27C3</a>. Det här var mitt tredje
besök på konferensen och 27:e(!) året den hölls. Jag tycker det är bra
synd att jag inte upptäckte den tidigare.
</p>

<p>
Petra och barnen varit väldigt tålmodiga med mig de senaste tre åren när
jag pipit iväg till Berlin direkt efter julfirandet, men det har
fungerat ganska bra. Undantaget var förra året när jag var borta från
lillflickan alldeles för länge och kom tillbaka först en bit in i
januari. Det tänker jag inte göra om. Pappa saknade dotter och dotter
saknade pappa. Jag hoppas ändå jag kan fortsätta åka iväg på de här
fantastiska konferenserna.
</p>

<p>
C3 är en av de allra bästa konferenser jag någonsin varit på och då har
jag ändå varit på en hel del konferenser och stora möten under min
karriär (such as it is). Dessutom är C3 en av de billigaste konferenser
jag stött på. Denna gång kostade det 70 euro för fyra dagars konferens
förutom kostnaden för resa, bostad och mat (och öl), så klart.
</p>

<p>
Bostadskostnaden har tidigare hållts nere genom att jag kraschat hos
vännen Lars i ett kollektiv i Kreuzberg men Lars har fått jobb i USA och
lämnat Berlin. Denna gång blev det alltså hotell. Ett alternativ hade
kanske varit sovsäck i den gymnastiksal som CCC tillhandahåller men jag
kände mig för gammal och bekväm för att det skulle vara realistiskt.
</p>

<p>
Jag tycker förstås också årets konferens var fantastisk även om jag
kanske inte maximerade antalet föredrag. En av de stora grejerna med C3
är att ~4000 hackers samlas på samma ställe. Mingelpotentialen, om man
nu vågar, är väldigt hög. Föreläsningar går att ta till sig även i
efterhand men förlorade kontakter hittar man inte igen lika lätt.
</p>

<p>
Inspelningar av föreläsningarna finns här:
</p>

<p>
<a href="http://events.ccc.de/congress/2010/wiki/Documentation">http://events.ccc.de/congress/2010/wiki/Documentation</a>
</p>

<p>
Jag och vännen R åkte ner dagen före konferensen började. Vi checkade in
på hotell Wall Street, ett hotell med börstema som roligt nog låg på
just Wallstrasse. Mattorna i korridorerna hade börstickers som mönster,
mattan i rummet var i form av en stor dollarsedel och på väggarna stod
citat av berömda börsmäklare, et cetera ad nauseam.
</p>

<p>
Det är otroligt ironiskt att <i>jag</i>, med min något negativa syn på
finansmarknaden, bodde på det här hotellet, måste jag säga. Tack och lov
spenderade vi ganska lite tid på hotellet. I övrigt var det väl rätt OK
och framför allt ett kap för de pengar vi gav: Det blev ungefär 250 pix
per person och natt.
</p>

<p>
Efter incheckning begav vi oss ut i jakt på mat. Tyvärr var min
information felaktig och veganrestaurangen Yellow Sunshine var stängd
när vi väl promenerat ända dit. Det är annars problemet med att åka
någonstans i mellandagarna &#x2014; saker tenderar att vara stängda. Vi
hittade i stället en indisk restaurang på Oranienstrasse som serverade
veganskt, tack och lov.
</p>

<p>
Orsaken att vi promenerade var framför allt för att automaterna på
U-bahn vägrade ta emot våra sedlar. Det visade sig till slut att det
inte var så stora problem att gå nästan överallt ändå, trots det
tämligen kalla och snöiga Berlin. Undantaget var den långa och
traditionsenliga brunchen på <a href="http://cafe-morgenrot.de/">Cafe
Morgenrot</a> i Prenzlauer Berg då vi faktiskt åkte U-bahn. Morgenrots
brunch måste upplevas! Rekommenderas verkligen!
</p>

<p>
Vegankäk i övrigt hittade jag ganska ofta på underbara
<a href="http://www.dolores-berlin.de/">Dolores</a>. Dolores ligger inte så långt
från <a href="http://www.bcc-berlin.de/en/home">bcc</a>, där C3 normalt hålls, så
det är ett tips till alla läsare med smak för det veganska köket.
</p>

<p>
Vi begav oss efter indiska käket direkt till bcc och vinkades bara förbi
av de som stod vid dörren. Armbanden hade ännu inte börjat delas ut. Vi
hittade bord och några andra svenskar, bänkade oss och drog fram
datorerna. Jag gick och registrerade min medhavda DECT-telefon, för som
vanligt fanns ett eget telefonnät på konferensen, courtesy of
<a href="http://eventphone.de/">Eventphone</a>. Detta år, precis som förra, fanns
också ett eget GSM-nät med minst en egen basstation.
</p>

<p>
I år ringde faktiskt folk till mig även över SIP-bryggan och inte bara
över det vanliga telefonnätet. Jag vet inte varför ingen gjort det
förut, fast jag lämnat ut SIP-adressen. Kanske är det fortfarande så
ovanligt med SIP-klienter?
</p>

<p>
Det var tur att jag reggade telefonen för bara en liten stund senare
drabbades vi av switchproblem vid vårt bord. Det trådlösa var redan
hopplöst så vi körde så klart på medhavda TP-kablar. Vi ringde NOCen vid
23-tiden och de fixade genast switchens problem. R kommenterade: ”Inte
corporate IT, direkt”. Nej, just det.
</p>

<p>
Vi gick till slut ner och fixade de armband som fungerar som biljett och
slet oss så småningom till hotellet för att sova lite innan konferensen
började på allvar nästa dag.
</p>

<p>
Keynote, som öppnade konferensen dagen därpå, hölls av den närmaste
legendariske Rop Gonggrijp som en gång i tiden startade hackertidningen
Hack-tic, internetleverantören <a href="http://www.xs4all.com/">XS4All</a> och
började arbetet på <a href="http://www.cryptohone.de/">Cryptophone</a>. Hans
föredrag handlade om en slags uppdatering från ett tidigare föredrag på
en C3 som hette ”We Lost the War”. Nu lät han betydligt mer hoppfull.
</p>

<p>
Senare på dagen lyssnade jag på Peter Stuge som berättade initierat om
USB och libusb. Han lovade en workshop och den blev av någon dag (natt!)
senare även om den var helt improviserad om jag förstår det rätt. Folk
lärde sig nog mycket men jag var inte där.
</p>

<p>
Efter det tänkte jag gå till en föreläsning med den mystiska titeln
”Desktop on the Linux&#x2026; (and BSD, of course)”, som verkade handla om
kritik av X och associerade tekniker som GNOME, KDE, dbus, HAL,
pulseaudio, et cetera. Det var fullt i salen när jag kom, så jag stod en
stund utanför och tittade på föreläsningen på en skärm. Det började
väldigt snabbt bli pinsamt, tyvärr, eftersom jag ändå tyckte att
föreläsaren hade en del viktiga poänger. De verkade dock försvinna rätt
mycket i debatt med framför allt Lennart Poettering, författaren av
bland annat pulseaudio, som fanns i publiken.
</p>

<p>
Jag gav upp och jagade mat i stället. Andra sa i efterhand att
föreläsningen varit väldigt rolig, mest på grund av att den stackars
föreläsaren blev så utskälld. Själv tyckte jag som sagt mest att det var
pinsamt.
</p>

<p>
Jag såg ett roande föredrag av Bruce Dang som illustrerade hur det går
till bakom kulisserna på Microsoft när de jagar säkerhetshål. Föredraget
hette ”Adventures in analyzing Stuxnet” och de visade på fyra stycken
0-day exploits och hur de analyserade dem. Bruce snackade rätt
college-artad och det var mycket ”What the fuck!?” och liknande. Även om
det var roande att lyssna på så framstod Microsoft-analytikerna som
ganska kaotiska. Tyvärr nämnde han inte Stuxnets payload överhuvudtaget
men det har jag hört att andra har analyserat även om jag ännu inte läst
något om det själv.
</p>

<p>
Inför dag två hade jag skrivit upp ”File -&gt; Print -&gt; Electronics”, som
jag valde att skippa även om det lät intressant. Killen hade byggt om en
skrivare så han kunde skriva ut PCB:er, om jag förstod det rätt. Det
låter naturligtvis otroligt coolt men jag vill i så fall <i>köpa</i> en sådan
skrivare, inte behöva bygga den själv. Det är nog några år bort
fortfarande. Jag kanske rent av hinner lära mig något om
elektronikkonstruktion först&#x2026;
</p>

<p>
Det första jag såg på dag två var i stället den otroligt imponerande
”Reverse Engineering the MOS 6502”. Michael Steil, som höll
föreläsningen, gick snabbt framåt men var samtidigt mycket pedagogisk.
</p>

<p>
Föredraget handlade rätt mycket om något jag redan hade sett och
uppskattat: några som fotograferat och vektoriserat 6502-processorn och
sedan skapat en cykelexakt simulator med själva 'ritningen' som bas.
Resultatet i form av en stor SVG driven av Javascript(!) finns här:
</p>

<p>
<a href="http://visual6502.org/">http://visual6502.org/</a>
</p>

<p>
Om du tänker köra simulatorn behöver du en rejält snabb dator och
browser. Steil själv sa att han skrivit om själva motorn i simulatorn i
C. Det blev ungefär 1000 gånger snabbare enligt hans beräkningar. Jag
vet tyvärr ännu inte var man hittar Steils simulatordrivare men jag har
heller inte letat så noga.
</p>

<p>
Denna dag var också det föredrag som kanske fick mest genomslag i
vanliga nyhetsmedia: ”Wideband GSM Sniffing”. Jag såg det inte och är
inte överdrivet intresserad personligen men jag förstod det som att de
använt den stora regnbågstabellen för A5-kryptot som massor med folk
räknat fram och använder en egen GSM-stack i en telefon för att sniffa
på någon låg nivå på GSM-nätet. Efter det kan de på kort tid knäcka
kryptot och lyssna på vad de spelat in.
</p>

<p>
Nästa fördrag jag lyssnade på var i stället ”Defense is not dead. Why we
will have more secure computers - tomorrow” av Andreas Bogk. Han tog upp
sådana saker som formell verifiering av mjukvara och taggade
arkitekturer i hårdvara, som tydligen verkar vara på väg tillbaka på
modet. Woho! Lispmaskiner, någon?
</p>

<p>
Andreas nämnde något oerhört intressant, ”Cleanslate design of
Resilient, Adaptive, Secure Hosts” (CRASH), som jag tyvärr inte hittat
så mycket om ännu. Jag hittar DARPA:s upphandling av det:
</p>

<p>
<a href="http://www.darpa.mil/i2o/programs/crash/crash.asp">http://www.darpa.mil/i2o/programs/crash/crash.asp</a>
</p>

<p>
men inte mycket mer. Andreas har skickat mig lite bakgrundspapper som
jag ännu inte hunnit läsa.
</p>

<p>
Nästa föredrag var ett till stort namn, Daniel Bernstein, som skulle
hålla föredrag om ”High-speed high-security cryptography: encrypting and
authenticating the whole Internet”. Det DJB mest gjorde var att basha
DNSSEC, basha lite till, basha DNSSEC, sedan basha tcpcrypt och sedan
DNSSEC lite mer.
</p>

<p>
Hans kritik mot DNSSEC var dels att det kanske inte skyddar det man vill
skydda och dels kunde användas för att skapa trafik för DDoS. tcpcrypt
sågade han för att det var så trivialt att injicera trafik i. Enligt DJB
har skaparna av tcpcrypt inte insett att folk kan skapa och injicera
egna IP-paket!
</p>

<p>
Hans lösning på alltihop var i stället ett eget UDP-baserat protokoll
med elliptic curve-kryptering som han ville skulle ersätta all trafik på
nätet. Dessutom skulle rubbet prata UDP på port 53, alltså där
DNS-trafiken vanligen finns, för att på så sätt komma förbi eventuella
filtreringar.
</p>

<p>
Tyvärr framgick inte hur man skulle få något mer än opportunistisk
kryptering, för jag hängde inte med på hur man skall kunna lita på
autenticeringsnycklarna för ändnoderna. Kanske missförstod jag honom
eller så utelämnade han någon detalj.
</p>

<p>
Överhuvdtaget tyckte jag hans förslag var lite konstigt. Jag skulle
gärna i stället se någon implementation av Better Than Nothing Security
(BTNS), IPsec med opportunistisk kryptering. RFC:erna finns där! Nog
borde man kunna använda elliptic curve-krypton även här, om det nu är så
fina saker? Någon?
</p>

<p>
Dag tre började med en stor förvåning: P1 Morgon sände från 27C3!
</p>

<p>
<a href="http://sverigesradio.se/sida/artikel.aspx?programid=1650&amp;artikel=4264249">http://sverigesradio.se/sida/artikel.aspx?programid=1650&amp;artikel=4264249</a>
</p>

<p>
Ljudfil i MPEG4/AAC finns här:
</p>

<p>
<a href="http://sverigesradio.se/topsy/ljudfil/2819288-hi.m4a">http://sverigesradio.se/topsy/ljudfil/2819288-hi.m4a</a>
</p>

<p>
Första föredraget jag gick på var ”Console Hacking 2010”, en fantastiskt
genomgång av knäckning av moderna spelconsoler med en ännu mer
fantastisk avslutning: Sony PS3 är nu ordentligt knäckt utan någon som
helst chans att fixa med firmware-uppgradering. Woho! Detta kanske
betyder att ett fritt OS återigen kan leva på min PS3:a så småningom.
</p>

<p>
Som bekant tog Sony i panik bort OtherOS-funktionaliteten i en
uppgradering för kanske ett år sedan. Jag hade, så klart, Linux
installerad på min PS3:a och hade precis börjat försöka göra något med
den och den fina Cell-processorn som bor i PS3:an när uppgraderingen
kom. Jag vägrade förstås uppgradera och tänkte ha kvar min
Linux-installation men tyvärr slutade sådana saker som multiplayer helt
att fungera. Ledsna söner tjatade på sin far. Fadern lät sig övertygas
och min Linux-installation offrades på familjelyckans altare. <b>sniff</b>
</p>

<p>
Nu kanske det kan bli ändring&#x2026; Som grädde på moset fick jag alldeles
nyss höra att
<a href="http://docs.freebsd.org/cgi/getmsg.cgi?fetch=559737+0+archive/2011/freebsd-current/20110109.freebsd-current">FreeBSD
portats till PS3!</a>
</p>

<p>
Nästa föredrag var ”FrozenCache: Mitigating cold-boot attacks for
Full-Disk-Encryption software” som verkade vara en lovande lösning.
Lösningen går ut på att spara nyckeldata inne i en x86-processors cache
och i övrigt helt enkelt slå av cache-användningen. Det här blir
naturligtvis otroligt långsamt och något som naturligtvis bara skall
användas när det verkligen behövs.
</p>

<p>
Under kvällen träffade jag en användare av min fönsterhanterare,
<a href="https://hack.org/mc/hacks/mcwm/">mcwm</a>, en matematikstudent från
München vid namn <a href="http://chneukirchen.org/">Christian Neukirchen</a>. Han
kan vara den första användaren jag känner till utanför vänkretsen.
Christian skrev till mig tidigt under utvecklingen i somras och kom både
med patchar och önskemål. Vi hade ett givande samtal.
</p>

<p>
Jag pratade också med <a href="http://michael.stapelberg.de/">Michael
Stapelberg</a>, huvudutvecklaren av <a href="http://i3.zekjur.net/">i3</a>, en
annan fönsterhanterare som använder
<a href="http://xcb.freedesktop.org/">XCB</a>. Det var ett kort samtal men också
givande.
</p>

<p>
Det verkar förresten hittills som om alla fönsterhanterare som använder
XCB, utom mcwm, är tiling window managers.
</p>

<p>
På kvällen var det Christmas Ball Festival 2010 på Huxley's Neue Welt i
Berlin. Där spelade bland annat Fields of the Nephilim och Laibach! Jag
gick faktiskt ändå inte dit. Äldste sonen Ludvig där hemma trodde inte
sina öron och var nog ganska avundsjuk. Fields of the Nephilim! Och
pappa gick inte ens dit!
</p>

<p>
Sista dagen på 27C3 inledde jag med att lyssna på Sergey Bratus om
”Hackers and Computer Science”. Han sa, i princip, att många exploits
kunde man se på som ”weird machines”, automata eller rent av
turing-kompletta universella maskiner som oavsiktligt finns i
konstruktionen, speciellt om man utnyttjar flera olika nivåer i sin
attack. Hans föredrag handlade om att han ville dela med sig av den här
fundamentala insikten och om hur man, möjligen, skulle kunna skydda sig
mot det. Otroligt intressant.
</p>

<p>
Sergeys föredrag överlappade delvis med ”Data Analysis in Terabit
Ethernet Traffic” som jag också hade velat se, men R, som lyssnade på
den senare sa att jag inte hade missat någonting. Det var tydligen mest
en rabbling av olika leverantörer och modellnummer, konstigt nog. Var
fanns de snuskiga detaljerna? Hade föreläsaren missat vilka han
föreläste för?
</p>

<p>
Vi såg sedan tillsammans Jeroen Massars ”How the Internet sees you” som
skulle visa vad hans analysverktyg kunde ge för resultat på en analys av
all nättrafik från 27C3 så långt. Tyvärr hade hans forskningscenter på
IBM fått kalla fötter och deras jurister hade övertalat dem om att
skriva på att de kastar och anonymiserar <i>allting</i>, så det blev väldigt
lite analys av det hela och mer lite vanligt trafikgrafer. Jag tror inte
det var det Jeroen hade tänkt visa.
</p>

<p>
Konstigt nog valde han inte att visa ens någon screenshot av ens
dummydata från de verktyg han varit inblandad i, däribland
<a href="http://www.zurich.ibm.com/aurora/">AURORA</a>, nu komersialiserad som
<a href="http://www-01.ibm.com/software/tivoli/products/netcool-performance-flow/">Tivoli
Netcool Performance Flow Analyzer (TNPFA)</a>. Han <i>nämnde</i> konstig nog
inte ens verktygen vid namn, vad jag minns.
</p>

<p>
Han berättade däremot en del av vad verktygen kunde göra och hur
identifierad man kunde bli bara på sin användning av nätet.
</p>

<p>
I år skippade vi avslutningsfesten och drog oss i stället iväg mot Tegel
för att flyga till Köpenhamn. Planet var försenat, naturligtvis, men
efter två öl i baren fick vi kliva ombord och åka hem.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Sweetmorn, the 11 day of Chaos in the YOLD 3177 (<time datetime="2011-01-11">2011-01-11</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/27c3.html</link>
  <guid>https://hack.org/~mc/blog/27c3.html</guid>
  <pubDate>Tue, 11 Jan 2011 21:46:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[radns, del 3]]></title>
  <description><![CDATA[<p>
Jag sitter på <a href="http://events.ccc.de/congress/2010/">27C3</a> och har
hittat lite tid att hacka på
<a href="https://hack.org/mc/hacks/radns/">radns</a>, min klient för
RDNSS-optionen i IPv6 SLAAC. Den har inte fått någon kärlek på mycket
länge.
</p>

<p>
Nu har jag rättat en del allvarliga fel. Jag har därför gjort en ny
release.
</p>

<p>
Rick Dicaire påpekade för mig i mail hur jag kunde förbättra mitt
startscript, så det fungerar nu mycket bättre.
</p>

<p>
Pinsamt nog hade jag skapat PID-filen före processen forkade och blev
daemon, så fel PID stod i filen! Haha. Så går det när jag själv bara kör
den i förgrunden för att debugga&#x2026; &lowast;rodna&lowast;
</p>

<p>
När jag stoppade in åldrande av RDNSS-informationen lyckades jag
dessvärre också ta bort kontrollen att jag överhuvudtaget hade fått
någon RDNSS-option! Alltså skrevs en resolv.conf ut även om jag inte
hade fått några data. Filen var då fylld av slumpmässig data. Aaaah!
</p>

<p>
Det är uppenbart från allt detta att jag behöver en testsvit, eller hur?
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Sweetmorn, the 69 day of The Aftermath in the YOLD 3176 (<time datetime="2010-12-27">2010-12-27</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/radns3.html</link>
  <guid>https://hack.org/~mc/blog/radns3.html</guid>
  <pubDate>Mon, 27 Dec 2010 15:55:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[Länkar 2010-11-29]]></title>
  <description><![CDATA[<p>
Principia Mathematica fyller 100 år! I helgen var det med den
anledningen ett symposium på Trinity College, Cambridge:
</p>

<p>
<a href="http://www.srcf.ucam.org/principia/">http://www.srcf.ucam.org/principia/</a>
</p>

<p>
Tekniska museets förteckning över datorrelaterade objekt i samlingen:
</p>

<p>
<a href="http://www.tekniskamuseet.se/download/18.689e694f125720d4ec480001504/Datorer+p%C3%A5+TM.pdf">http://www.tekniskamuseet.se/download/18.689e694f125720d4ec480001504/Datorer+p%C3%A5+TM.pdf</a>
</p>

<p>
Kort kommentar: De har faktiskt en Datasaab D21! Däremot finns inga DEC
PDP-11:or eller -10:or! De har en enda Amiga, men ingen Atari ST.
</p>

<p>
<a href="http://ripe.net/ripe/docs/ripe-501.html">Requirements for IPv6 in ICT
Equipment (RIPE 501)</a>.
</p>

<p>
<a href="https://lagen.nu/2010:800">Nya skollagen (SFS 2010:800)</a> säger:
</p>

<blockquote>
<p>
4 § Barn ska från och med höstterminen det år barnet fyller tre år
erbjudas förskola under minst 525 timmar om året, om inte annat följer
av 5-7 §§.
</p>
</blockquote>

<p>
1,5 år kvar, sen kan jag kanske hacka tre timmar om dagen. Ja, om jag
inte hittar på något annat än att vara hemmapappa före det, alltså.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Pungenday, the 41 day of The Aftermath in the YOLD 3176 (<time datetime="2010-11-29">2010-11-29</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/links-101129.html</link>
  <guid>https://hack.org/~mc/blog/links-101129.html</guid>
  <pubDate>Mon, 29 Nov 2010 14:59:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[Fönsterhanteraren mcwm, en uppdatering]]></title>
  <description><![CDATA[<p>
Jag har släppt några nya versioner av min fönsterhanterare, mcwm, sedan
jag sist skrev om den i bloggen. Alla versionerna finns här:
</p>

<p>
<a href="https://hack.org/mc/hacks/mcwm/">https://hack.org/mc/hacks/mcwm/</a>
</p>

<p>
De viktigaste nyheterna är att jag fixat en del buggar, bland annat en
där den workspace-lokala listan över fönster manglades om ett fönster på
en annan workspace än den aktiva förstördes.
</p>

<p>
Jag har också stoppat möjligheten för klienter att själva utan vidare
mappa sig själva om mcwm anser att redan tillhör en annan workspace, som
jag nämnde i <a href="https://hack.org/mc/blog/emacs-raise.html">ett tidigare
inlägg.</a> Kanske får jag anledning att revidera det. Jag vet inte ännu.
Mer användaråsikter behövs.
</p>

<p>
Sedan några versioner stödjer mcwm också fönsters initiala koordinater
(typiskt satta med <code>-geom</code> eller med X-resurser) när fönstret mappas
första gången. Det gjorde den inte alls tidigare utan placerade i
stället fönster där den ville.
</p>

<p>
Den allra senaste förändringen är trivial, men viktig: Jag har bytt
modifier för tangentkombinationerna från Mod2 till Mod4. Orsaken är att
jag insåg att Mod2-masken ofta genereras av NumLock i moderna
X-konfigurationers defaultmappning! NumLock! Ooops! Det är ju dessutom
en låsande tangent!
</p>

<p>
Orsaken att jag inte visste att Mod2 och NumLock hörde ihop är förstås
att jag så länge använt helt egna tangentbordsmappningar. Jag har inte
varit i närheten av någon defaultkonfiguration länge nog för att
upptäcka det här.
</p>

<p>
Nu har jag alltså bytt default till Mod4 i stället, som på många
konfigurationer verkar vara bunden till Super_L, som typiskt på ett
104-tangenters PC-tangentbord är Windows-tangenten. Det tycker jag
verkar vara ett mycket vettigare val än NumLock.
</p>

<p>
För mer förändringar att vänta, se TODO-filen i tarbollen.
</p>

<p>
Thomas Klausner har förpackat mcwm för pkgsrc, paketsystemet som bland
annat NetBSD använder! Se <a href="http://pkgsrc.se/wip/mcwm">wip/mcwm</a>. Jag
vet inga omständigheter. Thomas kommunicerade inte med mig om det. Jag
hittade det av en slump.
</p>

<p>
Helt nyligen fick jag också höra att mcwm finns förpackat för
Linux-distributionen Puppy Linux.
</p>

<p>
Folk som använder NetBSD eller Puppy Linux kan nu alltså testa mcwm
något lättare än ni andra.
</p>

<p>
Sex stycken mcwm-användare har hört av sig till mig direkt. Två av dem
har dessutom skickat patchar. Jag gissar att det finns åtminstone någon
mer än vi sju som faktiskt använder mcwm som vår vanliga
fönsterhanterare, men jag har förstås inget sätt att ta reda på det.
</p>

<p>
Om ni testar, hör gärna av er!
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Pungenday, the 31 day of The Aftermath in the YOLD 3176 (<time datetime="2010-11-19">2010-11-19</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/mcwm3.html</link>
  <guid>https://hack.org/~mc/blog/mcwm3.html</guid>
  <pubDate>Fri, 19 Nov 2010 21:49:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[Emacsclient flyttar Emacs-fönster!]]></title>
  <description><![CDATA[<p>
Jag upptäckte för ett tag sedan en mystisk sak med Emacs beteende under
X tillsammans med emacsclient.
</p>

<p>
Säg att du har en Emacs igång med Emacs-fönster på en annan workspace
och att du har <code>server-raise-frame</code> satt som icke-nil (det är
default-värdet). Säg att du nu startar nu emacsclient. Då flyttas
plötsligt ett av dina Emacs-fönster, vilket som helst, till den
workspace du är på! Den flyttar också muspekaren till det flyttade
fönstret.
</p>

<p>
Jag upplevde detta först under min egen fönsterhanterare,
<a href="https://hack.org/mc/hacks/mcwm">mcwm</a>, men verifierade beteendet
också under ctwm, evilwm och openbox.
</p>

<p>
Jag tvingade Emacs att sluta göra så genom att helt enkelt i mcwm
förbjuda fönster som redan finns i en annan workspace-lista att dyka upp
på den aktuella workspacen (om det nu inte är mcwm själv som bestämt
det, förstås). Det löste problemet, åtminstone delvis. Kvar är problemet
med en flyttande markör. Emacs flyttar fortfarande markören dit den tror
att den just flyttat fönstret.
</p>

<p>
Ett annat sätt att lösa problemet är förstås
</p>

<pre class="example" id="orgd404331">
(setq server-raise-frame nil)
</pre>

<p>
och det löser ju också muspekarens förflyttning. Däremot löser det ju
inte det generella fallet med X-klienter som själva försöker smita från
workspaces. Det vill jag inte tillåta i mcwm.
</p>

<p>
Om man skall lösa problemet ordentligt, inklusive muspekarens flytt, så
kanske man kan ändra i <code>select-frame-set-input-focus</code> i frame.el. Den
innehåller:
</p>

<pre class="example" id="orgc7ee8e5">
  "Select FRAME, raise it, and set input focus, if possible.
If `mouse-autoselect-window' is non-nil, also move mouse pointer
to FRAME's selected window.  Otherwise, if `focus-follows-mouse'
is non-nil, move mouse cursor to FRAME."
  (select-frame frame)
  (raise-frame frame)
  ;; Ensure, if possible, that FRAME gets input focus.
  (when (memq (window-system frame) '(x w32 ns))
(x-focus-frame frame))
  ;; Move mouse cursor if necessary.
  (cond
   (mouse-autoselect-window
(let ((edges (window-inside-edges (frame-selected-window frame))))
  ;; Move mouse cursor into FRAME's selected window to avoid that
  ;; Emacs mouse-autoselects another window.
  (set-mouse-position frame (nth 2 edges) (nth 1 edges))))
   (focus-follows-mouse
;; Move mouse cursor into FRAME to avoid that another frame gets
;; selected by the window manager.
(set-mouse-position frame (1- (frame-width frame)) 0))))
</pre>

<p>
Här ser vi att koden antar att <code>raise-frame</code> fungerade. Vad händer om
fönstret inte är mappat? Då flyttas alltså muspekaren i alla fall.
</p>

<p>
I Emacs-koden finns <code>raise-frame</code> som C-funktion i frame.c. Den kallar
på <code>make_frame_visible()</code> som sedan kallar på
<code>xterm.c:x_make_frame_visible()</code>. Den ser ut att göra så rätt den kan,
tycker jag, men den returnerar inga hints om att den kanske gett upp
ifall fönsterhanteraren vägrade mappa fönstret.
</p>

<p>
Tillbaka till elispkoden i <code>select-frame-set-input-focus</code> som jag
citerade ovan: Om man skulle peta in en koll med <code>frame-visible-p</code> efter
<code>raise-frame</code> för att se om operationen att göra Emacs-fönstret synlig
misslyckades så kan man ge upp. Det skulle lösa allas problem, vad jag
vet. Jag vet ännu inte vad Emacs-utvecklare tycker om det, men kanske
skall försöka nämna det någonstans.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Pungenday, the 31 day of The Aftermath in the YOLD 3176 (<time datetime="2010-11-19">2010-11-19</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/emacs-raise.html</link>
  <guid>https://hack.org/~mc/blog/emacs-raise.html</guid>
  <pubDate>Fri, 19 Nov 2010 21:34:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[FSONS 2010]]></title>
  <description><![CDATA[<p>
Förra helgen besökte jag <a href="http://fscons.org/">FSCONS</a>, Free Society
Conference and Nordic Summit i Göteborg. Det här var andra gången jag
besökte konferensen och, tror jag, fjärde gången konferensen anordnades
överhuvudtaget.
</p>

<p>
Två föredrag stod ut ur mängden: Javier Serranos presentation av
<a href="http://www.ohwr.org/">Open Hardware Repository</a> och Alessandro
Rubinis workshop ”OS from scratch”.
</p>

<p>
OHR är en samlingsplats för kompletta elektronikkonstruktioner. Det
händer att FPGA:er är inblandade och ibland används HDL-beskrivningar
från <a href="http://opencores.org/">OpenCores</a>, som naturligtvis kan få vara
kvar där, men ibland finns även själva HDL-koden i OHR-arkivet, om jag
förstår det rätt.
</p>

<p>
Javier tog speciellt upp två projekt, RHINO och White Rabbit, som
exempel på vad som finns i OHR.
</p>

<p>
<a href="http://www.rhino.ee.uct.ac.za/">RHINO</a> är ett projekt för att ge
hårdvarustöd för Software Defined Radio. Just nu verkar RHINO och dess
föregångare framför allt används inom radioastronomin. Konstruktionen
verkar lite tuffare än
<a href="http://en.wikipedia.org/wiki/Universal_Software_Radio_Peripheral">USRP</a>
som jag varit nog så imponerad av.
</p>

<p>
Javiers eget projekt, <a href="http://www.ohwr.org/projects/white-rabbit">White
Rabbit</a>, är en specialiserad Ethernet-switch med tidssynkronisering på
både fysiska lagret och länklagret (med
<a href="http://en.wikipedia.org/wiki/Precision_Time_Protocol">PTP</a>) som
skalar upp till 10 km, ~1000 noder och med en noggrannhet på under 1
nanosekund!
</p>

<p>
Javier avslutade sitt föredrag genom att säga att han förmodade att han
pratade framför allt inför mjukvaruhackers och att han behövde hjälp.
Han sade att det som framför allt behövs är fria verktyg för
elektronikkonstruktion och hårdvarudesign.
</p>

<p>
Det finns några fria verktyg redan, däribland
<a href="http://www.gpleda.org/index.html">gEDA-projektet</a> som nämndes i en
diskussion med publiken (framför allt med Peter Stuge), men det behövs
mer arbete. Javier talade sig särskilt varm för Stephen Williams
<a href="http://www.icarus.com/eda/verilog/">Icarus</a>, ett HDL-verktyg som är
lite udda eftersom det beter sig mer som en vanlig kompilator.
Personligen skulle jag känna mig mycket mer bekväm med det, men såna där
hårdvarudesigners kanske skulle tycka att det var konstigt.
</p>

<p>
Alessandros workshop om Two Hour Operating System (THOS) var på söndag
förmiddag. Det var dagen efter FSCONS:s egen Social Event med buffé och
utdelning av Nordic Free Software Award till
<a href="http://bre.klaki.net/bre/ummig.shtml">Bjarni Rúnar Einarsson</a>, så
deltagarna kanske var lite trötta. För egen del hade jag dessutom följt
upp FSCONS-firandet i bergrummet <a href="http://www.berg211.se/">Berg 211</a>
med ett (alltför) långt besök på en extrainsatt burleskklubb&#x2026;
</p>

<p>
Hur som helst var THOS-workshopen väldigt kul. Alessandro skrev
verkligen stora delar av koden framför oss åhörare! Han kommenterade
hela tiden vad han gjorde på ett mycket roande och insatt sätt. Ibland
frågade han ut i publiken om vi hade några förslag på lösningar.
</p>

<p>
Resultatet blev till slut ett litet operativystem på en ARM-baserad
prototypbräda. OS:et hade faktiskt processer och en scheduler, så det
var inte bara ett program som bootade på bara metallen.
</p>

<p>
Koden skrevs framför allt i C och han använde GCC som korskompilator. En
del kod skrevs, så klart, i ARM-assembler.
</p>

<p>
Jag frågade honom om han kunde tänkas publicera koden han skrivit och
fick ett jakande svar, men har ännu inte sett någon länk. Får jag reda
på något så dyker det upp i ett annat inlägg här.
</p>

<p>
Jag åt efter THOS-workshopen lunch och var visserligen med på
ytterligare något, men var så trött vid det laget att jag snart gav upp,
åkte till övernattningsplatsen (Tack igen, Måns!), packade ihop och
synkade sedan med vänner för en middag på restaurang Solrosen innan jag
åkte tåget hemåt.
</p>

<p>
Vi ses nästa år på FSCONS 2011!
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Setting Orange, the 28 day of The Aftermath in the YOLD 3176 (<time datetime="2010-11-16">2010-11-16</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/fscons2010.html</link>
  <guid>https://hack.org/~mc/blog/fscons2010.html</guid>
  <pubDate>Tue, 16 Nov 2010 14:35:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[Firefox som annan användare]]></title>
  <description><![CDATA[<p>
En bekant, Martin, sa i förbigående för någon månad sedan att han kör
sin webläsare som en annan användare. Det lät smart, tyckte jag, med
tanke på hur många attackvektorer som inblandar just webläsaren och då
speciellt de lite duktigare webläsarna som kan saker som Javascript och
sådant.
</p>

<p>
Jag använder som bekant framför allt
<a href="http://emacs-w3m.namazu.org/">Emacs-w3m</a> för att surfa på webben och
jag vet inte om det är så stor poäng att köra den som en annan
användare, men min metod nedan fungerar på den också, om man vill. Jag
känner mig desto mer säker på att det är en väldigt bra idé att inte
låta den Firefox jag ibland startar ha någon som helst möjlighet att
skriva eller ens läsa filer min hemkatalog.
</p>

<p>
Jag vet inte hur Martins lösning ser ut eller vilken webläsare han
använder, men jag tänkte berätta hur jag löste det: Jag drar ut
autenticeringskakan från min X-server, stoppar ner den i en fil, går
över till en annan användare, drar in kakan och startar Firefox som den
användaren mot min gamla användares X-display.
</p>

<p>
Jag startar alltså numera Firefox med ett script, fireweb. Det scriptet
ser ut så här:
</p>

<pre class="example" id="org49a0c63">
#! /bin/sh

umask 027
xauth extract - :0.0 &gt; /tmp/foo.txt
chgrp ff /tmp/foo.txt
su -l mcff /home/mcff/bin/fireweb
rm /tmp/foo.txt
</pre>

<p>
Användarna mc (jag) och mcff (den som skall köra Firefox) är båda med i
gruppen ff och får båda läsa /tmp/foo.txt, som jag alltså trycker in
X-kakan i. mcff:s eget fireweb-script ser ut så här:
</p>

<pre class="example" id="org8d8f67f">
#! /bin/sh

xauth merge /tmp/foo.txt
export DISPLAY=:0.0
firefox3 &amp;
</pre>

<p>
Firefox körs sedan som mcff men visas på min vanliga X-display. Beroende
på rättigheterna jag har på min hemkatalog som användaren mc så kan inte
användaren mcff komma åt filerna där och ställa till fuffens. Den
attackvektor som finns kvar är förstås X-servern, men det är svårt att
göra något åt.
</p>

<p>
Kanske kan detta vara användbart även för någon annan.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Sweetmorn, the 72 day of Bureaucracy in the YOLD 3176 (<time datetime="2010-10-18">2010-10-18</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/firefox-annan-user.html</link>
  <guid>https://hack.org/~mc/blog/firefox-annan-user.html</guid>
  <pubDate>Mon, 18 Oct 2010 21:43:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Lätt asocial MC, FSCONS och 27C3]]></title>
  <description><![CDATA[<p>
Jag har varit lätt asocial de senaste veckorna eller kanske rent av
månaderna. Ni som är med i samma fora som jag kanske eller kanske inte
har märkt det. Jag har gått ur många brevlistor och inte deltagit alls
eller väldigt lite i de många KOM-system jag annars frekventerar. Ett
tag läste jag till och med personlig sladdpost bara en gång i veckan,
men jag är nu åtminstone uppe i en läsning om dagen.
</p>

<p>
En gång om dagen är långt ifrån den tidigare hetsen när jag vanligen
läste mail så fort den anlände, förstås, men det kanske är bättre så
här. Jag vet faktiskt inte ännu. Jag har hela tiden ryckningar i
fingrarna för att kolla mail, läsa LysKOM eller hoppa in i en chat,
irriterande nog. Ytterligare en orsak att inte vara med på Facebook
eller något annat liknande &#x2014; jag skulle inte få något annat gjort!
</p>

<p>
Jag ber om ursäkt om jag varit seg att svara på sladdpost. Jag läser
allt som är direkt adresserat till mig och inte uppenbart är spam, men
det kan ta ett tag att svara på breven.
</p>

<p>
Naturligtvis har jag fortsatt att i stort sett helt undvika telefon och
har dessutom träffat förhållandevis få personer Away From Keyboard. Det
är framför allt min familj och någon enstaka vän jag träffar just nu.
</p>

<p>
Jag tror det här är en nödvändig paus och kanske ett slags återladdande
av batterierna. Å andra sidan vet jag inte om jag kommer tillbaka till
det gamla beteendet överhuvudtaget.
</p>

<p>
Hemmapappabestyren tar rätt mycket av min tid och jag försöker samtidigt
gå igenom en hel del saker här hemma. Det går långsamt, men behövs. Det
är också en hel del saker som behöver gås igenom mentalt, men det finns
det tyvärr mindre tid för. Framtiden känns lite oviss. Mer om det i ett
annat inlägg. Kanske.
</p>

<p>
Trots att jag känner mig en smula asocial skall jag snart på konferens:
Först ut är <a href="http://fscons.org/">Free Society Conference and Nordic
Summit</a> (FSCONS) i Göteborg 5&#x2013;7:e november. Föredragen är kanske inte
så fantastiskt hardcorenördiga, men det var rätt trevligt förra året,
även om den tekniska höjden alltså oftast inte var så hög.
</p>

<p>
Nästa konferens, däremot, är definitivt riktigt hardcorenördig. Jag
skall återigen åka på Chaos Communication Congress (C3),
<a href="http://ccc.de/">Chaos Computer Clubs</a> årliga konferens i Berlin som
hålls under mellandagarna. Det blir min tredje gång på konferensen och
27:e året den hålls. C3 är de bästa konferenserna jag någonsin varit på
och jag har varit på många (påstått) tekniska konferenser. För 80 euro
för fyra dagar är det dessutom en av de billigaste.
</p>

<p>
Något program (eller ”Fahrplan” som det brukar kallas) för 27C3 finns
ännu inte, men jag har hört det sägas att det skall dyka upp i november.
Vanligen finns ett eller flera hemliga punkter på programmet som dyker
upp medan konferensen pågår, så håll ögonen öppna och kolla Fahrplan
igen under konferensen. De hemliga punkterna brukar vara de stora och
det som avslöjas där brukar ofta hamna i världspressen.
</p>

<p>
27C3:s website finns här, men innehåller inte så mycket ännu:
</p>

<p>
<a href="http://events.ccc.de/congress/2010/">http://events.ccc.de/congress/2010/</a>
</p>

<p>
Titta gärna på websiten för 26C3, alltså förra årets konferens, för att
få ett slags intryck om vad det är för något:
</p>

<p>
<a href="http://events.ccc.de/congress/2009/">http://events.ccc.de/congress/2009/</a>
</p>

<p>
Nytt för i år är också att det är förköp på biljetterna. Tidigare år har
det bara gått att köpa biljetter på plats, vilket kan bli lite svårt när
du trängs med 4000 andra hackers som också hemskt gärna vill komma in.
</p>

<p>
Vi ses i Berlin!
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Sweetmorn, the 72 day of Bureaucracy in the YOLD 3176 (<time datetime="2010-10-18">2010-10-18</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/asocial.html</link>
  <guid>https://hack.org/~mc/blog/asocial.html</guid>
  <pubDate>Mon, 18 Oct 2010 21:14:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Textbaserade musikspelare]]></title>
  <description><![CDATA[<p>
Ganska nyligen rensade jag ordentlig i min hemkatalog, flyttade alla
kritiska konfigurationsfiler till en särskild katalog och började
versionshantera dem; allt sådant som jag borde ha gjort för länge sedan.
Jag fick mycket rensat och det är mycket lättare att hitta i min
hemkatalog.
</p>

<p>
Något senare installerade jag om FreeBSD på min huvudsakliga maskin, min
Thinkpad X60s, och återställde hemkatalogen från backup. Jag insåg då
att jag <i>inte</i> hade räddat min konfiguration för musikspelaren
<a href="http://moc.daper.net/">moc</a>!
</p>

<p>
Naturligtvis hade jag gjort tangentbordsbindningarna i moc ganska
Emacs-lika. Tyvärr lyckades jag inte fullt ut och fick inte
Meta-tangenter att fungera. Men nu var alltså min konfiguration borta.
</p>

<p>
Hellre än att göra om min konfiguration började jag leta efter andra
musikspelare med ett trevligt användargränssnitt eftersom jag ändå stört
mig lite på moc. Mina krav är ändå ganska enkla:
</p>

<ul class="org-ul">
<li>Fri programvara! Naturligtvis.</li>

<li>Textbaserad, curses (eller libslang eller något motsvarande), inte
CLI.</li>

<li>Inga enbart dekorativa utsmyckningar, som ramar eller färger som inte
fyller någon funktion. moc har till exempel en irriterande ram som
inte kan konfigureras bort, tyvärr.</li>

<li>Tangentbordsbindningar som kan användas utan piltangenter eller PgUp,
PgDn, et cetera. Gärna vänliga för någon som har Emacs eller vi i
ryggmärgen. I brist på detta duger förstås alldeles utmärkt om det går
att binda om tangenterna.</li>

<li>Kan spela FLAC, Ogg Vorbis och MP3.</li>

<li>Kan spara och ladda spellistor som vanliga filer.</li>

<li>Kan välja ljudfiler från katalogstruktur.</li>
</ul>

<p>
Extra poäng, men inte absoluta måsten:
</p>

<ul class="org-ul">
<li>Förstå sig på ID-taggar i ljudfilerna.</li>

<li>Skriven i ett programspråk jag behärskar.</li>
</ul>

<p>
Jag hittade efter lite letande en lovande kandidat som jag inte hört
talas om tidigare: <a href="http://herrie.info">Herrie</a>. Det visar sig dessutom att den är utvecklad
av FreeBSD-hackern <a href="http://80386.nl/">Ed Schouten</a>!
</p>

<p>
Herrie har ett enkelt användargränssnitt som visar en fillista och en
spellista. Överst visas nu spelande låt. Det går att skapa spellistor
från fillistan och vandra runt med hjkl, som i vi eller Nethack. TAB
byter mellan vyerna. Det verkade trevligt.
</p>

<p>
Programmet är skrivet i C, använder vanliga curses och förstår sig
enligt websidan på att spela åtminstone MP3, Ogg Vorbis och FLAC och
förstår dessutom ID-taggar i filerna om det finns några.
</p>

<p>
Jag installerade så klart Herrie för att testa. Tyvärr visar det sig att
Herrie som paket inte kan FLAC! WTF!?
</p>

<pre class="example" id="orgb7055c4">
% herrie -v
herrie 2.2 (Two-clause BSD license, using GNU GPL licensed libraries)

Global configuration file: /usr/local/etc/herrie.conf
Audio output: oss
Support for AudioScrobbler: yes
Support for HTTP streams: yes
Support for XSPF playlists (`spiff'): yes
Supported audio file formats:
- Ogg Vorbis
- MP3
</pre>

<p>
Av någon för mig okänd anledning har paketversionen inte länkat med
libsndfile som också ger FLAC-stödet. Nåväl, in med ports-versionen i
stället:
</p>

<pre class="example" id="orge4485af">
% herrie -v
herrie 2.2 (Two-clause BSD license, using GNU GPL licensed libraries)

Global configuration file: /usr/local/etc/herrie.conf
Audio output: oss
Support for AudioScrobbler: yes
Support for HTTP streams: yes
Support for XSPF playlists (`spiff'): no
Supported audio file formats:
- Ogg Vorbis
- MP3
- libsndfile
</pre>

<p>
Och jodå, nu kunde den spela FLAC (och WAV, om jag nu skulle vilja).
</p>

<p>
Gränssnittet blir mycket trevligare om jag slår av färgerna helt och
hållet med:
</p>

<pre class="example" id="org15dcffc">
gui.color.enabled=no
</pre>

<p>
i <code>.herrie/config</code>. Det ser då ut så här i en urxvt:
</p>


<figure id="org407ecf7">
<img src="https://hack.org/mc/images/herrie.png" alt="herrie.png">

<figcaption><span class="figure-number">Figure 1: </span>urxvt med herrie</figcaption>
</figure>

<p>
Kort sagt: Det uppfyller i stort sett alla mina punkter i den lilla
kravlistan ovan. Rekommenderas!
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Boomtime, the 66 day of Confusion in the YOLD 3176 (<time datetime="2010-07-31">2010-07-31</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/moc-vs-herrie.html</link>
  <guid>https://hack.org/~mc/blog/moc-vs-herrie.html</guid>
  <pubDate>Sat, 31 Jul 2010 21:51:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Happy Hacking Keyboard Professional 2]]></title>
  <description><![CDATA[<p>
I slutet av min dmesg:
</p>

<pre class="example" id="orgb2be914">
ukbd0: &lt;Topre Corporation HHKB Professional, class 0/0, rev 1.10/1.02, addr 3&gt; on usbus4
kbd2 at ukbd0
</pre>

<p>
Muhahaha! Jag har fått det! Min langare kom förbi med det igår. Jag
talar förstås om Extravagant Födelsedagspresent #2: ett Happy Hacking
Keyboard Professional 2. Jag skaffade mig den svarta modellen med blanka
tangenter, modellnummer PD-KB400BN. Mitt exemplar är tillverkat i
februari 2010.
</p>

<p>
Det är väldigt, väldigt skönt att skriva på och ger ifrån sig ett
distinkt ljud, men inte alls lika högljutt som somliga mekaniska
tangentbord (Model M på gamla PS/2:or!). Good feeling of oneness with
cup rubber, indeed:
</p>


<figure id="org5826006">
<img src="https://hack.org/mc/images/good-feeling.jpg" alt="good-feeling.jpg">

<figcaption><span class="figure-number">Figure 1: </span>Lustig text på paketet till ett HHKB Pro.</figcaption>
</figure>

<p>
Min inmatningsmiljö ser alltså nu ut så här:
</p>


<figure id="org6962532">
<img src="https://hack.org/mc/images/hp-and-hhkb2.jpg" alt="hp-and-hhkb2.jpg">

<figcaption><span class="figure-number">Figure 2: </span>Treknappars HP-mus och svart HHKB Pro2 med blanka tangenter.</figcaption>
</figure>

<p>
(Blixten gör att tangentbordet ser ljusare ut än vad det är. Det är
mattsvart rakt igenom.)
</p>

<p>
Det känns helt rätt.
</p>

<p>
Jag skriver ganska bra på det, trots tangenter utan märkning. De enda
problemen jag märkt hittills är när jag skall logga in på min nätbank:
Då håller jag vanligen inloggningsdosan med ena handen och försöker
alltså knappa in en sifferkod med andra handen utan visuell feedback att
jag knappar in rätt siffror, för bankens gränssnitt ger mig bara
punkter. Det går inget vidare. Jag får nog lägga ifrån mig dosan, helt
enkelt.
</p>

<p>
Det andra fallet är om jag försöker skriva något med en hand och håller
dottern med andra handen. Det går dock att argumentera för att jag inte
<i>skall</i> försöka skriva något på datorn i det läget och i stället ägna
mig åt dottern. Ho hum.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Pungenday, the 62 day of Confusion in the YOLD 3176 (<time datetime="2010-07-27">2010-07-27</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/hhkb2.html</link>
  <guid>https://hack.org/~mc/blog/hhkb2.html</guid>
  <pubDate>Tue, 27 Jul 2010 11:03:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Ny X-server vs gammal xmodmap]]></title>
  <description><![CDATA[<p>
När jag nyligen nyinstallerade FreeBSD på min bärbara till 8.1RC2 så
fick jag förstås också rätt nya paket och däribland en ny X-server, som
nu är version 1.7.5. Plötsligt fungerade inte min xmodmap för Happy
Hacking Keyboard!
</p>

<p>
Jag upptäckte två problem:
</p>

<ul class="org-ul">
<li>Höger Meta genererade inte längre keycode 143. Den gav i stället 129
om jag undersökte med i <code>xev(1)</code>.</li>

<li>Ordningen på Mode_switch och Shift spelade plötsligt roll!</li>
</ul>

<p>
Det första problemet var förstås lätt fixat. Jag ändrade helt enkelt
koden i <a href="https://hack.org/mc/files/hhkb-se.xmodmap">min xmodmap-fil för HHKB</a>. Fixat!
</p>

<p>
Varför i hela friden X-servern plötsligt anser att <i>just den</i> tangenten
har en ny keycode har jag ingen aning om. Om något stort gjorts i
ändringen av keycode-hanteringen tycker jag mer saker än just min högra
Meta-tangent borde gå sönder. Om någon vet vad det är fråga om får ni
gärna berätta för mig.
</p>

<p>
Det andra problemet tog lite längre tid att lista ut: Jag har alltså
Mode_switch på höger Alt på mitt HHKB. Jag trycker på höger Alt i
kombination med åäö för att få }{| och med Shift för att få ][\. Jag
trycker också på den tillsammans med några andra tangenter.
</p>

<p>
Plötsligt spelade det alltså roll om jag tryckte ner höger Alt eller
Shift-tangenten först. Jag fick inte längre någon Mode_switch-funktion
om jag tryckte ner Shift före Alt!
</p>

<p>
En xev-undersökning visade att höger Alt gav keysym NoSymbol om jag
tryckte ner Shift först! Nämen! Jag har alltid sett Mode_switch som en
modifier (knuten till Mod5 i mitt fall), ungefär som Control! De skall
ju inte byta keysym om man trycker på dem tillsammans med Shift. Det har
det i alla fall inte gjort tidigare.
</p>

<p>
Lösningen är att peta in Mode_shift även på Shift-platsen för xmodmap,
resulterande i:
</p>

<pre class="example" id="org771ea9c">
keycode 113 = Mode_switch Mode_switch
</pre>

<p>
Det löste problemet. Enkelt, när jag tänker på det. Duh! Men varför har
beteendet ändrats och när gjorde det det? Jag har inte sett något
någonstans om det här. Någon?
</p>

<p>
Hur som helst kanske det här inlägget kan hjälpa andra i samma knipa.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Boomtime, the 61 day of Confusion in the YOLD 3176 (<time datetime="2010-07-26">2010-07-26</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/xmodmap-ny-x-server.html</link>
  <guid>https://hack.org/~mc/blog/xmodmap-ny-x-server.html</guid>
  <pubDate>Mon, 26 Jul 2010 23:37:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[HP ZR24w]]></title>
  <description><![CDATA[<p>
I år tänkte jag köpa två lite extravaganta födelsedagspresenter åt mig
själv. Den ena har jag redan inhandlat, även om det är ungefär en månad
för tidigt. Den andra hoppas jag få om någon vecka. Min agent är på väg
mot inköpsstället i landet Far, far away (nåja, <i>han</i> kallar det
semester).
</p>

<p>
Den första presenten är en ny extern skärm, en
<a href="http://h10010.www1.hp.com/wwpc/us/en/sm/WF05a/382087-382087-64283-72270-3884471-4101131.html">Hewlett
Packard ZR24w</a>, här kopplad till trotjänaren brain, min Thinkpad X60s,
som nu har fyra på nacken (blixten gör att den ser riktigt dammig ut &#x2013;
med blotta ögat är det inte riktigt lika hemskt):
</p>


<figure id="orge331524">
<img src="https://hack.org/mc/images/hpzr24w.jpg" alt="hpzr24w.jpg">

<figcaption><span class="figure-number">Figure 1: </span>HP ZR24w</figcaption>
</figure>

<p>
Monitorn är tyvärr ansluten via VGA men brain har ingen annan
videoutgång. Skärmen har VGA, DVI och DisplayPort. DisplayPort hade
varit fint att prova.
</p>

<p>
VGA-anslutningen fungerar ändå bra. Skärmen synkar automatiskt på ett
bra sätt utan att jag behöver göra något, vare sig på skärmen eller på
brain. Den Samsung 24-tummare vi normalt har till Playstation 3:an
krävde lite pillande för att fungera bra när jag testade den mot brain.
</p>

<p>
Den nya HP-skärmen är också en 24-tummare. Den har en H2-IPS-panel som
ger 178 graders betraktningsvinkel och, tycker amatören MC, väldigt bra
färgåtergivning. Panelen sitter monterad på en piedestal, där jag kan
justera den riktigt mycket och dessutom rotera skärmen 90 grader.
Piedestalen och de riktiga knapparna (inte hemska touchknappar!) är
några av anledningarna att det blev just den här skärmen.
</p>

<p>
En kul detalj är att det gick att stänga av den blå power-LEDen. Tack
och lov. Blå LED rakt i ögonen! Vad tänkte folk? PS3:ans skärm har också
det och där är det mer irriterande, speciellt om man skall titta på film
i ett mörkt rum. Jag har funderat på att tejpa över&#x2026;
</p>

<p>
Det är lite oklart vad det HP kallar H2-IPS är för något, men troligen
en variant av H-IPS. Helt klart är i alla fall att det är totalt
överlägset TN-panelerna här hemma, även om det är väldigt tydligt på vår
senaste Samsung att TN-panelerna också utvecklats oerhört över åren.
</p>

<p>
Bäst av allt är ändå upplösningen, 1920x1200. 1200 pixlar vertikalt!
Woho! 91 rader i Emacs!
</p>

<p>
Bisarrt nog hade jag 1200 pixlar på höjden senast 1999, när jag
fortfarande jobbade på <a href="http://www.cendio.se/">Cendio</a> (tidigare
Signum Support). Där hade jag i några år en
<a href="http://www.eizo.co.jp/products/discontinued/crt/fs_6600/index.html">Eizo
6600M</a>. En fantastisk skärm som jag ibland fortfarande saknar.
</p>

<p>
6600:an var en gråskaleskärm med 1024 gråtoner i varje fysisk pixel.
Ingen dot pitch! Vanlig CRT, förstås, men inte lika tung som motsvarande
färgskärmar (28 kg jämfört med nästan 40 kg) och inte heller lika djup.
Och mycket skarpare! Den var också mycket, mycket billigare än
motsvarande färgskärmar. Jag tror den kostade 12000 kronor när den
köptes in, antingen -97 eller -98. Färgskärmar i samma storlek och
upplösning kostade tre, fyra gånger så mycket!
</p>

<p>
Min HP ZR24w kostade som jämförelse 3800 kronor. Ett kap, inte bara
jämfört med priserna -97, -98 utan också jämfört med vad andra
IPS-paneler fortfarande kostar. Jämför till exempel med Eizos
IPS-paneler. Den närmaste konkurrenten med vettigare prisläge är nog
Dell U2410. Jag tittade mycket på U2410-recensioner och i forum men blev
lite mörkrädd för alla rapporter om de som haft problem med sina
U2410:or. Jag bestämde mig till slut alltså för HP-skärmen.
</p>

<p>
Den är som levererad en smula ljus (ljusstyrkan var på 90%!), men lite
rattande på ljusstyrka och kontrast löste det rätt bra. En mycket
detaljerad recension med tips om till exempel just detta finns här:
</p>

<p>
<a href="http://www.tftcentral.co.uk/reviews/hp_zr24w.htm">http://www.tftcentral.co.uk/reviews/hp_zr24w.htm</a>
</p>

<p>
Ett återstående litet ljusproblem är det som brukar kallas ”white glow”
på IPS-paneler: väldigt mörka partier blir lite ljusare om de ses ur en
ganska extrem vinkel. Jag märker det bara om rummet är ganska mörkt,
även om mina terminalfönster alla har svart bakgrund! Jag kan alltså
leva med det.
</p>

<p>
Å andra sidan köpte jag knappast skärmen för att bygga hemmabio. Hade
jag varit ute efter något sådant hade jag kanske föredragit ännu
svartare svart. Jag är framför allt ute efter att få plats med många
rader och skarp text, som ni nog kunde gissa. Det får jag verkligen med
råge med den här skärmen. Färgåtergivningen, den jämna färgen och
extrema betrakningsvinklar är en bra bonus.
</p>

<p>
För att få saker att fungera med brain testade jag först med <code>xrandr</code>.
EDID-snacket fungerade och skärmen talade om vilka upplösningar den
förstod sig på. Jag hade varit lite nojig kring det här eftersom någon
sagt att de inte fått EDID att fungera mot ZR24w, fast det var oklart
med vilket system. Jag läste på för att försäkra mig om att det faktiskt
fortfarande gick att använda egentillverkade modelines, som på den gamla
onda tiden. Nu slapp jag tack och lov det. Med en
</p>

<pre class="example" id="orgd98bbf4">
% xrandr --output VGA --mode 1920x1200
</pre>

<p>
blev allt väldigt mycket roligare!
</p>

<p>
Ännu roligare blev det, i alla fall en stund, med
</p>

<pre class="example" id="org5261639">
% xrandr --output VGA --right-of LVDS
</pre>

<p>
som alltså gjorde att jag hade en virtuell skärm på 2944 x 1200,
fördelad på brains interna skärm och HP-skärmen. Tyvärr blev allting
också mycket långsammare och till exempel mplayer leker inte längre med
XVideo, utan kräver att jag använder <code>-vo x11</code>. Jag får alltså i så fall
titta på filmer utan hårdvaruacceleration. Det hettar upp CPU:n, må ni
tro, att köra med mjukvaruzoom till fullscreen!
</p>

<p>
För tillfället kör jag alltså i stället med den inbyggda skärmen
avstängd när jag använder den externa. 1920x1200 räcker bra! Just nu, i
alla fall&#x2026;
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Boomtime, the 51 day of Confusion in the YOLD 3176 (<time datetime="2010-07-16">2010-07-16</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/hp-zr24w.html</link>
  <guid>https://hack.org/~mc/blog/hp-zr24w.html</guid>
  <pubDate>Fri, 16 Jul 2010 08:54:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Fönsterhanteraren mcwm, del två]]></title>
  <description><![CDATA[<p>
Jag skrev i ett <a href="mcwm.html">tidigare inlägg</a> att jag skrivit en
egen fönsterhanterare. Jag började tidigt använda den som min vardagliga
fönsterhanterare och har fortsatt med det. Därmed har jag också mer
eller mindre tvingat mig själv att stoppa in vad jag tyckte saknades
och, förstås, rättat buggar som har dykt upp.
</p>

<p>
Det jag saknade mest sist jag skrev var virtuella skärmar. Det stoppade
jag in 30:e juni. Det visade sig faktiskt inte vara särskilt svårt, så
själva arbetet för det gick på någon timme.
</p>

<p>
Eftersom jag hela tiden startade om mcwm medan jag utvecklade blev det
ganska snart uppenbart att jag måste spara undan informationen om vilka
fönster som hörde till vilka workspaces någonstans utanför själva
fönsterhanteraren, som jag ju dödade hela tiden. Lyckligtvis har
<i>Extended Window Manager Hints</i> redan en hint för detta,
<code>_NET_WM_DESKTOP</code>. Stöd för det kunde jag plocka in ganska snabbt, även
om jag kanske gjorde det på ett något naivt sätt. Det betyder alltså att
även andra fönsterhanterare förstår var fönstren skall placeras om jag
nu startar en annan wm eller om en annan wm satt fönstren på särskilda
virtuella skärmar redan.
</p>

<p>
Tyvärr var det saker jag inte hade förstått. Exempel: Om du gjort en
sökning i ett dokument med xpdf och sedan fortsatt läsa i filen så gör
xpdf bara unmap på sökfönstret i stället för att förstöra det. Kanske
sparar xpdf lite tid på det viset om du vill göra en sökning igen.
</p>

<p>
Om jag bytte workspace och bytte tillbaka så mappade min
fönsterhanterare också sökfönstret, fast xpdf alltså inte ansåg att det
var aktivt&#x2026; Oops! Några andra program, till exempel
Ghostscript-fronten gv, gjorde likadant.
</p>

<p>
Det tog lite tid att komma på ett bra sätt att hantera det. Rätt svar är
troligen att hantera UnmapNotify-händelser i fönsterhanteraren och när
vi får en sådan glömma bort fönstret helt och hållet, om det inte var vi
själva som gjorde unmap för att vi håller på att byta workspace.
</p>

<p>
Det här innebar också att starten av fönsterhanteraren blev ändrad så
att vi <i>enbart</i> hanterar fönster som faktiskt redan <i>syns</i> när vi
startar. Förut hanterade den <i>alla</i> fönster som inte explicit sagt att
de inte skall hanteras, alltså de med ”override redirect” satt.
</p>

<p>
En bieffekt av den ändringen är att jag nu låter mcwm dö på ett
snyggare(?) sätt: Den mappar alla fönster den känner till och sätter om
tangentbordsfokus till att automatiskt följa muspekaren (X:s default).
Jag stoppade också in signalhanterare för att se till att mcwm dör på
samma sätt ifall den skulle krascha.
</p>

<p>
De här ändringarna gör mycket riktigt att xpdf:s sökfönster och
utskriftfönster inte längre mappas vid byte till dess workspace om de nu
inte var aktiva. Om xpdf eller gv var igång och hade sådana subfönster
när mcwm startade så kommer de inte heller att synas i onödan. Det
fungerade!
</p>

<p>
Fokusbyte från tangentbordet stoppade jag in i samma veva som
workspaces. Hittills är det bara en enkel fönsterring som gör att du kan
gå runt mellan alla fönster som finns på skärmen. Det är kanske av
begränsat värde jämfört med vad man skulle vilja ha, men det är en bit
på väg.
</p>

<p>
Från början hade jag lite problem med hur jag skulle göra för fönster
som är ”fixed”, alltså de som syns på alla workspaces. Hur skulle jag få
in dem i fokusbytet? Jag löste det genom att sådana fönster alltid
följer med in i den lista över fönster som finns på en workspace. När du
byter workspace adderas alltså alla fönster som är ”fixed” till den
workspace-listan också. De tas bort igen när du byter workspace.
</p>

<p>
mcwm kan nu också verkligen hantera att man vrider på sin skärm eller
tar bort en skärm. Tidigare noterade den bara den nya skärmstorleken och
lät dig flytta fönster lite längre. Nu hanterar den det lite snyggare.
</p>

<p>
Om du till exempel tar bort en skärm och det fanns fönster på den
skärmen så flyttas de så att de blir synliga och får plats på den eller
de skärmar som är kvar. Om du vrider på en skärm och en del fönster
hamnat helt eller delvis utanför den nya geometrin så flyttas de in.
</p>

<p>
Jag är nästan feature-komplett och har nästan en miljö som ser ut och
beter sig som min gamla fönstermiljö med evilwm och ctwm! Det som saknas
är nog bättre fokus från tangentbordet (gå till fönster jag senast
arbetade i snarare än en fönsterring) och ”snap to border”.
</p>

<p>
Nu kommer också de saker som gör mer än vad min gamla miljö kunde. Det
jag framför allt tänker på är RandR-hantering för att ge mig en
uppsättning workspaces per fysisk skärm.
</p>

<p>
Hur som helst så tror jag mcwm i sitt nuvarande skick inte längre är
något enbart för självplågande utvecklare som jag själv. Det går
faktiskt att <i>använda</i> den. Ta gärna ner och testa!
</p>

<p>
<a href="https://hack.org/mc/hacks/mcwm/">https://hack.org/mc/hacks/mcwm/</a>
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Pungenday, the 47 day of Confusion in the YOLD 3176 (<time datetime="2010-07-12">2010-07-12</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/mcwm2.html</link>
  <guid>https://hack.org/~mc/blog/mcwm2.html</guid>
  <pubDate>Mon, 12 Jul 2010 14:44:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[mcwm]]></title>
  <description><![CDATA[<p>
Jag har skrivit en fönsterhanterare. Jag kallar den i brist på bättre
namn ”mcwm”. Namnförslag är välkomna.
</p>

<p>
Officiell websida här:
</p>

<p>
<a href="https://hack.org/mc/hacks/mcwm/">https://hack.org/mc/hacks/mcwm/</a>
</p>

<p>
Här är en screenshot, där det visserligen inte syns något av
fönsterhanteraren eftersom den inte ens ritat ramarna runt fönstren (den
har dock satt färg och tjocklek på dem):
</p>


<figure id="orgd08af10">
<img src="https://hack.org/mc/images/mcwm-small.png" alt="mcwm-small.png">

</figure>

<p>
Det började lite som ett skämt. 'Alla' har ju skrivit en
fönsterhanterare, så varför inte jag också?
</p>

<p>
Jag har länge använt gamla <a href="http://ctwm.free.lp.se/">CTWM</a> och till
och med bidragit med några patchar. Jag har ändå länge funderat på att
byta. Nu senast blev det aktuellt eftersom jag fick problem när jag
bytte till UTF-8 på mitt system.
</p>

<p>
CTWM:s kod är ganska gammal och fylld med saker som väldigt få (någon?)
längre förstår. Koden är tungrodd, smått ogenomtränglig och alldeles för
stor för det som CTWM kan göra.
</p>

<p>
Tidigare har jag i perioder flörtat lite med åtminstone (i omvänd
tidsordning) <a href="http://www.6809.org.uk/evilwm">evilwm</a>,
<a href="http://www.nongnu.org/ratpoison/">ratpoison</a>,
<a href="http://www.all-day-breakfast.com/wm2/">wm2</a>,
<a href="http://www.fvwm.org/">fvwm</a> och
<a href="http://unauthorised.org/dhog/9wm.html">9wm</a>. Jag har använt samtliga
länge nog för att bli skapligt nöjd med min konfiguration och/eller
patchat mig till det (evilwm och 9wm).
</p>

<p>
Jag har förstås testat många andra fönsterhanterare också, inklusive
tiling-modellen à la <a href="http://freshmeat.net/projects/larswm/">larswm</a>.
Hittills har jag varit alltför beroende av att fönster stannar kvar på
samma ställe på skärmen för att vara nöjd med tiling. Jag tycker det är
lite förvirrande.
</p>

<p>
När CTWM började krångla var mitt förstaval i stället evilwm. Jag
använde den i några veckor tills jag började reta mig på en del saker
som verkade kräva ganska stora ingrepp i koden.
</p>

<p>
Eftersom jag nyligen hört talas om <a href="http://xcb.freedesktop.org/">XCB</a>
och funderat på att lära mig lite mer om det började jag i stället
skriva lite testprogram för XCB. Man kanske kan säga att mina
testprogram växte lite över förväntan&#x2026;
</p>

<p>
XCB är en mer direkt mappning av X-protokollet jämfört med libX11. En
speciellt intressant sak med det är att det grundar sig i en formell
beskrivning av protokollet och att koden för att generera X-anropen är
automatgenererad från den beskrivningen!
</p>

<p>
Det som är automatgenerat är alltså bara koden för själva X-protokollet.
Naturligtvis är hjälpfunktionerna och -biblioteken i XCB skrivna för
hand.
</p>

<p>
Vanliga libX11 är sedan en tid omskriven för att använda XCB, så det
verkar som om XCB är framtiden för X-protokollet oavsett om man använder
det direkt eller inte. Alla program som länkar mot libX11 använder
alltså redan nu XCB, om än indirekt.
</p>

<p>
Jag hittade tyvärr inte så mycket dokumentation för XCB, men tack och
lov finns själva X-protokollet beskrivet i form av Scheiflers
<a href="https://hack.org/mc/texts/x11proto.pdf">X Window System Protocol</a>. I
fysisk form har jag dessutom ett dumpstrat ex av Adrian Nyes <i>Xlib
Programming Manual</i> från O'Reillys serie om X Window System, som var
rätt hjälpsam.
</p>

<p>
<a href="http://tronche.com/gui/x/icccm/">Inter-Client Communication
Conventions Manual</a> finns också fritt tillgänglig, men den har jag inte
orkat ta mig igenom ännu. Dito för
<a href="http://standards.freedesktop.org/wm-spec/wm-spec-latest.html">Extended
Window Manager Hints</a>. Nu stöder min lilla fönsterhanterare än så länge
knappt några hints alls, men det är troligt att det blir stöd för
åtminstone några fler när jag orkar läsa igenom och försöka förstå
ovanstående.
</p>

<p>
I övrigt läste jag källkod från bland annat CTWM, evilwm och
<a href="http://incise.org/tinywm.html">tinywm</a>. Den senare är smått otroliga
56 rader kod!
</p>

<p>
När jag hade börjat hacka på min XCB-baserade wm hittade jag faktiskt
också en annan fönsterhanterare som använt XCB från början:
<a href="http://i3.zekjur.net/">i3</a>. <a href="http://awesome.naquadah.org/">Awesome</a>
har också nyligen portats från Xlib till XCB. Jag har dock inte provat
någon av dem ännu. i3 har en dependency på ett JSON-lib som i sin tur
kräver hela Ruby för att alls bygga! Awesome är beroende av massor av
libraries.
</p>

<p>
För att utmana mig själv att göra min fönsterhanterare mer komplett
började jag redan samma kväll använda den som min huvudsakliga
fönsterhanterare: ”an itch to scratch”. Det fungerade! Dagarna efter
hackade jag in nästan allting som jag tycker jag behöver i en
fönsterhanterare.
</p>

<p>
Den är inte feature-komplett ännu (se WISHLIST och TODO i
distributionen). Det som saknas mest är virtuella skärmar och att kunna
byta fokus från tangentbordet. Det går dock alldeles utmärkt att använda
den. Jag har använt den hela tiden sedan förra tisdagen då jag alltså
började utveckla den.
</p>

<p>
En kul sak som jag inte sett hos någon annan fönsterhanterare är att jag
<i>utan att använda någon extension</i> kunde få reda på om användaren hade
kopplat in eller ur en skärm. Det visar sig att rootfönstret skickar en
ConfigureNotify och talar om den nya storleken! Rätt naturligt,
faktiskt, men jag tror inte många traditionella fönsterhanterare
någonsin prenumerade på denna event, för vem trodde att root-fönstret
någonsin skulle förändras? Så icke i dessa tider med RANDR.
</p>

<p>
I nuvarande skick fungerar min fönsterhanterare faktiskt med alla
program jag normalt startar men det finns naturligtvis massor av buggar,
nästan ingen felkontroll och en hel del fula antaganden kvar i koden.
Var försiktiga om ni provar. Jag rekommenderar inte alls att testa den
på en äldre maskin som inte är TrueColor.
</p>

<p>
Observera att den för att vara användbar kräver att du vet vilken
tangent på ditt tangentbord som generar Mod1 (vanligen Alt, men det går
inte att veta) och vilken som generar Mod2. Om du inte har koll och
mappat ditt tangenbord själv vill du kanske kolla med xev(1) innan du
försöker starta mcwm.
</p>

<p>
Min utvecklingsplattform är FreeBSD. För att bygga krävs följande paket:
</p>

<ul class="org-ul">
<li>libxcb</li>
<li>xcbproto</li>
<li>xcb-util</li>
</ul>

<p>
men så vitt jag vet ingår de alla ändå om du alls har X installerat.
</p>

<p>
Igår kväll meddelade vännen Dennis att mcwm gick att kompilera under
Ubuntu GNU/Linux. Jag har alltså inte själv testat den under Linux ännu
men det verkar lovande. Återkommer om det.
</p>

<p>
Hackandet fortsätter.
</p>

<p>
Happy hacking,<br>
MC
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Pungenday, the 27 day of Confusion in the YOLD 3176 (<time datetime="2010-06-22">2010-06-22</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/mcwm.html</link>
  <guid>https://hack.org/~mc/blog/mcwm.html</guid>
  <pubDate>Tue, 22 Jun 2010 16:26:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[radns, del 2]]></title>
  <description><![CDATA[<p>
<a href="https://hack.org/mc/blog/radns.html">Tidigare</a> skrev jag om
automatiskt konfiguration av adresser i IPv6 och mitt program radns, som
lagrar undan adresser till DNS-servrar. Arbetet med radns fortsätter
sakta framåt.
</p>

<p>
31:a maj gjorde jag en ny release, som nu också innehåller:
</p>

<ul class="org-ul">
<li>En grundläggande man-sida.</li>
<li>Startscript (för rc.d) i FreeBSD.</li>
<li>Exempelscript för integration med
<a href="http://en.wikipedia.org/wiki/Resolvconf">resolvconf-programmen</a>.</li>
<li>Exempelscript för integration med
<a href="http://www.isc.org/software/dhcp">ISC:s dhclient</a>.</li>
</ul>

<p>
I själva radns finns nu också följande funktionalitet:
</p>

<ul class="org-ul">
<li>Skapande av en pid-fil.</li>
<li>Time to live-information hanteras, så att adresserna till
DNS-servrarna åldras.</li>
<li>Ett script kan kallas på när ny information kommer.</li>
<li>Släpper root-privilegier och övergår i en egen användare.</li>
</ul>

<p>
I samband med att jag stoppade in stöd för integration med resolvconf
behövde jag få reda på vilket gränssnitt som meddelandet kommit in på.
Det gjorde tyvärr att programmet inte längre kompilerar på MacOS X,
eftersom den OS-version jag testade på inte hade fullt stöd för Advanced
Sockets API for IPv6 (RFC 3542), utan en äldre version. Kanske har det
åtgärdats i senare OS X-versioner? Mac-användare får gärna höra av sig
om de vill hjälpa till, för jag har ingen egen Macintosh.
</p>

<p>
Jag har ännu inte skrivit något startscript för SysV init, som till
exempel finns i de flesta Linux-distributioner. (Väl? Det verkar vara
något på gång här.) Om någon som sitter på ett sådant system och vill
skriva ett startscript, skicka det gärna till mig!
</p>

<p>
Distribution här:
</p>

<p>
<a href="https://hack.org/mc/hacks/radns/">https://hack.org/mc/hacks/radns/</a>
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Setting Orange, the 19 day of Confusion in the YOLD 3176 (<time datetime="2010-06-14">2010-06-14</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/radns2.html</link>
  <guid>https://hack.org/~mc/blog/radns2.html</guid>
  <pubDate>Mon, 14 Jun 2010 12:31:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Övergång till UTF-8]]></title>
  <description><![CDATA[<p>
Jag har äntligen tagit steget till UTF-8. Antagligen är jag sist i
Sverige med det. Jag körde visserligen UTF-8 på Plan 9 redan 1995, för
Plan 9 kunde ju inte något annat, men jag har varit kvar i en Latin
1-locale på unixar ända tills nu.
</p>

<p>
Orsaken är nog mest feghet, tror jag. Jag har känt mig otrygg med vad
som skall hända med alla filer (och en del filnamn!) jag har i ISO
8859-1. Kommer de program jag använder att ens tolerera dem om jag byter
till en locale som säger att jag använder UTF-8?
</p>

<p>
Använder jag UTF-8 kan jag dessutom inte längre att kunna arbeta
obehindrat i konsolläge i FreeBSD, eftersom konsollen ännu inte kan
UTF-8. Det är i och för sig ett mindre problem jämfört med de många
andra jag föreställde mig att jag skulle få.
</p>

<p>
Nu gjorde jag i alla fall härom dagen
</p>

<pre class="example" id="orgd4bf567">
export LANG=en_US.UTF-8
</pre>

<p>
och det verkar fungera för det mesta.
</p>

<p>
Jag fick göra en del konverteringar, men mycket av det dagliga arbetet
hjälper Emacs mig med. Emacs kan automagiskt känna igen en fil i Latin 1
och nästan vilken annan kodning som helst om jag får tro manualen. Det
fungerar faktiskt förvånansvärt bra för det mesta. Emacs fortsätter att
spara filen i den kodningen så länge jag inte stoppar in tecken som inte
kan representeras. Sedan jag sist försiktigt experimenterade med det här
har Emacs blivit mycket bättre på Unicode-hantering.
</p>

<p>
Jag var däremot inte alls lika nöjd med hur xterm klarade sig. Jag vill
förstås att min terminalemulator när den dyker på en kodpunkt som inte
finns definierad i defaultfonten skall försöka hitta en annan font som
kan visa dem, men det fungerade inte. Trevligt nog hade jag på en
hackjunta nyligen blivit visad rxvt-forken
<a href="http://software.schmorp.de/pkg/rxvt-unicode.html">rxvt-unicode</a>, så
jag installerade den och experimenterade lite. Jag är mycket nöjd med
resultatet. Jag borde inte ha blivit förvånad, men allt fungerar också i
en screen över ssh.
</p>

<p>
Jag fick några trevliga X-resurser för urxvt från bland annat Anders
Waldenborg och kombinerat med mina gamla xterm-resurser blev det här
resultatet:
</p>

<div class="org-src-container">
<pre class="src src-conf">urxvt.background:       <span style="color: #ff7f24;">#</span><span style="color: #ff7f24;">000000
</span>urxvt.foreground:       gray90
urxvt.color0: black
urxvt.color1: IndianRed
urxvt.color2: palegreen
urxvt.color3: goldenrod
urxvt.color4: SteelBlue3
urxvt.color5: PaleVioletRed
urxvt.color6: cyan3
urxvt.color7: gray90
urxvt.color8: gray30
urxvt.color9: red
urxvt.color10: cyan4
urxvt.color11: DarkOrange
urxvt.color12: RoyalBlue3
urxvt.color13: HotPink
urxvt.color14: VioletRed
urxvt.color15: white

urxvt.colorBD:          <span style="color: #ff7f24;">#</span><span style="color: #ff7f24;">ffffff
</span>! Amber:
urxvt.cursorColor:      <span style="color: #ff7f24;">#</span><span style="color: #ff7f24;">ff7f24
</span>urxvt.highlightColor:   dimgrey
urxvt.scrollBar: false
urxvt.saveLines: 512
urxvt.secondaryScroll:  true
urxvt.termName: xterm-88color
urxvt.font: FIXFONT
urxvt.visualBell: true
</pre>
</div>

<p>
där <code>FIXFONT</code> är definierad som
</p>

<div class="org-src-container">
<pre class="src src-c"><span style="color: #b0c4de;">#define</span> <span style="color: #eedd82;">FIXFONT</span> -xos4-terminus-medium-r-normal--16-160-72-72-c-80-iso10646-1
</pre>
</div>

<p>
Resten fungerar väl med defaultinställningarna, tycker jag.
</p>

<p>
När jag väl bytt började jag förstås leka med andra saker också, till
exempel trådmarkeringen i Gnus som jag nu plötsligt kan ha roligare
tecken i, oavsett om jag kör min Emacs som X-tillämpning eller i en
urxvt. Från min <code>.gnus.el</code>:
</p>

<div class="org-src-container">
<pre class="src src-elisp"><span style="color: #ff7f24;">;;; </span><span style="color: #ff7f24;">Make threading look pretty with Unicode line-drawing.
</span>(<span style="color: #00ffff;">setq-default</span>
 gnus-sum-thread-tree-single-indent <span style="color: #ffa07a;">" "</span>
 gnus-sum-thread-tree-false-root <span style="color: #ffa07a;">""</span>
 gnus-sum-thread-tree-root <span style="color: #ffa07a;">"&#9484; "</span>
 gnus-sum-thread-tree-vertical <span style="color: #ffa07a;">"&#9474;"</span> 
 gnus-sum-thread-tree-leaf-with-other <span style="color: #ffa07a;">"&#9500;&#9472;&gt;"</span> 
 gnus-sum-thread-tree-single-leaf <span style="color: #ffa07a;">"&#9492;&#9472;&gt;"</span> 
 gnus-sum-thread-tree-indent <span style="color: #ffa07a;">""</span>)
</pre>
</div>

<p>
Det ser ut så här:
</p>


<figure id="org80e0eb2">
<img src="https://hack.org/mc/images/gnus-sum-unicode.png" alt="gnus-sum-unicode.png">

<figcaption><span class="figure-number">Figure 1: </span>Skärmdump från Gnus Summary i trådad vy för nanog-brevlistan.</figcaption>
</figure>

<p>
Dessutom stoppade jag in utf-8 och utf-16 i den här listan:
</p>

<div class="org-src-container">
<pre class="src src-elisp">(<span style="color: #00ffff;">setq</span> mm-body-charset-encoding-alist 
  '((utf-16 . 8bit)
    (utf-16be . 8bit)
    (utf-16le . 8bit)
    (utf-8 . 8bit)
    (iso-8859-1 . 8bit)))
</pre>
</div>

<p>
för att vara någorlunda säker på att vanliga brev skrivna med Unicode
inte skickas i BASE64 eller något annat hemskt som inte är så lätt att
greppa i.
</p>

<p>
Å andra sidan finns specialfallet PGP-signerade brev. Som bekant kan det
hända att vägen MUA-MTA-MTA-MUA inte alltid är helt åttabitarsren och
det <i>kan</i>, men måste inte, förekomma konverteringar på vägen. Om mitt
fina åttabitarsbrev blivit konverterat till Quoted (un)Printables på
vägen så validerar förstås inte längre min PGP-signatur hos mottagaren.
Misär!
</p>

<p>
Alltså behövs en liten revidering, speciellt vad gäller just signerade
brev i klartext:
</p>

<div class="org-src-container">
<pre class="src src-elisp">(<span style="color: #00ffff;">setq</span> mm-content-transfer-encoding-defaults 
  '((<span style="color: #ffa07a;">"text/.*"</span> 8bit) 
    (<span style="color: #ffa07a;">"message/rfc822"</span> 8bit) 
    (<span style="color: #ffa07a;">"application/emacs-lisp"</span> 8bit) 
    (<span style="color: #ffa07a;">"application/x-emacs-lisp"</span> 8bit) 
    (<span style="color: #ffa07a;">"application/x-patch"</span> 8bit) 
    (<span style="color: #ffa07a;">"multipart/signed"</span> qp) <span style="color: #ff7f24;">; </span><span style="color: #ff7f24;">Obs!
</span>    (<span style="color: #ffa07a;">".*"</span> base64)))
</pre>
</div>

<p>
Kanske är det fegt att säga att allt annat skall kodas som BASE64. Jag
vet inte. Jag måste nog utföra lite experiment för att bli trygg med
något annat där.
</p>

<p>
I Emacs i övrigt hakade jag också in det här för att kunna knappa in
några vanliga tecken som annars inte finns på mitt tangentbord (ur min
<code>.emacs.el</code>):
</p>

<div class="org-src-container">
<pre class="src src-elisp"><span style="color: #ff7f24;">; </span><span style="color: #ff7f24;">em-dash
</span>(define-key global-map [(meta \-)] <span style="color: #ffa07a;">"&#8212;"</span>)
<span style="color: #ff7f24;">; </span><span style="color: #ff7f24;">en-dash
</span>(define-key global-map [(meta \_)] <span style="color: #ffa07a;">"&#8211;"</span>)
<span style="color: #ff7f24;">; </span><span style="color: #ff7f24;">quotes
</span>(define-key global-map [(meta \!)] <span style="color: #ffa07a;">"&#8220;"</span>)
(define-key global-map [(meta \")] <span style="color: #ffa07a;">"&#8221;"</span>)
</pre>
</div>

<p>
Det var värre med mina websidor. De serveras av webservern <a href="http://acme.com/software/thttpd/">thttpd</a> som
av någon anledning <i>alltid</i> skickar med ”charset=foo” för MIME-typerna
”text/*” där ”foo” är vad du sagt i konfigurationen eller som default
iso-8859-1. Det är alltså inte beroende på vad filerna faktiskt råkar
vara kodade i!
</p>

<p>
Jag är mycket nöjd med thttpd i övrigt, men just det här var bara
korkat. Tyvärr går just detta inte att konfigurera bort, så det slutade
med en omkompilering efter följande ändring i thttpd 2.25b:
</p>

<div class="org-src-container">
<pre class="src src-patch">--- mime_types.txt~ 2003-10-26 18:00:45.000000000 +0100
+++ mime_types.txt  2010-05-18 23:11:14.000000000 +0200
@@ -14,6 +14,7 @@
 asc    text/plain
 asf    video/x-ms-asf
 asx    video/x-ms-asf
+atom   application/atom+xml
 au audio/basic
 avi    video/x-msvideo
 bcpio  application/x-bcpio
@@ -52,8 +53,8 @@
 gtar   application/x-gtar
 hdf    application/x-hdf
 hqx    application/mac-binhex40
-htm    text/html; charset=%s
-html   text/html; charset=%s
+htm    text/html
+html   text/html
 ice    x-conference/x-cooltalk
 ief    image/ief
 iges   model/iges
@@ -161,7 +162,7 @@
 tr application/x-troff
 tsp    application/dsptype
 tsv    text/tab-separated-values
-txt    text/plain; charset=%s
+txt    text/plain
 ustar  application/x-ustar
 vcd    application/x-cdlink
 vrml   model/vrml
</pre>
</div>

<p>
Jag tog alltså helt enkelt bort att ”charset” skickas med
överhuvudtaget i innehållsdeklarationen. Dessutom passade jag på att
lägga till en MIME-typ för Atom-flöden, som ni ser. (Förresten
validerar nu Atom-flödet enligt <a href="http://validator.w3.org/feed/">W3C Feed Validator</a>, men det är nog ett
annat bloginlägg.)
</p>

<p>
Efter den här förändringen litar jag dessvärre på att filerna som
serveras som MIME-typerna ”text/*” själva skall tala om vad de har för
teckenuppsättning. Det gör inte alla än, men i de browsers jag testat
(w3m, Lynx, Firefox och Internet Explorer 7), så verkar den inbyggda
heuristiken för att känna igen teckenuppsättningar ändå fungera ganska
bra.
</p>

<p>
Jag ändrade också på mitt lilla script för att generera websidor, mdn,
så att den deklarerar teckenuppsättning som UTF-8 i stället för
ISO-8859-1. Samma ändring gjorde jag i Blosxom som genererar den här
bloggen.
</p>

<p>
Jag skrev ett throw away-script för att konvertera alla inlägg i bloggen
till UTF-8. Tyvärr var det lite buggigt, så det blev lite handpåläggning
på några inlägg i alla fall. Hade jag inte gjort någon konverting hade
det nästa gång jag skriver ett inlägg (nu, alltså!) blivit en intressant
blandning av Latin 1 och UTF-8, med bara <i>en</i> innehållsdeklaration,
åtminstone i HTML-filen.
</p>

<p>
En del andra filer konverterade jag med hjälp av <code>iconv</code> och passade i
en del fall på att dessutom börja använda min nya Markdown-baserade
märkning. Jag byter alltså långsamt från min gamla hackade txt2tags till
mitt eget mdn.
</p>

<p>
Slutsatsen är ändå att bytet till UTF-8 gått ganska bra, i alla fall än
så länge. Jag får nog tacka Emacs och urxvt mest för det, tror jag.
</p>

<p>
Jag slutar med lite roande läsning i form av några brev från Rob Pike om
tillblivelsen av UTF-8 som Marcus Kuhn sparat:
</p>

<p>
<a href="http://www.cl.cam.ac.uk/~mgk25/ucs/utf-8-history.txt">http://www.cl.cam.ac.uk/~mgk25/ucs/utf-8-history.txt</a>
</p>

<p>
サヨウナラ,<br>
MC
</p>

<p>
(Sayōnara, alltså. Jag kan inte ens lite japanska, men det är ju ett kul
test av UTF-8.)
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Boomtime, the 69 day of Discord in the YOLD 3176 (<time datetime="2010-05-22">2010-05-22</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/utf8.html</link>
  <guid>https://hack.org/~mc/blog/utf8.html</guid>
  <pubDate>Sat, 22 May 2010 20:39:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Några ord om typsnitt i X och typsnitt för programmering]]></title>
  <description><![CDATA[<div id="outline-container-inledning" class="outline-2">
<h2 id="inledning">Inledning</h2>
<div class="outline-text-2" id="text-inledning">
<p>
Jag föredrar normalt bitmappade typsnitt. De flesta av dagens
datorskärmar har väldig låg upplösning, så det blir svårt för
vektoriserade typsnitt att komma till sin rätt. Jag tycker det är
väldigt svårt för dem att tävla med handgjorda glyfer för en viss
storlek. Det finns kanske undantag. Läs vidare!
</p>

<p>
Upplösningen på min bärbara dator, brain, är 106x105 DPI på den interna
skärmen. När jag ibland använder en extern skärm är DPI:n ofta ännu
sämre. I tryck så är DPI vanligen som allra minst 600 DPI även om
fototypsättare och liknande har mycket högre upplösning, till exempel
2540 eller till och med 4800 DPI! När det gäller tryck så flyter
dessutom bläcket ut lite grann i papperet och ger ännu mjukare kurvor.
Så är det förstås inte på skärmar.
</p>

<p>
Det finns knep för att få ett skalbart typsnitt att se bättre ut även på
lägre upplösningar. Ett sådant knep är kantutjämning, oftast känt med
det engelska uttrycket anti-aliasing (nedan "AA"). På en LCD går det
till och med att göra det på nivån av de subpixlar som bygger upp en
vanlig färgpixel. Resultatet, tycker jag, är ganska dåligt, alldeles
särskilt om det är fråga om vit text på svart botten, något jag ofta
använder i till exempel terminaler och i min Emacs.
</p>

<p>
Subpixel-AA ger värst effekt. Jag ser de enskilda färgerna i
subpixlarna, vilket alltså betyder att kanterna på glyferna blir röd,
grön och blå. AA utan subpixelanpassning blir bara suddig, speciellt med
vitt på svart. Skärpan är mycket bättre om jag slår av AA, men då ser
jag i stället förstås hur dålig upplösning jag har om jag använder ett
skalbart typsnitt. Det ser helt enkelt inte bra ut.
</p>

<p>
Kanske är det här framför allt fråga om problem som finns i en särskild
implementation av AA, specifikt FreeType i kombination med
RENDER-utökningen i X.org-servern. Kanske fungerar AA med vit text på
svart botten jättebra i något annat system.
</p>
</div>
</div>
<div id="outline-container-typsnitt" class="outline-2">
<h2 id="typsnitt">Typsnitt</h2>
<div class="outline-text-2" id="text-typsnitt">
<p>
Typsnitten jag för det mesta använder är som sagt bitmappade och ser ut
så här:
</p>


<figure id="orgefacdae">
<img src="https://hack.org/mc/images/xterm-9x15.png" alt="xterm-9x15.png">

</figure>

<p>
Det här typsnittet heter
"-misc-fixed-medium-r-normal&#x2013;15-140-75-75-c-90-iso10646-1" i X Logical
Font Description (XLFD), men är också känt som 9x15. Det har funnits
länge i X, men har på senare tid fått en del Unicode-tecken tillagt. Jag
använder den framför allt i Emacs.
</p>

<p>
Tidigare använde jag Gacha 8x16 i Emacs, här i en xterm:
</p>


<figure id="org6f8b4e6">
<img src="https://hack.org/mc/images/xterm-gacha.png" alt="xterm-gacha.png">

</figure>

<p>
Gacha var defaulttypsnitt i <a href="https://hack.org/mc/mgr/">fönsterystemet
MGR</a>, fast då vanligen på mycket större skärmar än på min bärbaras
lilla 13-tummare. Var typsnittet kommer ifrån ursprungligen vet jag
inte. Jag har sett det på skärmdumpar från SunView också, så det var
tydligen inte begränsat till MGR. Om någon vet varifrån det kommer och
vem som gjort det får ni gärna berätta för mig.
</p>

<p>
Jag har gjort om MGR-typssnittet till PCF, som moderna X-servrar
använder:
</p>

<p>
<a href="https://hack.org/mc/files/gacha-8x16.pcf">https://hack.org/mc/files/gacha-8x16.pcf</a>
</p>

<p>
Jag har också gjort om det till ett VGA-typsnitt för konsollanvändning
under FreeBSD och Linux. Det fungerar antagligen under MS-DOS och
FreeDOS också.
</p>

<p>
<a href="https://hack.org/mc/files/gacha-8x16.vga">https://hack.org/mc/files/gacha-8x16.vga</a>
</p>

<p>
Gacha täcker tyvärr bara Latin 1. Jag använder därför inte den längre i
min Emacs. Även om jag fortfarande kör en Latin 1-locale så kan Emacs
hantera tecken utanför Latin 1 och får jag till exempel ett mail med
tecken utanför Latin 1 använder Emacs plötsligt ett annat typsnitt för
just det tecknet, även om det skulle råka vara till exempel en
genitivapostrof. Jag fann det så irriterande att jag bytte till 9x15.
</p>

<p>
För sena nätter och/eller långa arbetsdagar brukar jag ibland köra
Terminus 24, som också ger en skön retrokänsla tillbaka till tiden då
jag satt framför en 80x24-terminal, fast nu med klart bättre upplösning:
</p>


<figure id="org7c56b54">
<img src="https://hack.org/mc/images/emacs-terminus.png" alt="emacs-terminus.png">

</figure>

<p>
Jag har definierat en fånig liten elispfunktion för att byta till den:
</p>

<div class="org-src-container">
<pre class="src src-elisp">(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">night-font</span> ()
  <span style="color: #ffa07a;">"Change default font to something huge."</span>
  (<span style="color: #00ffff;">interactive</span>)
  (set-frame-font
  <span style="color: #ffa07a;">"-xos4-terminus-medium-r-normal--24-240-72-72-c-120-iso10646-1"</span> t))
</pre>
</div>

<p>
Terminus är överhuvudtaget ett ganska begagligt typsnitt av Dimitar
Zhekov:
</p>

<p>
<a href="http://www.is-vn.bg/hamster/">http://www.is-vn.bg/hamster/</a>
</p>

<p>
Jag har bara testat det ett kort tag och kan kanske övertygas om att
8x14- eller 8x16-varianten kan bli min nya default i Emacs.
</p>

<p>
I typiska xtermar är jag annars förtjust i Lucida Typewriter:
</p>


<figure id="orgae88972">
<img src="https://hack.org/mc/images/xterm-lucidatype.png" alt="xterm-lucidatype.png">

</figure>

<p>
Dess fulla namn i XLFD är:
"-b&amp;h-lucidatypewriter-medium-r-normal-sans-12-120-75-75-m-70-iso8859-1".
</p>

<p>
Den finns också i en Unicode-variant, men jag kör som sagt fortfarande i
en Latin 1-locale i mitt skal.
</p>

<p>
Det finns ett intressant projekt som heter GNU Unifont som försöker
verkar täcka hela Unicode BMP:
</p>

<p>
<a href="http://unifoundry.com/unifont.html">http://unifoundry.com/unifont.html</a>
</p>

<p>
Tyvärr verkar den inte fungera något vidare med Emacs, i alla fall inte
i den version jag testade. Emacs blev rejält förvirrad och de redan lite
störande "fringes" blev någon centimeter breda! Jag vet inte varför
ännu.
</p>

<p>
Ett annat intressant typsnitt är Liberation Mono, som finns med de andra
Liberation-typsnitten här:
</p>

<p>
<a href="https://fedorahosted.org/liberation-fonts/">https://fedorahosted.org/liberation-fonts/</a>
</p>

<p>
Red Hat har tydligen beställt dem från typsnittsmakaren Ascender för att
få typsnitt som är storleksmässigt kompatibla med Microsofts
Windows-typsnitt. De har dessutom haft den goda smaken att släppa dem
som GPL med några tillägg.
</p>

<p>
Liberation Mono fungerar faktiskt förvånansvärt bra som
programmeringstypsnitt, tycker jag, speciellt för att vara ett skalbart
typsnitt. Här i en xterm med en emacsclient:
</p>


<figure id="org7fbdc19">
<img src="https://hack.org/mc/images/xterm-libmono.png" alt="xterm-libmono.png">

</figure>

<p>
Här är några andra kul genomgångar av typsnitt för programmerare:
</p>

<p>
<a href="http://www.codeproject.com/KB/work/FontSurvey.aspx">http://www.codeproject.com/KB/work/FontSurvey.aspx</a>
</p>

<p>
<a href="http://hivelogic.com/articles/top-10-programming-fonts">http://hivelogic.com/articles/top-10-programming-fonts</a>
</p>

<p>
<a href="http://www.lowing.org/fonts/">http://www.lowing.org/fonts/</a>
</p>
</div>
</div>
<div id="outline-container-typsnittssystem-i-x" class="outline-2">
<h2 id="typsnittssystem-i-x">Typsnittssystem i X</h2>
<div class="outline-text-2" id="text-typsnittssystem-i-x">
<p>
X Window System har nu för tiden två sätt att hantera typsnitt. Det ena
kallas ibland "core fonts" och ibland "server-side fonts" och det andra
går vid lite olika namn beroende på vad man tänker på. Ibland kallas det
Fontconfig-systemet och ibland Xft, men ett bättre namn är nog
"client-side fonts", eftersom typsnitten inte alls behöver renderas av
just Xft (X FreeType Library Interface), utan lika gärna kan renderas av
något annat.
</p>

<p>
Fontconfig, i sin tur, är ett system för att hitta typssnittsfiler och
används tillsammans med till exempel just FreeType för att tala om hur
renderingen skall gå till.
</p>

<p>
Client-side är det nyare sättet att hantera typsnitt på. Tillämpningarna
själva renderar typsnitten, vanligen med hjälp av ett bibliotek som
Freetype eller Cairo, och skickar det färdigrenderade resultatet till
X-servern, som alltså bara skall visa resultatet.
</p>

<p>
I klassiska core fonts så laddas i stället hela typsnittet över till
X-servern som sedan renderar det. I bitmapfallet betyder detta troligen
bara att blitta över en bitmap från en plats i minnet till en annan.
</p>

<p>
De flesta core fonts är alltså bitmapbaserade, men de behöver inte vara
det. Moderna X-servrar har till exempel direkt stöd för att själva
rendera typsnitt i TrueType-formatet.
</p>

<p>
På samma sätt är de flesta client-side-typsnitt vektorbaserade, men
behöver inte vara det. Det går att stoppa in bitmaps i dem, till och med
enbart för vissa storlekar medan man samtidigt har en generell
vektorbeskrivning.
</p>

<p>
För att lista de installerade typsnitten använder man <code>xlsfonts</code> för
server-side och <code>fc-list</code> för client-side.
</p>

<p>
Typiskt sätt att manuellt använda ett typsnitt i client-side är så här:
</p>

<pre class="example" id="org6f9d485">
% xterm -fa "Bitstream Vera Sans Mono" -fs 10
</pre>

<p>
xterm är dock notoriskt slö på uppdateringar när man använder sådana
typsnitt. På förra hackjuntan fick jag se hur alternativet urxvt sprang
cirklar runt xterm när det gäller hanteringen av just typsnitt i
client-side och scrollning. Ingen flicker alls!
</p>

<p>
En intressant sak är att moderna X-servrar som jag skrev ovan kan
rendera TrueType själva, så program som normalt inte använder
Freetype-biblioteket kan ändå visa samma typsnitt, fast troligen
renderade lite annorlunda, i alla fall om det är ett skalbart typsnitt.
Om du vill använda detta, leta reda på typsnittskatalogen. Gör sedan:
</p>

<pre class="example" id="orgfd19431">
% cd /path/till/katalogen
% ttmkfdir -o fonts.dir
% xset fp+ /path/till/katalogen
% xset fp rehash
</pre>

<p>
Nu borde typsnitten synas med en vanlig <code>xlsfonts</code>. De anges vanligen
med "0" i stället för storlekarna eftersom de är skalbara, exempelvis:
</p>

<pre class="example" id="org83ce1ed">
-redhat-liberation mono-medium-r-normal--0-0-0-0-p-0-iso10646-1
</pre>

<p>
Du använder dem genom att helt enkelt stoppa in lagom storlek på rätt
plats, exempelvis:
</p>

<pre class="example" id="orgb0be666">
xterm -fn '-redhat-liberation mono-medium-r-normal--0-100-0-0-p-0-iso10646-1'
</pre>

<p>
för att få en 10-punktersskalning.
</p>

<p>
För att permanent få med de här typsnitten i din X-server, stoppa in
</p>

<pre class="example" id="org4612f6f">
FontPath "/path/till/katalogen"
</pre>

<p>
i Files-sektionen i din <code>xorg.conf</code>. Finns vanligen i
<code>/etc/X11/xorg.conf</code>
</p>

<p>
De program som använder client-side och FreeType använder oftast också
kantutjämning (anti-aliasing, AA). Som jag skrev ovan ogillar jag det,
men det går tack och lov att stänga av. För att stänga av AA, skapa en
<code>~/.fonts.conf</code> och stoppa in:
</p>

<div class="org-src-container">
<pre class="src src-xml">&lt;?<span style="color: #00ffff;">xml</span> <span style="color: #ffa07a;">version="1.0"</span>?&gt;
&lt;!DOCTYPE fontconfig SYSTEM "fonts.dtd"&gt;
&lt;<span style="color: #87cefa;">fontconfig</span>&gt;
  &lt;<span style="color: #87cefa;">match</span> <span style="color: #eedd82;">target</span>=<span style="color: #ffa07a;">"font"</span>&gt;
    &lt;<span style="color: #87cefa;">edit</span> <span style="color: #eedd82;">name</span>=<span style="color: #ffa07a;">"antialias"</span> <span style="color: #eedd82;">mode</span>=<span style="color: #ffa07a;">"assign"</span>&gt;
      &lt;<span style="color: #87cefa;">bool</span>&gt;false&lt;/<span style="color: #87cefa;">bool</span>&gt;
    &lt;/<span style="color: #87cefa;">edit</span>&gt;
  &lt;/<span style="color: #87cefa;">match</span>&gt;
&lt;/<span style="color: #87cefa;">fontconfig</span>&gt;
</pre>
</div>

<p>
TrueType-typsnitt kan innehålla hinting i form av bytekod som skall
evalueras av renderaren. Detta är patenterat av Apple i USA, om jag
förstår det rätt, så det är inte säkert att FreeType-biblioteket på din
plattform stöder det. Du kan bli tvungen att kompilera om FreeType. Se
då till att slå på BCI (ByteCode Interpreter), i alla fall om du 1) inte
befinner dig i ett land där Apples patent är giltigt, 2) har köpt en
licens av Apple, eller, 3) skiter i patent.
</p>

<p>
FreeType har som default en autohinter, men jag tycker den ger ganska
hemskt resultat som du speciellt ser om du har slagit av AA.
</p>

<p>
För att slå på användning av bytekoderna och slå av den automatiska
hintningen, ändra i <code>~/.fonts.conf</code> eller <code>local.conf</code> för hela
systemet:
</p>

<div class="org-src-container">
<pre class="src src-xml">&lt;<span style="color: #87cefa;">match</span> <span style="color: #eedd82;">target</span>=<span style="color: #ffa07a;">"font"</span> &gt;
  &lt;<span style="color: #87cefa;">edit</span> <span style="color: #eedd82;">mode</span>=<span style="color: #ffa07a;">"assign"</span> <span style="color: #eedd82;">name</span>=<span style="color: #ffa07a;">"hinting"</span> &gt;
    &lt;<span style="color: #87cefa;">bool</span>&gt;true&lt;/<span style="color: #87cefa;">bool</span>&gt;
  &lt;/<span style="color: #87cefa;">edit</span>&gt;

  &lt;<span style="color: #87cefa;">edit</span> <span style="color: #eedd82;">name</span>=<span style="color: #ffa07a;">"autohint"</span> <span style="color: #eedd82;">mode</span>=<span style="color: #ffa07a;">"assign"</span>&gt;
    &lt;<span style="color: #87cefa;">bool</span>&gt;false&lt;/<span style="color: #87cefa;">bool</span>&gt;
  &lt;/<span style="color: #87cefa;">edit</span>&gt;
&lt;/<span style="color: #87cefa;">match</span>&gt;
</pre>
</div>

<p>
Ser du skillnaden?
</p>
</div>
</div>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Sweetmorn, the 58 day of Discord in the YOLD 3176 (<time datetime="2010-05-11">2010-05-11</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/xfonter.html</link>
  <guid>https://hack.org/~mc/blog/xfonter.html</guid>
  <pubDate>Tue, 11 May 2010 16:35:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Konvertering till Markdown och valideringen av bloggen]]></title>
  <description><![CDATA[<p>
I <a href="https://hack.org/mc/blog/blosxom-markdown.html">det här inlägget</a> skrev jag om att jag börjat använda Markdown i
Blosxom så jag slipper skriva inläggen i HTML. Jag var rätt seg med
att upptäcka att det överhuvudtaget fanns en plugin för Blosxom för
Markdown, faktiskt. Det låter skumt, med tanke på hur illa jag tycker
om att skriva HTML och hur länge jag använt verktyg som <a href="http://txt2tags.sf.net/">txt2tags</a>.
</p>

<p>
Jag hann alltså skriva en hel del inlägg innan jag började använda
Markdown. Tyvärr blev de äldre inläggen lite trasiga när jag började
använda denna plugin.
</p>

<p>
Det skall nu vara lagat. Natten till i dag ("i nättras", som det så fint
heter på gotländska) använde jag först Aaron Swartz
<a href="http://www.aaronsw.com/2002/html2text/">html2text</a> för att konvertera
de äldre inläggen, sedan iconv för att konvertera teckenuppsättning
mellan UTF-8 och Latin 1 och till slut fick jag tyvärr också fixa en hel
del för hand. Det betalade sig, tycker jag. Nu validerar bloggens
indexsida som XHTML 1.0 Strict!
</p>

<p>
RSS-flödet validerar också. Jag hade gjort ett misstag när jag angav
språkkoden och skrivit <code>se_SV</code> i stället för <code>se-SV</code>, märkte jag.
</p>

<p>
Atom-flödet validerar dessvärre inte. Det ser ut att vara buggar i den
Atom-plugin jag använder till Blosxom. Jag skall se om jag kan hitta
felen i koden eller se om det finns en modernare plugin eller en
ersättare.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Prickle-Prickle, the 56 day of Discord in the YOLD 3176 (<time datetime="2010-05-09">2010-05-09</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/markup.html</link>
  <guid>https://hack.org/~mc/blog/markup.html</guid>
  <pubDate>Sun, 09 May 2010 11:31:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Tangentbordsmappning i FreeBSD, del 2]]></title>
  <description><![CDATA[<p>
EDIT: Stoppade in bakåtlänk till tidigare inlägg.
</p>

<p>
I <a href="https://hack.org/mc/blog/freebsd-console.html">förra inlägget</a>
skrev jag att jag hade hittat ett program på en rysk sida som visade
scancodes från tangentbordet i FreeBSD-konsollen. Programmet var av
ganska läskig kodkvalitet och jag gissar, utan att kunna ryska, att det
var tänkt som ett väldigt snabbt ihophackat exempel i en längre sida som
förklarade något om syscons-drivisen.
</p>

<p>
Jag inspirerades av programmet (snodde de två ioctl:erna, alltså) och
skrev ett eget program från grunden, som jag tycker är åtminstone något
snyggare, även om det också är ett snabbt hack. Här är en första
version:
</p>

<p>
<a href="https://hack.org/mc/hacks/kbdscan-0.1.c">https://hack.org/mc/hacks/kbdscan-0.1.c</a>
</p>

<p>
Programmet sätter om terminalen i raw mode, sätter om tangentbordet i
konsollen att ge scancodes och visar sedan vilka scancodes som kommer
från tangenter som trycks ner och tangenter som släpps upp. Fem sekunder
av inaktivitet gör att programmet återställer terminalen och
tangentbordet och avslutar.
</p>

<p>
Jag har ännu inte stoppat in någon signalhanterare, så om en signal
avbryter programmet så kommer det inte att återställa terminalen eller
tangentbordet. Varning! I övrigt verkar det göra vad det skall.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Boomtime, the 39 day of Discord in the YOLD 3176 (<time datetime="2010-04-22">2010-04-22</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/freebsd-console2.html</link>
  <guid>https://hack.org/~mc/blog/freebsd-console2.html</guid>
  <pubDate>Thu, 22 Apr 2010 13:46:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Tangentbordsmappningar i FreeBSD-konsollen (och några till X)]]></title>
  <description><![CDATA[<p>
Ibland arbetar jag i FreeBSD:s konsoll. Ibland är det av nödvändighet,
till exempel för att maskinen jag sitter vid saknar X eller för att X
inte ännu blivit konfigurerat eller, gudinnan förbjude, för att jag
supit sönder min X-installation!
</p>

<p>
Det finns också dagar då jag vill undvika X. Jag blir ibland irriterad
på um&#x2026; bloatware i allmänhet och då får X stryk av bara farten, inte
nödvändigtvis för att X på sistone gjort sig mer förtjänt av det än
andra program (Firefox&#x2026; <b>host</b> OpenOffice.org!), men X gör det också
möjligt att överhuvudtaget köra dessa bestar. Då går jag tillfälligt
tillbaka till något slags terminalläge och stannar där ett tag. Ibland
höjer det min produktivitet något enastående!
</p>

<p>
Naturligtvis vill jag i konsollen ha samma tangentbordsmappning som jag
har i X, så jag har skapat en svensk tangentbordsmappning med mina
specialare, måsvingar och hakparenteser på de svenska tecknen + AltGr:
</p>

<ul class="org-ul">
<li>å ger }, Å ger ].</li>

<li>ä ger {, Ä ger [.</li>

<li>ö ger |, Ö ger \.</li>
</ul>

<p>
Mappningen ger också sådana saker som ESC direkt till vänster om "1" och
Control i stället för Caps Lock. Dessutom byter funktionstangenterna
virtuell konsoll omodifierade.
</p>

<p>
Här är tangentbordsmappningen:
</p>

<p>
<a href="https://hack.org/mc/files/freebsd-sw.kbd">https://hack.org/mc/files/freebsd-sw.kbd</a>
</p>

<p>
Ladda in den med:
</p>

<p>
<code>% kbdcontrol -l freebsd-sw.kbd</code>
</p>

<p>
direkt i en konsoll.
</p>

<p>
Så långt allt väl.
</p>

<p>
Nu för tiden använder jag förstås mitt Happy Hacking Keyboard även i
FreeBSD-konsollen. Det är ju lite annorlunda, så jag skapade nya
mappningar.
</p>

<p>
Här är min svenska mappning:
</p>

<p>
<a href="https://hack.org/mc/files/freebsd-hhkb-se.kbd">https://hack.org/mc/files/freebsd-hhkb-se.kbd</a>
</p>

<p>
HHKB saknar emellertid en del av knapparna som finns på ett vanligt
svensk tangentbord, så jag har stoppat in några tecken på andra ställen:
</p>

<ul class="org-ul">
<li>'* är på högsta raden bredvid ´` eftersom det inte finns rum bredvid
äÄ.</li>

<li>&lt;&gt; är längst upp, längst till höger, eftersom det inte finns någon
tangent till vänster om zZ.</li>

<li>~^ är bredvid åÅ, direkt som det är. Det finns alltså ingen diaeresis.</li>
</ul>

<p>
Motsvarande mappning för HHKB för X finns förresten här:
</p>

<p>
<a href="https://hack.org/mc/files/hhkb-se.xmodmap">https://hack.org/mc/files/hhkb-se.xmodmap</a>
</p>

<p>
Jag har också fixat en mappning för amerikanskt tangentbord (det som är
tryckt på mitt HHKB), fast med svenska tecken på Alt + [\]:
</p>

<p>
<a href="https://hack.org/mc/files/freebsd-hhkb-us.kbd">https://hack.org/mc/files/freebsd-hhkb-us.kbd</a>
</p>

<p>
Dito för X: <a href="https://hack.org/mc/files/hhkb-us.xmodmap">https://hack.org/mc/files/hhkb-us.xmodmap</a>
</p>

<p>
Här är samma sak, fast med svenska tecken per default på de tangenterna
(originaltangenterna med höger Alt):
</p>

<p>
<a href="https://hack.org/mc/files/freebsd-hhkb-us-se.kbd">https://hack.org/mc/files/freebsd-hhkb-us-se.kbd</a>
</p>

<p>
Dito för X: <a href="https://hack.org/mc/files/hhkb-us-se.xmodmap">https://hack.org/mc/files/hhkb-us-se.xmodmap</a>.
</p>
<div id="outline-container-scancodes" class="outline-2">
<h2 id="scancodes">Scancodes</h2>
<div class="outline-text-2" id="text-scancodes">
<p>
FreeBSD:s mapfiler använder scancodes för att ange vilken tangent som
skall ge vilka tecken. Det kan vara svårt att veta vilken scancode en
viss tangent ger.
</p>

<p>
När jag idag satt och jobbade med de här bråkade mitt HHKB och en del
tangenter hade jag ingen aning om vad de gav för scancodes. Pinsamt nog
insåg jag att jag inte hade någon aning om hur jag skulle ta reda på det
annat än genom att modifiera kärnan! Det verkade som lätt overkill.
</p>

<p>
Jag googlade på det och hittade att många hade haft motsvarande problem,
men såg inga bra svar. En del svar visade att de som svarade trodde att
frågeställaren i själva verket körde X. Till slut hittade jag med lite
kreativ googling (jag tror jag sökte på syscons scancode: syscons är
namnet på FreeBSD:s konsoll-drivare) och hittade en rysk sida:
</p>

<p>
<a href="http://www.tsu.ru/~pascal/unix/syscons/">http://www.tsu.ru/~pascal/unix/syscons/</a>
</p>

<p>
Jag kan inte alls läsa ryska, så jag förstod förstås inte ett smack, men
såg också ett program:
</p>

<p>
<a href="http://www.tsu.ru/~pascal/unix/syscons/scancode.c">http://www.tsu.ru/~pascal/unix/syscons/scancode.c</a>
</p>

<p>
Här är källkoden:
</p>

<pre class="example" id="orgf3a6220">
#include &lt;machine/console.h&gt;
#include &lt;ncurses.h&gt;

main()
{ char c;

  initscr(); savetty(); raw(); noecho();
  if (ioctl(0, KDSKBMODE, K_CODE) &lt; 0) perror(0);

  do {
   c = getchar();
   if ( c &gt; 0) {
      printf("%d\n\r", c);
      fflush(stdout);
   }
  } while (c != 1);

  if (ioctl(0, KDSKBMODE, K_XLATE) &lt; 0) perror(0);
  resetty();

  exit();
}
</pre>

<p>
Det kompilerar tyvärr inte under en modern FreeBSD eller i alla fall
inte under min 7.2:a. Jag greppade efter konstanterna som nämndes i
koden och ändrade include-filerna med det här resultatet:
</p>

<pre class="example" id="org75f20c1">
#include &lt;sys/consio.h&gt;
#include &lt;sys/kbio.h&gt;
#include &lt;ncurses.h&gt;

main()
{ char c;

  initscr(); savetty(); raw(); noecho();
  if (ioctl(0, KDSKBMODE, K_CODE) &lt; 0) perror(0);

  do {
   c = getchar();
   if ( c &gt; 0) {
  printf("%d\n\r", c);
  fflush(stdout);
   }
  } while (c != 1);

  if (ioctl(0, KDSKBMODE, K_XLATE) &lt; 0) perror(0);
  resetty();

  exit(0);
}
</pre>

<p>
och det fungerar!
</p>

<p>
Kompilera så här:
</p>

<p>
<code>% gcc -o scancode scancode.c -lncurses</code>
</p>

<p>
och kör så:
</p>

<p>
<code>% ./scancode</code>
</p>

<p>
ESC avslutar, förhoppningsvis. I alla fall om ESC genererar scancode 1
på ditt tangentbord också. Det vore nog bra att stoppa in en timer där i
stället, som avslutar programmet om ingenting hänt på några sekunder.
</p>

<p>
På så sätt kunde jag få reda på att metatangenten (diamanten) på mitt
HHKB genererade scancode 123. Tyvärr gjorde bara den vänstra det. Den
högra gav ingen scancode alls! Jag får kanske leva med det.
</p>

<p>
Jag skrev faktiskt delar av det ovan även på engelska här:
</p>

<p>
<a href="https://hack.org/mc/writings/freebsd-kbd.html">https://hack.org/mc/writings/freebsd-kbd.html</a>
</p>

<p>
speciellt eftersom det saknades information om scancodes i
FreeBSD-konsollen på webben. Kanske kan det hjälpa åtminstone någon.
</p>
</div>
</div>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Sweetmorn, the 38 day of Discord in the YOLD 3176 (<time datetime="2010-04-21">2010-04-21</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/freebsd-console.html</link>
  <guid>https://hack.org/~mc/blog/freebsd-console.html</guid>
  <pubDate>Wed, 21 Apr 2010 16:49:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Hackjunta #1]]></title>
  <description><![CDATA[<p>
Hackjunta #1 avklarades igår kväll med omkring 10 hackers på plats.
Hackjunta, i analogi med syjunta, är helt enkelt en bunt hackers som
sitter och programmerar på samma plats. Några kanske samarbetar medan
andra föredrar att jobba på egna projekt.
</p>

<p>
Här sitter till exempel Johan och Joel med matchande laptops och jobbar
tillsammans. Med på bilden är också Petters nya chockrosa bärbara.
</p>


<figure id="orgfb9e10d">
<img src="https://hack.org/mc/images/hackjunta1-1.jpg" alt="hackjunta1-1.jpg">

</figure>

<p>
Den här hackjuntan ordnades genom brevlistan
<a href="https://hack.org/mc/mosig.html">mosig</a> och var början på en
förhoppningsvis återkommande händelse varannan måndag. Nästa gång borde
alltså vara 3:e maj.
</p>

<p>
Företaget <a href="http://purplescout.se/">Purple Scout</a> bjöd denna gång på
lokal, juice, ström och väldigt bra WLAN. Arrangör var framför allt
<a href="http://fnord.se/">Henrik "gsson" Gustafsson</a>. Förhoppningsvis kan han
ordna lokaler även nästa gång.
</p>

<p>
Folk från mosig träffas sedan flera år på onsdagar udda veckor för att
käka pizza, dricka öl och nörda ut, men det saknades lite hands on i den
ekvationen. Måndagarna kanske kan fylla det tomrummet.
</p>

<p>
Visserligen möts hackerspacet
<a href="http://forskningsavd.se/">Forskningsavdelningen</a> tisdagar varje
vecka, men det är framför allt hårdvaruinriktat och en lite annan grupp.
Grupperna överlappar i och för sig ganska avsevärt, så det är nog en hel
del som går till både forskens tisdagskvällar och hackjuntan varannan
vecka.
</p>

<p>
Jag vet inte riktigt vad andra gjorde eller tyckte, men mitt uppdrag för
kvällen var ganska trivialt: stoppa in en PID-filfunktion i
<a href="https://hack.org/mc/hacks/radns/">radns</a>. Det var kanske trivialt,
men jag finner att ofta är de små finjusteringarna som tar längst tid i
programmeringsprojekt!
</p>

<p>
De senaste, säg, åtta månaderna har det varit särskilt svårt att avsluta
programmeringsprojekt. Ett annat projekt konkurrerar om uppmärksamhet:
Dottern, den lilla hacker in training jag numera ägnar min dagar åt att
ta hand om.
</p>

<p>
Eftersom jag är hemmapappa på heltid numera behöver jag alltså en slags
nördventil ibland. Mosig-träffarna varannan onsdag har varit bra, men
det har inte blivit så mycket <i>gjort</i>. En hackjunta skulle kunna vara
ett lyckat komplement.
</p>

<p>
Jag lyckades hur som helst åtminstone denna gång med mitt uppsåt och
checkade in och pushade resultatet till min Git. Se mer här:
</p>

<p>
<a href="https://hack.org/mc/hacks/radns/">https://hack.org/mc/hacks/radns/</a>
</p>

<p>
Jag gick därifrån 21:30. Jag vet inte hur länge de andra höll ut. Jag
fick i alla fall mycket gjort och ser gärna en fortsättning.
</p>

<p>
Några fler bilder jag tog finns här:
</p>

<p>
<a href="https://hack.org/mc/gallery/hackjunta1/">https://hack.org/mc/gallery/hackjunta1/</a>
</p>

<p>
Happy hacking!
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Setting Orange, the 37 day of Discord in the YOLD 3176 (<time datetime="2010-04-20">2010-04-20</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/hackjunta.html</link>
  <guid>https://hack.org/~mc/blog/hackjunta.html</guid>
  <pubDate>Tue, 20 Apr 2010 13:49:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Markdown vs Blosxom 1-0: Bra bloggverktyg, någon?]]></title>
  <description><![CDATA[<p>
För någon dag sedan stoppade jag in en Markdown-plugin till
bloggeneratorn Blosxom för att slippa skriva de här inläggen i HTML.
Tyvärr verkar det ha bråkat lite med HTML-genereringen, så indexsidan
ser lite skum ut, med till exempel dubbla <code>&lt;p&gt;</code> här och där.
</p>

<p>
Jag testade att stoppa in en annan plugin, meta, för att kunna
specifiera exakt vilka inlägg som Markdown skulle bry sig om att hantera
och strunta i de gamla som var skrivna i HTML. Resultatet var dock
katastrofalt: RSS-filen som genererades saknade helt markup! Det var
inte riktigt vad jag hade hoppats på.
</p>

<p>
Möjligen är det hela resultatet av skit bakom spakarna, men jag tror
ändå det är dags att undersöka andra blogkompilatorer. Om någon har
några tips för ett bra verktyg, så tveka inte att kontakta mig.
Kravlista:
</p>

<ul class="org-ul">
<li>Skall gå att köra från kommandoraden. Ingen CGI, tack.</li>

<li>Skall generera statiska filer.</li>

<li>Skall generera både RSS och Atom, helst validerande.</li>

<li>Jag vill slippa skriva HTML. Markdown eller txt2tags-format, fungerar.
Jag kan säkert leva med något annat motsvarande också.</li>
</ul>

<p>
Flera gånger har jag funderat på att byta ut verktygen jag använder för
att bygga hela min website och en del av de jag tittat på kan faktiskt
också användas för att generera bloggar. Jag tänker framför allt på
<a href="http://ikiwiki.info/">ikiwiki</a> och <a href="http://werc.cat-v.org/">werc</a>.
</p>

<p>
Jag skall göra lite experiment innan jag byter. Under tiden kanske ni
får stå ut med att feeden ser ut så här. Sorry. Tips mottages tacksamt.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Boomtime, the 34 day of Discord in the YOLD 3176 (<time datetime="2010-04-17">2010-04-17</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/blosxom-markdown.html</link>
  <guid>https://hack.org/~mc/blog/blosxom-markdown.html</guid>
  <pubDate>Sat, 17 Apr 2010 16:40:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Den sociala webben eller det sociala nätet: en betraktelse]]></title>
  <description><![CDATA[<p>
Jag tycker inte om webcommunities.
</p>

<p>
Den sista rent sociala webcommunity jag var medlem på var
svartrocksinriktade Helgon.net. Jag utplånade min användare där för
några år sedan. Jag gjorde några försök att avsluta medlemsskapet före
det, men skapade till min stora irritation varje gång en ny användare
efter en liten paus. Det hände kanske två&#x2013;tre gånger innan jag lyckades
låta bli att återvända.
</p>

<p>
Orsaken var nog framför allt att jag hade svårt att slita mig från de
dagböcker jag följde. Tack och lov har de flesta personer vars dagböcker
jag följde på Helgon.net sedan dess börjat publicera sig på andra sätt,
till exempel med vanliga bloggar.
</p>

<p>
Jag har på sistone tyvärr sett en trend bland bekanta att gå tillbaka
till stängda communities, framför allt Facebook. Det är tråkigt, men jag
tror inte att jag tänker ge mig in i den världen igen. Jag hoppas i
stället på en annan utveckling.
</p>

<p>
Bergis missar jag massor av intressanta saker genom att inte vara med på
Facebook, MySpace, Twitter, Helgon.net, Lunarstorm, Last.FM, Haket,
Vilda Webben, SprayDate eller någon av de andra 4711 sociala webmojsarna
som finns eller har funnits, men det kan jag nog ta så länge jag slipper
de vanligen <i>hemska</i> webgränssnitten. Jag har visserligen hört att
Facebook skall vara undantaget, men det tror jag när jag ser det.
</p>

<p>
Mina sociala datorkontakter sköter jag i stället genom:
</p>

<ul class="org-ul">
<li>Personliga brev. Jag får kanske fem&#x2013;tio om dagen. Det tar antagligen
mer tid att skriva svar på breven än många inlägg jag skriver på andra
ställen, även om de inläggen är många fler. Jag tycker om att både få
och skriva långa personliga brev. E-mail: Brevskrivandets renässans?</li>

<li>Brevlistor: Jag deltar i (eller i en del fall, bara läser) några
hundra listor, både med direkt prenumeration och genom Lars Magne
Ingebrigtsens fantastiskt trevliga <a href="http://gmane.org/">Gmane</a>. Jag
kommer åt både mail och News från min kombinerade mail- och
News-läsare, <a href="http://gnus.org/">Gnus</a>, som samme Lars råkar vara
huvudutvecklare för.</li>

<li>Usenet News: Jag prenumererar på omkring tio newsgroups, mest sådana
saker som alt.folklore.computers, alt.sys.pdp10, comp.arch,
comp.compilers och liknande. Tidigare använde jag
<a href="http://www.lysator.liu.se/">Lysators</a> News-server, men den dog
tyvärr förra sommaren. Jag använder nu
<a href="http://www.eternal-september.org/">Eternal September</a>. Det är samma
tjänst som tidigare var känd som Motzarella. Det är en mycket trevlig
gratistjänst som bara bär Usenets textgrupper, alltså Big 8 + alt./
utom alt.binaries./ och en massa andra hierarkier, som de.*, fido7.*
och många fler.</li>

<li>SSLUG News: <a href="http://www.sslug.dk/">Skåne/Sjaelland Linux User Group</a>
har en intern News-server så man slipper gå med i deras olika
brevlistor. Jag prenumerar på omkring tio grupper.</li>

<li>KOM-system: Jag deltar i omkring 300 möten i
<a href="http://www.lysator.liu.se/lyskom/">Lysators KOM</a> och 50 möten i
KOM-systemet <a href="http://www.common.se/">Common</a>. I
<a href="http://www.update.uu.se/">Updates</a> LysKOM,
<a href="http://www.stacken.kth.se/">Stackens</a> LysKOM och
<a href="http://www.ludd.ltu.se/">Ludds</a> LysKOM är jag med i något färre
möten.</li>

<li>Bloggar: Kanske 20&#x2013;30 stycken. Hit räknar jag också sådana saker som
<a href="http://slashdot.org/">Slashdot</a>, som jag visserligen läser
importerad till ett LysKOM-möte, <a href="http://boingboing.net/">Boing
Boing</a> och <a href="http://xkcd.org/">XKCD</a>, inte bara personliga bloggar.</li>
</ul>

<p>
Allt ovan läser jag varje dag om de har något nytt material, med några
undantag. Jag gissar att ovanstående är ganska typiskt för en svensk
hacker, med lite variation. Somliga följer bergis hundratals bloggar,
till exempel.
</p>

<p>
Om jag dessutom skulle använda någon social webplats så skulle
ytterligare tid gå åt till att läsa en massa uppdateringar,
gästboksinlägg och vad det nu kan vara. Vill jag verkligen lägga min tid
på det? Å andra sidan, vill jag lägga min tid på allt jag räknat upp
ovan?
</p>

<p>
Då och då får jag faktiskt för mig att rensa ut bland prenumerationerna
och tar också bort massor, men långsamt brukar det byggas upp igen. Om
någon kommer på ett sätt att hantera allt det där, eller ett sätt att
aggregera data från alla de där systemen på ett smart sätt så snackar vi
killer app! I och för sig så hjälper trådning, filtrering och liknande
ganska bra. Jag kan täcka tusentals olästa inlägg ganska fort med Gnus.
</p>

<p>
Jag har länge också varit lite skeptisk till chatsystem, eftersom jag ju
<i>vet</i> att det slukar tid på motsvarande sätt. Vad värre är, är att
realtidsmedia stör min koncentration. Det där med att ständigt vara
tillgänglig är inte riktigt så frestande om det samtidigt betyder att
min uppmärksamhet på det jag skall göra när som helst kan brytas. Det
tar ofta ganska lång tid för mig att komma tillbaka till vad jag höll på
med.
</p>

<p>
1991&#x2013;1992 spenderade jag otroligt mycket tid på det då enda officiella
Internet Relay Chat-nätet, så jag vet hur besatt jag kan bli av det.
Bröllopet med min första fru hölls till och med på IRC, bara några dagar
efter AFK-bröllopet, om jag minns rätt.
</p>

<p>
På den tiden kallade jag mig förresten <b>Teakettle</b> på IRC. Om någon
minns mig från den tiden får ni gärna ta kontakt.
</p>

<p>
Sedan början av 90-talet har jag använt de nu många IRC-näten högst
sporadiskt. Jag finns trots det då och då ibland på IRC-nätet
<a href="http://freenode.net/">Freenode</a>. Den enda egentliga anledningen att
jag ibland hänger där är för samordning eller brainstorming kring olika
fria program och/eller möten.
</p>

<p>
Sedan en tid tillbaka experimenterar jag med XMPP, det decentraliserade
chatsystem som tidigare kallades Jabber. Den senaste omgången har det
varit ganska flitigt användande, mest för att jag fick klienten
<a href="http://emacs-jabber.sf.net/">emacs-jabber</a> att fungera mot servern.
Emacs-jabber är inte optimal, men den känns lätt att anpassa, så den
kanske kan bli vad jag vill ha av en chatklient.
</p>

<p>
Jag är nästan alltid "away" om jag inte känner mig oerhört pratglad.
Markeringen som "away" är till för att meddela att det kan dröja innan
jag svarar, för jag ser kanske inte meddelanden direkt. Min klient kör
dessutom i en <a href="http://www.gnu.org/software/screen/">screen</a> på en
server, så det är alltså inte ens säkert att min XMPP-klient är
ihopkopplad med en terminal.
</p>

<p>
Jag använder hittills framför allt XMPP för att delta i Multi-User Chats
(MUCs). MUC är XMPP-terminologi för motsvarigheten till IRC:s kanaler.
</p>

<p>
Det finns risk att jag inte använder XMPP som många andra, för många jag
pratat med verkar vara mer inne på att använda det för en till
en-kommunikation. Kanske är det en gammal IRC-skada?
</p>
<div id="outline-container-det-sociala-nätet" class="outline-2">
<h2 id="det-sociala-nätet">Det sociala nätet?</h2>
<div class="outline-text-2" id="text-det-sociala-nätet">
<p>
Räknar jag samman allt ovan och tänker lite, så kanske det går att säga
att det är en decentraliserad motsvarighet till just en social webplats,
ett webcommunity minus själva webgränssnittet. Jag gör i stort sett
samma saker som användare i ett webcommunity gör, men kanske inte lika
inlåst. Det är förstås möjligt att jag saknar saker som finns i ett
webcommunity också, men i så fall vad?
</p>

<p>
Vad brukar egentligen finnas i ett webcommunity? Hur ser motsvarigheten
ut utanför det?
</p>
</div>
<div id="outline-container-profiler" class="outline-3">
<h3 id="profiler">Profiler</h3>
<div class="outline-text-3" id="text-profiler">
<p>
De flesta communities jag sett har en slags presentationssida för varje
användare. Där finns personlig information som en bild, ålder, kön och
vanligen en fritextpresentation.
</p>

<p>
Motsvarigheten utanför ett community är naturligtvis en personlig
websida, något jag tycker alla borde ha. Det skulle hjälpa oerhört för
att få koll på vem man kommunicerar med. Det är ett mysterium att alla
inte har en websida, då det ju är så oerhört praktiskt.
</p>
</div>
</div>
<div id="outline-container-diskussionsfora" class="outline-3">
<h3 id="diskussionsfora">Diskussionsfora</h3>
<div class="outline-text-3" id="text-diskussionsfora">
<p>
De flesta webcommunities har något slags forum eller flera. Många gånger
används ganska undermålig teknik, till exempel helt utan någon form av
trådning mellan kommentarer eller något sätt att hoppa över hela
ärenden. Ofta möjligheten att länka rakt in i en diskussion utifrån.
Användare är tvingade att använda ett och samma gränssnitt för
diskussionerna. Kort sagt, misär!
</p>

<p>
Brevlistor, newsgroups eller möten i KOM-system är väl etablerade
alternativ med i en del fall väldigt bra klientprogram. Dessa fora <i>kan</i>
förstås också vara tillgängliga över ett webgränssnitt, men behöver inte
vara det. Se till exempel redan omnämnda Gmane för ett bra exempel:
</p>

<p>
<a href="http://gmane.org/">http://gmane.org/</a>
</p>

<p>
Gmane importerar alltså brevlistor till en News-server och låter
användare läsa inläggen med en vanlig NNTP-klient. Det finns också en
webbaserad sökfunktion. Om man <i>verkligen</i> vill finns också inte mindre
än två webbaserade gränssnitt för läsning, det ena mer interaktivt och
Gnus-inspirerat och det andra mer likt en blog.
</p>
</div>
</div>
<div id="outline-container-chat-presence" class="outline-3">
<h3 id="chat-presence">Chat &amp; Presence</h3>
<div class="outline-text-3" id="text-chat-presence">
<p>
Chat mellan användare finns på en del communities. I de flesta kan man
också se om en användare är inloggad eller inte. På en del kan man också
få meddelanden om vännerna loggar in eller ut, även om det faktiskt
verkar mer sällsynt.
</p>

<p>
På webcommunities är chat oftast bara mellan två användare. Få har
motsvarigheten till Jabber/XMPP:s MUC eller IRC:s kanaler. En vän
föreslog nyligen att det är för att de vänder sig till SMS-generationen.
Jag tyckte det var lite roligt och det kanske ligger något i det.
</p>

<p>
Den uppenbara ersättningen i nätet i stort är förstås just IRC eller
XMPP. IRC dras med lite historiska problem, som till exempel avsaknad av
innehållsförteckning i meddelanden, så XMPP kanske är att föredra.
</p>

<p>
Jag hör att FaceBook faktiskt har stoppat in XMPP-stöd i sitt
chatsystem. De tillåter emellertid inte
server-till-server-kommunikation, så användarna är fortfarande inlåsta:
Bara FB-användare kan prata med FB-användare. Dessutom verkar de
överhuvudtaget inte stöda kanaler!
</p>

<p>
<a href="http://www.livejournal.com/">LiveJournal</a> har riktig XMPP, både för
klient-server och server-server, så LJ-användare är inte lika inlåsta.
Go LiveJournal!
</p>
</div>
</div>
<div id="outline-container-gästböcker" class="outline-3">
<h3 id="gästböcker">Gästböcker</h3>
<div class="outline-text-3" id="text-gästböcker">
<p>
Gästböcker är mystiska saker som jag inte riktigt förstår poängen med.
De är knutna till en viss användare, alla kan se inlägg i dem, men ändå
skriver folk saker som ser mer ut som personliga meddelanden i dem.
Varför? Är det kanske en statusgrej jag inte förstår?
</p>

<p>
En gästbok är hur som helst trivial att knyta till sin personliga
websida, om man nu verkligen skulle vilja. Det finns massor av redan
existerande program för det.
</p>
</div>
</div>
<div id="outline-container-personliga-brev" class="outline-3">
<h3 id="personliga-brev">Personliga brev</h3>
<div class="outline-text-3" id="text-personliga-brev">
<p>
En del communities har möjligheten att skicka privata brev mellan
användare, naturligtvis helt begränsad till det egna systemet.
</p>

<p>
Den uppenbara ersättaren i nätet är förstås vanlig e-mail.
</p>
</div>
</div>
<div id="outline-container-bildgalleri" class="outline-3">
<h3 id="bildgalleri">Bildgalleri</h3>
<div class="outline-text-3" id="text-bildgalleri">
<p>
Många communities har möjlighet att ladda upp bilder, kommentera och
kategorisera dem. En del communities verkar vara uppbyggda <i>enbart</i> som
en slags bildgallerier.
</p>

<p>
Det finns flera fritt tillgängliga verktyg för att publicera
bildgallerier på en personlig websida och det finns också en del allmänt
tillgängliga bildgalleritjänster, som
<a href="http://www.flickr.com/">Flickr</a>, så det finns kanske en trend mot
öppenhet här?
</p>
</div>
</div>
<div id="outline-container-vännerlista" class="outline-3">
<h3 id="vännerlista">Vännerlista</h3>
<div class="outline-text-3" id="text-vännerlista">
<p>
Det här känns ungefär lika mystiskt som gästböcker för mig. Vännerlistor
dras som bekant med en del intigritetetsproblem, i alla fall om man
publicerar dem eller låter obehöriga, som till exempel sin
tjänsteleverantör, komma åt dem.
</p>

<p>
Om man nu verkligen vill publicera sådana saker så finns faktiskt även
möjligheten utanför webcommunities. Jag känner till två projekt:
<a href="http://www.foaf-project.org/">Friend of a Friend</a> och
<a href="http://gmpg.org/xfn/">XHTML Friends Network</a>.
</p>

<p>
I båda fallen kan du publicera din vännerlista på din vanliga hemsida,
om du vill. Eller skicka den per mail, FTP, NFS, Gopher, finger eller
något annat sätt att överföra data.
</p>
</div>
</div>
<div id="outline-container-accesskontroll" class="outline-3">
<h3 id="accesskontroll">Accesskontroll</h3>
<div class="outline-text-3" id="text-accesskontroll">
<p>
Flera webcommunities gör en stor sak av att det går att välja vilka
användare som skall få se det publicerade innehållet: vännen X får se
bilden 1, vännen Y får se bilden 2 och alla andra får inte se någonting.
</p>

<p>
Motsvarigheten i vanliga webvärlden är ofta lokal inloggning, till
exempel med klassiska <code>.htpasswd</code>. Det är dock ganska trubbigt och är
förstås opraktiskt för en användare som eventuellt måste logga in på
nytt och på nytt. Ett alternativ skulle kunna vara att bygga in
accesskontroll med hjälp av system som <a href="http://openid.net/">OpenID</a>.
Det tror jag skulle kunna fungera bra.
</p>
</div>
</div>
</div>
<div id="outline-container-slutsatser" class="outline-2">
<h2 id="slutsatser">Slutsatser</h2>
<div class="outline-text-2" id="text-slutsatser">
<p>
Mycket av vad som finns i ett community skulle alltså lika gärna kunna
ligga på en vanlig personlig websida eller ersättas med program som
använder öppna protokoll. Av någon anledning använder hundratals
miljoner människor (miljarder?) i stället inlåsta system för att
publicera sig och kommunicera. Varför?
</p>

<p>
Jag har naturligtvis inte ett definitivt svar, men det första jag kommer
att tänka på är okunskap. De som relativt nyligen börjat använda nätet
verkar sätta likhetstecken mellan web och Internet. "The interwebs", ni
vet. Finns det inte på webben så finns det helt enkelt inte.
</p>

<p>
Jag har heller inte sett ett integrerat system av program som erbjuder
allt i listan ovan med helt öppna standarder, komplett med webgränssnitt
som alternativ när användaren inte kan eller vill installera program.
Jag har inte sett någon som erbjuder ett så totalt integrerat system som
tjänst till de mindre datorkunniga användarna.
</p>

<p>
Det finns i och för sig tjänster som kommer en bit på vägen. Kanske är
det verkligen en trend mot mer öppna, mer decentraliserade system? Jag
kan bara hoppas.
</p>

<p>
LiveJournal har redan nämnts. Google Mail, tillsammans med Buzz och
Talk, ger också en del av det, även om det möjligen dras med sina egna
integritetsproblem. Gamla GeoCities gav som bekant en bit av det, då de
tillät vem som helst att skapa en allmänt tillgänglig personlig websida.
Varför just GeoCities och liknande tjänster fallit bort har jag ingen
bra förklaring till, men en profil på Google Buzz är ju också en slags
personlig websida.
</p>

<p>
Å andra sidan så vill alldeles säkert många tjänsteleverantörer gärna
låsa fast sina användare i sin egen lilla inhägnade värld och tvinga
användarna att komma åt tjänsterna genom ett gränssnitt under deras
kontroll. Hur skall de annars tjäna pengar på dem? Hur skall man, till
exempel, tvinga användarna att se reklamen?
</p>

<p>
Jag vet inte om det skulle bära sig, men en grundläggande tjänst som är
reklamfinansierad med ett premiumkonto som kostar pengar kanske skulle
kunna fungera. Premiumkontot skulle förstås vara reklamfritt.
</p>

<p>
För att överhuvudtaget kunna konkurrera med gratistjänster måste
antagligen själva tjänsten vara bättre än vad gratistjänsterna erbjuder.
En fördel skulle vara just det helhetsgrepp jag talar om ovan, där man
erbjuder allt som alla webcommunities erbjuder, fast öppet och
decentraliserat. Jag tror just kombinationen av ett integrerat system
och en öppenhet mot resten av nätet skulle vara den stora
konkurrensfördelen.
</p>

<p>
Jag är åtminstone lite hoppfull.
</p>
</div>
</div>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Boomtime, the 34 day of Discord in the YOLD 3176 (<time datetime="2010-04-17">2010-04-17</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/sociala.html</link>
  <guid>https://hack.org/~mc/blog/sociala.html</guid>
  <pubDate>Sat, 17 Apr 2010 16:27:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Tre knappar! Jag vill ha tre knappar!]]></title>
  <description><![CDATA[<p>
Jag vill ha en optisk mus med tre knappar. Är det för mycket begärt?
</p>

<p>
De moderna mössen som ibland sägs ha tre knappar har vanligen två
knappar och ett <i>scrollhjul</i> placerat mitt emellan dem, där jag alltså
förväntar mig en riktig, fullstor, knapp. Jag vill inte ha något
scrollhjul. De gånger jag använt en sådan mus och försöker använda
hjulet som mellanknapp händer det ofta att jag scrollar iväg av misstag.
Misär!
</p>

<p>
Mellanknappen vill jag ha för att göra sådana saker som att klistra in
text jag markerat, välja saker i menyer eller få ett fönster att höjas
eller sänkas i min fönsterhanterare (även om min CTWM är dresserad att
göra mycket med tangentkombinationer). Många program jag använder
förutsätter att det finns en mittenknapp: Emacs, xterm, et cetera.
</p>

<p>
Varför är jag och de program jag använder så inställda på att en mus
skall ha tre knappar? En liten personligt vinklad historielektion
följer&#x2026;
</p>

<p>
Den första datormus jag hade var kopplad till en Luxor ABC 1600. Den
hade det vitsiga modellnamnet R8. Jo, den hette faktiskt "råtta"! Musen
var formad som ett halvklot, hade tre knappar och en hemsk stålkula som
inte hade någon friktion att tala om. Men den hade tre knappar!
<a href="http://pc-museum.com/">Runes PC-museum</a> har
<a href="http://pc-museum.com/luxor/mus-big.jpg">en bild av ABC R8.</a>
</p>

<p>
Mina nästa två möss var kopplade till en Sun 3/60 och en Sun
SPARCstation ELC. De var faktiskt optiska, låt vara på en därför
speciellt avsedd musmatta av metall med ett särskilt rutmönster på, men
de hade tre knappar och riktigt bra respons. I alla fall tyckte jag det
på den tiden.
</p>

<p>
Här är ett svenskt Sun Type 4 med tillhörande mus, precis som på min
ELC. Musen såg likadan ut till Type 3-tangentbordet.
</p>


<figure id="org316410c">
<img src="https://hack.org/mc/images/type4-with-mouse.jpg" alt="type4-with-mouse.jpg">

</figure>

<p>
(Tack för bilden, Fredrik.)
</p>

<p>
Av någon för mig okänd anledning bestämde sig Sun för att sluta med sina
optiska möss och började leverera med möss med hjul. Här är en bild på
musen som kom med min Sun Ultra 1:
</p>


<figure id="orgdfa9c99">
<img src="https://hack.org/mc/images/sun5.jpg" alt="sun5.jpg">

</figure>

<p>
Den hade i alla fall tre knappar. Alltid något.
</p>

<p>
Min första X-terminal hade förstås också tre knappar. Musen var
tillverkad av Logitech och kopplad med seriellkabel till en NCD 16:
</p>


<figure id="org4d73378">
<img src="https://hack.org/mc/images/logitech-ncd.jpg" alt="logitech-ncd.jpg">

</figure>

<p>
Den fungerade så småningom också alldeles utmärkt att koppla in till en
seriellport på en vanlig PC.
</p>

<p>
Den första arbetsstation från Digital jag hade hemma, en Alpha XL 266,
hade förstås också en treknapparsmus:
</p>


<figure id="orgafcda03">
<img src="https://hack.org/mc/images/digital.jpg" alt="digital.jpg">

</figure>

<p>
Den här musen från Digital har PS/2-anslutning och jag kunde alltså
använda den mot en vanlig PC också. Så klarade jag mig länge, men sedan
slog de nya optiska mössen igenom. De optiska mössen var totalt
överlägsna i respons, så jag ville förstås också ha en sådan.
</p>

<p>
Jag hittade efter ett tag en Logitech-mus med USB-anslutning som
faktiskt hade <i>en slags</i> mellanknapp förutom scrollhjulet:
</p>


<figure id="orgcddcf59">
<img src="https://hack.org/mc/images/logitech-scroll.jpg" alt="logitech-scroll.jpg">

</figure>

<p>
Den heter UltraX Optical Mouse och passar rätt bra ihop med Logitechs
UltraX- tangentbord. Just ett sådant använde jag länge som externt
tangentbord. Jag saknade dock fortfarande en mellanknapp som var lika
stor som de andra två knapparna.
</p>

<p>
När jag först skaffade en bärbar dator, en IBM Thinkpad 570, hade den
tre fullstora musknappar. Det har min nuvarande Thinkpad X60s också:
</p>


<figure id="org07e49c3">
<img src="https://hack.org/mc/images/x60s-buttons.jpg" alt="x60s-buttons.jpg">

</figure>

<p>
Styrpinnen och de tre musknapparna är en av anledningarna att jag
skaffade en 570 och fortsatte med Thinkpad X-serien. Säkert har många
andra gjort likadant.
</p>

<p>
Jag ville fortfarande ha en extern mus också, speciellt då jag använder
en extern skärm med min Thinkpad.
</p>

<p>
Döm om min förvåning när jag nyligen såg att HP faktiskt säljer just en
optisk mus med tre knappar! HP part number DY651A. På HP:s egna websidor
påstås den kosta 15 USD.
</p>

<p>
Jag blev ännu mer förvånad när jag hittade just den HP-musen på
<a href="http://www.dustinhome.se/">Dustin Home</a>! Tyvärr kostade den där 350
SEK, men jag slog till hur som helst.
</p>

<p>
Den ser ut så här:
</p>


<figure id="org96ec7d6">
<img src="https://hack.org/mc/images/hp-mouse-small.jpg" alt="hp-mouse-small.jpg">

</figure>

<p>
Den känns visserligen lite plastig och det kanske är ett överpris med
350 spänn för en vanlig mus, men jag har äntligen både responsen hos en
optisk mus <i>och</i> en riktig mittenknapp. Jag är rätt nöjd.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Pungenday, the 30 day of Discord in the YOLD 3176 (<time datetime="2010-04-13">2010-04-13</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/treknappars.html</link>
  <guid>https://hack.org/~mc/blog/treknappars.html</guid>
  <pubDate>Tue, 13 Apr 2010 16:20:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Happy Hacking Keyboard]]></title>
  <description><![CDATA[<p>
Jag har fått ett Happy Hacking Keyboard! Jag skriver på det just nu. Jag
tog fotot nedan tidigare ikväll. Klicka på fotot för en större bild för
att detaljstudera layouten. Jag vet att du vill!
</p>


<figure id="orgb97daa8">
<a href="https://hack.org/mc/images/hhkb1.jpg"><img src="https://hack.org/mc/images/hhkb1-small.jpg" alt="hhkb1-small.jpg"></a>

</figure>

<p>
Jag har suktat efter att prova ett HHKB sedan jag hörde talas om dem
första gången, antagligen i slutet på 90-talet, men tyvärr aldrig
tidigare fått möjligheten. De är ganska dyra, så att köpa ett otestat
har aldrig varit ett alternativ.
</p>

<p>
Jag råkade nämna min längtan efter att åtminstone få prova ett HHKB på
en brevlista och blev i stället genast erbjuden att <i>få</i> ett gammalt
original-HHKB gratis! Självklart tackade jag ja. Tack, Magnus!
</p>

<p>
Det jag fått är alltså ett original-HHKB, modellnummer PD-KB02. Just
mitt exemplar tillverkades i januari 2000. Den här versionen har
PS/2-anslutning, så jag köpte
<a href="http://www.clasohlson.se/Product/Product.aspx?id=82914670">en
USB-PS/2-konverter på Clas Ohlson</a> för att koppla in den i min bärbara.
</p>

<p>
Tillverkarna har bytt teknik i de moderna HHKB-modellerna, så jag kan
inte uttala mig om dem, men den här varianten är väldigt trevligt att
skriva på. Det känns rätt mycket som ett Sun type 4, tycker jag. Tyvärr
har jag inget type 3 kvar att jämföra med.
</p>

<p>
Apropå type 3 så påstås det på många ställen att HHKB-layouten är
inspirerad av just type 3. Det stämmer nog, i alla fall om man undantar
att type 3 hade såväl numeriskt tangentbord som funktionstangenter både
till vänster (L-tangenterna) och ovanför (F-) de ordinarie tangenterna.
Jag minns hur som helst type 3 på min Sun 3/60 och på Sun 3:orna på
<a href="http://www.lysator.liu.se/">Lysator</a> med kärlek.
</p>

<p>
En stor fördel är förstås att ett HHKB tar upp mycket mindre plats än,
säg, ett type 5:
</p>


<figure id="org21c7647">
<img src="https://hack.org/mc/images/hhkb-type5-small.jpg" alt="hhkb-type5-small.jpg">

</figure>

<p>
Det är också litet jämfört med det jag fram tills nu använt som externt
tangentbord, ett Logitech Ultra X:
</p>


<figure id="org8e7be1e">
<img src="https://hack.org/mc/images/hhkb-ultrax-small.jpg" alt="hhkb-ultrax-small.jpg">

</figure>

<p>
Wikipedia har en ganska lång artikel om
<a href="http://en.wikipedia.org/wiki/Happy_Hacking_Keyboard">HHKB-varianterna</a>
som också beskriver ganska bra varför någon skulle vilja ha ett.
</p>

<p>
För min egen del är en av de viktigaste punkterna känslan i
tangentbordet. Det känns alltså rätt mycket som ett Sun type 4. Jag
tycker om känslan i de tangentborden, men har inte använt något sådant
dagligen sedan min huvudsakliga hemdator var en SPARCstation ELC.
</p>

<p>
Eftersom HHKB saknar såväl piltangenter som numeriskt tangentbord så
behöver jag inte heller sträcka mig så långt för att putta till råttan.
Jag försöker visserligen göra mycket med tangentbordet, men ibland måste
även jag ratta råtta.
</p>

<p>
Det är så klart också en bonus att ESC och Control sitter på Rätt Plats,
men det spelar inte så stor roll, för på vanliga tangentbord mappar jag
sedan mycket länge vanligen om Caps Lock till Control och tangenten till
vänster om "1" till ESC, precis som på HHKB. Nu står det å andra sidan
rätt text på tangenterna, men det är egentligen inte så noga.
</p>

<p>
Jag brukar vanligen använda svensk layout på mina tangentbord, med den
skillnaden att <code>Mode_switch</code> + "åäö" ger "}{|" ("][" med shift). Just
de här tecknen är de som motsvarar svenska tecken i vanliga ASCII i
den svenska varianten av ASCII, ISO 646SE, ibland känd som 'swascii'.
De som växt upp med 7-bitarstecken på sina terminaler förstår nog, men
jag tycker hur som helst att det är praktiskt att de här tangenterna
är mer lättillgängliga än på på sifferraden. AltGr+7 är verkligen inte
lika lätt att trycka som AltGr+ä, till exempel.
</p>

<p>
Jag har några xmodmap-filer (och dito för console under Linux och
FreeBSD) enligt den här filosofin liggande för olika tangentbord, se:
</p>

<p>
<a href="https://hack.org/mc/files/">https://hack.org/mc/files/</a>
</p>

<p>
Ett HHKB har tyvärr inte lika många tangenter på alla rader som ett
vanligt svenskt tangentbord så just min vanliga layout som jag beskrivit
ovan är alltså omöjlig. Vad göra?
</p>

<p>
Jag har testat några olika mappningar.
</p>

<p>
<a href="https://hack.org/mc/files/hhkb2.xmodmap">Den mappning jag har just
nu</a> ger åäö på den plats de normalt har på ett svenskt tangentbord, men
i övrigt enligt vad som faktiskt står på tangenterna. För att få fram de
tangenter jag överlagrat måste jag trycka in höger ALT (som jag sagt är
Mode_switch) också. Det fungerar OK, men kanske inte optimalt. Jag skall
fundera på hur jag vill ha det.
</p>

<p>
HHKB-upplevelsen gör mig naturligtvis ännu mer nyfiken på hur ett
modernt HHKB Pro 2 känns. De kostar dock över 2000 spänn och verkar nu
för tiden enbart gå att få tag i via japanimport. De företag jag hittat
som skickar till Sverige är
<a href="http://www.geekstuff4u.com/catalog/product/view/id/45/s/happy-hacking-keyboard-pro-2/">GeekStuff
4 U</a> och
<a href="http://hovanfue.com/products/Happy-Hacking-Keyboard-Professional-2-HHKB-Pro2.html">Japan
Direct Shop</a>.
</p>

<p>
För den riktigt nyfikne finns också
<a href="http://geekhack.org/showwiki.php?title=Island:6902">några bilder på
innandömet av ett modernt HHKB Pro 2</a> på GeekHack.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Setting Orange, the 27 day of Discord in the YOLD 3176 (<time datetime="2010-04-10">2010-04-10</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/hhkb.html</link>
  <guid>https://hack.org/~mc/blog/hhkb.html</guid>
  <pubDate>Sat, 10 Apr 2010 02:11:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[IPv6, autokonfiguration och DNS]]></title>
  <description><![CDATA[<div id="outline-container-inledning" class="outline-2">
<h2 id="inledning">Inledning</h2>
<div class="outline-text-2" id="text-inledning">
<p>
I IPv6 kan ändnoder skaffa sig sin egen adress. Metoden kallas SLAAC
(StateLess Address AutoConfiguration). En router skickar ut något som
kallas Router Advertisments och talar om vilket nätprefix den är
ansvarig för. Med hjälp av prefixet och sin egen Ethernet-adress kan en
ändnod sedan bygga resten av sin IPv6-adress. Default route är
naturligtvis routern som skickade ut meddelandet. Vips kan en nod komma
ut på nätet!
</p>

<p>
Ett litet problem med det här är att det inte går att slå upp namn, för
noden som just byggt sin egen IPv6-adress vet inte vilken DNS-server den
skall prata med. För att kommunicera måste alltså alla tillämpningar
känna till IPv6-adressen de skall prata med, till exempel
2001:888:22b3::2 snarare än ecki.hack.org. Oops.
</p>

<p>
I september 2007 publicerades <a href="http://www.ietf.org/rfc/rfc5006.txt">RFC
5006</a> som uppdaterar Router Advertisments med ett tillägg som kallas
Recursive DNS Server (RDNSS). Tillägget ger en eller flera adresser till
rekursiva DNS-servrar. Det är bara det att RFC 5006 är markerad
"Experimental". DHCPv6, som också löser problemet, har visserligen varit
definierad sedan 2003, men implementationer, framför allt på
serversidan, har det varit ganska ont om.
</p>

<p>
Det finns också en filosofisk skillnad: DHCPv6 skapar spårbarhet medan
SLAAC inte gör det. Det kan finnas användning för båda, men ett typiskt
hemmanät eller kanske ännu hellre ett sensornät med massor av små
intelligenta manicker kanske hellre använder just SLAAC med RDNSS.
</p>

<p>
I jämförelse med DHCPv6 är det också lätt att skriva program som stöder
RDNSS.
</p>

<p>
I ett typiskt ISP-scenario kan man tänka sig att kundens hemmarouter
(ofta känd som CPE, Customer Premise Equipment på ISPiska) får
information om vilken DNS-server som skall användas via DHCPv6, men att
maskinerna i hemmanätet i stället får reda på det med SLAAC + RDNSS.
</p>
</div>
</div>
<div id="outline-container-min-klient-radns" class="outline-2">
<h2 id="min-klient-radns">Min klient: radns</h2>
<div class="outline-text-2" id="text-min-klient-radns">
<p>
En dag när jag hade tråkigt på jobbet någon gång i mars 2008 skrev jag
en klient för RDNSS. Jag satt och väntade på att Open Office (Brrr!)
skulle kompilera klart och började medan jag väntade att skriva på en
klient jag döpte till radns.
</p>

<p>
Den allra första versionen, som fungerade redan den kvällen, var ganska
naiv och använde BPF-filter (med hjälp av libpcap) för att få tag i
RA-meddelandena. Overkill! Jag hade inte ens läst Advanced Sockets API
for IPv6, <a href="http://www.ietf.org/rfc/rfc3542.txt">RFC 3542</a> ännu!
</p>

<p>
Jag skrev om radns att använda Advanced Sockets API:et lite senare.
API:et innehåller nämligen en egen filtreringsmekanism som är mycket
enkel. Med en setsockopt() kunde jag sätta ett filter som jag först
byggde så här:
</p>

<pre class="example" id="orgfbe0779">
ICMP6_FILTER_SETBLOCKALL(&amp;filter);
ICMP6_FILTER_SETPASS(ND_ROUTER_ADVERT, &amp;filter);
</pre>

<p>
Efter det blir min socket läsbar när det finns ett RA-meddelande och jag
kan läsa och börja parsa meddelandet. Enkelt, eller hur?
</p>

<p>
Min dåvarande arbetsköpare, <a href="http://www.stickybit.se/">Stickybit AB</a>,
lät mig släppa koden under BSD-licens. Jag versionshanterade i
Stickybits Perforce-installation.
</p>

<p>
När jag slutade på Stickybit i slutet av 2008 kunde jag inte längre
använda Perforce, så jag tog de releaser som hade gjorts och importerade
dem i CVS i stället för att bevara åtminstone lite historia.
</p>

<p>
Versionerna av radns jag släppte 2008 tog emot en RA med RDNSS-tillägget
och skrev adresserna till DNS-servrarna direkt i en fil som hade samma
format som den resolv.conf som finns på de flesta Unix-varianter. Om man
kör enbart IPv6 kan (och kunde redan då) radns skriva direkt till
/etc/resolv.conf. Om man kör dual stack kan man med en hook till
exempelvis dhclient få den att fläta ihop radns-listan med sin egen.
</p>

<p>
Det här räckte för mig, så utvecklingen stannade av&#x2026;
</p>

<p>
Hopp till 2010. Även om jag i augusti 2009 blev pappa igen och nu för
tiden är ganska upptagen med att ta hand om en bäbis så fick jag
plötsligt för mig att hacka på radns igen. Det första jag gjorde var att
börja använda Git i stället för CVS.
</p>

<p>
Det här är mitt första projekt i Git och dessutom första gången jag
överhuvudtaget använder Git, så jag gör bergis några fel, men det är ju
så man lär sig&#x2026; Ni får ha överseende.
</p>

<p>
Min första hackattack ledde till att radns nu släpper root-privilegierna
så fort den kan och dels kan anropa ett script när listan över
DNS-servrarna har ändrats. Det betyder att radns kan fungera tillsammans
med programmet resolvconf, som just är till för att fläta ihop
DNS-resolvers från olika källor.
</p>

<p>
En andra hackattack ledde till att radns äntligen kan hantera livslängd
så att DNS-servrar alltså kan plockas bort när de inte längre gäller.
</p>

<p>
På vägen har en del buggar också fixats. Där är vi nu.
</p>

<p>
Jag har inte gjort någon riktig release än av den nya koden och mycket
är otestat. Här finns min distributionssida:
</p>

<p>
<a href="https://hack.org/mc/hacks/radns/">https://hack.org/mc/hacks/radns/</a>
</p>

<p>
Jag har gjort en release från min feature-branch som heter
radns-0.9-ttl3.tar.gz som finns på den där sidan. Eventuellt kommer fler
testreleaser, så håll utkik där.
</p>

<p>
Git-repot lever på
</p>

<p>
<a href="https://hack.org/mc/git/radns/">https://hack.org/mc/git/radns/</a>
</p>

<p>
men innehåller just nu bara master-grenen. Jag vet inte riktigt hur jag
skall hantera det här med feature-grenar än.
</p>

<p>
En hel del tillfälliga debugsaker och mindre fin kod finns definitivt
kvar. Det finns säkert också många buggar och mindre eleganta lösningar.
Testa hemskt gärna ttl3-versionen, skicka klagomål och patchar till mig!
</p>

<p>
Den här versionen är bara testad under FreeBSD som jag utvecklar i.
Tidigare versioner är testade också under Linux och MacOS X.
</p>

<p>
I MacOS X fungerar radns visserligen, men då OS X inte har någon
/etc/resolv.conf måste man där sätta vilken DNS-server OS:et skall
använda med kommandon i stället. Något script för att göra det har jag
inte skrivit. Jag tar gärna emot ett förslag från någon Mac-användare!
</p>
</div>
</div>
<div id="outline-container-ietf-77" class="outline-2">
<h2 id="ietf-77">IETF 77</h2>
<div class="outline-text-2" id="text-ietf-77">
<p>
Uppenbarligen är jag inte ensam om att få ett nyupptäckt intresse för
RFC 5006, för på brevlistan för <a href="http://www.ietf.org/">IETF:s</a>
arbetsgrupp
<a href="http://www.ietf.org/dyn/wg/charter/v6ops-charter.html">v6ops</a> skrev
den ena ordföranden, Fred Baker, plötsligt så här den 17:e mars:
</p>

<blockquote>
<p>
Jari Arkko tells us that he is getting requests from various sources
to take RFC 5006 to Proposed Standard. It is now experimental.
</p>

<p>
[&#x2026;]
</p>

<ol class="org-ol">
<li>Please take a look at the document in the next few days; if you
have comments on it (eg, you think it should be changed in some
way), please comment to v6ops.</li>

<li>Vendors, please advise on implementations. Are there any? Has
interoperability been demonstrated?</li>

<li>Operators, enterprise and/or service provider, please advise on
deployment experience.</li>
</ol>

<p>
I'm adding a brief discussion to the agenda Monday morning with a view
to getting a quick thumbs-up/thumbs-down to advise Jari, who can then
take that to 6man later in the week if appropriate.
</p>
</blockquote>

<p>
Wow!
</p>

<p>
<a href="http://www.ietf.org/meeting/77/">IETF:s 77:e möte</a> börjar nästa vecka. Jag hoppas det kommer ett beslut
om att gå från Experimental till Proposed Standard och kommer försöka
lyssna in på v6ops-mötet, även om jag förstås inte är på plats fysiskt
den här gången.
</p>

<p>
<a href="http://www.ietf.org/proceedings/10mar/agenda/v6ops.html">Agendan för v6ops</a> säger att RFC 5006-statusen är första punkten på
måndag. <a href="http://videolab.uoregon.edu/events/ietf/ietf773.m3u">Lyssna in</a> och chatta med (xmpp:v6ops@jabber.ietf.org).
</p>

<p>
RFC 5006 som Proposed Standard skulle göra det mycket troligare att
produkter stöder det. Å andra sidan verkar det som om mycket stöd redan
finns där ute. Här är några citat från samma tråd i brevlistan:
</p>

<p>
Apple:
</p>

<blockquote>
<p>
Both solicitor and advertiser sides of RFC 5006 are implemented in
Apple's AirPort Extreme and Time Capsule (simultaneous dual-band II)
firmware 7.5 and later. It was tested for interoperability with a
Linux implementation prior to its release.
</p>
</blockquote>

<p>
Nokia:
</p>

<blockquote>
<p>
We have implemented this on Symbian OS and on Nokia S40 OS. Tested
against RADVD and TAHI. Not released in products yet.
</p>
</blockquote>

<p>
Firebrick:
</p>

<blockquote>
<p>
Firebrick FB6000 series as of release V0.00.402-Gerald Alpha (9th Mar 2010)
supports announcing RDNSS addresses as part of RA.
</p>
</blockquote>

<p>
Quagga:
</p>

<blockquote>
<p>
I patched quagga to support RFC 5006 too. Due to a more or less clever
maintainership the patches are stalled somewhere[1]
</p>

<p>
So quagga supports RFC 5006.
</p>
</blockquote>

<p>
Fria implementationer av klientsidan är alltså min radns, men också
<a href="http://rdnssd.linkfanel.net/">rdnssd</a>, som nu underhålls som en del av <a href="http://www.remlab.net/ndisc6/">ndisc6</a>.
</p>

<p>
På serversidan känner jag till bara en fri implementation som kan
RDNSS, <a href="http://www.litech.org/radvd/">radvd</a> och det är den enda server jag testat radns mot.
</p>

<p>
Motsvarigheten till radvd i *BSD:erna och OS X, rtadvd, stöder ännu
inte RDNSS, men jag har börjat titta lite på det och hoppas kunna
åtgärda det. Några hackattacker till och en snäll bäbis kan kanske
fixa det?
</p>
</div>
</div>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Prickle-Prickle, the 6 day of Discord in the YOLD 3176 (<time datetime="2010-03-20">2010-03-20</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/radns.html</link>
  <guid>https://hack.org/~mc/blog/radns.html</guid>
  <pubDate>Sat, 20 Mar 2010 18:25:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[Datorer till folket! Nät åt alla!]]></title>
  <description><![CDATA[<p>
Den årliga bokrean pågår. Jag köpte härom dagen bland annat två
samlingar med krönikor av den gamle hjälten Stefan Sundström. I en
krönika beskriver han att han åker i den omgjorda SL-bussen Morsan i
något gammalt öststatsland&#x2026;
</p>

<p>
Instant flashback! Första gången jag åkte i Morsan var jag på väg till
den frihetligt socialistiska A-mässan i Sätila utanför Göteborg. Året
var nog 1994. Jag hade med mig min Sun 3/60, en 68020-baserad
arbetsstation med unixsmaken SunOS. 3/60:n hade en gigantisk svartvit
monitor som vägde som ett litet hus, som jag dumt nog också tog med mig.
Hur tänkte jag när jag överhuvudtaget tog med min Sun!? Vilken katastrof
det hade varit för mig om 3/60:n hade gått sönder. Det var min enda
egentliga dator på den tiden.
</p>


<figure id="orgdf734f5">
<img src="https://hack.org/mc/images/sun3-60-small.jpg" alt="sun3-60-small.jpg">

<figcaption><span class="figure-number">Figure 1: </span>Sun 3/60</figcaption>
</figure>

<p>
Jag hade också en PC jag lånat av Jonas som drev Mayday BBS (Fidonet
2:204/423) på den tiden. På dess hårddisk fanns större delen av texterna
från <a href="http://www.spunk.org/">Spunk Library</a>, som jag hade varit med
att grunda. Spunk Library är ett numera avsomnat arkiv av frihetligt
socialistiska texter som på den tiden nog fortfarande var känt som Spunk
Press.
</p>

<p>
Jag åkte till A-mässan för att visa på vad gott datorerna och nätet kan
göra för att sammanföra aktivister och planera aktioner. På min Sun hade
jag tänkt visa hur mail fungerar, demonstrera ett KOM-system (SklaffKOM,
som jag hade portat till SunOS) och visa hur man konfigurerar Taylor
UUCP för att tanka hem post.
</p>

<p>
Jag hade också tänkt kopiera texter från Spunk-biblioteket till diskett
till de som ville ha det. Få hade på den tiden tillgång till nätet eller
ens till några av våra distributions-BBS:er. Inte särskilt många hade
modem, trots att det alltså var 90-tal.
</p>

<p>
När jag väl kom fram efter en händelserik resa med bussen Morsan där vi
blev stoppad av Polisen minst två gånger och många av oss (nej, inte
chauffören) drack rätt mycket öl, fick jag min plats visad för mig. Jag
fick ett bord mitt i det stora tältet och hade massor av ström. Finfint.
Mindre fint var vädret. Det var typisk svensk sommar, alltså omkring 10
grader och mycket, mycket fuktigt i luften.
</p>

<p>
Min Sun tyckte inte alls om luftfuktigheten och vägrade starta. PC:n
gick tack och lov igång. Det kändes lite fattigt att bara kunna bjuda på
Spunk-texter men inte kunna visa mail och KOM, men så fick det bli.
</p>

<p>
Jag hade skrivit ut katalogen över alla titlar vi hade i Spunk-arkivet
och lade ut några exemplar av katalogen på bordet. De som ville kunde
sedan peka på titlar och jag kopierade för glatta livet och gav dem en
eller ibland flera disketter med texterna.
</p>

<p>
Jag kommer inte ihåg hur det gick till, men jag skulle också hålla ett
föredrag, minns jag. Jag minns att började med att berätta vad jag
menade med Internet, eftersom mångas syn på det där med
datorkommunikation var fast i tanken uppringda modemförbindelser. Det
var en uppenbarelse för många när de insåg hur paketförmedlad
kommunikation fungerar.
</p>

<p>
Föredraget var välbesökt och efteråt kom någon från tidningen Arbetaren
fram och frågade "Kan du skriva om det där?" Jag svarade jakande och
resultatet blev faktiskt så småningom en artikel, även om det kanske
inte blev vad jag först hade tänkt mig:
<a href="https://hack.org/mc/writings/arbetare2.txt">Anarkister på nätet</a>.
</p>

<p>
I artikeln skrev jag att det fanns 300 BBS:er i området kring Linköping,
i alla fall i den version jag har sparad! Hur jag fick det till det har
jag ingen aning om. Kanske slant jag på en tangent? 30 låter i och för
sig också mycket, men i alla fall mycket mer troligt. Jag skulle annars
så här i efterhand gissa på 10&#x2013;15.
</p>

<p>
Arbetaren valde av någon anledning att göra reklam för min artikel på
löpsedeln! De skrev "PC-rebeller!" eller något liknande. Jag tyckte det
var lite humoristiskt, speciellt som jag överhuvudtaget inte ägde någon
PC.
</p>

<p>
Efter föredraget bar jag med ett litet sällskap av extra intresserade
iväg Jonas PC och ett modem till ett rum med strömuttag och telefonjack
och ringde upp ett KOM. Jag inte kunde demonstrera ett KOM lokalt då min
Sun fortfarande strejkade i regnet. Alla var mycket intresserade och jag
hoppas att jag inspirerade många att skaffade modem.
</p>

<p>
Efter A-mässan har jag för mig att det publicerades en lista på alla
organisationer som deltog. Jag representerade ingen formell organisation
och hade i stället fyllt i "några anarkistiska hackare" som
organisationsnamn. Jag tyckte det var både roligt och att det stämde
ganska bra. Tyvärr tror jag att organisatörerna såg det som ett skämt
för några anarkistiska hackare fanns tyvärr inte med i
organisationslistan.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Setting Orange, the 2 day of Discord in the YOLD 3176 (<time datetime="2010-03-16">2010-03-16</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/datorer-till-folket.html</link>
  <guid>https://hack.org/~mc/blog/datorer-till-folket.html</guid>
  <pubDate>Tue, 16 Mar 2010 10:20:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[Vävd kabel]]></title>
  <description><![CDATA[<p>
OSD 2010 anordnades på IT-universitetet i Köpenhamn. Det var som vanligt
på sådana här tillställningar problem med det trådlösa nätet. Det är
vanligt att det är problem med det trådlösa på alla tillställningar med
mycket folk och det är ju inte så konstigt.
</p>

<p>
Om infrastrukturen stöder det kan det vara en poäng att testa att
använda 802.11a på 5 GHz i stället för det mer vanliga b eller g på det
välfyllda 2,4 GHz. Det brukar ofta fungera bättre. Nya "n" leker också
på de högre frekvenserna, men jag har ingen sådan hårdvara ännu.
</p>

<p>
Hur som helst så har jag vanligen med mig en TP-kabel i ryggsäcken som
jag kan använda i stället för det trådlösa nätet. När jag åker iväg på
större evenemang tar jag med mig riktigt långa kablar (10 meter), några
patchkablar och en switch också, men det tillhör undantagen.
</p>

<p>
OSD 2010 var första gången utanför hemmet som jag fick chans att
utnyttja en specialimport från Japan, en <i>vävd</i> TP-kabel. Ja, det fanns
alltså TP-uttag lite här och där på IT-universitetet, trevligt nog, och
man fick en onattad adress rakt ut i världen. Tyvärr bara IPv4, men det
är inte det sämsta.
</p>

<p>
Den vävda kabel jag hade med mig såg ut så här, här fotograferad på
skrivbordet hemma:
</p>


<figure id="orgad2e80a">
<img src="https://hack.org/mc/images/cable-brain.jpg" alt="cable-brain.jpg">

<figcaption><span class="figure-number">Figure 1: </span>Vävd kabel instucken i en Thinkpad.</figcaption>
</figure>

<p>
Tre meter kabel ihoprullad i min hand:
</p>


<figure id="orga70726b">
<img src="https://hack.org/mc/images/cable-hand.jpg" alt="cable-hand.jpg">

<figcaption><span class="figure-number">Figure 2: </span>Kabelrulle.</figcaption>
</figure>

<p>
Kabeln lagd på brain, min Thinkpad X60s, och min hand strax ovanför
tangentbordet som storleksreferens:
</p>


<figure id="orgf95a5a9">
<img src="https://hack.org/mc/images/cable-hand-brain.jpg" alt="cable-hand-brain.jpg">

<figcaption><span class="figure-number">Figure 3: </span>Kabelrulle, hand, dator.</figcaption>
</figure>

<p>
Observera att tre meter kabel alltså kan få plats ganska enkelt i
fickan. Otroligt praktiskt! Varför har jag aldrig sett vävda TP-kablar i
Sverige? När kommer de? Vem blir först att importera en masse?
</p>

<p>
Just de här kablarna är tillverkade av
<a href="http://www.harmonet.co.jp/">Harmonet</a> och langade till mig av vännen
Roberth. Tack Roberth!
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Boomtime, the 67 day of Chaos in the YOLD 3176 (<time datetime="2010-03-08">2010-03-08</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/braid-cable.html</link>
  <guid>https://hack.org/~mc/blog/braid-cable.html</guid>
  <pubDate>Mon, 08 Mar 2010 15:59:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[Open Source Days 2010]]></title>
  <description><![CDATA[<p>
I helgen var det Open Source Days i Köpenhamn. OSD hölls både fredag och
lördag, men jag hade bara biljett till den betydligt billigare lördagen
(400 DKK jämfört med 1300 DKK(!) för fredagen). Jag tror fredagen hade
lite air av "business" över sig. Huvudsponsorn One erbjöd trevligt nog
medlemmar i Skåne/Sjaelland Linux User Group 100 fribiljetter och jag
lyckades få en sådan.
</p>

<p>
På lördagen var jag tyvärr väldigt trött eftersom jag kommit i säng lite
för sent och väcktes mycket tidigt av dottern, så jag orkade inte med
riktigt hela dagen. Jag åkte hemåt ungefär vid 16-tiden och missade
alltså både de sista föredragen och minglandet på kvällen.
</p>
<div id="outline-container-sawzall" class="outline-2">
<h2 id="sawzall">Sawzall</h2>
<div class="outline-text-2" id="text-sawzall">
<p>
Mitt tåg till Köpenhamn var tyvärr också försenat, så jag missade större
delen av det första föredrag jag hade tänkt gå på: Pim van Pelt som
föreläste om några delar av Googles infrastruktur. Det enda jag hann se
var något intressant om ett scriptspråk kallat Sawzall för att snabbt
göra tolkningar av massiva datamängder. Pim visade några kodsnuttar och
visade på deras imponerande resultat. För mer om detta, se till exempel
<a href="http://labs.google.com/papers/sawzall.html">Interpreting the Data:
Parallel Analysis with Sawzall</a>.
</p>

<p>
Sawzall bygger på Googles
<a href="http://en.wikipedia.org/wiki/MapReduce">MapReduce-teknik</a>, som i sig
verkar intressant.
</p>
</div>
</div>
<div id="outline-container-metasemantik-i-programmering" class="outline-2">
<h2 id="metasemantik-i-programmering">Metasemantik i programmering</h2>
<div class="outline-text-2" id="text-metasemantik-i-programmering">
<p>
Nästa föredrag var Suns (är det Oracle nu?) Thorbiörn Fritzon om
semantisk märkning i programspråk. Hans poäng, som jag förstod det, var
att mycket kan förbättras i programmering om vi kan ge tips till tolken
eller kompilatorn om vad vi ville med våra uttryck. Han gav bland annat
exempel från weblets, bind- operatorn från Java FX och summa-operatorn i
Fortress. Han ekade också lite av sitt
<a href="http://www.lysator.liu.se/upplysning/20081007.html">roliga föredrag på
Lysator om parallell programmering</a>.
</p>

<p>
Jag tyckte nog att föredraget saknade kött på benen, men kanske kan
något bra komma ur hans funderingar.
</p>
</div>
</div>
<div id="outline-container-opensolaris-on-system-z" class="outline-2">
<h2 id="opensolaris-on-system-z">OpenSolaris on System z</h2>
<div class="outline-text-2" id="text-opensolaris-on-system-z">
<p>
Nästa föredrag jag gick på var "OpenSolaris on System z" av Neale
Ferguson från Sine Nomine Associates. Det är nog ingen slump att
företagets akronym blir SNA&#x2026; Humor!
</p>

<p>
Neale sa själv tidigt att hans föredrag troligen var den mest esoteriska
föreläsningen på hela OSD 2010. Neale fick kanske på grund av det bara
omkring tio åhörare, tråkigt nog, för ämnet var väldigt intressant och
på lagom teknisk nivå. Jag är varken särskilt intresserad av OpenSolaris
eller av System z i sig, men föredraget var mer intressant än jag först
trodde.
</p>

<p>
Föredraget handlade alltså om att Neale portat OpenSolaris till IBM:s
stordatorserie! Det snurrar nu och går att tanka ner och köra på din
riktiga burk (z9-baserad eller senare) om du nu verkligen har någon
sådan eller, kanske troligare, på emulatorn
<a href="http://www.hercules-390.org/">Hercules</a>. För att boota OpenSolaris
krävs också den virtuella maskinen z/VM, för det går inte att köra på
bara metallen. z/VM finns dessvärre inte i någon fri eller gratis
version, även om föregångaren VM/370 i en version från 70-talet faktiskt
är Public Domain (se till exempel denna
<a href="http://vmdist.homelinux.org/vmdist.html">VM-distribution</a>), så för
att köra OpenSolaris måste du vara riktig IBM-kund eller få tag på z/VM
på något annat sätt.
</p>

<p>
Hercules är enligt Neale på väg att få DIAG-anrop (de anrop som ett
gäst-OS använder för att komma åt VM) och skall alltså snart kunna
användas direkt, utan z/VM, för att starta OpenSolaris för System z.
</p>

<p>
Vill man veta mer så rekommenderas Neales 39-sidiga text
<a href="http://opensourcedays.org/2010/sites/default/files/OpenSolarisOnZ.pdf">Porting
Open Solaris to System z</a>, som var grunden för hans föreläsning.
</p>

<p>
I övrigt rekommenderas Melinda Varians utmärkta VM-historia
<a href="http://www.princeton.edu/~melinda/25paper.pdf">VM and the VM
Community: Past, Present, and Future</a>, som också flitigt nämns i Neales
text.
</p>

<p>
Jag frågade efter föredraget Neale lite om de "PROM emulation routines"
han hade nämnt. Hade han i själva verket portat en
<a href="http://www.openfirmware.org/">Open Firmware- implementation</a> till
VM!? Men nej, tyvärr inte &#x2014; han hade bara stoppat dit det absolut
nödvändigaste för boot. Vill man ha en Forth på VM får man porta den
själv. Jag känner inte till någon Forth för VM eller System z.
</p>
</div>
</div>
<div id="outline-container-utställning" class="outline-2">
<h2 id="utställning">Utställning</h2>
<div class="outline-text-2" id="text-utställning">
<p>
Under OSD pågick också en slags vidhängande utställning: massor med
stånd där olika företag hade representanter.
</p>

<p>
En av de mer underliga sakerna var två(?) flickor som gick omkring i
bara skor och trosor och med resten av sina kroppar täckta av
kroppsmålningar. De delade ut reklam för, tror jag, GratisDNS. Vad
tänkte egentligen GratisDNS när de gjorde så här? Det kändes ganska
malplacerat och plumpt.
</p>

<p>
Jag pratade kort med någon från <a href="http://www.nabto.com/">Nabto</a>, ett
danskt företag som har en mystisk browser-plugin för att prata ett eget
protokoll med inbyggda prylar i hemmet. Jag tycker de hade gjort saker
lite bakvänt: Varför inte bara ha ett program körande under en vanlig
webserver i hemmet som i sin tur kontrollerar hemmaprylarna? Varför
blanda in en plugin alls?
</p>

<p>
När jag nämnde IPv6 och återupprättelsen av end to end-konnektiviteten
det kan medföra blev killen jag talade med nästan chockad. Hans reaktion
var, ungefär, "Det går ju inte! Brandväggen då!?" Jag lämnar övriga
slutsatser till läsaren.
</p>

<p>
Wim och Fabienne från belgiska <a href="http://kd85.com/">KD85</a>, som annars är
kända för att kränga <a href="http://soekris.com/">Soekris</a> var förstås
närvarande. De hade med sig både 3D-skrivare och en bärbar
<a href="https://kd85.com/lemote.html">YeeLoong8089</a> baserad på
MIPS-kompatibla Loongson från Lemote. Den verkade intressant, men det
hade varit ännu roligare om den hade varit fläktlös.
</p>
</div>
</div>
<div id="outline-container-slutsats" class="outline-2">
<h2 id="slutsats">Slutsats</h2>
<div class="outline-text-2" id="text-slutsats">
<p>
Hade jag betalat 400 DKK för det här? Nej, jag tycker inte upplevelsen
skulle ha varit värt det. Skulle jag ha betalt 1300 DKK för fredagen?
Knappast. Att döma av programmet skulle det i de allra flesta fallen ha
varit slöseri med både tid och pengar.
</p>

<p>
Jag rekommenderar i stället <a href="http://www.ccc.de/">Chaos Computer Clubs</a>
återkommande mellandagskonferens (nu senast
<a href="http://events.ccc.de/congress/2009/">26C3</a>) med mycket intressanta
föredrag och många intressanta människor för 80 euro för <i>fyra</i> dagars
konferens. Det kräver visserligen också en resa till Berlin, men det är
det värt.
</p>
</div>
</div>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Boomtime, the 67 day of Chaos in the YOLD 3176 (<time datetime="2010-03-08">2010-03-08</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/osd2010.html</link>
  <guid>https://hack.org/~mc/blog/osd2010.html</guid>
  <pubDate>Mon, 08 Mar 2010 10:29:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[Razzian mot hackerspacet Forskningsavdelningen]]></title>
  <description><![CDATA[<p>
Jag har skrivit
<a href="https://hack.org/mc/writings/hackerspace-raided.html">en text på
engelska om helgens razzia mot Forskningsavdelningen och Utkanten</a>.
Många på andra hackerspaces runt om i världen verkar vilja veta vad som
pågår, men mycket av nyheterna och pressreleaserna finns bara på
svenska. Jag har i texten gjort ett försök att sammanfatta vad som
rapporterats.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Sweetmorn, the 44 day of The Aftermath in the YOLD 3175 (<time datetime="2009-12-02">2009-12-02</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/forskningsavdrazzia.html</link>
  <guid>https://hack.org/~mc/blog/forskningsavdrazzia.html</guid>
  <pubDate>Wed, 02 Dec 2009 23:01:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[Varför behövs IPv6?]]></title>
  <description><![CDATA[<p>
Jag har flera gånger försökt förklara vad IPv6 går ut på. De flesta
gånger jag föreläst har det varit för en publik fylld av programmerare
eller systemadministratörer som kan förväntas veta åtminstone något om
nätverk, men ibland har jag missbedömt min publik totalt. Jag gjorde det
när jag för första gången besökte en BarCamp, på BarCamp Copenhagen i
januari 2008.
</p>

<p>
En BarCamp är en slags 'unconference' döpt enligt samma tema som
bokförlaget <a href="http://oreilly.com/">O'Reillys</a> berömda FooCamp (tänk
"foobar"). Det finns inget färdigt program på en unconference utan
deltagarna förväntas själva skapa programmet på plats. En regel jag hade
läst om var att om det här var ens första BarCamp så <i>måste</i> man
föreläsa, ungefär som i filmen/boken <i>Fight Club</i> där en av reglerna är
"If this is your first night at Fight Club, you have to fight", om ni
minns.
</p>

<p>
Allt efter att kvällen led och ölen (<i>dansk</i> konferens, ju!) gled ner så
blev jag alltmer nervös. Jag hade ännu inte skrivit upp mig på
programmet och jag måste ju presentera något enligt reglerna. Jag skrev
till slut upp något i stil med "Samtal om IPv6".
</p>

<p>
I stället för en klassisk föreläsning tänkte jag mig något mer liknande
ett samtal, så jag flyttade runt stolarna i rummet till en cirkel. Jag
förväntade mig ett stilla samtal bland skapligt nätverkskunniga
människor om de problem vi ju alla visste fanns i IPv6, rapporter från
olika fall av IPv6-införande där vi kunde utbyta erfarenheter och kanske
lära av varandras misstag. Det var bara det att jag totalt hade
missbedömt min publik.
</p>

<p>
Många av de närvarande visste kanske mycket om webdesign och möjligen
utvecklingen av AJAX-baserade program, men i princip ingenting om
nätverk. En del visste kanske inte ens vad en IP-adress var för något.
Lite frustrerad försökte jag anpassa mig och i stället göra det hela
till en introduktion, men jag tycker nog det blev ganska förvirrat, även
om några efteråt tyckte det var den mest innehållsrika presentationen
för kvällen! Den danska ölen hjälpte nog tyvärr till att göra det mer
förvirrat än det kunde ha varit.
</p>

<p>
Jag tänkte nu försöka lista ut ungefär vad jag <i>egentligen</i> borde ha
sagt till den här publiken och liknande publik i framtiden. Jag tänkte
koncentrera mig på att svara på frågorna: Vad löser egentligen IPv6 för
problem? Vad behövs det för?
</p>

<p>
Först lite bakgrund&#x2026;
</p>
<div id="outline-container-adressöversättning" class="outline-2">
<h2 id="adressöversättning">Adressöversättning</h2>
<div class="outline-text-2" id="text-adressöversättning">
<p>
Datorer på Internet måste ha en adress för att andra datorer skall kunna
nå dem. Dagens adresser är för det mesta IPv4-adresser, som brukar
skrivas så här: 194.109.217.58.
</p>

<p>
Det är ont om IPv4-adresser nu för tiden. Eftersom det är så ont om
IPv4-adresserna har väldigt många datorer idag i stället privata
IP-adresser, som inte direkt kan nås från andra datorer på Internet. Den
ser likadan ut som en publik adress, till exempel som 10.0.0.3, men
tillhör alltså ett antal reserverade adresser som aldrig skall dyka upp
på det riktiga Internet.
</p>

<p>
I ett typiskt hemmanätverk sitter en hemmarouter ansluten till Internet-
leverantören. Denna router har en publik IP-adress och är därmed
tillgänglig på Internet. I ditt hemmanät, bakom routern, har alla
datorer i stället privata adresser. Hemmaroutern översätter vanligen
alla dessa privata adresser till sin enda publika adress. Den här
funktionen kallas Network Address Translation eller NAT.
</p>

<p>
I ett nät som använder NAT 'försvinner' alltså många potentiella
slutpunkter för kommunikation. Det går inte utan vidare att etablera en
förbindelse direkt till noderna med privata adresser utifrån Internet.
</p>

<p>
Det finns nu för tiden så få IPv4-adresser kvar att det är troligt att
det snart kommer att finnas NAT även hos Internet-leverantörerna. Det
betyder alltså att din hemmarouter inte heller kommer att ha en publik
IP-adress. Den kommer inte att vara direkt tillgänglig på Internet och
ingen kommer att kunna etablera direkta förbindelser till den. Den här
funktionen brukar kallas Carrier-Grade NAT och somliga, speciellt
mobiloperatörer, har redan infört något liknande.
</p>

<p>
Ganska snart kommer vi alltså leva i en miljö med adressöversättningar i
flera lager. De här lagren kommer på ett sätt att spärra viss trafik,
inte genom policy, utan för att den sortens trafik inte utan vidare
fungerar med adressöversättning utan extra hjälp. Finns inte rätt
program som förstår sig på just det protokoll du vill köra i routern som
gör översättningen kommer många saker helt enkelt sluta att fungera.
</p>

<p>
Typiska saker som inte fungerar bra tillsammans med NAT är de flesta
UDP- baserade protokoll, men också FTP, IP-telefoni med SIP, strömmande
ljud och video med RTSP och RTP och många fler. I en del fall kan man
komma förbi problemen genom att konfigurera sin NAT att vara snäll mot
de protokollen och i en del fall kan NAT-tillverkaren ha stoppat in ett
speciellt program som känner till just det protokollet och hjälper till
att öppna upp NAT:en, men det är långt ifrån säkert. Tänk också på att
om man har flera lager av NAT måste det här stödet i så fall finnas i
<i>alla</i> lagren.
</p>

<p>
Utvecklar någon en ny tjänst som inte arbetar bra ihop med NAT (typiskt
tidskritiska saker) måste kanske alla NAT-lager uppdateras på nytt, nya
program måste skrivas och installeras i alla NAT-lådor för att den nya
tjänsten skall fungera. Det går mycket trögt att få ut ett sådant stöd,
så NAT hämmar alltså också utvecklingen av nya tjänster.
</p>
</div>
</div>
<div id="outline-container-användarhistorier" class="outline-2">
<h2 id="användarhistorier">Användarhistorier</h2>
<div class="outline-text-2" id="text-användarhistorier">
</div>
<div id="outline-container-voip" class="outline-3">
<h3 id="voip">VoIP</h3>
<div class="outline-text-3" id="text-voip">
<p>
Om jag köper ett IP-telefoniabonnemang idag så måste jag vanligen
konfigurera min hemmarouter för att överhuvudtaget kunna använda
telefonen. Det är inte säkert att hemmaroutern stöder den sortens
konfiguration, så det är inte säkert att jag kan använda IP-telefoni
överhuvudtaget.
</p>

<p>
En del leverantörer av IP-telefoni levererar egen hårdvara som skall
sättas före eventuell hemmarouter för att komma förbi det här problemet,
men när Internet-leverantören också kör NAT (Carrier-Grade NAT) så
kommer det ändå inte att fungera, för den översättningen kan ju du inte
konfigurera som kund.
</p>
</div>
</div>
<div id="outline-container-videochat" class="outline-3">
<h3 id="videochat">Videochat</h3>
<div class="outline-text-3" id="text-videochat">
<p>
Samma situation som gäller IP-telefoni ovan gäller också
tvåvägskommunikation med strömmande video. Videochattar du och vill se
din motpart i något som inte släpar efter blir det svårt att få det att
fungera med NAT utan specialstöd i form av extra programvara i alla
adressöversättare eller manuell konfiguration.
</p>

<p>
Samma sak gäller här, att när din Internet-leverantör inför egen NAT så
spelar din egen konfiguration inte längre någon roll. Du kan inte längre
videochatta.
</p>
</div>
</div>
<div id="outline-container-nätverksspel" class="outline-3">
<h3 id="nätverksspel">Nätverksspel</h3>
<div class="outline-text-3" id="text-nätverksspel">
<p>
Många nätverksspel är tidskritiska. Om du inte hinnar styra din karaktär
så dör du i spelet. För att det skall fungera bra så använder man för
spel vanligen protokoll som sällan fungerar bra bakom NAT.
</p>

<p>
Alla som någon gång spelat nätverksspel vet att man kan behöva
konfigurera sin hemmarouter för att få det att fungera. Ibland kanske
det överhuvudtaget inte kan fungera med den hemmarouter man har. Just
den routern kanske inte har den funktionen.
</p>

<p>
När din hemmarouter sitter bakom Carrier-Grade NAT så kan du förstås
inte konfigurera den leverantörens NAT. Du kommer inte längre kunna
spela ditt spel.
</p>
</div>
</div>
<div id="outline-container-strömmande-video" class="outline-3">
<h3 id="strömmande-video">Strömmande video</h3>
<div class="outline-text-3" id="text-strömmande-video">
<p>
Om du köper en mediacenter-PC att ha i vardagsrummet där du också lagrar
dina egeninspelade filmer på din nyfödda bäbis kanske du enkelt vill
kunna hänvisa till de filmerna så att far- och morföräldrar kan titta på
filmerna. Självklart vill du inte i onödan lägga upp filerna på Youtube.
Du vill visa dem i hög upplösning och inte i onödan dela med dig till
andra än de du bestämmer.
</p>

<p>
För att far- och morföräldrar skall kunna komma åt ditt mediacenter
måste du ha en publik IP-adress. Du får bara en av din
Internet-leverantör och den adressen använder just nu din hemmarouter.
</p>

<p>
På en del routers kan du konfigurera så den vidarebefordrar viss trafik
till ditt mediacenter, men det är inte alla som stöder det.
</p>

<p>
När din Internet-leverantör slutar ge din hemmarouter en publik adress
slutar din konfiguration fungera. Ingen av dina nära och kära kan längre
titta på dina filmer.
</p>
</div>
</div>
<div id="outline-container-andra-tjänster" class="outline-3">
<h3 id="andra-tjänster">Andra tjänster</h3>
<div class="outline-text-3" id="text-andra-tjänster">
<p>
Naturligtvis finns det många andra tjänster som fungerar på liknande som
de jag räknat upp här. Min förhoppning är att de här tämligen konkreta
exemplen skall ge en känsla för vad som finns där ute, hur krångligt det
redan nu är och vad som snart kommer att hända.
</p>

<p>
IPv6 löser problemet för alla de här tjänsterna. Eftersom det i IPv6
finns så många fler adresser än i IPv4 så kan alla noder i nätet
återigen få riktiga, publika adresser. Det behövs alltså inte längre
några privata adresser och alla noder blir potentiellt nåbara igen, så
länge som du tillåter dem vara det.
</p>

<p>
Med IPv6-adresser fungerar allihop utan mer konfiguration av
hemmaroutern, så länge som den stöder IPv6, och det är dessutom
framtidssäkert när din Internet-leverantör inför ett till lager av NAT
för IPv4. Dina noder kan fortfarande nås, om du tillåter det, eftersom
de har riktiga adresser som är en del av Internet. Just att vara en del
av Internet är väl ändå hela poängen?
</p>
</div>
</div>
</div>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Setting Orange, the 23 day of The Aftermath in the YOLD 3175 (<time datetime="2009-11-11">2009-11-11</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/ipv6-stories.html</link>
  <guid>https://hack.org/~mc/blog/ipv6-stories.html</guid>
  <pubDate>Wed, 11 Nov 2009 09:00:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[Internets födelsedag]]></title>
  <description><![CDATA[<p>
Nyligen har det i media talats om att Internet skulle ha fyllt 40 år,
men vad är egentligen Internet? Är det Internet som fyllt 40 år eller
något helt annat?
</p>

<p>
Det stämmer att det var 40 år sedan de första paketen flödade mellan de
första två värdmaskinerna genom de första två IMParna i ARPANET, men är
ARPANET samma sak som det vi menar med "Internet"? Jag tycker inte det.
Jag skall försöka redogöra varför.
</p>

<p>
ARPANET var ett gigantiskt steg framåt för datornätverk. Jag tycker helt
klart att det är relevant att uppmärksamma 40-årsjubiléet för de första
paketen som förmedlades. Det är också ganska klart att arbetet på
ARPANET bidrog starkt till utvecklingen av det vi idag kallar Internet,
men det är enligt min mening inte samma sak, inte minst för att ARPANETs
grundläggande protokoll faktiskt var helt annorlunda än dagens Internet.
</p>

<p>
Man talade då och talar nu ibland om "internetworking", kommunikation
mellan datorer som sitter kopplade till olika nätverksteknik. Det man
vill åt med internetworking är kommunikation direkt mellan ändnoderna i
nätet utan att det skall spela någon roll vad som finns där emellan,
oavsett fysiskt lager (kabel, radiovågor, brevduvor) eller länklager
(Ethernet, Frame Relay, meddelanderör på duvans fot). I stället vill man
bygga ett gemensamt lager för alla, vanligen lager tre.
</p>

<p>
På tidigt 70-tal började forskarna Vinton "Vint" Cerf och Robert "Bob"
Kahn forska om just internetworking. Deras mål var att knyta samman
några tekniska skilda nätverk (kabelbundna ARPANET, paketradionätet
PRNET och satellitnätet SATNET) med ett gemensamt lager.
</p>

<p>
Den första presentationen av fungerande internetworking mellan ARPANET,
PRNET och SATNET gjordes 1977, men termen "Internet" för att beskriva
ett enstaka globalt nätverk med ett gemensamt paketförmedlande lager
användes troligen först i den första specifikationen av TCP,
</p>

<p>
<a href="http://tools.ietf.org/html/rfc675">RFC 675</a>, som publicerades i
december 1974.
</p>

<p>
Från början kallade man alltså det här lagret Transmission Control
Protocol (TCP), men omkring 1978 delade man det till TCP för att
tillhandahålla en pålitlig byteström mellan tillämpningar på ändnoder
och Internet Protocol (IP) för själva paketförmedlingen mellan noder.
</p>

<p>
Vint och Bob har
<a href="http://www.cnri.reston.va.us/what_is_internet.html">sagt</a> att de
tycker att definitionen av "Internet" som U.S. Federal Networking
Council tagit fram är den rätta:
</p>

<blockquote>
<p>
The Federal Networking Council (FNC) agrees that the following
language reflects our definition of the term "Internet". "Internet"
refers to the global information system that &#x2013;
</p>

<ol class="org-ol">
<li>is logically linked together by a globally unique address space
based on the Internet Protocol (IP) or its subsequent
extensions/follow-ons;</li>

<li>is able to support communications using the Transmission Control
Protocol/Internet Protocol (TCP/IP) suite or its subsequent
extensions/follow- ons, and/or other IP-compatible protocols; and</li>

<li>provides, uses or makes accessible, either publicly or privately,
high level services layered on the communications and related
infrastructure described herein.</li>
</ol>
</blockquote>

<p>
Är den definitionen god nog för TCP/IP:s skapare är den god nog för mig.
</p>

<p>
Sett från den definitionen föddes alltså Internet i deras mening när IP
började användas på allvar av många noder på olika nättekniker, kanske
1978&#x2013; 79, men det är svårt att sätta något enskilt datum för när det
verkligen föddes eller när det nådde en kritisk massa.
</p>

<p>
Å andra sidan, för att få en bra födelsedag är det nog enklast att helt
enkelt använda 1:a januari 1983. Den dagen var den speciella flaggdagen
för införandet av IP på ARPANET och med ARPANET associerade nätverk.
</p>

<p>
Många körde garanterat IP redan före 1:a januari, men den dagen var
alltså deadline för införandet av IP. Efter 1:a januari 1983 kunde man
inte längre vara säker på att nå någonting på ARPANET med det föregående
protokollet.
</p>

<p>
Enligt det synsättet är Internet alltså 26 år gammalt.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Setting Orange, the 23 day of The Aftermath in the YOLD 3175 (<time datetime="2009-11-11">2009-11-11</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/internet-fodelsedag.html</link>
  <guid>https://hack.org/~mc/blog/internet-fodelsedag.html</guid>
  <pubDate>Wed, 11 Nov 2009 08:30:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[Multi-user chat, SCTP och nätverksbibliotek]]></title>
  <description><![CDATA[<p>
En kväll i mars skrev jag ett enkelt chatprogram för flera användare som
använder det relativt nya transportprotokollet
<a href="http://www.sctp.org/">Stream Control Transmission Protocol</a> (SCTP),
definierad i <a href="http://www.ietf.org/rfc/rfc2960.txt">RFC 2960</a>. SCTP har
en rad skillnader jämfört med TCP, där jag tycker de viktigaste är:
</p>

<ul class="org-ul">
<li><p>
Det bevarar postgränser: En read() hos mottagaren motsvarar alltid en
write() hos avsändaren. TCP fungerar, som bekant, i stället som en
byteström och en read() kan motsvara flera write() eller en read()
kanske bara ger en del av den data som skrevs med en write(). Det går
inte att veta på förhand.
</p>

<p>
Man måste ofta när man använder TCP lägga till en nivå i sitt
protokoll på tillämpningsnivå för att skilja på olika poster. I SCTP
slipper man alltså det. Win!
</p></li>

<li>Inbyggd multihoming: SCTP berättar i uppkopplingsfasen för den andra
sidan om alla IP-adresser som noden har. Om en av IP-adresserna blir
onåbar kan kommunikationen ändå fortsätta på en annan av nodens
IP-adresser. Speciellt i IPv6-fallet, där traditionell multihoming med
BGP normalt inte finns, är detta relevant. Big win!</li>
</ul>

<p>
SCTP kan också användas i stället för UDP, om man vill, men jag har
hittills bara använt det som TCP-ersättning.
</p>

<p>
Jag ville med mitt lilla program undersöka hur SCTP fungerade från
programmerarens synvinkel och se hur pass komplicerat det var att få det
att fungera. Det visade sig att det inte alls är komplicerat eftersom
det enda som skiljer mitt program när jag testade med TCP respektive
SCTP är en enda rad! Bortsett från det under FreeBSD inte strikt
nödvändiga
</p>

<pre class="example" id="org1a280c0">
#include &lt;netinet/sctp.h&gt;
</pre>

<p>
behövde jag bara:
</p>

<pre class="example" id="org46a7e3c">
listensock = socket(AF_INET, SOCK_STREAM, IPPROTO_SCTP);
</pre>

<p>
med <code>IPPROTO_SCTP</code> i stället för <code>IPPROTO_TCP</code>. Så enkelt är det alltså
att börja använda SCTP.
</p>

<p>
Nu använde jag visserligen inte de SCTP-specifika funktionerna som finns
i det utökade sockets-API:et, utan använde vanliga read() och write(),
så på sätt och vis kanske jag fuskade. Hur som helst fungerade det bra.
</p>

<p>
David Westlund skrev en trivial klient för att fungera med servern och
använde för variation poll() i stället för select(). Resultatet finns
som
</p>

<p>
<a href="https://hack.org/mc/hacks/sctpchat-20090807.tar.bz2">sctpchat-20090807.tar.bz2</a>.
</p>
<div id="outline-container-nätbibliotek" class="outline-2">
<h2 id="nätbibliotek">Nätbibliotek</h2>
<div class="outline-text-2" id="text-nätbibliotek">
<p>
Servern i chatsystemet ovan är som du ser i koden en klassisk
select()-snurra. Det är inte helt optimalt i dessa dagar, då det finns
sådana systemanrop som det nu närmast allestädes närvarande poll() men
också mycket mer effektiva lösningar för samma sak som Linux epoll(),
BSD:ernas kqueue()/kevent(), Solaris /dev/poll och allt vad de heter,
som alla är antingen mer effektiva än select() eller i alla fall inte
har dess begränsningar.
</p>

<p>
Eftersom skillnaden i effektivitet ofta är så stor finns det en poäng
att använda de för systemen unika systemanropen i stället för select()
eller ens poll(). Den senares enda fördel framför select() är ju att den
inte är på förhand begränsad i hur många fildeskriptorer den kan
hantera. Detta ställer förstås till det lite för den stackars
programmeraren, som då måste anpassa sitt program för alla plattformar
hän vill köra det på.
</p>

<p>
Jag har flera gånger skrivit bibliotek med nätverksfunktioner för att
underlätta konstruktionen av serverprogram. Tyvärr har koden jag skrivit
inte kunnat släppas fri och jag har därför blivit tvungen att
återimplementera ett motsvarande bibliotek några gånger. Typiskt använde
man mina bibliotek ungefär så här:
</p>

<pre class="example" id="org7ecd5d4">
int parsestuff(void *pcon, short flags)
{
  /* Handle data when it arrives. */
}

int main(void)
{
    struct connection *con;

    con = opensocket("foo.example.com:4711", TCP, parsestuff, 1024);

    for (;;)
    {
        incoming(NULL);
    }
}
</pre>

<p>
Poängen här är alltså att skriva minimalt med kod i stället för
select()-snurran och allt det som hör till bindande av adresser, et
cetera. I stället finns bara en funktion där jag registrerar en
callback-funktion och den funktionen kallas sedan på så fort det finns
data att hantera.
</p>

<p>
Motsvarande på klientsidan skulle se snarlik ut, fast där skulle förstås
anropet motsvarande opensocket() aktivt etablera en förbindelse i
stället för att passivt lyssna efter nya förbindelser.
</p>

<p>
Det finns i den fria världen nu för tiden bibliotek som gör <i>nästan</i> det
som mina tidigare bibliotek gjort. Två exempel är BSD-licensierade
<a href="http://monkey.org/~provos/libevent/">libevent</a> och LGPL-licensierade
<a href="http://liboop.ofb.net/">liboop</a>.
</p>

<p>
För ett tag sedan slog det mig att jag skulle se om jag kunde använda
libevent och skriva något ovanpå som kan vara agnostiskt med avseende på
IPv4 och IPv6 och kanske också stödja UDP, TCP och rent av SCTP.
</p>

<p>
Jag skrev alltså om den multi-user chat jag skriver om ovan, fast
använde nu i stället libevent i stället för min select()-snurra. Jag
skrev dock bara server-sidan. Se här:
</p>

<p>
<a href="https://hack.org/mc/hacks/eventchat.c-20090807.bz2">eventchat.c-20090807.bz2</a>
</p>

<p>
Det finns i den här koden ingen som helst TELNET-förhandling, så om du
kopplar upp dig mot event-servern med en telnet-klient så beror det i
hög grad på din klient hur det kommer att upplevas. Windows
telnet-klient, till exempel, defaultar till tecken-för-tecken, så det
betyder att varje tecken kommer att skickas till alla inloggade direkt!
Det blir snabbt väldigt förvirrande för alla inblandade, så gör inte
det.
</p>

<p>
Telnet-klienterna i Linux och BSD:erna uppför sig annorlunda, men den är
möjligen inte åttabitarsren, så svenska tecken kommer att se skumma ut.
Ett bättre sätt att koppla upp sig är kanske att använda
<a href="http://netcat.sourceforge.net/">netcat</a> eller övertyga sin
telnet-klient om att inte göra någon som helst förhandling och vara
åttabitarsren. Du får titta i manualen för din telnet-klient hur du gör
det.
</p>

<p>
I koden för event-servern finns raden
</p>

<pre class="example" id="org58ccf1d">
/* Undef this for TCP operation. */
/*#define SCTP 1 */
</pre>

<p>
som du kan okommentera för att för kompilera allt med stöd för SCTP i
stället för TCP. På min utvecklingsplattform, FreeBSD, fungerar det
emellertid av någon anledning inte med SCTP, men jag har ännu inte
hittat felet. Kanske kan någon annan göra det?
</p>

<p>
Jag använder libevent med de automagiska buffrarna, som alltså skrivs ut
till mottagaren så fort det råkar finnas något i dem. Det kanske är det
som ställer till det i SCTP-fallet?
</p>
</div>
</div>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Prickle-Prickle, the 73 day of Confusion in the YOLD 3175 (<time datetime="2009-08-07">2009-08-07</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/chat-sctp.html</link>
  <guid>https://hack.org/~mc/blog/chat-sctp.html</guid>
  <pubDate>Fri, 07 Aug 2009 17:51:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Kampen om hackern]]></title>
  <description><![CDATA[<p>
Jag har länge, som många känner till, tytt mig till hackerdom, en
medveten subkultur av kanske framför allt programmerare. Det här är
antagligen uppenbart även för de som inte känner mig, inte minst på
grund av valet av domänen hack.org och mitt val av
<a href="http://catb.org/hacker-emblem/">glidern</a> från John Conways Game of
Life som favicon.
</p>

<p>
Orden "hack" och "hacker" har sedan åtminstone 80-talet varit under
ganska häftig debatt. En högljudd grupp, kanske framför allt synlig i
media, anser att en hacker är en person som sysslar med datorintrång. En
annan grupp anser att en hacker är en medlem i en internationell
subkultur med anor åtminstone tillbaka 1950-talet och att en medlem
utmärker sig framför allt genom:
</p>

<ul class="org-ul">
<li>att kunna uppskatta en specifik form av skönhet.</li>

<li>att ha förmåga och smak att själv kunna skapa sådan skönhet.</li>

<li>att självidentifiera som en medlem i hackerdom.</li>
</ul>

<p>
Denna senare grupp är ofta programmerare, hårdvarudesigners eller har
åtminstone något att göra med datorer, men det är inte ett tvingande
kriterium. Det finns molekylärbiologer som också kvalificerar sig som
medlemmar i den här subkulturen, till exempel.
</p>

<p>
En del andra kanske skulle kalla medlemmar av den här gruppen för
"nördar", "geeks" eller något liknande. Det är förstås sant att det är
nördigt att snöa in totalt på till exempel ett visst programspråk,
fraktaler, Game of Life eller varför inte i att försöka få igång ett
operativsystem från 60-talet på en lika gammal dator eller att skriva en
emulator för samma system? Men nördighet är inte allt.
</p>

<p>
Hackerdom är inte bara nördighet. Det är fråga om en egen kultur, med
sin egen folklore, sina egna hjältar, sin egen humor och, kanske
viktigast, sin egen syn på vad som är ont och gott och vad som är fult
och vackert.
</p>

<p>
Jag ser användningen av hacker för att betyda någon som gör datorintrång
som en relativt modern uppfinning. Mina egna misstankar är att
journalister som hade satts att bevaka ett ovanligt förslaget
datorintrång någon gång på 80-talet fick höra "Det måste ha gjorts av en
riktig hacker" från någon systemadministratör. Systemadministratören,
möjligen själv en medlem av hackerdom, använde troligen ordet i
betydelsen guru eller expert på systemet. Journalisterna som hörde det
missuppfattade innebörden och använde sedan olyckligtvis detta praktiska
ord i sina texter.
</p>

<p>
Sedan dess har ordet tyvärr blivit associerat med datorintrång och
datorbrottslighet. Det är olyckligt, men så fungerar ju språket. Ett
ords betydelse bestäms av vad folk använder det till.
</p>

<p>
Naturligtvis är orden "hack" och "hacker" mycket äldre än i någon av
betydelserna jag tagit upp ovan. Orden går troligen tillbaka till
åtminstone 1300-talet i engelskan och då i betydelsen "skära något med
upprepade slag" respektive "någon som använder upprepade slag för att
skära något". Mycket tidigt kom orden att användas i metaforisk form och
genom tiderna har de haft många betydelser, som till exempel "hacking"
som fortfarande kan betyda att rida en häst för nöjes skull eller som
ett adjektiv för att beskriva någon som gör ett dåligt jobb som i "a
hack writer".
</p>

<p>
Det viktiga för mig är emellertid inte ordens exakta betydelse, utan
erkännandet av en viss subkultur: hackerdom. Det spelar egentligen inte
så stor roll vad kulturen eller dess medlemmar kallas, men det är
viktigt för mig, och säkert många andra, att kulturen erkänns och inte
indirekt anklagas för att vara brottslingar bara på grund av ett ord!
</p>

<p>
En gång i tiden, vid 90-talets början, var jag riktigt obstinat vad
gäller användningen av "hacker". Jag skrev och ringde till tidningar som
använde ordet 'fel' och jag drev kampanjer på olika sätt. En bekant,
Josh Centers, hade till och med ett tag en amerikansk rörelse vid namn
Hacker Anti- Defamation League (HADL)!
</p>

<p>
Nu för tiden har jag rätt mycket gett upp kampanjandet. Det lilla som
finns kvar är den
<a href="https://hack.org/faq-hacker.html">hackerintroduktion</a> jag har för
folk som besöker hack.org för första gången och som jag nyligen skrev
igenom på nytt i ett försök att göra innehållet klarare.
</p>

<p>
Det retar mig dock fortfarande när jag drabbas av till exempel dumkraft
som företaget
</p>

<p>
<a href="https://hack.org/mc/websense.html">Websense</a> som i sin
webfilterprogramvara som används på många platser i världen klassar hela
hack.org som "information om datorbrottslighet". De baserar troligen
hela sin klassificering bara på ordet "hack" i domännamnet! Det får en
att fundera på vilka andra klassificeringar de misslyckats med:
Medicinska databaser kanske är klassade som tecknade serier?
</p>

<p>
En gång i tiden skrev jag några texter som på ett eller annat sätt har
att göra med hackerdom. De kanske fortfarande kan vara intressanta för
någon:
</p>

<ul class="org-ul">
<li><a href="https://hack.org/mc/writings/lekstuga.pdf">Universitet och tekniska
lekstugan: Lysator</a>, en text jag skrev med
<a href="http://www.aronsson.se/">Lars Aronsson</a> om
<a href="http://www.lysator.liu.se">datorföreningen Lysators</a> historia inför
en antologi som universitetets <a href="http://www.tema.liu.se/">Tema Teknik
och social förändring</a> skulle ge ut.</li>

<li><a href="https://hack.org/mc/writings/hackern.txt">Hackern ser inte ut som du
tror</a>, en text jag troligen skrev 1995.</li>

<li><a href="https://hack.org/mc/writings/scriptures.html">The Scriptures of
Hackerdom: The Computer's Impact on Writing in the Hacker Culture</a>,
en text från 1993 med en samling av hackeriska texter.</li>

<li><a href="https://hack.org/mc/writings/hackerswe/hackerswe.html">Svenska
jargongfilen</a>, en samling med svensk hackerslang där jag var en av
redaktörerna. Den här borde någon wikifiera!</li>

<li><a href="https://hack.org/mc/writings/cca1.txt">Datorestetik</a>, en text jag
skrev 1992 (troligen) om konstnären/hackern Dave Fischer och hans
<a href="http://cca.org/">Center for Computational Aesthetics</a>.</li>
</ul>

<p>
Min vän och tidigare hustru <a href="https://hack.org/helena/">Helena Cardell</a>
har dessutom skrivit <a href="https://hack.org/mc/writings/hackerhumor.pdf">Ha
ha only serious: En ödmjuk översikt över hackerns humor</a>, där jag
förstås figurerar som uppgiftslämnare.
</p>

<p>
Alla de där texterna har gemensamt att de skrevs för många år sedan,
kanske upp till 17 år sedan. Ha förbarmande!
</p>

<p>
Vill man läsa andras texter om hackerkulturen rekommenderar jag i första
hand Steven Levys <i>Hackers: Heroes of the Computer Revolution</i> (ISBN
0-385-19195-2). De <a href="http://www.gutenberg.org/etext/729">första två
kapitlen</a> finns på Project Gutenberg. Steven Levy själv håller en
<a href="http://www.stevenlevy.com/index.php/other-books/hackers">websida om
boken</a>.
</p>

<p>
Boken, för min del speciellt beskrivningen av den första delen av
hackerkulturen, förmedlar en väldigt trevlig känsla. I tidiga utgåvor av
boken märks det dock väldigt tydligt att den är baserad på bandade
intervjuer, för Levy har missuppfattat en del förkortningar då han bara
hört dem uttalas och aldrig sett dem i skrift, något som dock ordnats i
senare utgåvor. (Han skrev TICO i stället för TECO, till exempel.)
</p>

<p>
Min enda egentliga kritik mot boken är gans generationssyn. Levy talar
om tre olika generationer av hackers. Han menar att de akademiska
hackers som han beskriver som "första generationen" på något vis skulle
ha <i>ersatts</i> av en andra generation, hårdvaruhackers som bygger egna
datorer på 70-talet, som sedan i sin tur ersattes av en grupp som
sysslar med att programmera spel. Jag tror i stället att det är fråga om
olika strömningar i hackerdom där alla tre subgrupperna fortsätter att
nyrekrytera medlemmar även idag.
</p>

<p>
Sociologen Jörgen Nissen har doktorerat på hackerdom med avhandlingen
<i>Pojkarna vid datorn. Unga entusiaster i datateknikens värld</i>, Stockholm
Symposion Graduale 1993, ISBN 91-7139-128-2. Tyvärr har Nissen i stort
tagit över Levys tankar om de tre generationerna, men mycket i boken,
speciellt de deltagande observationer som han gjort i en datorklubb, är
väldigt intressanta.
</p>

<p>
Det finns ett något omstritt lexikon av hackerslang kallad
<a href="http://www.catb.org/esr/jargon/html/index.html">The Jargon File</a>,
även utgiven på papper som
<i><a href="http://mitpress.mit.edu/catalog/item/default.asp?ttype=2&amp;tid=3618">The
New Hacker's Dictionary</a></i>, MIT Press, ISBN 0-262-18154-1.
</p>

<p>
Somliga anser att den tidigare
<i><a href="http://jargon-file.org/archive/jargon-1.5.0.dos.txt">The Hacker's
Dictionary</a></i>, Harper &amp; Row, ISBN 0-06-091082-8, var den sista
definitiva Jargonfilen och att den nya redaktören, Eric S. Raymond,
gjort våld på det gamla äldre lexikonet. Hur som helst anser jag båda
intressanta.
</p>

<p>
Det finns till och med en svensk version av den tidiga <i>The Hacker's
Dictionary</i>, delvis anpassad till svenska förhållanden av Patric
Hadenius och Ulf Nyrén. Den heter <i>Uppslagsbok för datafreakar</i> och
utgavs av Tidens förlag 1985, ISBN 91-550-2976-0 (inb).
</p>

<p>
En annan bok jag rekommenderar för att komma i närheten av hackerulturen
är Pulitzer-vinnaren Douglas Hofstadters <i>Gödel, Escher, Bach: An
Eternal Golden Braid</i>, ISBN 13 978-465-02656-2, på svenska som <i>Gödel,
Escher, Bach: ett Evigt Gyllene Band</i>, ISBN 91-7608-331-4 i mästerlik
översättning av Jan Wahlén. <i>GEB</i> är ett extremt teoribygge, som
bortsett från att vara vackert, och då även vackert typsatt, bland annat
lär oss hur medvetande troligen uppkommer genom sällsamma
självrefererande slingor. Se där, ett vackert hack!
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Boomtime, the 1 day of Confusion in the YOLD 3175 (<time datetime="2009-05-27">2009-05-27</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/hacker.html</link>
  <guid>https://hack.org/~mc/blog/hacker.html</guid>
  <pubDate>Wed, 27 May 2009 20:52:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Datalagringsdirektivet och möjliga vägar runt det]]></title>
  <description><![CDATA[<p>
<b>En varning</b>: Jag är inte jurist. Jag kan däremot åtminstone något om
datorer och datornätverk. Den här texten är en privatpersons tolkningar
av lagtext och offentliga utredningar. Naturligtvis kan jag ha fel i
mina tolkningar.
</p>
<div id="outline-container-bakgrund" class="outline-2">
<h2 id="bakgrund">Bakgrund</h2>
<div class="outline-text-2" id="text-bakgrund">
<p>
Det verkar råda stor förvirring vad gäller EU:s datalagringsdirektiv och
det som en del nyligen kallat för ett hemligt lagförslag. DN skriver om
det under titeln
<a href="http://www.dn.se/nyheter/politik/lagforslag-ip-adresser-ska-lagras-ett-halvar-1.867054">Lagförslag:
ip-adresser ska lagras ett halvår</a>. SvD skriver om det under titeln
<a href="http://www.svd.se/nyheter/inrikes/artikel_2903037.svd">Utkast till
lagförslag om datalagring har läckt ut</a> och förra året sa
<a href="http://www.svd.se/nyheter/politik/artikel_2188835.svd">Bodström att
han ser lagen som en framgång.</a>
</p>

<p>
Det som framför allt verkar vara förvirrat bland många rapportörer i
media är dels att det skulle vara fråga om något hemligt och dels vad
som faktiskt skall lagras. Det är snårigt, det är helt klart, men det
kanske går att få fram något klart kring det.
</p>

<p>
Själva arbetet är alltså inte hemligt. Det är en offentlig utredning som
legat hos lagrådet ett tag och troligen är på väg att bli en proposition
från regeringen. Medan den propositionen tas fram är själva lagförslaget
inte offentlig handling, men så fort texten är klar och läggs som
proposition så blir den det. Efter att propositionen lagts blir det
omröstning i riksdagen och först om det då blir en majoritet som röstar
för förslaget finns en angiven tid då texten också blir gällande lag. Om
en majoritet röstar nej har vi troligen en regeringskris på handen.
</p>

<p>
En annan sak som verkar rätt förvirrat är att det här lagförslaget
skulle "ge kraft åt IPRED", som bland annat
<a href="http://www.aftonbladet.se/nyheter/article5159315.ab">Aftonbladet
skriver</a> i en rubrik, men sedan motsäger sig själva i brödtexten.
</p>

<p>
Det är långt ifrån klart att det här har något att göra med IPRED. Det
kanske rent av blir så, att uppgifter som lagrats i enlighet med EU:s
datalagringsdirektiv inte får lämnas ut alls i civilmål!
</p>

<p>
Det hela rör sig om det sedan länge väntade lagförslaget på den
offentliga utredning som publicerades redan 2007. Utredningen, som
alltså ännu inte blivit lag, är
<a href="http://www.regeringen.se/sb/d/8586/a/91521">SOU 2007:76</a>, <i>Lagring av
trafikuppgifter för brottsbekämpning</i>.
</p>

<p>
Grunden för utredningen är
<a href="http://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=CELEX:32006L0024:EN:NOT">EU:s
datalagringsdirektiv 2006/24/EC</a>
</p>

<p>
som Sverige som EU-medlem är ålagda att införa i sin egen lagstiftning.
Det borde vara ett väntat beteende och ingen överraskning för någon.
</p>

<p>
<a href="http://www.snus.se/">Swedish Network Users Society</a> (SNUS) har lämnat
ett läsvärt remissvar på denna utredning i mars förra året:
</p>

<p>
<a href="http://www.snus.se/media/utkast/SnusRemissvarTrafikdata.pdf">http://www.snus.se/media/utkast/SnusRemissvarTrafikdata.pdf</a>
</p>

<p>
Patrik "paf" Fältström har upprepade gånger skrivit på sin blog om hur
frustrerad han varit över hur arbetet framskred med utredningen, se till
exempel det snarast uppgivna meddelandet här:
</p>

<p>
<a href="http://stupid.domain.name/node/803">http://stupid.domain.name/node/803</a>
</p>
</div>
</div>
<div id="outline-container-varför-datalagring" class="outline-2">
<h2 id="varför-datalagring">Varför datalagring?</h2>
<div class="outline-text-2" id="text-varför-datalagring">
<p>
Många har spekulerat i varför datalagringsdirektivet och
lagimplementationerna överhuvudtaget kom till. Min gissning, utan att
vara alltför konspiratorisk, är att det handlar om att harmonisera vad
som faktiskt loggas hos de olika leverantörerna, att ge en minsta nivå
som alla kan förlita sig på när det gäller hantering av missbruk. Kanske
är det till och med meningen att ge en <i>högsta nivå</i> av integritetsskäl?
</p>

<p>
Alla leverantörer lagrar metadata om trafik. Det behövs dels för att
kunna skicka räkningar till abonnenterna, dels för att kunna hantera
missbruk, till exempel sändning av massiva mängder reklambrev eller
olika former av nätverksattacker.
</p>

<p>
En internetleverantör som inte har några trafikdata lagrade alls och
därmed inte kan hantera missbruksrapporter på adekvat sätt lever
farligt; de kan mobbas ut av andra leverantörer och kanske inte kunna få
till bra trafikavtal med andra leverantörer. Lagring av åtminstone viss
data om abonnenternas trafik är därför nödvändig.
</p>

<p>
Olika leverantörer lagrar idag olika mycket. Datalagringsdirektivet och
lagimplementationerna är nog tänkta att ge besked om hur mycket som
skall lagras och vad som skall lagras för att harmonisera vad man kan
förvänta sig av de olika leverantörerna. Vilka dessa data skall lämnas
ut till och under vilka omständigheter är än så länge mindre klart. En
del länders lagstiftning går också mycket, mycket längre än vad som
kanske var tanken med en harmonisering (se nedan).
</p>
</div>
</div>
<div id="outline-container-vad-skall-lagras" class="outline-2">
<h2 id="vad-skall-lagras">Vad skall lagras</h2>
<div class="outline-text-2" id="text-vad-skall-lagras">
<p>
Apropå vad som skall lagras är förvirringen lika stor. Det beror delvis
på att det inte är riktigt klart vem som kommer att bestämma vad som
skall lagras och vad som skall lämnas ut. Troligen kommer detta så
småningom att ligga på en myndighets axlar, troligen
<a href="http://www.pts.se/">Post- och telestyrelsen</a>.
</p>

<p>
Än så länge har vi den offentliga utredningen, som ger en fingervisning
om vad som kommer att lagras. Här är ett utdrag ur utredningen som visar
vad den föreslår om lagring:
</p>

<blockquote>
<p>
Vid telefoni ska uppgift om följande lagras:
</p>

<ul class="org-ul">
<li>uppringande telefonnummer,</li>
<li>nummer som slagits och nummer till vilka samtalet styrts,</li>
<li>uppgifter om abonnent och registrerad användare,</li>
<li>datum och spårbar tid då kommunikationen påbörjades och avslutades,</li>
<li>den tjänst som använts, samt</li>
<li>slutpunkter.</li>
</ul>

<p>
Vid mobil telefoni ska utöver det som anges under telefoni uppgift om
följande lagras:
</p>

<ul class="org-ul">
<li>uppringande parts abonnemangsidentitet och utrustningsidentitet,</li>
<li>uppringd parts abonnemangsidentitet och utrustningsidentitet,</li>
<li>lokaliseringsinformation för kommunikationens början och slut, samt</li>
<li>datum, spårbar tid och lokaliseringsinformation för den första
aktiveringen av en förbetald anonym tjänst.</li>
</ul>

<p>
Vid Internettelefoni ska utöver det som anges under telefoni uppgift
om följande lagras:
</p>

<ul class="org-ul">
<li>uppringande parts IP-adresser, samt</li>
<li>uppringd parts IP-adresser.</li>
</ul>

<p>
Vid meddelandehantering (t.ex. e-post och SMS) ska uppgift om följande
lagras:
</p>

<ul class="org-ul">
<li>avsändarens och mottagarens meddelandeadress,</li>
<li>uppgifter om abonnent och registrerad användare,</li>
<li>datum och spårbar tid för på- och avloggning i meddelandetjänsten,</li>
<li>datum och spårbar tid för avsändande och mottagande av meddelandet,
samt</li>
<li>den tjänst som har använts och spårbar tid för användandet.</li>
</ul>

<p>
Vid Internetåtkomst ska uppgift om följande lagras:
</p>

<ul class="org-ul">
<li>användarens IP-adresser,</li>
<li>uppgifter om abonnent och registrerad användare,</li>
<li>datum och spårbar tid för på- och avloggning i Internettjänsten,</li>
<li>typen av Internetanslutning som använts, samt</li>
<li>slutpunkter.</li>
</ul>

<p>
Vid verksamheter som tillhandahåller kapacitet som ger möjlighet till
överföring av IP-paket för att få Internetåtkomst ska uppgift om
följande lagras:
</p>

<ul class="org-ul">
<li>uppgifter om abonnent,</li>
<li>vilken typ av kapacitet för överföring som har använts och spårbar
tid för användandet, samt</li>

<li>slutpunkter.</li>
</ul>

<p>
De uppgifter som ska lagras vid telefoni, mobil telefoni och
Internettelefoni ska även lagras vid misslyckad uppringning, alltså
fall där någon t.ex. inte har svarat på uppringningen.
</p>
</blockquote>

<p>
Vad gäller de mystiska "slutpunkter" som omnämns ovan definieras de så
här på annan plats i utredningen:
</p>

<blockquote>
<p>
Med slutpunkt avses den tekniska utrustningen i en fysisk ändpunkt som
står under leverantörens kontroll, såsom telefonväxlar, routers,
portnummer, utrustningsidentitet, MAC-adresser och
abonnemangsidentitet.
</p>
</blockquote>

<p>
I Ethernet-terminologi skall alltså följande lagras vad gäller just
slutpunkten:
</p>

<ul class="org-ul">
<li>Porten på switchen som kunden är ansluten till.</li>

<li>MAC-adressen på datorn/routern som finns bakom porten</li>

<li>Abonnemanget som är knutet till den porten.</li>
</ul>
</div>
<div id="outline-container-kommentar" class="outline-3">
<h3 id="kommentar">Kommentar</h3>
<div class="outline-text-3" id="text-kommentar">
<p>
En viktig poäng i ovanstående utdrag ur utredningen är att HTTP-trafik
<i>inte</i> skall loggas. Vanliga surfares vanor skall alltså inte alls
lagras som trafikdata. Å andra sidan lagras någon slags
inloggningsförfarande när de kommer åt nätet, i den mån det finns något
sådant, och slutpunktsinformationen angiven ovan, så det går alltså att
i efterhand spåra ända till lägenhetsuttaget (eller motsvarande) vem som
vid ett givet tillfälle hade en viss IP-adress, helt oavsett vad de
gjorde på nätet.
</p>

<p>
Naturligtvis har detta också varit möjligt tidigare, beroende på vad
leverantörerna lagrat för metadata. Hos somliga ISP:er har det alltså
varit självklart att känna till exakt vilken kund som finns bakom ett
viss uttag i en switch vid en viss tidpunkt. Dessa uppgifter har de
sedan kunnat lämna ut till polisen efter att en åklagare begärt det. Det
är egentligen inget märkvärdigt.
</p>

<p>
Meddelandehantering är jobbigt. Vad är ett "meddelande"? Gäller detta
alla system som tillåter generellt skickande av meddelande? Är Instant
Messaging (till exempel XMPP) eller olika former av chat (IRC, MSN, et
c) meddelanden? Skall trafikdata lagras här?
</p>

<p>
Utifrån utredningen blir det troligen så att de enda meddelanden som
trafikdata kommer att lagras om är mail som går över SMTP, SMS och MMS
och dessutom inte från alla leverantörer (se nedan).
</p>

<p>
IP-telefoni är också lite krångligt, för med SIP och liknande tekniker
kan man tänka sig att det inte finns någon egentlig leverantör av själva
<i>telefonitjänsten</i>, utan att det bara är min dator som direkt pratar med
din dator. Inga specifika telefoniabonnemang behövs. Den enda
leverantören är min generella internetleverantör. Är de då skyldiga att
lagra trafikuppgifter även om mina SIP-samtal och därmed aktivt
analysera min trafik för att hitta SIP- signalering? Troligen inte. I
utredningen står:
</p>

<blockquote>
<p>
6.6.3 Telefoni Begreppet telefonitjänst definieras i 1 kap. 7 § LEK
som en elektronisk kommunikationstjänst som innebär möjlighet att
ringa upp eller ta emot samtal via ett eller flera nummer inom en
nationell eller internationell nummerplan, inklusive nödsamtal. Samtal
definieras i samma bestämmelse som förbindelse för överföring av tal
som medger tvåvägskommunikation i vad som för användaren upp- fattas
som realtid.
</p>

<p>
Många Internettelefonitjänster medger inte alltid att nödsamtal
genomförs. Den definition av telefonitjänst som används i lagen om
elektronisk kommunikation blir därför för snäv för att kunna användas
i detta sammanhang. Telefoni enligt vårt förslag bör därför definieras
som i 1 kap. 7 § LEK men utan kravet att nödsamtal ska kunna
genomföras.
</p>

<p>
[&#x2014;]
</p>

<p>
Telefoni enligt vårt förslag ska omfatta fall där E.164-nummer
används, dvs. nummer ur en telefoninummerplan. Definitionen av
telefoni inkluderar därmed fast och mobil telefoni och de flesta
Internettelefonitjänster. Internettelefoni som använder andra
"adresser" som identifiering kommer inte att omfattas.
</p>
</blockquote>

<p>
Ett samtal som rings med till exempel en SIP-URL, som
<code>sip:mc@example.com</code> faller alltså troligen <i>inte</i> under den kommande
lagen!
</p>
</div>
</div>
</div>
<div id="outline-container-vilka-skall-lagra" class="outline-2">
<h2 id="vilka-skall-lagra">Vilka skall lagra?</h2>
<div class="outline-text-2" id="text-vilka-skall-lagra">
<p>
Det är inte helt klart vilka lagen gäller. I utredningen föreslås att de
som redan nu är anmälningsskyldiga till <a href="http://www.pts.se/">Post- och
telestyrelsen</a> (PTS) enligt <a href="https://lagen.nu/2003:389">Lagen om
elektronisk kommunikation</a> (LEK) skall vara de som den nya lagen
gäller.
</p>

<p>
LEK säger, i princip, att de leverantörer som säljer elektroniska
kommunikationstjänster till allmänheten mot ersättning är tvingade att
anmäla sin verksamhet till PTS. Det är dessa som den nya lagen alltså
möjligen skulle gälla. Det säger egentligen inte så mycket. Tänk på
IM-system, till exempel, där en XMPP-leverantör mycket väl skulle kunna
ta betalt för sina tjänster och då troligen vara skyldig att anmäla sig
till PTS.
</p>

<p>
Ett privat företag som ger tillgång till elektronisk kommunikation till
sina anställda eller en organisation som ger det till sina medlemmar
skulle troligen <i>inte</i> hamna under den nya lagen och behöver inte lagra
trafikdata. Kanske skulle inte heller ett företag som utan att kräva
betalning för det ger tillgång till Internet behöva lagra något, alltså
till exempel ett stadsbibliotek med gratis WLAN. Det är dock mindre
säkert.
</p>

<p>
Observera att ett privat företag naturligtvis skulle kunna ha ännu mer
drakonisk loggning av trafik än vad den nya lagen sannolikt kommer att
föreslå. Det är sannolikt att många företag och organisationer redan gör
det. Flera skulle säkert också gladeligen samarbeta med till exempel
polisen om en åklagare krävde ut uppgifterna, helt oavsett om de faller
under datadirektivet eller inte.
</p>
</div>
</div>
<div id="outline-container-danmarks-implementation" class="outline-2">
<h2 id="danmarks-implementation">Danmarks implementation</h2>
<div class="outline-text-2" id="text-danmarks-implementation">
<p>
Andra länder har gått mycket längre i tolkningen av EU-direktivet. De
som gått längst är troligen Danmark där direktivet redan är gällande
lag. Den danska lagtexten finns här (tack till Kent Engström för
letandet!):
</p>

<p>
<a href="https://www.retsinformation.dk/Forms/R0710.aspx?id=2445">https://www.retsinformation.dk/Forms/R0710.aspx?id=2445</a>
</p>

<p>
Här är ett utdrag ur lagtexten:
</p>

<blockquote>
<p>
§ 5. En udbyder af elektroniske kommunikationsnet eller -tjenester til
slutbrugere skal registrere følgende oplysninger om en
internet-sessions initierende og afsluttende pakke:
</p>

<ol class="org-ol">
<li>afsendende internetprotokol-adresse,</li>

<li>modtagende internetprotokol-adresse,</li>

<li>transportprotokol,</li>

<li>afsendende portnummer,</li>

<li>modtagende portnummer og</li>

<li>tidspunktet for kommunikationens start og afslutning.</li>
</ol>
</blockquote>

<p>
Det hela låter rätt mycket som Ciscos
<a href="http://en.wikipedia.org/wiki/Netflow">Netflow</a>, något som det alltså
redan finns stöd för i hårdvaran i många routers, inte bara Ciscos. Det
går alltså mycket effektivt redan nu att få ut den här informationen
snabbt från internetleverantörernas routers. Lite senare i texten står
dessutom:
</p>

<blockquote>
<p>
Stk. 4. Forpligtelsen til at registrere oplysninger om en
internet-sessions initierende og afsluttende pakke gælder ikke for
udbydere af elektroniske kommunikationsnet eller -tjenester til
slutbrugere, hvis registrering som nævnt i stk. 1 ikke er teknisk
mulig i udbydernes system. Hvis en sådan registrering ikke er teknisk
mulig, skal de i stk. 1 nævnte oplysninger i stedet registreres for
hver 500. pakke, der indgår i en slutbrugers kommunikation på
internettet. Tidspunktet for registreringen af oplysninger om pakken
skal tillige registreres.
</p>
</blockquote>

<p>
Vilket låter väldigt mycket som
<a href="http://en.wikipedia.org/wiki/Netflow#Cisco.27s_Sampled_NetFlow">"sampled
Netflow"</a>. Det känns nästan som om beskrivningen är tagen ur något
marknadsföringsmaterial!
</p>

<p>
Lite senare anges:
</p>

<blockquote>
<p>
Stk. 5. Registrering af de i stk. 1 nævnte oplysninger skal ske ved
overgangen mellem udbyderens eget net og et andet eller andre net.
Tilsvarende gælder for registrering efter stk. 4.
</p>
</blockquote>

<p>
Vilket jag uttyder som "Loggningen skall ske i kopplingen mot andra
internetleverantörer, på peeringroutrarna".
</p>

<p>
Sammantaget betyder det här att den danska lagen är en långtgående
loggning av <i>all form</i> av internettrafik, inte alls bara som i den
svenska utredningen. Om du alls använder Internet i Danmark bör du
alltså vara medveten om detta. Allt du surfar till, allt chattande du
gör, alla terminalförbindelser du gör, alla videoströmmar,
audioströmmar, ja allt du tar dig för på Internet loggas.
</p>
</div>
</div>
<div id="outline-container-möjliga-vägar-runt-direktivet" class="outline-2">
<h2 id="möjliga-vägar-runt-direktivet">Möjliga vägar runt direktivet</h2>
<div class="outline-text-2" id="text-möjliga-vägar-runt-direktivet">
<p>
Jag vill först påpeka att helt oavsett vad datalagringsdirektivet och
implementationer av det i lag säger, så är det sannolikt att det finns
många andra än leverantörer av elektronisk kommunikation till
allmänheten som lagrar trafikdata och kanske rent av <i>innehållet</i> av det
du överför. Kanske gör de till och med avancerad trafikanalys på dina
data. Ett internetcafé, till exempel, kan ha goda (och några onda)
anledningar att göra åtminstone delar av detta.
</p>

<p>
Betrakta alltså allt du sänder på Internet som vore det avlyssnat och
att du är fullt spårbar. <b>Du är inte anonym.</b> <b>Det du sänder och tar
emot är inte hemligt.</b> I synnerhet om du inte gör något åt det.
</p>

<p>
Vad finns det för möjligheter att gå runt eller åtminstone minska bettet
från direktivet, både i svensk och dansk form? Nedan har jag samlat
några tips som jag ser som möjliga utvägar.
</p>

<p>
Observera: Naturligtvis bör man börja med att göra en analys av sin
hotbild. De nedanstående möjligheterna rör sig från sunt förnuft hela
vägen till det åtminstone lätt paranoida. Hotbilden kan ju se helt
annorlunda ut för en person som är på väg att läcka känsliga uppgifter
om korruption till exempelvis <a href="http://www.wikileaks.org/">Wikileaks</a>
eller <a href="http://cryptome.org/">Cryptome</a> än för någon annan.
</p>

<ol class="org-ol">
<li>Det första och antagligen svåraste: Undvik att kommunicera
elektroniskt utom när det är absolut nödvändigt.</li>

<li>Använd leverantörer där inga personliga uppgifter behöver lämnas för
abonnemang. I händelse av att abonnemangen kostar pengar, undersök
möjligheter att betala kontant eller att betala på annat sätt utan
att lämna personliga uppgifter.</li>

<li>Nät: Använd ett fritt tillängligt WLAN, Internet på biblioteket, ett
café med gratis Internet eller genom förbetalt GSM- eller
3G-abonnemang där du gjort betalningen kontant. Se dock varningarna
om mobiltelefon nedan.</li>

<li><p>
Använd en kraftig anonymiseringstjänst. Detta kan vara aktuellt även
om du har tillgång till Internet på en relativt anonym plats, då du
kanske röjer dig för din leverantör genom innehållet i din
kommunikation.
</p>

<p>
Det främsta exemplet på en kraftig ganska generell
anonymiseringstjänst är
<a href="http://www.torproject.org/">Tor-projektet</a>.
</p>

<p>
Observera att de de olika tunneltjänsterna, till exempel Relakks
eller Ipredator, eventuellt kan hamna under anmälningsplikt och
därmed faller under den kommande datalagringslagen, så de är inte
säkra. De gör dig hur som helst inte anonym, oavsett vad deras
marknadsmaterial säger. Dina data passerar hela tiden en enda
leverantör som kan lagra så mycket de vill.
</p>

<p>
Tänk också på att om du använder Tor-nätet för att bli anonym så
skyddar det inte alls din trafik när (om) du kommer ut på det vanliga
Internet. Om du har känsliga data att förmedla, kryptera dem!
</p>

<p>
Ett spännande sätt att använda Tor-nätet är att stanna inne i
Tor-nätet hela tiden, utan att passera några "exit nodes" till det
vanliga Internet. Genom att göra så blir dessutom automagiskt all
trafik krypterad hela vägen från sändare till mottagare. En sådan
lösning för att göra Tor-nätet helt transparent för
IPv6-tillämpningar är
<a href="http://www.cypherpunk.at/onioncat/">OnionCat</a>.
</p>

<p>
OnionCat är just nu kanske inte så tillgängligt för Vanliga
Användare, men det kommer nog med lite ytterligare utveckling. Kanske
slås en OnionCat-liknande utveckling ihop med vanliga
Tor-programvaran.
</p>

<p>
Ett liknande projekt som OnionCat är Invisible Internet Project,
<a href="http://www.i2p2.de/">I2P</a>. Detta nät kräver dock särskild
anpassning av programmen du vill använda. Det kräver inte OnionCat,
som fungerar med alla program som kan prata IPv6, oavsett vad de
använder för protokoll i högre lager.
</p>

<p>
Observera att en kunnig observatör kommer att kunna lista ut <i>att</i> du
använder Tor eller I2P, bara inte <i>vem</i> du kommunicerar med efter
ingången till Tor- eller I2P-nätet.
</p></li>

<li><p>
Telefoni: För de flesta kontantkort för mobiltelefoner behöver du
inte lämna några personliga uppgifter, men tänk på att ett
mobiltelefonnummer med lätthet kan spåras till en fysisk plats
(GSM-celler är väldigt små) och till en viss telefon. Telefonens
IMEI-nummer (i GSM och UMTS) är unikt och den använder det när den
identifierar sig mot basstationen. Likadant är det med ditt SIM-korts
IMSI-nummer.
</p>

<p>
I princip säger alltså din mobiltelefon hela tiden vem den är och var
den är. Observera att en del telefoner gör detta även i avstängt
skick. Det kan finnas anledning att ta ut batteriet, beroende på
telefonmodell.
</p>

<p>
Det finns därför kanske, beroende på din hotbild, anledning att byta
abonnemang såväl som fysisk telefon relativt ofta, om du inte på
något vis kan byta ut telefonens identifikationsnummer (IMEI).
</p></li>

<li><p>
Det finns en del SIP-leverantörer som inte kräver några personliga
uppgifter för användning av sin SIP-proxy. Vanligen har dock dessa
leverantörer ingen koppling till det vanliga telefonnätet.
</p>

<p>
Tänk på att du troligen kommer att röja den IP-adress du använder för
både leverantören (den som kör en proxy) och för motparten i din
telefonkommunikation. Åtminstone vad gäller SIP så passerar själva
röstdata normalt inte proxyn, utan går direkt mellan sändare och
mottagare.
</p>

<p>
Då IP-telefoni vanligen använder sig av UDP kan det för nuvarande
tyvärr inte användas genom Tor (men faktiskt genom OnionCat), men det
skulle antagligen ändå bli olidligt genom Tor eftersom latensen i
Tor-nätet är så hög. Vill man på något vis få igenom
röstkommunikation anonymt måste det nog i bästa fall bli i
komradiostil, möjligen med långa pauser, snarare än som telefoni.
</p>

<p>
Om du vill ha ett vanligt telefonnummer kopplat till ditt
IP-telefoniabonnemang kan det troligen bli svårare om du inte vill
lämna ut personliga uppgifter. Jag känner inte till någon sådan
tjänst. Om någon känner till det, meddela gärna.
</p></li>

<li><p>
Mail: Google Mail, Hotmail och alla de andra webmailtjänsterna där
ute kräver inga personliga uppgifter. Observera att detta inte på
något sätt gör dig anonym i sig självt. Mailleverantören har här koll
på vilken IP-adress du kopplat upp dig från. Ett sätt att komma runt
det är att använda tjänsterna i kombination med Tor eller åtminstone
ett nät där du är anonym relativt leverantören.
</p>

<p>
Ett intressant alternativ beroende på vilka du vill kommunicera med
är att använda en mailtjänst <i>inne</i> i OnionCat, vanligen utan kontakt
med det vanliga Internet.
</p>

<p>
Om du vill ha sant anonym mail till mottagare på det vanliga Internet
blir det svårare. Tidigare fanns lösningar som
<a href="http://mixmaster.sourceforge.net/">Mixmaster</a>, men det är
sannolikt att det numera finns ganska få fungerande
Mixmaster-servrar, så Mixmasters era är troligen över. Jag kan i alla
fall just nu inte hitta någon gällande lista över Mixmaster-servrar
att använda i en kedja.
</p>

<p>
Ett möjligt alternativ är <a href="http://mixminion.net/">Mixminion</a>, men
det vet jag än så länge mycket lite om. Det är sannolikt att på grund
av missbruk i form av spam så är det mer eller mindre hopplöst att
använda sådana här tjänster nu för tiden.
</p></li>
</ol>
</div>
</div>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Boomtime, the 1 day of Confusion in the YOLD 3175 (<time datetime="2009-05-27">2009-05-27</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/datalagringsdirektiv.html</link>
  <guid>https://hack.org/~mc/blog/datalagringsdirektiv.html</guid>
  <pubDate>Wed, 27 May 2009 13:33:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[FreeBSD 7.2 på Thinkpad X60s]]></title>
  <description><![CDATA[<p>
När jag för några år sedan köpte en Thinkpad X60s för att ersätta min
uråldriga Thinkpad 570 som min huvudarbetsstation skrev jag om min
huvudvärk med att få FreeBSD att arbeta på så extremt ny hårdvara i
texten <a href="https://hack.org/mc/freebsd-x60.html">FreeBSD on the Lenovo
Thinkpad X60s</a> där jag också berättade hur jag installerade NetBSD och
Ubuntu GNU/Linux över nätverket. Jag uppdaterade sedan texten lite då
och då allt eftersom jag löste problem.
</p>

<p>
Nu har jag installerat FreeBSD 7.2 på brain, som min stackars bärbara
kallas. Jag skrev en motsvarande text om det med titeln
<a href="https://hack.org/mc/writings/freebsd7-x60s.html">FreeBSD 7.2 on the
Lenovo Thinkpad X60s</a>. Kanske hjälper det åtminstone någon.
</p>

<p>
Det mest förvånande var nog att X startade utan något stöd för vare sig
tangenbord eller mus i defaultkonfigurationen!
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Pungenday, the 70 day of Discord in the YOLD 3175 (<time datetime="2009-05-23">2009-05-23</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/freebsd-x60s.html</link>
  <guid>https://hack.org/~mc/blog/freebsd-x60s.html</guid>
  <pubDate>Sat, 23 May 2009 16:13:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[ARPANET-film, Imlac PDS-1 och Maze]]></title>
  <description><![CDATA[<p>
Jag förstår inte hur jag kan ha missat den här filmen från 1972:
<a href="http://www.archive.org/details/ComputerNetworks_TheHeraldsOfResourceSharing">Computer Networks: The Heralds Of Resource Sharing</a>.
</p>

<p>
Den handlar om hur ARPANET, Internets direkta föregångare, används några
år efter att de första fyra noderna kopplades ihop 1969. Användningen
ser att döma av filmen ganska avancerad ut redan 1972 och kommentarerna
i den visar på en väldig framsynthet. Speciellt förtjust är jag i vad
Donald Davies, tillsammans med Paul Baran en av skaparna av
paketförmedlande nät, säger om det kommande kriget mellan bellheads och
netheads som vi ju alla vet blev verklighet.
</p>

<p>
Många av de som är med i filmen är verkliga veteraner i Internet- och
operativsystemskretsar, som till exempel F. J. "Corby" Corbató, en av
skaparna av operativsystemet Multics, och J.C.R. Licklider, Larry
Roberts och Bob Kahn, som kan sägas ha skapat ARPANET.
</p>

<p>
För mer bakgrund om ARPANET, läs gärna den något populära men ändå
mycket intressanta <i>Where Wizards Stay Up Late: The Origins of the
Internet</i> av Katie Hafner och Matthew Lyon. Smakprov och en del material
som inte fick plats i boken finns här:
</p>

<p>
<a href="http://www.chick.net/wizards/">http://www.chick.net/wizards/</a>
</p>

<p>
Flera gånger i filmen skymtar en ganska mytisk varelse, Imlac PDS-1,
föregångaren till alla grafiska arbetsstationer. PDS-1 var en 16-bitars
minidator med tillhörande vektorskärm som släpptes redan 1970.
</p>


<figure id="orgf65c883">
<img src="https://hack.org/mc/images/imlac.jpg" alt="imlac.jpg">

</figure>

<p>
Al Kossows fantastiska <a href="http://bitsavers.informatik.uni-stuttgart.de/pdf/imlac/">Bitsavers</a> (spegel på Universität Stuttgart) har
som vanligt massor av scannat material, inklusive ritningar. Det finns
också en hel del bilder och mer material, inklusive programvara, att
hitta på nätet:
</p>

<p>
<a href="http://www.blinkenlights.com/classiccmp/imlac/">http://www.blinkenlights.com/classiccmp/imlac/</a>
</p>

<p>
<a href="http://www.ubanproductions.com/imlac.html">http://www.ubanproductions.com/imlac.html</a>
</p>

<p>
<a href="http://www.ubanproductions.com/imlac_sw.html">http://www.ubanproductions.com/imlac_sw.html</a>
</p>

<p>
På den sista länken verkar programvaran framför allt vara i binär form,
vilket är lite tråkigt, men kanske går det att få tag i källkod hos
någon entusiast. Det omnämns också en emulator, men någon sådan har jag
tyvärr inte hittat.
</p>

<p>
En av de många saker som är associerat med Imlac är spelet Maze,
antagligen det första First Person Shooter som skapats. Maze är från
tidigt 70-tal, men personligen spelade jag det först på 90-talets
början under fönstersystemet <a href="https://hack.org/mc/mgr/">MGR</a> i en version skriven av ingen mindre
än James Gosling, idag troligen mest känd för skapandet av
programspråket Java. Hans Maze-version hade portats från
fönstersystemet Andrew till MGR. I källkoden står det "Written:
28.July.1984". Den versionen hittar ni i vanliga MGR-disten (länken
ovan) under <code>src/clients/portable/simple/maze.c</code>. Det är ett
förvånansvärt enkelt program.
</p>

<p>
Det finns naturligtvis implementationer av Maze för X också, om det är
någon som känner för att prova. En variant är <a href="http://home.tu-clausthal.de/student/iMaze/">iMaze</a>. En mycket mer
svårspelad variant är OpenGL-baserade <a href="http://glmaze.sourceforge.net/">glMaze</a>.
</p>

<p>
Mer om original-Maze finns bland annat på DigiBarns rapport från
<a href="http://vintage.org/">Vintage Computer Festival</a> 7.0, 2004: <a href="http://www.digibarn.com/history/04-VCF7-MazeWar/index.html">The DigiBarn's Maze War 30 Year
Retrospective</a>.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Setting Orange, the 67 day of Discord in the YOLD 3175 (<time datetime="2009-05-20">2009-05-20</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/ARPANET-film.html</link>
  <guid>https://hack.org/~mc/blog/ARPANET-film.html</guid>
  <pubDate>Wed, 20 May 2009 12:50:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Tidiga skärmtexteditorer]]></title>
  <description><![CDATA[<p>
I mitt förra inlägg om KOM nämndes kort VIDED, en texteditor för
TOPS-10. Jag vet tyvärr inte mycket om VIDED (information tas gärna
emot!), men lite letande ger vid handen
<a href="http://pdp-10.trailing-edge.com/decuslib20-04/01/decus/20-0135/vided.blb.html">en
imponerande featurelista</a> för att vara 1977 och dessutom information
att den var skriven i programspråket Simula. Jacob Palme nämns i texten
och jag tycker mig minnas ett fotografi på Jacob där det sitter en
klisterlapp på hans terminal med texten "SIMULA does it with class!".
</p>

<p>
Informationen länkad ovan ser ut att komma från ett av DECUS-banden.
DECUS var en användarförening för användare av DEC-datorer som PDP-11,
PDP-10, VAX, et cetera.
</p>

<p>
En annan gammal texteditor jag känner till lite bättre är AMIS som Per
"The Mad Programmer" Lindberg skrivit en väldigt roande historia om:
<a href="https://hack.org/mc/texts/amis.txt">Sagan om AMIS</a>.
</p>

<p>
Sagan om AMIS nämner förstås också KOM, som användes flitigt under
utvecklingen. AMIS körde precis som KOM bland annat under TOPS-10 för de
<a href="http://www.stacken.kth.se/">stackare</a> (pun intended) som hade för
klent utrustade burkar för att köra riktiga EMACS. AMIS kom så småningom
att portas till såväl PDP-11, som VAX/VMS och kanske fler plattformar.
</p>

<p>
Jämför gärna Sagan om AMIS med
<a href="https://hack.org/mc/texts/emacs-paper.txt">RMS' urpaper om
original-EMACS</a> eller
<a href="https://hack.org/mc/texts/multics-emacs.txt">Bernie Greenbergs text om
Multics Emacs</a>.
</p>

<p>
Multics Emacs har jag tyvärr aldrig fått möjlighet att köra, men det är
ju så ont om levande Multics-installationer nu för tiden. Ingen har ännu
tagit på sig det enorma arbetet att emulera en GE-645 eller Honeywell
6180, så det lär dröja innan jag får den möjligheten.
</p>

<p>
Gamla TECO-EMACS, ur-EMACS, går det faktiskt att köra idag, om man vill.
Det finns drösvis med emulatorer för PDP-10 där man köra till exempel
TOPS-20 eller rent av ITS och därmed också njuta av EMACS och försöka
sig på att skriva TECO-program. Några olika versioner av TECO finns
förresten också tillgängliga som kan köras helt utan emulering. En av
dem är <a href="http://almy.us/teco.html">Pete Siemsens TECOC</a>.
</p>

<p>
Till skillnad från EMACS (TECO) och Multics Emacs, (MacLisp; efter
Project MAC på MIT &#x2014; har ingenting med Macintosh att göra) och VIDED
(Simula) så skrevs alltså AMIS i Pascal med det uttryckta målet att vara
portabel. Det går faktiskt fortfarande att hitta
<a href="http://pdp-10.trailing-edge.com/tops10_tools_bb-fp64b-sb/">både
källkoden och en binär för TOPS-10</a> om man letar lite.
</p>

<p>
Jag är faktiskt lite förvånad över att utvecklingen på AMIS höll i sig
så länge. Att döma av
<a href="http://pdp-10.trailing-edge.com/tops10_tools_bb-fp64b-sb/01/10,7/amis/amis.upd.html">AMIS.UPD</a>
i Trailing Edge-arkivet så redigerades AMIS-koden senast februari 1988
av Johnny och Stellan. Troligen är detta Johnny "Bygg" Eriksson och
Stellan Lagerström, men det är en gissning från min sida. Korrigera mig
gärna om jag har fel.
</p>

<p>
Titta gärna i huvudmodulen
<a href="http://pdp-10.trailing-edge.com/tops10_tools_bb-fp64b-sb/01/10,7/amis/main.pas.html">main.pas</a>.
</p>

<p>
Utifrån det där tycker jag koden verkar riktigt förståelig. Det kanske
till och med går att få den körbar på en modern maskin givet att man
skriver om de lägsta nivåerna? En utmaning så god som någon för någon
med mycket fritid.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Pungenday, the 25 day of Discord in the YOLD 3175 (<time datetime="2009-04-08">2009-04-08</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/editorer.html</link>
  <guid>https://hack.org/~mc/blog/editorer.html</guid>
  <pubDate>Wed, 08 Apr 2009 16:40:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[KOM]]></title>
  <description><![CDATA[<p>
Någon gång under förra veckan på ett besök på biblioteket kunde jag inte
låta bli att titta i svenska datorvärldens egen skvallertidning,
Computer Sweden, och fann för en gångs skull en intressant artikel: en
<a href="http://www.idg.se/2.1085/1.221192/pionjar-som-gissade-fel">intervju
med Jacob Palme om bland annat KOM-systemet</a>.
</p>

<p>
KOM var ett tidigt elektroniskt konferenssystem, ungefär som en
blandning av privat e-mail, IM-system och forum i stil med Usenet, då
det innehöll alla möjligheter till kommunikation och hade väldigt snabb
turn-around för inlägg och kommentarer.
</p>

<p>
Jag har tidigare skrivit lite kort om KOM-systemens historia, för ett
helt annat syfte. I texten ingår exempel på KOM:s epokgörande
användargränssnitt. Texten är emellertid på engelska, så jag tog mig
friheten att översätta även gränssnittet:
</p>

<p>
<a href="https://hack.org/mc/writings/kom.txt">https://hack.org/mc/writings/kom.txt</a>
</p>

<p>
Förhoppningsvis ger den där texten läsarna åtminstone någon slags
uppfattning om hur KOM upplevdes (och fortfarande kan upplevas, se
nedan). Det hade en känsla av närvaro, som ännu idag få system har. Alla
kommandon fanns tillgängliga överallt, till skillnad från de i
jämförelse hatade menysystem som somliga andra konferenssystem hade.
</p>

<p>
Tyvärr var CS:s intervju med Jacob Palme, som tillsammans med Torgny
Tholerus alltså var skaparna av ur-KOM, väldigt ytlig. Författaren
Anders Lotsson hade dessutom missuppfattat en del saker och av någon
anledning (brådska?) inte heller kontrollerat med andra källor.
</p>

<p>
Den mest anmärkningsvärda missuppfattningen Lotsson gjorde var att
indirekt påstå att KOM snurrade på en IBM 7090! Jag skrev och frågade
honom och hans svar var "Jag antar att Jacob glömde att nämna övergången
till PDP, och när han senare talade om 'systemet' antog jag att han
menade samma hela tiden".
</p>

<p>
En 7090 var transistorversionen av den tidigare elektronrörsbaserade IBM 709. 7090 lanserades i slutet av 50-talet. 
Väldigt få personer körde
något som ens liknade något så interaktivt som KOM på en 7090! Det stora
undantaget är möjligen CTSS, ett av de första operativsystemen i
skapligt modern bemärkelse, som utvecklades för en kraftigt modifierad
IBM 7094. CTSS, Compatible Time-Sharing System, gav förresten indirekt
sitt namn till ITS, Incompatible Timesharing System, ett operativsystem
som ligger tungt i hackerhistorien.
</p>

<p>
Observera att Lotsson själv skriver så här om interaktivitet:
"Interaktivitet var det inte tal om". Där borde han ha insett att det
inte var på FOA:s tidiga 7090 som KOM kördes. Eller har Lotsson kanske
aldrig kört ett KOM-system?
</p>

<p>
KOM körde alltså inte på 7090, utan på DEC:s PDP-10-familj, först under
operativsystemet TOPS-10 och senare på det helt orelaterade TOPS-20. KOM
var skrivet i MACRO-10, en assembler för PDP-10, och alltså inte
särskilt portabelt. Jag är tämligen säker att samma sak gällde för
VIDED, som också nämns i artikeln, som alltså inte heller var utvecklat
för IBM 7090.
</p>

<p>
KOM-kulturen och -gränssnittet spreds så småningom bortom ur-KOM på
Stockholms datacentral QZ. Jag tror den första KOM-klonen för
mikrodatorer kan ha varit MikroKOM, som skrevs i Turbo Pascal för CP/M
och senare flyttades till MS-DOS. Hela svenska BBS-kulturen blev så
småningom ganska KOMifierad.
</p>

<p>
Det var väldigt vanligt att mer diskussionsbetonade BBS:er var
KOM-system i Sverige. Tyvärr spred det sig knappt bortom landets
gränser, även om det fanns några installationer av ur-KOM även på
PDP-10:or i andra länder.
</p>

<p>
MikroKOM följdes av många andra KOM-kloner, där den kanske mest kända
blev Ulf Hedlunds TCL &#x2014; The Common Link, också den för MS-DOS. Den
mest kända installationen av TCL var troligen var Ulf Hedluns egen BBS
Common, ett flerlinjesystem i Stockholm.
</p>

<p>
Två senare KOM-system till mikrodatorer var NiKOM och NT (Nice Touch)
till Amiga. De var mycket vanliga bland BBS:er under tidigt 90-tal och
minst en NiKOM körs fortfarande i form av
<a href="http://www.lysator.liu.se/~fabbe/fabbes/">Fabbes BBS</a>. TCL var
troligen vanligare lite tidigare.
</p>

<p>
Det finns än idag KOM-system. Det KOM-system med flest körande
installationer är antagligen client/server-baserade LysKOM. LysKOM
utvecklades av medlemmar av den akademiska datorföreningen
<a href="http://www.lysator.liu.se/">Lysator</a> på Linköpings universitet när
KOM-installationen på LINUS (en DEC 2065, också en PDP-10, på LiU)
skulle tas ner.
</p>

<p>
LysKOM-projektet har sin websida här:
</p>

<p>
<a href="http://www.lysator.liu.se/lyskom/">http://www.lysator.liu.se/lyskom/</a>
</p>

<p>
Den största LysKOM-installationen är antagligen den på Lysator. Just i
skrivande stund är sammanlagt 92 aktiva användare synliga i Lysators
LysKOM av totalt flera tusen användare.
</p>

<p>
Ett annat modernt KOM-system är Java-baserade
<a href="http://openkom.sourceforge.net/">OpenKOM</a> som åtminstone det
nyuppstådda <a href="http://www.common.se/">Common</a> kör.
</p>

<p>
Jacob Palme har samlat på sig lite KOM-folklore i form av texter från
gamla möten i ur-KOM på QZ som visar lite på hur det var:
</p>

<p>
<a href="http://people.dsv.su.se/~jpalme/qzkom/">http://people.dsv.su.se/~jpalme/qzkom/</a>
</p>

<p>
Jacob har också skrivit en rapport om ur-KOM:s historia:
</p>

<p>
<a href="http://people.dsv.su.se/~jpalme/s1/history-of-KOM.html">http://people.dsv.su.se/~jpalme/s1/history-of-KOM.html</a>
</p>

<p>
Lysators historiaprojekt har scannat manualen till KOMv6, den sista
versionen av ur-KOM:
</p>

<p>
<a href="http://www.lysator.liu.se/lyskom/nostalgi/kom6gm/">http://www.lysator.liu.se/lyskom/nostalgi/kom6gm/</a>
</p>

<p>
Det har till och med forskats om KOM, men i min mening missade forskaren
tyvärr en av de stora poängerna med KOM: mötena! I stället handlade
forskningen framför allt om brev mellan KOM-användare. Se Kerstin
Severinson Eklund: <i>Dialogue processes in computer mediated
communication. A study of letter exchange in the COM system</i> från
Linköpings universitet.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Pungenday, the 25 day of Discord in the YOLD 3175 (<time datetime="2009-04-08">2009-04-08</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/kom.html</link>
  <guid>https://hack.org/~mc/blog/kom.html</guid>
  <pubDate>Wed, 08 Apr 2009 14:49:00 +0200</pubDate>
</item>
<item>
  <title><![CDATA[Ny blog]]></title>
  <description><![CDATA[<p>
Jag försöker igen med en slags löpande anteckningar, denna gång komplett
med matningar för RSS och Atom. Ja, jag vet att det är något problem med
valideringen av Atom-matningen. Jag skall se om jag kan fixa det.
</p>

<p>
<a href="https://hack.org/mc/anteckningar/">Mina nygamla anteckningar</a>, senast
uppdaterade i augusti 2006, saknade finesser som matningar och läsare
hörde av sig och klagade. Mina än mer uråldriga anteckningar från
90-talets andra hälft har möglat ihop och gått och gömt sig av skam
eller vad det nu kan vara, trots att de fick
<a href="http://www.yelah.net/articles/mc">lysande recensioner</a> tillsammans
med resten av mina små webresurser på sin tid.
</p>

<p>
Det finns nu egentligen två bloggar, eller åtminstone två websidor med
matningar kopplade till sig. Den ena är den här och den andra är
<a href="https://hack.org/mc/news/">News about MC's Web Pages</a>. På den första,
alltså denna, kommer jag att publicera lite längre texter, åsikter och
liknande. På den andra kommer jag enbart att publicera när jag till
exempel lanserat en ny version av något program, eller så. Den som inte
orkar läsa mitt dravel kan ju ändå vara intresserade av att prenumera på
den andra, kanske.
</p>
<hr/>
<p>Written by <a href="/~mc/bio.html">MC</a> on Pungenday, the 25 day of Discord in the YOLD 3175 (<time datetime="2009-04-08">2009-04-08</time>). </p>]]></description>
  <link>https://hack.org/~mc/blog/nyblog.html</link>
  <guid>https://hack.org/~mc/blog/nyblog.html</guid>
  <pubDate>Wed, 08 Apr 2009 13:32:00 +0200</pubDate>
</item>
</channel>
</rss>
