]> pere.pagekite.me Git - homepage.git/blob - blog/archive/2024/03/index.html
Generated.
[homepage.git] / blog / archive / 2024 / 03 / index.html
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">
4 <head>
5 <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
6 <title>Petter Reinholdtsen: entries from March 2024</title>
7 <link rel="stylesheet" type="text/css" media="screen" href="http://www.hungry.com/~pere/blog/style.css" />
8 <link rel="stylesheet" type="text/css" media="screen" href="http://www.hungry.com/~pere/blog/vim.css" />
9 <link rel="alternate" title="RSS Feed" href="03.rss" type="application/rss+xml" />
10 </head>
11 <body>
12 <!-- XML FEED -->
13 <div class="title">
14 <h1>
15 <a href="http://www.hungry.com/~pere/blog/">Petter Reinholdtsen</a>
16
17 </h1>
18
19 </div>
20
21
22 <h3>Entries from March 2024.</h3>
23
24 <div class="entry">
25 <div class="title">
26 <a href="http://www.hungry.com/~pere/blog/Plain_text_accounting_file_from_your_bitcoin_transactions.html">Plain text accounting file from your bitcoin transactions</a>
27 </div>
28 <div class="date">
29 7th March 2024
30 </div>
31 <div class="body">
32 <p>A while back I wrote a small script to extract the Bitcoin
33 transactions in a wallet in the
34 <ahref="https://plaintextaccounting.org/">ledger plain text accounting
35 format</a>. The last few days I spent some time to get it working
36 better with more special cases. In case it can be useful for others,
37 here is a copy:</p>
38
39 <p><blockquote><pre>
40 #!/usr/bin/python3
41 # -*- coding: utf-8 -*-
42 # Copyright (c) 2023-2024 Petter Reinholdtsen
43
44 from decimal import Decimal
45 import json
46 import subprocess
47 import time
48
49 import numpy
50
51 def format_float(num):
52 return numpy.format_float_positional(num, trim='-')
53
54 accounts = {
55 u'amount' : 'Assets:BTC:main',
56 }
57
58 addresses = {
59 '<some address>' : 'Assets:bankkonto',
60 '<some address>' : 'Assets:bankkonto',
61 }
62
63 def exec_json(cmd):
64 proc = subprocess.Popen(cmd,stdout=subprocess.PIPE)
65 j = json.loads(proc.communicate()[0], parse_float=Decimal)
66 return j
67
68 def list_txs():
69 # get all transactions for all accounts / addresses
70 c = 0
71 txs = []
72 txidfee = {}
73 limit=100000
74 cmd = ['bitcoin-cli', 'listtransactions', '*', str(limit)]
75 if True:
76 txs.extend(exec_json(cmd))
77 else:
78 # Useful for debugging
79 with open('transactions.json') as f:
80 txs.extend(json.load(f, parse_float=Decimal))
81 #print txs
82 for tx in sorted(txs, key=lambda a: a['time']):
83 # print tx['category']
84 if 'abandoned' in tx and tx['abandoned']:
85 continue
86 if 'confirmations' in tx and 0 >= tx['confirmations']:
87 continue
88 when = time.strftime('%Y-%m-%d %H:%M', time.localtime(tx['time']))
89 if 'message' in tx:
90 desc = tx['message']
91 elif 'comment' in tx:
92 desc = tx['comment']
93 elif 'label' in tx:
94 desc = tx['label']
95 else:
96 desc = 'n/a'
97 print("%s %s" % (when, desc))
98 if 'address' in tx:
99 print(" ; to bitcoin address %s" % tx['address'])
100 else:
101 print(" ; missing address in transaction, txid=%s" % tx['txid'])
102 print(f" ; amount={tx['amount']}")
103 if 'fee'in tx:
104 print(f" ; fee={tx['fee']}")
105 for f in accounts.keys():
106 if f in tx and Decimal(0) != tx[f]:
107 amount = tx[f]
108 print(" %-20s %s BTC" % (accounts[f], format_float(amount)))
109 if 'fee' in tx and Decimal(0) != tx['fee']:
110 # Make sure to list fee used in several transactions only once.
111 if 'fee' in tx and tx['txid'] in txidfee \
112 and tx['fee'] == txidfee[tx['txid']]:
113 True
114 else:
115 fee = tx['fee']
116 print(" %-20s %s BTC" % (accounts['amount'], format_float(fee)))
117 print(" %-20s %s BTC" % ('Expences:BTC-fee', format_float(-fee)))
118 txidfee[tx['txid']] = tx['fee']
119
120 if 'address' in tx and tx['address'] in addresses:
121 print(" %s" % addresses[tx['address']])
122 else:
123 if 'generate' == tx['category']:
124 print(" Income:BTC-mining")
125 else:
126 if amount < Decimal(0):
127 print(f" Assets:unknown:sent:update-script-addr-{tx['address']}")
128 else:
129 print(f" Assets:unknown:received:update-script-addr-{tx['address']}")
130
131 print()
132 c = c + 1
133 print("# Found %d transactions" % c)
134 if limit == c:
135 print(f"# Warning: Limit {limit} reached, consider increasing limit.")
136
137 def main():
138 list_txs()
139
140 main()
141 </pre></blockquote></p>
142
143 <p>It is more of a proof of concept, and I do not expect it to handle
144 all edge cases, but it worked for me, and perhaps you can find it
145 useful too.</p>
146
147 <p>To get a more interesting result, it is useful to map accounts sent
148 to or received from to accounting accounts, using the
149 <tt>addresses</tt> hash. As these will be very context dependent, I
150 leave out my list to allow each user to fill out their own list of
151 accounts. Out of the box, 'ledger reg BTC:main' should be able to
152 show the amount of BTCs present in the wallet at any given time in the
153 past. For other and more valuable analysis, a account plan need to be
154 set up in the <tt>addresses</tt> hash. Here is an example
155 transaction:</p>
156
157 <p><blockquote><pre>
158 2024-03-07 17:00 Donated to good cause
159 Assets:BTC:main -0.1 BTC
160 Assets:BTC:main -0.00001 BTC
161 Expences:BTC-fee 0.00001 BTC
162 Expences:donations 0.1 BTC
163 </pre></blockquote></p>
164
165 <p>It need a running Bitcoin Core daemon running, as it connect to it
166 using <tt>bitcoin-cli listtransactions * 100000</tt> to extract the
167 transactions listed in the Wallet.</p>
168
169 <p>As usual, if you use Bitcoin and want to show your support of my
170 activities, please send Bitcoin donations to my address
171 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
172
173 </div>
174 <div class="tags">
175
176
177 Tags: <a href="http://www.hungry.com/~pere/blog/tags/bitcoin">bitcoin</a>, <a href="http://www.hungry.com/~pere/blog/tags/english">english</a>.
178
179
180 </div>
181 </div>
182 <div class="padding"></div>
183
184 <div class="entry">
185 <div class="title">
186 <a href="http://www.hungry.com/~pere/blog/RAID_status_from_LSI_Megaraid_controllers_using_free_software.html">RAID status from LSI Megaraid controllers using free software</a>
187 </div>
188 <div class="date">
189 3rd March 2024
190 </div>
191 <div class="body">
192 <p>The last few days I have revisited RAID setup using the LSI
193 Megaraid controller. These are a family of controllers called PERC by
194 Dell, and is present in several old PowerEdge servers, and I recently
195 got my hands on one of these. I had forgotten how to handle this RAID
196 controller in Debian, so I had to take a peek in the
197 <a href="https://wiki.debian.org/LinuxRaidForAdmins">Debian wiki page
198 "Linux and Hardware RAID: an administrator's summary"</a> to remember
199 what kind of software is available to configure and monitor the disks
200 and controller. I prefer Free Software alternatives to proprietary
201 tools, as the later tend to fall into disarray once the manufacturer
202 loose interest, and often do not work with newer Linux Distributions.
203 Sadly there is no free software tool to configure the RAID setup, only
204 to monitor it. RAID can provide improved reliability and resilience in
205 a storage solution, but only if it is being regularly checked and any
206 broken disks are being replaced in time. I thus want to ensure some
207 automatic monitoring is available.</p>
208
209 <p>In the discovery process, I came across a old free software tool to
210 monitor PERC2, PERC3, PERC4 and PERC5 controllers, which to my
211 surprise is not present in debian. To help change that I created a
212 <a href="https://bugs.debian.org/1065322">request for packaging of the
213 megactl package</a>, and tried to track down a usable version.
214 <a href="https://sourceforge.net/p/megactl/">The original project
215 site</a> is on Sourceforge, but as far as I can tell that project has
216 been dead for more than 15 years. I managed to find a
217 <a href="https://github.com/hmage/megactl">more recent fork on
218 github</a> from user hmage, but it is unclear to me if this is still
219 being maintained. It has not seen much improvements since 2016. A
220 <a href="https://github.com/namiltd/megactl">more up to date
221 edition</a> is a git fork from the original github fork by user
222 namiltd, and this newer fork seem a lot more promising. The owner of
223 this github repository has replied to change proposals within hours,
224 and had already added some improvements and support for more hardware.
225 Sadly he is reluctant to commit to maintaining the tool and stated in
226 <a href="https://github.com/namiltd/megactl/pull/1">my first pull
227 request</A> that he think a new release should be made based on the
228 git repository owned by hmage. I perfectly understand this
229 reluctance, as I feel the same about maintaining yet another package
230 in Debian when I barely have time to take care of the ones I already
231 maintain, but do not really have high hopes that hmage will have time
232 to spend on it and hope namiltd will change his mind.</p>
233
234 <p>In any case, I created
235 <a href="https://salsa.debian.org/debian/megactl">a draft package</a>
236 based on the namiltd edition and put it under the debian group on
237 salsa.debian.org. If you own a Dell PowerEdge server with one of the
238 PERC controllers, or any other RAID controller using the megaraid or
239 megaraid_sas Linux kernel modules, you might want to check it out. If
240 enough people are interested, perhaps the package will make it into
241 the Debian archive.</p>
242
243 <p>There are two tools provided, megactl for the megaraid Linux kernel
244 module, and megasasctl for the megaraid_sas Linux kernel module. The
245 simple output from the command on one of my machines look like this
246 (yes, I know some of the disks have problems. :).</p>
247
248 <pre>
249 # megasasctl
250 a0 PERC H730 Mini encl:1 ldrv:2 batt:good
251 a0d0 558GiB RAID 1 1x2 optimal
252 a0d1 3067GiB RAID 0 1x11 optimal
253 a0e32s0 558GiB a0d0 online errs: media:0 other:19
254 a0e32s1 279GiB a0d1 online
255 a0e32s2 279GiB a0d1 online
256 a0e32s3 279GiB a0d1 online
257 a0e32s4 279GiB a0d1 online
258 a0e32s5 279GiB a0d1 online
259 a0e32s6 279GiB a0d1 online
260 a0e32s8 558GiB a0d0 online errs: media:0 other:17
261 a0e32s9 279GiB a0d1 online
262 a0e32s10 279GiB a0d1 online
263 a0e32s11 279GiB a0d1 online
264 a0e32s12 279GiB a0d1 online
265 a0e32s13 279GiB a0d1 online
266
267 #
268 </pre>
269
270 <p>In addition to displaying a simple status report, it can also test
271 individual drives and print the various event logs. Perhaps you too
272 find it useful?</p>
273
274 <p>In the packaging process I provided some patches upstream to
275 improve installation and ensure
276 <ahref="https://github.com/namiltd/megactl/pull/2">a Appstream
277 metainfo file is provided</a> to list all supported HW, to allow
278 <a href="https://tracker.debian.org/isenkram">isenkram</a> to propose
279 the package on all servers with a relevant PCI card.</p>
280
281 <p>As usual, if you use Bitcoin and want to show your support of my
282 activities, please send Bitcoin donations to my address
283 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
284
285
286 </div>
287 <div class="tags">
288
289
290 Tags: <a href="http://www.hungry.com/~pere/blog/tags/english">english</a>, <a href="http://www.hungry.com/~pere/blog/tags/isenkram">isenkram</a>, <a href="http://www.hungry.com/~pere/blog/tags/raid">raid</a>.
291
292
293 </div>
294 </div>
295 <div class="padding"></div>
296
297 <p style="text-align: right;"><a href="03.rss"><img src="http://www.hungry.com/~pere/blog/xml.gif" alt="RSS Feed" width="36" height="14" /></a></p>
298 <div id="sidebar">
299
300
301
302 <h2>Archive</h2>
303 <ul>
304
305 <li>2025
306 <ul>
307
308 <li><a href="http://www.hungry.com/~pere/blog/archive/2025/01/">January (4)</a></li>
309
310 <li><a href="http://www.hungry.com/~pere/blog/archive/2025/02/">February (3)</a></li>
311
312 </ul></li>
313
314 <li>2024
315 <ul>
316
317 <li><a href="http://www.hungry.com/~pere/blog/archive/2024/01/">January (1)</a></li>
318
319 <li><a href="http://www.hungry.com/~pere/blog/archive/2024/02/">February (1)</a></li>
320
321 <li><a href="http://www.hungry.com/~pere/blog/archive/2024/03/">March (2)</a></li>
322
323 <li><a href="http://www.hungry.com/~pere/blog/archive/2024/04/">April (3)</a></li>
324
325 <li><a href="http://www.hungry.com/~pere/blog/archive/2024/05/">May (1)</a></li>
326
327 <li><a href="http://www.hungry.com/~pere/blog/archive/2024/06/">June (1)</a></li>
328
329 <li><a href="http://www.hungry.com/~pere/blog/archive/2024/07/">July (2)</a></li>
330
331 <li><a href="http://www.hungry.com/~pere/blog/archive/2024/12/">December (1)</a></li>
332
333 </ul></li>
334
335 <li>2023
336 <ul>
337
338 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/01/">January (3)</a></li>
339
340 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/02/">February (1)</a></li>
341
342 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/04/">April (2)</a></li>
343
344 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/05/">May (3)</a></li>
345
346 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/06/">June (1)</a></li>
347
348 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/08/">August (1)</a></li>
349
350 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/09/">September (1)</a></li>
351
352 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/10/">October (1)</a></li>
353
354 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/11/">November (4)</a></li>
355
356 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/12/">December (1)</a></li>
357
358 </ul></li>
359
360 <li>2022
361 <ul>
362
363 <li><a href="http://www.hungry.com/~pere/blog/archive/2022/02/">February (1)</a></li>
364
365 <li><a href="http://www.hungry.com/~pere/blog/archive/2022/03/">March (3)</a></li>
366
367 <li><a href="http://www.hungry.com/~pere/blog/archive/2022/04/">April (2)</a></li>
368
369 <li><a href="http://www.hungry.com/~pere/blog/archive/2022/06/">June (2)</a></li>
370
371 <li><a href="http://www.hungry.com/~pere/blog/archive/2022/07/">July (1)</a></li>
372
373 <li><a href="http://www.hungry.com/~pere/blog/archive/2022/09/">September (1)</a></li>
374
375 <li><a href="http://www.hungry.com/~pere/blog/archive/2022/10/">October (1)</a></li>
376
377 <li><a href="http://www.hungry.com/~pere/blog/archive/2022/12/">December (1)</a></li>
378
379 </ul></li>
380
381 <li>2021
382 <ul>
383
384 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/01/">January (2)</a></li>
385
386 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/02/">February (1)</a></li>
387
388 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/05/">May (1)</a></li>
389
390 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/06/">June (1)</a></li>
391
392 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/07/">July (3)</a></li>
393
394 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/08/">August (1)</a></li>
395
396 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/09/">September (1)</a></li>
397
398 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/10/">October (1)</a></li>
399
400 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/12/">December (1)</a></li>
401
402 </ul></li>
403
404 <li>2020
405 <ul>
406
407 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/02/">February (2)</a></li>
408
409 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/03/">March (2)</a></li>
410
411 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/04/">April (2)</a></li>
412
413 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/05/">May (3)</a></li>
414
415 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/06/">June (2)</a></li>
416
417 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/07/">July (1)</a></li>
418
419 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/09/">September (1)</a></li>
420
421 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/10/">October (1)</a></li>
422
423 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/11/">November (1)</a></li>
424
425 </ul></li>
426
427 <li>2019
428 <ul>
429
430 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/01/">January (4)</a></li>
431
432 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/02/">February (3)</a></li>
433
434 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/03/">March (3)</a></li>
435
436 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/05/">May (2)</a></li>
437
438 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/06/">June (5)</a></li>
439
440 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/07/">July (2)</a></li>
441
442 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/08/">August (1)</a></li>
443
444 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/09/">September (1)</a></li>
445
446 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/11/">November (1)</a></li>
447
448 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/12/">December (4)</a></li>
449
450 </ul></li>
451
452 <li>2018
453 <ul>
454
455 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/01/">January (1)</a></li>
456
457 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/02/">February (5)</a></li>
458
459 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/03/">March (5)</a></li>
460
461 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/04/">April (3)</a></li>
462
463 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/06/">June (2)</a></li>
464
465 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/07/">July (5)</a></li>
466
467 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/08/">August (3)</a></li>
468
469 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/09/">September (3)</a></li>
470
471 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/10/">October (5)</a></li>
472
473 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/11/">November (2)</a></li>
474
475 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/12/">December (4)</a></li>
476
477 </ul></li>
478
479 <li>2017
480 <ul>
481
482 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/01/">January (4)</a></li>
483
484 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/02/">February (3)</a></li>
485
486 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/03/">March (5)</a></li>
487
488 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/04/">April (2)</a></li>
489
490 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/06/">June (5)</a></li>
491
492 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/07/">July (1)</a></li>
493
494 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/08/">August (1)</a></li>
495
496 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/09/">September (3)</a></li>
497
498 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/10/">October (5)</a></li>
499
500 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/11/">November (3)</a></li>
501
502 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/12/">December (4)</a></li>
503
504 </ul></li>
505
506 <li>2016
507 <ul>
508
509 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/01/">January (3)</a></li>
510
511 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/02/">February (2)</a></li>
512
513 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/03/">March (3)</a></li>
514
515 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/04/">April (8)</a></li>
516
517 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/05/">May (8)</a></li>
518
519 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/06/">June (2)</a></li>
520
521 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/07/">July (2)</a></li>
522
523 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/08/">August (5)</a></li>
524
525 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/09/">September (2)</a></li>
526
527 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/10/">October (3)</a></li>
528
529 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/11/">November (8)</a></li>
530
531 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/12/">December (5)</a></li>
532
533 </ul></li>
534
535 <li>2015
536 <ul>
537
538 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/01/">January (7)</a></li>
539
540 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/02/">February (6)</a></li>
541
542 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/03/">March (1)</a></li>
543
544 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/04/">April (4)</a></li>
545
546 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/05/">May (3)</a></li>
547
548 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/06/">June (4)</a></li>
549
550 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/07/">July (6)</a></li>
551
552 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/08/">August (2)</a></li>
553
554 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/09/">September (2)</a></li>
555
556 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/10/">October (9)</a></li>
557
558 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/11/">November (6)</a></li>
559
560 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/12/">December (3)</a></li>
561
562 </ul></li>
563
564 <li>2014
565 <ul>
566
567 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/01/">January (2)</a></li>
568
569 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/02/">February (3)</a></li>
570
571 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/03/">March (8)</a></li>
572
573 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/04/">April (7)</a></li>
574
575 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/05/">May (1)</a></li>
576
577 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/06/">June (2)</a></li>
578
579 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/07/">July (2)</a></li>
580
581 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/08/">August (2)</a></li>
582
583 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/09/">September (5)</a></li>
584
585 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/10/">October (6)</a></li>
586
587 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/11/">November (3)</a></li>
588
589 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/12/">December (5)</a></li>
590
591 </ul></li>
592
593 <li>2013
594 <ul>
595
596 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/01/">January (11)</a></li>
597
598 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/02/">February (9)</a></li>
599
600 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/03/">March (9)</a></li>
601
602 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/04/">April (6)</a></li>
603
604 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/05/">May (9)</a></li>
605
606 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/06/">June (10)</a></li>
607
608 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/07/">July (7)</a></li>
609
610 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/08/">August (3)</a></li>
611
612 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/09/">September (5)</a></li>
613
614 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/10/">October (7)</a></li>
615
616 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/11/">November (9)</a></li>
617
618 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/12/">December (3)</a></li>
619
620 </ul></li>
621
622 <li>2012
623 <ul>
624
625 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/01/">January (7)</a></li>
626
627 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/02/">February (10)</a></li>
628
629 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/03/">March (17)</a></li>
630
631 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/04/">April (12)</a></li>
632
633 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/05/">May (12)</a></li>
634
635 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/06/">June (20)</a></li>
636
637 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/07/">July (17)</a></li>
638
639 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/08/">August (6)</a></li>
640
641 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/09/">September (9)</a></li>
642
643 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/10/">October (17)</a></li>
644
645 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/11/">November (10)</a></li>
646
647 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/12/">December (7)</a></li>
648
649 </ul></li>
650
651 <li>2011
652 <ul>
653
654 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/01/">January (16)</a></li>
655
656 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/02/">February (6)</a></li>
657
658 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/03/">March (6)</a></li>
659
660 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/04/">April (7)</a></li>
661
662 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/05/">May (3)</a></li>
663
664 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/06/">June (2)</a></li>
665
666 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/07/">July (7)</a></li>
667
668 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/08/">August (6)</a></li>
669
670 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/09/">September (4)</a></li>
671
672 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/10/">October (2)</a></li>
673
674 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/11/">November (3)</a></li>
675
676 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/12/">December (1)</a></li>
677
678 </ul></li>
679
680 <li>2010
681 <ul>
682
683 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/01/">January (2)</a></li>
684
685 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/02/">February (1)</a></li>
686
687 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/03/">March (3)</a></li>
688
689 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/04/">April (3)</a></li>
690
691 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/05/">May (9)</a></li>
692
693 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/06/">June (14)</a></li>
694
695 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/07/">July (12)</a></li>
696
697 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/08/">August (13)</a></li>
698
699 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/09/">September (7)</a></li>
700
701 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/10/">October (9)</a></li>
702
703 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/11/">November (13)</a></li>
704
705 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/12/">December (12)</a></li>
706
707 </ul></li>
708
709 <li>2009
710 <ul>
711
712 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/01/">January (8)</a></li>
713
714 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/02/">February (8)</a></li>
715
716 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/03/">March (12)</a></li>
717
718 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/04/">April (10)</a></li>
719
720 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/05/">May (9)</a></li>
721
722 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/06/">June (3)</a></li>
723
724 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/07/">July (4)</a></li>
725
726 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/08/">August (3)</a></li>
727
728 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/09/">September (1)</a></li>
729
730 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/10/">October (2)</a></li>
731
732 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/11/">November (3)</a></li>
733
734 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/12/">December (3)</a></li>
735
736 </ul></li>
737
738 <li>2008
739 <ul>
740
741 <li><a href="http://www.hungry.com/~pere/blog/archive/2008/11/">November (5)</a></li>
742
743 <li><a href="http://www.hungry.com/~pere/blog/archive/2008/12/">December (7)</a></li>
744
745 </ul></li>
746
747 </ul>
748
749
750
751 <h2>Tags</h2>
752 <ul>
753
754 <li><a href="http://www.hungry.com/~pere/blog/tags/3d-printer">3d-printer (19)</a></li>
755
756 <li><a href="http://www.hungry.com/~pere/blog/tags/amiga">amiga (1)</a></li>
757
758 <li><a href="http://www.hungry.com/~pere/blog/tags/aros">aros (1)</a></li>
759
760 <li><a href="http://www.hungry.com/~pere/blog/tags/bankid">bankid (4)</a></li>
761
762 <li><a href="http://www.hungry.com/~pere/blog/tags/betalkontant">betalkontant (9)</a></li>
763
764 <li><a href="http://www.hungry.com/~pere/blog/tags/bitcoin">bitcoin (13)</a></li>
765
766 <li><a href="http://www.hungry.com/~pere/blog/tags/bootsystem">bootsystem (17)</a></li>
767
768 <li><a href="http://www.hungry.com/~pere/blog/tags/bsa">bsa (2)</a></li>
769
770 <li><a href="http://www.hungry.com/~pere/blog/tags/chrpath">chrpath (3)</a></li>
771
772 <li><a href="http://www.hungry.com/~pere/blog/tags/debian">debian (209)</a></li>
773
774 <li><a href="http://www.hungry.com/~pere/blog/tags/debian edu">debian edu (159)</a></li>
775
776 <li><a href="http://www.hungry.com/~pere/blog/tags/debian-handbook">debian-handbook (9)</a></li>
777
778 <li><a href="http://www.hungry.com/~pere/blog/tags/digistan">digistan (11)</a></li>
779
780 <li><a href="http://www.hungry.com/~pere/blog/tags/dld">dld (18)</a></li>
781
782 <li><a href="http://www.hungry.com/~pere/blog/tags/docbook">docbook (33)</a></li>
783
784 <li><a href="http://www.hungry.com/~pere/blog/tags/drivstoffpriser">drivstoffpriser (4)</a></li>
785
786 <li><a href="http://www.hungry.com/~pere/blog/tags/english">english (471)</a></li>
787
788 <li><a href="http://www.hungry.com/~pere/blog/tags/fiksgatami">fiksgatami (23)</a></li>
789
790 <li><a href="http://www.hungry.com/~pere/blog/tags/fildeling">fildeling (14)</a></li>
791
792 <li><a href="http://www.hungry.com/~pere/blog/tags/freeculture">freeculture (34)</a></li>
793
794 <li><a href="http://www.hungry.com/~pere/blog/tags/freedombox">freedombox (9)</a></li>
795
796 <li><a href="http://www.hungry.com/~pere/blog/tags/frikanalen">frikanalen (20)</a></li>
797
798 <li><a href="http://www.hungry.com/~pere/blog/tags/h264">h264 (20)</a></li>
799
800 <li><a href="http://www.hungry.com/~pere/blog/tags/intervju">intervju (43)</a></li>
801
802 <li><a href="http://www.hungry.com/~pere/blog/tags/isenkram">isenkram (21)</a></li>
803
804 <li><a href="http://www.hungry.com/~pere/blog/tags/kart">kart (23)</a></li>
805
806 <li><a href="http://www.hungry.com/~pere/blog/tags/kodi">kodi (6)</a></li>
807
808 <li><a href="http://www.hungry.com/~pere/blog/tags/ldap">ldap (9)</a></li>
809
810 <li><a href="http://www.hungry.com/~pere/blog/tags/lego">lego (5)</a></li>
811
812 <li><a href="http://www.hungry.com/~pere/blog/tags/lenker">lenker (8)</a></li>
813
814 <li><a href="http://www.hungry.com/~pere/blog/tags/linuxcnc">linuxcnc (8)</a></li>
815
816 <li><a href="http://www.hungry.com/~pere/blog/tags/lsdvd">lsdvd (3)</a></li>
817
818 <li><a href="http://www.hungry.com/~pere/blog/tags/ltsp">ltsp (1)</a></li>
819
820 <li><a href="http://www.hungry.com/~pere/blog/tags/madewithcc">madewithcc (3)</a></li>
821
822 <li><a href="http://www.hungry.com/~pere/blog/tags/mesh network">mesh network (8)</a></li>
823
824 <li><a href="http://www.hungry.com/~pere/blog/tags/multimedia">multimedia (48)</a></li>
825
826 <li><a href="http://www.hungry.com/~pere/blog/tags/nice free software">nice free software (15)</a></li>
827
828 <li><a href="http://www.hungry.com/~pere/blog/tags/noark5">noark5 (27)</a></li>
829
830 <li><a href="http://www.hungry.com/~pere/blog/tags/norsk">norsk (326)</a></li>
831
832 <li><a href="http://www.hungry.com/~pere/blog/tags/nuug">nuug (200)</a></li>
833
834 <li><a href="http://www.hungry.com/~pere/blog/tags/offentlig innsyn">offentlig innsyn (42)</a></li>
835
836 <li><a href="http://www.hungry.com/~pere/blog/tags/open311">open311 (2)</a></li>
837
838 <li><a href="http://www.hungry.com/~pere/blog/tags/opensnitch">opensnitch (4)</a></li>
839
840 <li><a href="http://www.hungry.com/~pere/blog/tags/opphavsrett">opphavsrett (76)</a></li>
841
842 <li><a href="http://www.hungry.com/~pere/blog/tags/personvern">personvern (114)</a></li>
843
844 <li><a href="http://www.hungry.com/~pere/blog/tags/raid">raid (4)</a></li>
845
846 <li><a href="http://www.hungry.com/~pere/blog/tags/reactos">reactos (1)</a></li>
847
848 <li><a href="http://www.hungry.com/~pere/blog/tags/reprap">reprap (11)</a></li>
849
850 <li><a href="http://www.hungry.com/~pere/blog/tags/rfid">rfid (3)</a></li>
851
852 <li><a href="http://www.hungry.com/~pere/blog/tags/robot">robot (17)</a></li>
853
854 <li><a href="http://www.hungry.com/~pere/blog/tags/rss">rss (1)</a></li>
855
856 <li><a href="http://www.hungry.com/~pere/blog/tags/ruter">ruter (7)</a></li>
857
858 <li><a href="http://www.hungry.com/~pere/blog/tags/scraperwiki">scraperwiki (2)</a></li>
859
860 <li><a href="http://www.hungry.com/~pere/blog/tags/sikkerhet">sikkerhet (60)</a></li>
861
862 <li><a href="http://www.hungry.com/~pere/blog/tags/sitesummary">sitesummary (4)</a></li>
863
864 <li><a href="http://www.hungry.com/~pere/blog/tags/skepsis">skepsis (5)</a></li>
865
866 <li><a href="http://www.hungry.com/~pere/blog/tags/standard">standard (80)</a></li>
867
868 <li><a href="http://www.hungry.com/~pere/blog/tags/stavekontroll">stavekontroll (7)</a></li>
869
870 <li><a href="http://www.hungry.com/~pere/blog/tags/stortinget">stortinget (14)</a></li>
871
872 <li><a href="http://www.hungry.com/~pere/blog/tags/surveillance">surveillance (65)</a></li>
873
874 <li><a href="http://www.hungry.com/~pere/blog/tags/sysadmin">sysadmin (6)</a></li>
875
876 <li><a href="http://www.hungry.com/~pere/blog/tags/usenix">usenix (2)</a></li>
877
878 <li><a href="http://www.hungry.com/~pere/blog/tags/valg">valg (9)</a></li>
879
880 <li><a href="http://www.hungry.com/~pere/blog/tags/verkidetfri">verkidetfri (23)</a></li>
881
882 <li><a href="http://www.hungry.com/~pere/blog/tags/video">video (82)</a></li>
883
884 <li><a href="http://www.hungry.com/~pere/blog/tags/vitenskap">vitenskap (4)</a></li>
885
886 <li><a href="http://www.hungry.com/~pere/blog/tags/web">web (42)</a></li>
887
888 </ul>
889
890
891 </div>
892 <p style="text-align: right">
893 Created by <a href="http://steve.org.uk/Software/chronicle">Chronicle v4.6</a>
894 </p>
895
896 </body>
897 </html>