1 <!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Strict//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns=
"http://www.w3.org/1999/xhtml" dir=
"ltr">
5 <meta http-equiv=
"Content-Type" content=
"text/html;charset=utf-8" />
6 <title>Petter Reinholdtsen: Plain text accounting file from your bitcoin transactions
</title>
7 <link rel=
"stylesheet" type=
"text/css" media=
"screen" href=
"https://people.skolelinux.org/pere/blog/style.css" />
8 <link rel=
"stylesheet" type=
"text/css" media=
"screen" href=
"https://people.skolelinux.org/pere/blog/vim.css" />
15 <a href=
"https://people.skolelinux.org/pere/blog/">Petter Reinholdtsen
</a>
23 <div class=
"title">Plain text accounting file from your bitcoin transactions
</div>
24 <div class=
"date"> 7th March
2024</div>
25 <div class=
"body"><p>A while back I wrote a small script to extract the Bitcoin
26 transactions in a wallet in the
27 <ahref=
"https://plaintextaccounting.org/">ledger plain text accounting
28 format
</a>. The last few days I spent some time to get it working
29 better with more special cases. In case it can be useful for others,
34 # -*- coding: utf-
8 -*-
35 # Copyright (c)
2023-
2024 Petter Reinholdtsen
37 from decimal import Decimal
44 def format_float(num):
45 return numpy.format_float_positional(num, trim='-')
48 u'amount' : 'Assets:BTC:main',
52 '
<some address
>' : 'Assets:bankkonto',
53 '
<some address
>' : 'Assets:bankkonto',
57 proc = subprocess.Popen(cmd,stdout=subprocess.PIPE)
58 j = json.loads(proc.communicate()[
0], parse_float=Decimal)
62 # get all transactions for all accounts / addresses
67 cmd = ['bitcoin-cli', 'listtransactions', '*', str(limit)]
69 txs.extend(exec_json(cmd))
71 # Useful for debugging
72 with open('transactions.json') as f:
73 txs.extend(json.load(f, parse_float=Decimal))
75 for tx in sorted(txs, key=lambda a: a['time']):
76 # print tx['category']
77 if 'abandoned' in tx and tx['abandoned']:
79 if 'confirmations' in tx and
0 >= tx['confirmations']:
81 when = time.strftime('%Y-%m-%d %H:%M', time.localtime(tx['time']))
90 print("%s %s" % (when, desc))
92 print(" ; to bitcoin address %s" % tx['address'])
94 print(" ; missing address in transaction, txid=%s" % tx['txid'])
95 print(f" ; amount={tx['amount']}")
97 print(f" ; fee={tx['fee']}")
98 for f in accounts.keys():
99 if f in tx and Decimal(
0) != tx[f]:
101 print(" %-
20s %s BTC" % (accounts[f], format_float(amount)))
102 if 'fee' in tx and Decimal(
0) != tx['fee']:
103 # Make sure to list fee used in several transactions only once.
104 if 'fee' in tx and tx['txid'] in txidfee \
105 and tx['fee'] == txidfee[tx['txid']]:
109 print(" %-
20s %s BTC" % (accounts['amount'], format_float(fee)))
110 print(" %-
20s %s BTC" % ('Expences:BTC-fee', format_float(-fee)))
111 txidfee[tx['txid']] = tx['fee']
113 if 'address' in tx and tx['address'] in addresses:
114 print(" %s" % addresses[tx['address']])
116 if 'generate' == tx['category']:
117 print(" Income:BTC-mining")
119 if amount < Decimal(
0):
120 print(f" Assets:unknown:sent:update-script-addr-{tx['address']}")
122 print(f" Assets:unknown:received:update-script-addr-{tx['address']}")
126 print("# Found %d transactions" % c)
128 print(f"# Warning: Limit {limit} reached, consider increasing limit.")
134 </pre></blockquote></p>
136 <p>It is more of a proof of concept, and I do not expect it to handle
137 all edge cases, but it worked for me, and perhaps you can find it
140 <p>To get a more interesting result, it is useful to map accounts sent
141 to or received from to accounting accounts, using the
142 <tt>addresses
</tt> hash. As these will be very context dependent, I
143 leave out my list to allow each user to fill out their own list of
144 accounts. Out of the box, 'ledger reg BTC:main' should be able to
145 show the amount of BTCs present in the wallet at any given time in the
146 past. For other and more valuable analysis, a account plan need to be
147 set up in the
<tt>addresses
</tt> hash. Here is an example
151 2024-
03-
07 17:
00 Donated to good cause
152 Assets:BTC:main -
0.1 BTC
153 Assets:BTC:main -
0.00001 BTC
154 Expences:BTC-fee
0.00001 BTC
155 Expences:donations
0.1 BTC
156 </pre></blockquote></p>
158 <p>It need a running Bitcoin Core daemon running, as it connect to it
159 using
<tt>bitcoin-cli listtransactions *
100000</tt> to extract the
160 transactions listed in the Wallet.
</p>
162 <p>As usual, if you use Bitcoin and want to show your support of my
163 activities, please send Bitcoin donations to my address
164 <b><a href=
"bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
</a></b>.
</p>
167 <div class=
"tags">Tags:
<a href=
"https://people.skolelinux.org/pere/blog/tags/bitcoin">bitcoin
</a>,
<a href=
"https://people.skolelinux.org/pere/blog/tags/english">english
</a>.
</div>
185 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2024/01/">January (
1)
</a></li>
187 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2024/02/">February (
1)
</a></li>
189 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2024/03/">March (
2)
</a></li>
191 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2024/04/">April (
2)
</a></li>
198 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2023/01/">January (
3)
</a></li>
200 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2023/02/">February (
1)
</a></li>
202 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2023/04/">April (
2)
</a></li>
204 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2023/05/">May (
3)
</a></li>
206 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2023/06/">June (
1)
</a></li>
208 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2023/08/">August (
1)
</a></li>
210 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2023/09/">September (
1)
</a></li>
212 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2023/10/">October (
1)
</a></li>
214 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2023/11/">November (
4)
</a></li>
216 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2023/12/">December (
1)
</a></li>
223 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2022/02/">February (
1)
</a></li>
225 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2022/03/">March (
3)
</a></li>
227 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2022/04/">April (
2)
</a></li>
229 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2022/06/">June (
2)
</a></li>
231 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2022/07/">July (
1)
</a></li>
233 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2022/09/">September (
1)
</a></li>
235 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2022/10/">October (
1)
</a></li>
237 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2022/12/">December (
1)
</a></li>
244 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2021/01/">January (
2)
</a></li>
246 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2021/02/">February (
1)
</a></li>
248 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2021/05/">May (
1)
</a></li>
250 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2021/06/">June (
1)
</a></li>
252 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2021/07/">July (
3)
</a></li>
254 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2021/08/">August (
1)
</a></li>
256 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2021/09/">September (
1)
</a></li>
258 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2021/10/">October (
1)
</a></li>
260 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2021/12/">December (
1)
</a></li>
267 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2020/02/">February (
2)
</a></li>
269 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2020/03/">March (
2)
</a></li>
271 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2020/04/">April (
2)
</a></li>
273 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2020/05/">May (
3)
</a></li>
275 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2020/06/">June (
2)
</a></li>
277 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2020/07/">July (
1)
</a></li>
279 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2020/09/">September (
1)
</a></li>
281 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2020/10/">October (
1)
</a></li>
283 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2020/11/">November (
1)
</a></li>
290 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2019/01/">January (
4)
</a></li>
292 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2019/02/">February (
3)
</a></li>
294 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2019/03/">March (
3)
</a></li>
296 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2019/05/">May (
2)
</a></li>
298 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2019/06/">June (
5)
</a></li>
300 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2019/07/">July (
2)
</a></li>
302 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2019/08/">August (
1)
</a></li>
304 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2019/09/">September (
1)
</a></li>
306 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2019/11/">November (
1)
</a></li>
308 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2019/12/">December (
4)
</a></li>
315 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2018/01/">January (
1)
</a></li>
317 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2018/02/">February (
5)
</a></li>
319 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2018/03/">March (
5)
</a></li>
321 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2018/04/">April (
3)
</a></li>
323 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2018/06/">June (
2)
</a></li>
325 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2018/07/">July (
5)
</a></li>
327 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2018/08/">August (
3)
</a></li>
329 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2018/09/">September (
3)
</a></li>
331 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2018/10/">October (
5)
</a></li>
333 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2018/11/">November (
2)
</a></li>
335 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2018/12/">December (
4)
</a></li>
342 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2017/01/">January (
4)
</a></li>
344 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2017/02/">February (
3)
</a></li>
346 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2017/03/">March (
5)
</a></li>
348 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2017/04/">April (
2)
</a></li>
350 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2017/06/">June (
5)
</a></li>
352 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2017/07/">July (
1)
</a></li>
354 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2017/08/">August (
1)
</a></li>
356 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2017/09/">September (
3)
</a></li>
358 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2017/10/">October (
5)
</a></li>
360 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2017/11/">November (
3)
</a></li>
362 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2017/12/">December (
4)
</a></li>
369 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2016/01/">January (
3)
</a></li>
371 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2016/02/">February (
2)
</a></li>
373 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2016/03/">March (
3)
</a></li>
375 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2016/04/">April (
8)
</a></li>
377 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2016/05/">May (
8)
</a></li>
379 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2016/06/">June (
2)
</a></li>
381 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2016/07/">July (
2)
</a></li>
383 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2016/08/">August (
5)
</a></li>
385 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2016/09/">September (
2)
</a></li>
387 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2016/10/">October (
3)
</a></li>
389 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2016/11/">November (
8)
</a></li>
391 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2016/12/">December (
5)
</a></li>
398 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2015/01/">January (
7)
</a></li>
400 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2015/02/">February (
6)
</a></li>
402 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2015/03/">March (
1)
</a></li>
404 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2015/04/">April (
4)
</a></li>
406 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2015/05/">May (
3)
</a></li>
408 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2015/06/">June (
4)
</a></li>
410 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2015/07/">July (
6)
</a></li>
412 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2015/08/">August (
2)
</a></li>
414 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2015/09/">September (
2)
</a></li>
416 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2015/10/">October (
9)
</a></li>
418 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2015/11/">November (
6)
</a></li>
420 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2015/12/">December (
3)
</a></li>
427 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2014/01/">January (
2)
</a></li>
429 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2014/02/">February (
3)
</a></li>
431 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2014/03/">March (
8)
</a></li>
433 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2014/04/">April (
7)
</a></li>
435 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2014/05/">May (
1)
</a></li>
437 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2014/06/">June (
2)
</a></li>
439 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2014/07/">July (
2)
</a></li>
441 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2014/08/">August (
2)
</a></li>
443 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2014/09/">September (
5)
</a></li>
445 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2014/10/">October (
6)
</a></li>
447 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2014/11/">November (
3)
</a></li>
449 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2014/12/">December (
5)
</a></li>
456 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2013/01/">January (
11)
</a></li>
458 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2013/02/">February (
9)
</a></li>
460 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2013/03/">March (
9)
</a></li>
462 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2013/04/">April (
6)
</a></li>
464 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2013/05/">May (
9)
</a></li>
466 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2013/06/">June (
10)
</a></li>
468 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2013/07/">July (
7)
</a></li>
470 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2013/08/">August (
3)
</a></li>
472 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2013/09/">September (
5)
</a></li>
474 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2013/10/">October (
7)
</a></li>
476 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2013/11/">November (
9)
</a></li>
478 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2013/12/">December (
3)
</a></li>
485 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2012/01/">January (
7)
</a></li>
487 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2012/02/">February (
10)
</a></li>
489 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2012/03/">March (
17)
</a></li>
491 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2012/04/">April (
12)
</a></li>
493 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2012/05/">May (
12)
</a></li>
495 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2012/06/">June (
20)
</a></li>
497 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2012/07/">July (
17)
</a></li>
499 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2012/08/">August (
6)
</a></li>
501 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2012/09/">September (
9)
</a></li>
503 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2012/10/">October (
17)
</a></li>
505 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2012/11/">November (
10)
</a></li>
507 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2012/12/">December (
7)
</a></li>
514 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2011/01/">January (
16)
</a></li>
516 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2011/02/">February (
6)
</a></li>
518 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2011/03/">March (
6)
</a></li>
520 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2011/04/">April (
7)
</a></li>
522 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2011/05/">May (
3)
</a></li>
524 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2011/06/">June (
2)
</a></li>
526 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2011/07/">July (
7)
</a></li>
528 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2011/08/">August (
6)
</a></li>
530 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2011/09/">September (
4)
</a></li>
532 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2011/10/">October (
2)
</a></li>
534 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2011/11/">November (
3)
</a></li>
536 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2011/12/">December (
1)
</a></li>
543 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2010/01/">January (
2)
</a></li>
545 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2010/02/">February (
1)
</a></li>
547 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2010/03/">March (
3)
</a></li>
549 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2010/04/">April (
3)
</a></li>
551 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2010/05/">May (
9)
</a></li>
553 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2010/06/">June (
14)
</a></li>
555 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2010/07/">July (
12)
</a></li>
557 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2010/08/">August (
13)
</a></li>
559 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2010/09/">September (
7)
</a></li>
561 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2010/10/">October (
9)
</a></li>
563 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2010/11/">November (
13)
</a></li>
565 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2010/12/">December (
12)
</a></li>
572 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2009/01/">January (
8)
</a></li>
574 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2009/02/">February (
8)
</a></li>
576 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2009/03/">March (
12)
</a></li>
578 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2009/04/">April (
10)
</a></li>
580 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2009/05/">May (
9)
</a></li>
582 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2009/06/">June (
3)
</a></li>
584 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2009/07/">July (
4)
</a></li>
586 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2009/08/">August (
3)
</a></li>
588 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2009/09/">September (
1)
</a></li>
590 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2009/10/">October (
2)
</a></li>
592 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2009/11/">November (
3)
</a></li>
594 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2009/12/">December (
3)
</a></li>
601 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2008/11/">November (
5)
</a></li>
603 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2008/12/">December (
7)
</a></li>
614 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/3d-printer">3d-printer (
19)
</a></li>
616 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/amiga">amiga (
1)
</a></li>
618 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/aros">aros (
1)
</a></li>
620 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/bankid">bankid (
4)
</a></li>
622 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/betalkontant">betalkontant (
9)
</a></li>
624 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/bitcoin">bitcoin (
13)
</a></li>
626 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem (
17)
</a></li>
628 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/bsa">bsa (
2)
</a></li>
630 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/chrpath">chrpath (
3)
</a></li>
632 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/debian">debian (
198)
</a></li>
634 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/debian edu">debian edu (
159)
</a></li>
636 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/debian-handbook">debian-handbook (
9)
</a></li>
638 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/digistan">digistan (
11)
</a></li>
640 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/dld">dld (
18)
</a></li>
642 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/docbook">docbook (
32)
</a></li>
644 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/drivstoffpriser">drivstoffpriser (
4)
</a></li>
646 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/english">english (
460)
</a></li>
648 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/fiksgatami">fiksgatami (
23)
</a></li>
650 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/fildeling">fildeling (
14)
</a></li>
652 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/freeculture">freeculture (
34)
</a></li>
654 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/freedombox">freedombox (
9)
</a></li>
656 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/frikanalen">frikanalen (
20)
</a></li>
658 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/h264">h264 (
20)
</a></li>
660 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/intervju">intervju (
43)
</a></li>
662 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/isenkram">isenkram (
18)
</a></li>
664 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/kart">kart (
23)
</a></li>
666 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/kodi">kodi (
6)
</a></li>
668 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/ldap">ldap (
9)
</a></li>
670 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/lego">lego (
5)
</a></li>
672 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/lenker">lenker (
8)
</a></li>
674 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/linuxcnc">linuxcnc (
5)
</a></li>
676 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/lsdvd">lsdvd (
2)
</a></li>
678 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/ltsp">ltsp (
1)
</a></li>
680 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/madewithcc">madewithcc (
3)
</a></li>
682 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/mesh network">mesh network (
8)
</a></li>
684 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/multimedia">multimedia (
46)
</a></li>
686 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/nice free software">nice free software (
15)
</a></li>
688 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/noark5">noark5 (
25)
</a></li>
690 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/norsk">norsk (
324)
</a></li>
692 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/nuug">nuug (
199)
</a></li>
694 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/offentlig innsyn">offentlig innsyn (
41)
</a></li>
696 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/open311">open311 (
2)
</a></li>
698 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/opensnitch">opensnitch (
4)
</a></li>
700 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/opphavsrett">opphavsrett (
76)
</a></li>
702 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/personvern">personvern (
114)
</a></li>
704 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/raid">raid (
4)
</a></li>
706 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/reactos">reactos (
1)
</a></li>
708 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/reprap">reprap (
11)
</a></li>
710 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/rfid">rfid (
3)
</a></li>
712 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/robot">robot (
17)
</a></li>
714 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/rss">rss (
1)
</a></li>
716 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/ruter">ruter (
7)
</a></li>
718 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/scraperwiki">scraperwiki (
2)
</a></li>
720 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet (
60)
</a></li>
722 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/sitesummary">sitesummary (
4)
</a></li>
724 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/skepsis">skepsis (
5)
</a></li>
726 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/standard">standard (
76)
</a></li>
728 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/stavekontroll">stavekontroll (
7)
</a></li>
730 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/stortinget">stortinget (
14)
</a></li>
732 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/surveillance">surveillance (
65)
</a></li>
734 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/sysadmin">sysadmin (
5)
</a></li>
736 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/usenix">usenix (
2)
</a></li>
738 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/valg">valg (
9)
</a></li>
740 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/verkidetfri">verkidetfri (
22)
</a></li>
742 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/video">video (
80)
</a></li>
744 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/vitenskap">vitenskap (
4)
</a></li>
746 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/web">web (
42)
</a></li>
752 <p style=
"text-align: right">
753 Created by
<a href=
"http://steve.org.uk/Software/chronicle">Chronicle v4.6
</a>