]> pere.pagekite.me Git - homepage.git/blob - blog/archive/2024/03/index.html
Converted pages to actually temp site.
[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>2024
306 <ul>
307
308 <li><a href="http://www.hungry.com/~pere/blog/archive/2024/01/">January (1)</a></li>
309
310 <li><a href="http://www.hungry.com/~pere/blog/archive/2024/02/">February (1)</a></li>
311
312 <li><a href="http://www.hungry.com/~pere/blog/archive/2024/03/">March (2)</a></li>
313
314 <li><a href="http://www.hungry.com/~pere/blog/archive/2024/04/">April (3)</a></li>
315
316 <li><a href="http://www.hungry.com/~pere/blog/archive/2024/05/">May (1)</a></li>
317
318 <li><a href="http://www.hungry.com/~pere/blog/archive/2024/06/">June (1)</a></li>
319
320 <li><a href="http://www.hungry.com/~pere/blog/archive/2024/07/">July (2)</a></li>
321
322 </ul></li>
323
324 <li>2023
325 <ul>
326
327 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/01/">January (3)</a></li>
328
329 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/02/">February (1)</a></li>
330
331 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/04/">April (2)</a></li>
332
333 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/05/">May (3)</a></li>
334
335 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/06/">June (1)</a></li>
336
337 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/08/">August (1)</a></li>
338
339 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/09/">September (1)</a></li>
340
341 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/10/">October (1)</a></li>
342
343 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/11/">November (4)</a></li>
344
345 <li><a href="http://www.hungry.com/~pere/blog/archive/2023/12/">December (1)</a></li>
346
347 </ul></li>
348
349 <li>2022
350 <ul>
351
352 <li><a href="http://www.hungry.com/~pere/blog/archive/2022/02/">February (1)</a></li>
353
354 <li><a href="http://www.hungry.com/~pere/blog/archive/2022/03/">March (3)</a></li>
355
356 <li><a href="http://www.hungry.com/~pere/blog/archive/2022/04/">April (2)</a></li>
357
358 <li><a href="http://www.hungry.com/~pere/blog/archive/2022/06/">June (2)</a></li>
359
360 <li><a href="http://www.hungry.com/~pere/blog/archive/2022/07/">July (1)</a></li>
361
362 <li><a href="http://www.hungry.com/~pere/blog/archive/2022/09/">September (1)</a></li>
363
364 <li><a href="http://www.hungry.com/~pere/blog/archive/2022/10/">October (1)</a></li>
365
366 <li><a href="http://www.hungry.com/~pere/blog/archive/2022/12/">December (1)</a></li>
367
368 </ul></li>
369
370 <li>2021
371 <ul>
372
373 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/01/">January (2)</a></li>
374
375 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/02/">February (1)</a></li>
376
377 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/05/">May (1)</a></li>
378
379 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/06/">June (1)</a></li>
380
381 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/07/">July (3)</a></li>
382
383 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/08/">August (1)</a></li>
384
385 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/09/">September (1)</a></li>
386
387 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/10/">October (1)</a></li>
388
389 <li><a href="http://www.hungry.com/~pere/blog/archive/2021/12/">December (1)</a></li>
390
391 </ul></li>
392
393 <li>2020
394 <ul>
395
396 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/02/">February (2)</a></li>
397
398 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/03/">March (2)</a></li>
399
400 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/04/">April (2)</a></li>
401
402 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/05/">May (3)</a></li>
403
404 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/06/">June (2)</a></li>
405
406 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/07/">July (1)</a></li>
407
408 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/09/">September (1)</a></li>
409
410 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/10/">October (1)</a></li>
411
412 <li><a href="http://www.hungry.com/~pere/blog/archive/2020/11/">November (1)</a></li>
413
414 </ul></li>
415
416 <li>2019
417 <ul>
418
419 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/01/">January (4)</a></li>
420
421 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/02/">February (3)</a></li>
422
423 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/03/">March (3)</a></li>
424
425 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/05/">May (2)</a></li>
426
427 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/06/">June (5)</a></li>
428
429 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/07/">July (2)</a></li>
430
431 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/08/">August (1)</a></li>
432
433 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/09/">September (1)</a></li>
434
435 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/11/">November (1)</a></li>
436
437 <li><a href="http://www.hungry.com/~pere/blog/archive/2019/12/">December (4)</a></li>
438
439 </ul></li>
440
441 <li>2018
442 <ul>
443
444 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/01/">January (1)</a></li>
445
446 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/02/">February (5)</a></li>
447
448 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/03/">March (5)</a></li>
449
450 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/04/">April (3)</a></li>
451
452 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/06/">June (2)</a></li>
453
454 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/07/">July (5)</a></li>
455
456 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/08/">August (3)</a></li>
457
458 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/09/">September (3)</a></li>
459
460 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/10/">October (5)</a></li>
461
462 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/11/">November (2)</a></li>
463
464 <li><a href="http://www.hungry.com/~pere/blog/archive/2018/12/">December (4)</a></li>
465
466 </ul></li>
467
468 <li>2017
469 <ul>
470
471 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/01/">January (4)</a></li>
472
473 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/02/">February (3)</a></li>
474
475 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/03/">March (5)</a></li>
476
477 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/04/">April (2)</a></li>
478
479 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/06/">June (5)</a></li>
480
481 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/07/">July (1)</a></li>
482
483 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/08/">August (1)</a></li>
484
485 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/09/">September (3)</a></li>
486
487 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/10/">October (5)</a></li>
488
489 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/11/">November (3)</a></li>
490
491 <li><a href="http://www.hungry.com/~pere/blog/archive/2017/12/">December (4)</a></li>
492
493 </ul></li>
494
495 <li>2016
496 <ul>
497
498 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/01/">January (3)</a></li>
499
500 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/02/">February (2)</a></li>
501
502 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/03/">March (3)</a></li>
503
504 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/04/">April (8)</a></li>
505
506 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/05/">May (8)</a></li>
507
508 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/06/">June (2)</a></li>
509
510 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/07/">July (2)</a></li>
511
512 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/08/">August (5)</a></li>
513
514 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/09/">September (2)</a></li>
515
516 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/10/">October (3)</a></li>
517
518 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/11/">November (8)</a></li>
519
520 <li><a href="http://www.hungry.com/~pere/blog/archive/2016/12/">December (5)</a></li>
521
522 </ul></li>
523
524 <li>2015
525 <ul>
526
527 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/01/">January (7)</a></li>
528
529 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/02/">February (6)</a></li>
530
531 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/03/">March (1)</a></li>
532
533 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/04/">April (4)</a></li>
534
535 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/05/">May (3)</a></li>
536
537 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/06/">June (4)</a></li>
538
539 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/07/">July (6)</a></li>
540
541 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/08/">August (2)</a></li>
542
543 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/09/">September (2)</a></li>
544
545 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/10/">October (9)</a></li>
546
547 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/11/">November (6)</a></li>
548
549 <li><a href="http://www.hungry.com/~pere/blog/archive/2015/12/">December (3)</a></li>
550
551 </ul></li>
552
553 <li>2014
554 <ul>
555
556 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/01/">January (2)</a></li>
557
558 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/02/">February (3)</a></li>
559
560 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/03/">March (8)</a></li>
561
562 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/04/">April (7)</a></li>
563
564 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/05/">May (1)</a></li>
565
566 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/06/">June (2)</a></li>
567
568 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/07/">July (2)</a></li>
569
570 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/08/">August (2)</a></li>
571
572 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/09/">September (5)</a></li>
573
574 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/10/">October (6)</a></li>
575
576 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/11/">November (3)</a></li>
577
578 <li><a href="http://www.hungry.com/~pere/blog/archive/2014/12/">December (5)</a></li>
579
580 </ul></li>
581
582 <li>2013
583 <ul>
584
585 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/01/">January (11)</a></li>
586
587 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/02/">February (9)</a></li>
588
589 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/03/">March (9)</a></li>
590
591 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/04/">April (6)</a></li>
592
593 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/05/">May (9)</a></li>
594
595 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/06/">June (10)</a></li>
596
597 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/07/">July (7)</a></li>
598
599 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/08/">August (3)</a></li>
600
601 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/09/">September (5)</a></li>
602
603 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/10/">October (7)</a></li>
604
605 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/11/">November (9)</a></li>
606
607 <li><a href="http://www.hungry.com/~pere/blog/archive/2013/12/">December (3)</a></li>
608
609 </ul></li>
610
611 <li>2012
612 <ul>
613
614 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/01/">January (7)</a></li>
615
616 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/02/">February (10)</a></li>
617
618 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/03/">March (17)</a></li>
619
620 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/04/">April (12)</a></li>
621
622 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/05/">May (12)</a></li>
623
624 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/06/">June (20)</a></li>
625
626 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/07/">July (17)</a></li>
627
628 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/08/">August (6)</a></li>
629
630 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/09/">September (9)</a></li>
631
632 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/10/">October (17)</a></li>
633
634 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/11/">November (10)</a></li>
635
636 <li><a href="http://www.hungry.com/~pere/blog/archive/2012/12/">December (7)</a></li>
637
638 </ul></li>
639
640 <li>2011
641 <ul>
642
643 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/01/">January (16)</a></li>
644
645 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/02/">February (6)</a></li>
646
647 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/03/">March (6)</a></li>
648
649 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/04/">April (7)</a></li>
650
651 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/05/">May (3)</a></li>
652
653 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/06/">June (2)</a></li>
654
655 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/07/">July (7)</a></li>
656
657 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/08/">August (6)</a></li>
658
659 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/09/">September (4)</a></li>
660
661 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/10/">October (2)</a></li>
662
663 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/11/">November (3)</a></li>
664
665 <li><a href="http://www.hungry.com/~pere/blog/archive/2011/12/">December (1)</a></li>
666
667 </ul></li>
668
669 <li>2010
670 <ul>
671
672 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/01/">January (2)</a></li>
673
674 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/02/">February (1)</a></li>
675
676 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/03/">March (3)</a></li>
677
678 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/04/">April (3)</a></li>
679
680 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/05/">May (9)</a></li>
681
682 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/06/">June (14)</a></li>
683
684 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/07/">July (12)</a></li>
685
686 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/08/">August (13)</a></li>
687
688 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/09/">September (7)</a></li>
689
690 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/10/">October (9)</a></li>
691
692 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/11/">November (13)</a></li>
693
694 <li><a href="http://www.hungry.com/~pere/blog/archive/2010/12/">December (12)</a></li>
695
696 </ul></li>
697
698 <li>2009
699 <ul>
700
701 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/01/">January (8)</a></li>
702
703 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/02/">February (8)</a></li>
704
705 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/03/">March (12)</a></li>
706
707 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/04/">April (10)</a></li>
708
709 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/05/">May (9)</a></li>
710
711 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/06/">June (3)</a></li>
712
713 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/07/">July (4)</a></li>
714
715 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/08/">August (3)</a></li>
716
717 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/09/">September (1)</a></li>
718
719 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/10/">October (2)</a></li>
720
721 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/11/">November (3)</a></li>
722
723 <li><a href="http://www.hungry.com/~pere/blog/archive/2009/12/">December (3)</a></li>
724
725 </ul></li>
726
727 <li>2008
728 <ul>
729
730 <li><a href="http://www.hungry.com/~pere/blog/archive/2008/11/">November (5)</a></li>
731
732 <li><a href="http://www.hungry.com/~pere/blog/archive/2008/12/">December (7)</a></li>
733
734 </ul></li>
735
736 </ul>
737
738
739
740 <h2>Tags</h2>
741 <ul>
742
743 <li><a href="http://www.hungry.com/~pere/blog/tags/3d-printer">3d-printer (19)</a></li>
744
745 <li><a href="http://www.hungry.com/~pere/blog/tags/amiga">amiga (1)</a></li>
746
747 <li><a href="http://www.hungry.com/~pere/blog/tags/aros">aros (1)</a></li>
748
749 <li><a href="http://www.hungry.com/~pere/blog/tags/bankid">bankid (4)</a></li>
750
751 <li><a href="http://www.hungry.com/~pere/blog/tags/betalkontant">betalkontant (9)</a></li>
752
753 <li><a href="http://www.hungry.com/~pere/blog/tags/bitcoin">bitcoin (13)</a></li>
754
755 <li><a href="http://www.hungry.com/~pere/blog/tags/bootsystem">bootsystem (17)</a></li>
756
757 <li><a href="http://www.hungry.com/~pere/blog/tags/bsa">bsa (2)</a></li>
758
759 <li><a href="http://www.hungry.com/~pere/blog/tags/chrpath">chrpath (3)</a></li>
760
761 <li><a href="http://www.hungry.com/~pere/blog/tags/debian">debian (202)</a></li>
762
763 <li><a href="http://www.hungry.com/~pere/blog/tags/debian edu">debian edu (159)</a></li>
764
765 <li><a href="http://www.hungry.com/~pere/blog/tags/debian-handbook">debian-handbook (9)</a></li>
766
767 <li><a href="http://www.hungry.com/~pere/blog/tags/digistan">digistan (11)</a></li>
768
769 <li><a href="http://www.hungry.com/~pere/blog/tags/dld">dld (18)</a></li>
770
771 <li><a href="http://www.hungry.com/~pere/blog/tags/docbook">docbook (33)</a></li>
772
773 <li><a href="http://www.hungry.com/~pere/blog/tags/drivstoffpriser">drivstoffpriser (4)</a></li>
774
775 <li><a href="http://www.hungry.com/~pere/blog/tags/english">english (464)</a></li>
776
777 <li><a href="http://www.hungry.com/~pere/blog/tags/fiksgatami">fiksgatami (23)</a></li>
778
779 <li><a href="http://www.hungry.com/~pere/blog/tags/fildeling">fildeling (14)</a></li>
780
781 <li><a href="http://www.hungry.com/~pere/blog/tags/freeculture">freeculture (34)</a></li>
782
783 <li><a href="http://www.hungry.com/~pere/blog/tags/freedombox">freedombox (9)</a></li>
784
785 <li><a href="http://www.hungry.com/~pere/blog/tags/frikanalen">frikanalen (20)</a></li>
786
787 <li><a href="http://www.hungry.com/~pere/blog/tags/h264">h264 (20)</a></li>
788
789 <li><a href="http://www.hungry.com/~pere/blog/tags/intervju">intervju (43)</a></li>
790
791 <li><a href="http://www.hungry.com/~pere/blog/tags/isenkram">isenkram (18)</a></li>
792
793 <li><a href="http://www.hungry.com/~pere/blog/tags/kart">kart (23)</a></li>
794
795 <li><a href="http://www.hungry.com/~pere/blog/tags/kodi">kodi (6)</a></li>
796
797 <li><a href="http://www.hungry.com/~pere/blog/tags/ldap">ldap (9)</a></li>
798
799 <li><a href="http://www.hungry.com/~pere/blog/tags/lego">lego (5)</a></li>
800
801 <li><a href="http://www.hungry.com/~pere/blog/tags/lenker">lenker (8)</a></li>
802
803 <li><a href="http://www.hungry.com/~pere/blog/tags/linuxcnc">linuxcnc (7)</a></li>
804
805 <li><a href="http://www.hungry.com/~pere/blog/tags/lsdvd">lsdvd (2)</a></li>
806
807 <li><a href="http://www.hungry.com/~pere/blog/tags/ltsp">ltsp (1)</a></li>
808
809 <li><a href="http://www.hungry.com/~pere/blog/tags/madewithcc">madewithcc (3)</a></li>
810
811 <li><a href="http://www.hungry.com/~pere/blog/tags/mesh network">mesh network (8)</a></li>
812
813 <li><a href="http://www.hungry.com/~pere/blog/tags/multimedia">multimedia (46)</a></li>
814
815 <li><a href="http://www.hungry.com/~pere/blog/tags/nice free software">nice free software (15)</a></li>
816
817 <li><a href="http://www.hungry.com/~pere/blog/tags/noark5">noark5 (25)</a></li>
818
819 <li><a href="http://www.hungry.com/~pere/blog/tags/norsk">norsk (325)</a></li>
820
821 <li><a href="http://www.hungry.com/~pere/blog/tags/nuug">nuug (199)</a></li>
822
823 <li><a href="http://www.hungry.com/~pere/blog/tags/offentlig innsyn">offentlig innsyn (41)</a></li>
824
825 <li><a href="http://www.hungry.com/~pere/blog/tags/open311">open311 (2)</a></li>
826
827 <li><a href="http://www.hungry.com/~pere/blog/tags/opensnitch">opensnitch (4)</a></li>
828
829 <li><a href="http://www.hungry.com/~pere/blog/tags/opphavsrett">opphavsrett (76)</a></li>
830
831 <li><a href="http://www.hungry.com/~pere/blog/tags/personvern">personvern (114)</a></li>
832
833 <li><a href="http://www.hungry.com/~pere/blog/tags/raid">raid (4)</a></li>
834
835 <li><a href="http://www.hungry.com/~pere/blog/tags/reactos">reactos (1)</a></li>
836
837 <li><a href="http://www.hungry.com/~pere/blog/tags/reprap">reprap (11)</a></li>
838
839 <li><a href="http://www.hungry.com/~pere/blog/tags/rfid">rfid (3)</a></li>
840
841 <li><a href="http://www.hungry.com/~pere/blog/tags/robot">robot (17)</a></li>
842
843 <li><a href="http://www.hungry.com/~pere/blog/tags/rss">rss (1)</a></li>
844
845 <li><a href="http://www.hungry.com/~pere/blog/tags/ruter">ruter (7)</a></li>
846
847 <li><a href="http://www.hungry.com/~pere/blog/tags/scraperwiki">scraperwiki (2)</a></li>
848
849 <li><a href="http://www.hungry.com/~pere/blog/tags/sikkerhet">sikkerhet (60)</a></li>
850
851 <li><a href="http://www.hungry.com/~pere/blog/tags/sitesummary">sitesummary (4)</a></li>
852
853 <li><a href="http://www.hungry.com/~pere/blog/tags/skepsis">skepsis (5)</a></li>
854
855 <li><a href="http://www.hungry.com/~pere/blog/tags/standard">standard (76)</a></li>
856
857 <li><a href="http://www.hungry.com/~pere/blog/tags/stavekontroll">stavekontroll (7)</a></li>
858
859 <li><a href="http://www.hungry.com/~pere/blog/tags/stortinget">stortinget (14)</a></li>
860
861 <li><a href="http://www.hungry.com/~pere/blog/tags/surveillance">surveillance (65)</a></li>
862
863 <li><a href="http://www.hungry.com/~pere/blog/tags/sysadmin">sysadmin (5)</a></li>
864
865 <li><a href="http://www.hungry.com/~pere/blog/tags/usenix">usenix (2)</a></li>
866
867 <li><a href="http://www.hungry.com/~pere/blog/tags/valg">valg (9)</a></li>
868
869 <li><a href="http://www.hungry.com/~pere/blog/tags/verkidetfri">verkidetfri (22)</a></li>
870
871 <li><a href="http://www.hungry.com/~pere/blog/tags/video">video (80)</a></li>
872
873 <li><a href="http://www.hungry.com/~pere/blog/tags/vitenskap">vitenskap (4)</a></li>
874
875 <li><a href="http://www.hungry.com/~pere/blog/tags/web">web (42)</a></li>
876
877 </ul>
878
879
880 </div>
881 <p style="text-align: right">
882 Created by <a href="http://steve.org.uk/Software/chronicle">Chronicle v4.6</a>
883 </p>
884
885 </body>
886 </html>