Planet Lysator 2021-11-29T15:00:08+00:00 Up Again! 2021-10-28T22:00:00+00:00 <p>My blog (and server in general) is up again! I still host it on that <a href="">puny server</a>. The problem was however that my parents ISP earlier misbehaved with their DHCP-server, and their front line support not knowing anything.</p> <p>ComHem has however since been bought by Tele2, and while I can't vouch for their customer service, they have at least configured their DHCP server correct, allowing both their home router and this server to get their public IP:s as expected.</p> <p>Now we just hope that everything keeps working until we finally get IPv6.</p> Hugo Hörnquist (hugo) HugoNikanors blogg‽ A blog about nothing, but mostly itself. The sticky bit 2021-03-31T17:10:47+00:00 <p>I recently discovered the Apple <a href="">Data &amp; Privacy website</a>, <a href="">launched May 2018</a>. A few days ago I initiated an export and downloaded the zip files with my data. After unziping, while transfering the files to my FreeBSD/ZFS server, I noticed <code>rsync</code> reporting errors:</p> <p><code>rsync: [generator] failed to set permissions on "ActivitySharing/Activities.json": Inappropriate file type or format (79)</code></p> <p>Turns out some of the files in the Apple export had the <a href="">sticky bit</a> set:</p> <pre><code>$ ls -ahl ActivitySharing total 16 drwxr-xr-x@ 3 dentarg staff 96B Mar 31 18:03 ./ drwxr-xr-x@ 13 dentarg staff 416B Mar 31 18:04 ../ -rw---x--t@ 1 dentarg staff 5.7K Mar 18 14:30 Activities.json* </code></pre> <p>After removing the sticky bit from the files, <code>rsync</code> had no complaints.</p> <pre><code>find . -type f -perm -1000 -print -exec chmod -t {} \; </code></pre> <p>Credits: The Stack Overflow post <a href="">“Find all sticky bit files on my FreeBSD Server”</a></p> dentarg Stuff shared and sometimes created by me. "Unix time numbers are repeated in the second immediately following a positive leap second. The Unix..." 2020-02-04T09:36:07+00:00 “Unix time numbers are repeated in the second immediately following a positive leap second. The Unix time number 1483142400 is thus ambiguous: it can refer either to start of the leap second (2016-12-31 23:59:60) or the end of it, one second later (2017-01-01 00:00:00). In the theoretical case when a negative leap second occurs, no ambiguity is caused, but instead there is a range of Unix time numbers that do not refer to any point in time at all.”<br /><br /> - <em><a href="">Unix time</a></em> dentarg Stuff shared and sometimes created by me. Macro Walking 2019-12-22T23:00:00+00:00 <p>Understanding Lisp-macros is hard, even harder is understanding how to effectively use them. Here I delve deeper into code walking through macros on my journey to really understand what makes Lisp macros, and by extension Lisp, unique.</p> <p>One of the best information sources for advanced macros I have found is the book <a href="">Let over Lambda</a>, which I'm currently (slowly) making my way through. So far the major take-away from it is that macros are my tool for parsing lisp code [Section 5.4].</p> <hr /> <p>The code in this page is written in Guile, but most of it is applicable to any Lisp. <code>Syntax-case</code> appears to be non-standard.</p> <h2>Let Lazy &amp; Symbol Macros</h2> <p>One really simple, but still powerful example of code walking through macros is <code>let-lazy</code>; a variant of <code>let</code> which creates lazy bindings, and only evaluates them on demand. [1].</p> <p>Just to be clear, the expected behavior is the value of a binding is only evaluated if needed, and then only evaluated once. For example:</p> <pre><code>(let-lazy ((x (begin (display "Hello\n") 10))) (+ x x)) ⊣ Hello ⇒ 20 (let-lazy ((x (begin (display "Hello\n") 10))) 'x) ⇒ x</code></pre> <p>Also note that this isn't possible to achieve with functions in an eager language, since function parameters are evaluated before a function is called.</p> <div style="font-size: 80%;"> [1] This assumes that our Lisp already has `delay` and `force` forms. Otherwise they are not much more than wrapping a value in a function, and calling the function to get the value (caching it for future accesses along the way). </div> <hr /> <p>My first naïve solution used a simple macro, along with a manual tree-map.</p> <pre><code>;; apply proc to each node in tree, keeping structure. ;; optionally pass descend: #f to skip a branch. (define* (tree-map proc tree #:key (descend (const #t))) (cond ((not (list? tree)) (proc tree)) ((null? tree) '()) ((list? (car tree)) (cons (if (descend (car tree)) (tree-map proc (car tree) #:descend descend) (car tree)) (tree-map proc (cdr tree) #:descend descend))) (else (cons (proc (car tree)) (tree-map proc (cdr tree) #:descend descend))))) (define (quote? form) (and (not (null? form)) (eq? 'quote (car form)))) (define-macro (let-lazy bindings . body) (let ((keys (map car bindings))) `(let ,(map (lambda (b) `(,(car b) (delay ,@(cdr b)))) bindings) ,@(tree-map (lambda (t) (if (memv t keys) `(force ,t) t)) body #:descend (negate quote?)))))</code></pre> <p>It works decently, but quickly brakes down. For example, something as simple as a back-tick in the body breaks it.</p> <pre><code>(let-lazy ((x (begin (display "Hello\n") 10))) `x) ⇒ (force x)</code></pre> <p>And as Let over Lambda mentions, there are many more special forms in a lisp than expected, and continues to issue the following Common Lisp example, where <em>exactly one</em> of the following <code>blah</code> should be expanded.</p> <pre><code>(let (blah (blah (blah blah))) blah) ;; Borrowed from Let over Lambda under fair use.</code></pre> <hr /> <p>My updated solution instead uses my underlying Lisp interpreter to handle my variable substitution. In the bellow example I introduce my field mappings in a <code>let-syntax</code> towards the bottom, followed by me giving control back to scheme to figure the rest of the tree out.</p> <pre><code>(define-syntax let-lazy (syntax-rules () ;; Match rule, and capture symbols [(_ ((field value) ...) body ...) ;; give symbols their delayed slots (let ((field (delay value)) ...) ;; introduce local syntax for replacing fields with ;; their forced counterparts (let-syntax ((field (identifier-syntax (force field))) ...) body ...))])).</code></pre> <p>The macro is also rewritten in scheme's hygienic macro system. Here it doesn't make a big difference, but identifier-syntax gets happier, and I sleep better knowing that symbols don't slip in our out of macro-expanded code.</p> <h2>Structures and Self Reference</h2> <p>Another more practical example (which actually was written earlier) was my attempt to create objects with an implicit reference to <code>self</code>, similar to C++ or Java. In this example my end goal was a way to generate static configuration files [2], so I could do away with updating slots.</p> <div style="font-size: 80%;"> [2] I later realized I just reinvented Puppet. </div> <p>After expansion my forms look more or less like</p> <pre><code>(define struct-1 `(a (b ,(lambda (self) (get-field self '(c)))))).</code></pre> <p>Of note is that the field /a/b wants the value /c, which is allowed since it doesn't get evaluated before I actually instantiate the object, and that my system allows for rudimentary inheritance.</p> <p>Before expansion the same information is written:</p> <pre><code>(struct struct-1 () (a (b ,(? c))))</code></pre> <p>Which is rather similar. But keep in mind that the <code>(? c)</code> can be deep within arbitrary other code.</p> <hr /> <p>The base macro <code>struct</code> is just basic setup, but is here for completeness sake,</p> <pre><code>;; Comments added for this article. (define-syntax struct (lambda (stx) (syntax-case stx () [(_ name (parent ...) (key value ...) ...) ;; allow the symbol `?' to be used within the ;; input. Required due to hygienic macros (with-syntax ((? (datum-&gt;syntax stx '?))) #'(define name ;; Call to inner (let ((new-data (inner ? (acc-name ,(symbol-&gt;string 'name)) (key value ...) ...))) ;; Inheritance (mostly unimportant) (lambda (mergable) (alist-merge mergable (fold $ new-data (list parent ...)))))))])))</code></pre> <p><code>Inner</code> is however where all the fun stuff happens! To get it out of the way: all rules takes <code>?</code> due to above mentioned hygienic macros, the leaves of the tree are wrapped in functions to delay evaluation, and the first case below matches on <code>unquote</code> (<code>,</code>) in a stroke of <del>ingenuity</del> madness when I realized that I could hijack scheme's syntax for my own bidding.</p> <pre><code>(define-syntax inner (syntax-rules (unquote) ;; case 1 [(_ ? (unquote value)) (lambda (self) ;; actually give a value to `?' (let-syntax ((? (with-ellipsis .. (syntax-rules () [(? path ..) (get-field self `(path ..))])))) ;; give scheme the job to find all intances of (? ...) value))] ;; case 2 [(_ ? (key sub ...) ...) (sort* `((key ,(inner ? sub ...)) ...) symbol&lt;=? #:get car) ] ;; case 3 [(_ _ v v* ...) (lambda _ (values `v `v* ...))]))</code></pre> <p>Relevant to code walking and macros is case one. The <code>self</code> is captured, the <code>?</code> is finally given a value through let-syntax, which uses our captured <code>self</code> in a simple call to <code>get-field</code>. The core is still the same as above; introduce a binding with <code>let-syntax</code> and let our scheme do the job of finding all appropriate instances of our symbol. Here we just have more fancy stuff around it.</p> <hr /> <p>The scripts in their entirety can be found on <a href="">GitHub</a>, even though it feels a bit to intimate to share them this way. <code>Struct</code> there is called <code>account</code>, due to the code's original use case.</p> <h2>References</h2> <h3 id="let-over-lambda">Let over Lambda</h3> <ul> <li>Section 5.4, Code-Walking with Macrolet <a href=""></a></li> <li>Section 7.7, Pandoric Macros (<code>define-handy-method</code>) <a href=""></a></li> </ul> <h3 id="hugonikanor-github">Full Scripts</h3> <ul> <li><a href=""></a></li> </ul> Hugo Hörnquist (hugo) HugoNikanors blogg‽ A blog about nothing, but mostly itself. Scott Galloway on why you have an Amex card, from Pivot. 2019-04-30T20:10:54+00:00 <video id="embed-6155c2e52d3d5484525060" width="400" class="crt-video crt-skin-default" height="225"> <source src="" type="video/mp4"> </source></video> <br /><br /><p>Scott Galloway on why you have an Amex card, from <a href="">Pivot</a>.</p> dentarg Stuff shared and sometimes created by me. Har du data ska du använda den! 2016-10-12T14:34:16+00:00 <p>Alla har vi hört buzz-orden <i>datadriven marknadsföring</i>, <i>marketing automation </i>och liknande. Alla inom marknadsföring pratar om detta. Och digitaliseringen, såklart – det är ju nyckel till framgång – men det är ett annat inlägg.</p> <p> </p> <p>Även om alla pratar om det och alla företag säger att det jobbar med det så dyker man förvånansvärt ofta på exempel där stora och välkända företag gör det ganska enkelt för sig och använder inte den data (alltså din personliga information) de har. Man får tänka på att konkurrensen bland webbshoparna idag är stenhård och det kan vara detaljer som gör att en kund väljer en annan webbshop än just din.</p> <p> </p> <p>Jag tänkte därför plocka fram två färska exempel på företag som skulle kunna föra detta bättre än vad de gör idag. Dessa exempel handlar om något så enkelt som de bekräftelsemail man får när man handlat hos dem. Ett bekräftelsemail har stor potential att dels göra köparen trygg att allt gått som det ska och man kommer få varorna, men det kan även skapa merförsäljning.</p> <p> </p> <h2>Först ut: Footway</h2> <p>En riktigt nice webbutik som funkar väldigt bra och där jag nyss beställde från. Företaget vet precis vad jag köpt – både nu och tidigare – och kan därför passa på att ge mig erbjudande och rabatter.</p> <p><img width="780" alt="footway-mail" src="" class="alignnone size-full wp-image-127" height="608" /></p> <p>Footway, i det här fallet, utnyttjar inte helt sin data här. Jag valde att betala med Klarna, vilket de naturligtvis vet om. Istället för att skriva som de gör ska de naturligtvis skriva något i stil med: ”Du valde att betala med Klarna. Håll utkik efter ett mail från dem med fakturan.” Väldigt enkelt och ger mer trygghet i hur man betalar – eller om man glömt hur man betalade så får man en påminnelse.</p> <p> </p> <p>Här skulle man också kunna ge förslag på andra skor som passar till dem jag köpt och kanske till och med ge rabatt om man köper direkt. Här finns det stora utrymmen för att testa sig fram och med relativt enkla medel skapa merförsäljning i ett läge då kunden ofta är mottagbar för det.</p> <h2>Zalando</h2> <p>Ännu värre är Zalando. De skriver all information i brödtext, vilket gör det lätt att missa och jobbigt att läsa. Känslan av trygghet, som jag tidigare nämnde, försvinner mycket i att de måste förklara olika scenarion i texten.</p> <p><img width="780" alt="zalando-mail" src="" class="alignnone size-full wp-image-129" height="763" /></p> <p>I min beställning skrev jag in mitt mobilnummer, adress och mail.</p> <p> </p> <p>Här borde de skriva ut mitt mobilnummer, vilket skulle göra att de slipper flera meningar i mailet som det ser ut nu. ”Vi kommer skicka ett SMS till dig på 070-123 45 67 när paketet finns att hämta hos dit närmaste postombud.” Hur mycket trevligare är inte det?</p> <p> </p> <p>Jag betalade ordern med mitt kort, men istället för att skriva att allt är betalt och klart så väljer de alltså att skriva ut det väldigt kryptiskt. ”Du har valt följande betalningssätt: <strong>Bank-</strong> eller <strong>kreditkort</strong>.” Kom igen!</p> <p> </p> <p>Zalando försöker ändå med att ge mig 10% rabatt om jag skriver upp mig för deras nyhetsbrev. Att jag redan prenumererar på det verkar inte spela någon roll. Detta skapar frågor istället för att fokusera på det bra erbjudandet.</p> <p> </p> <p>Genom att använda den data (information) jag skrev in vid köpet plus mina tidigare köp så skulle de kunna ta bort mycket av den krångliga texten och istället lyfta fram produkter som jag troligtvis skulle kunna vara intresserad av.</p> <p> </p> <p>De kan fortfarande ge mig rabatt men istället för att få den via att jag registrerar mig för ett nyhetsbrev – som jag alltså redan är prenumerant på – så skulle det t.ex. kunna vara att jag får 10% om jag tipsar en kompis om Zalando.</p> <h2>Finns det några bra exempel då?</h2> <p>Visst finns det bra exempel! är en favorit till mig. De arbetar inte med merförsäljning i bekräftelsemailet utan de arbetar bara med att göra mig som kund trygg i mitt köp, vilket är helt rätt i deras fall.</p> <p><img width="780" alt="hotels-mail" src="" class="alignnone size-full wp-image-128" height="1135" /></p> <p>Först och främst så är det först man ser att allt är betalt och bekräftat. Inte gömt i en brödtext utan stort och tydligt så jag släpper den första oron. De ger mig sen bild på hotellet, adress med länk till karta, telefonnummer till hotellet och precis den information jag som kund är ute efter. Den snyggaste detaljen måste ändå vara att de först skriver informationen på ditt förvalda språk men sen lägger de även till språket i det landet du bokat i. Vilken skön detalj är inte det!?</p> <p> </p> <p>Det finns fortfarande stor potential och möjligheter vad gäller att använda kundernas data i kommunikationen. I dessa fallen var det enbart bekräftelsemail men man ser liknande vid nyhetsbrev och andra marknadsföringskampanjer.</p> <p> </p> <p><b>Slutsatsen blir då</b>: Använd ALL data du har för att förbättra kundupplevelsen, även om det skapar lite merjobb för dig. Det andra är att tänka på de små detaljerna. Vad behöver kunden veta i just detta skede och hur kan vi överträffa förväntningarna?</p> jon Jon Lindholm Ladda ner Vansbro-posters 2016-07-08T14:03:55+00:00 <p>Något man ofta ser på inredningssiter är posters med rena motiv i form av svartvita kartor. Dessa är snygga och ger ett häftigt uttryck på väggarna. Tanken om att göra något liknande, fast mer lokalt, slog mig för ett tag sedan. Därför lägger jag nu ut två varianter av dessa posters föreställande Vansbros gatunät och Vansbro Landmarks, dvs. några utvalda byggnader som har betydelse i gatubilden. Liknande Landmarks-posters finns att köpa över Stockholm, London och New York, för att nämna några städer. Och nu finns även Vansbro i detta angenäma sällskap.</p> <p>Vansbro Landmarks-postern är konturerna av de ånglok som står efter Järnvägsgatan, Lokstallet sett från ena kortsidan, järnvägsbron som går över Vanån och sist, men inte minst, är såklart järnvägsstationen med. Ladda ner dem och be ditt lokala tryckeri att skriva ut dem.<br /> <img width="1200" alt="vansbro-posters-webb-2016" src="" class="big-image-1200 box-shadow alignnone wp-image-110 size-full" height="852" /></p> <h2>Ladda ner</h2> <p>Ladda ner poster av <a href="" target="_blank">karta över Vansbro</a>. <em>Postern är gjord i A3-format (297mm × 420mm) men går att skriva ut i andra storlekar med.</em></p> <p>Ladda ner postern <a href="" target="_blank">Vansbro Landmarks</a>. <em>Postern är gjort 500mm × 700mm men går att skriva ut i andra storlekar.</em></p> <p>Såhär snygga blir de inramade.</p> <p><img width="1200" alt="vansbro-posters-webb-foton-2016" src="" class="big-image-1200 box-shadow alignnone wp-image-109 size-full" height="772" /></p> jon Jon Lindholm Läst under 2014, 2015-01-02T08:59:37+00:00 <img src="" alt="" align="right" style="float: right;"/>Jag brukar tycka att jag borde hinna med att läsa en bok i veckan och även det här året har det stämt: totalsumman blev 54 vilket är ungefär detsamma som de senaste åren.<br /><br />Vad som däremot är noterbart är att jag visst läst mycket mer på engelska än under de närmast föregående åren. Under 2011-2013 kom jag aldrig upp i mer än 38% engelska böcker som mest. I år blev det 67%. Inte mig emot egentligen och en tillbakagång till hur det varit förr när jag flera år passerade 90% men det ett tag sedan sist.<br /><br />Engelska vet jag å andra sidan att jag kan läsa obehindrat. Vad jag skulle vilja är att komma igång att läsa på tyska. Under 2014 har jag läst ett par tidskrifter på tyska och börjat på en ungdomsroman men jag har inte kommit så många sidor i den och får erkänna att det än så länge går lite trögt. Jag får se det som ett mål för 2015 att lära mig att läsa på tyska.<br /><br />De bästa romanerna jag läste under 2014:<br /><br /><ul><li>Mats Strandberg &amp; Sara Bergmark Elfgren: <i>Nyckeln</i></li><li>Jo Walton: <i>Among Others</i></li><li>Neil Gaiman: <i>The Ocean at the End of the Lane</i></li><li>Cory Doctorow: <i>Pirate Cinema</i></li><li>Simon Stålenhag: <i>Ur varselklotet</i></li><li>George R. R. Martin: <i>A Dance with Dragons</i></li></ul><br /><div>Vad det gäller <i>Nyckeln</i> och <i>A Dance with Dragons</i> kan noteras att jag inte menar att de nödvändigtvis är de bästa delarna i sina respektive serier men att jag uppskattat serierna i sin helhet mycket även om resten av delarna lästs under andra år.</div><div><br /></div><div>De bästa serierna jag läste under 2014:</div><div><ul><li>Robert Kirkman: <i>The Walking Dead</i></li><li>Greg Rucka: <i>Lazarus</i></li><li>Liv Strömqvist: <i>Prins Charles känsla</i></li><li>Craig Thompson: <i>Habibi</i> och <i>Blankets</i></li><li>Alison Bechdel: <i>Fun Home: A Family Tragicomic</i></li></ul><div>Här måste jag speciellt lyfta fram Craig Thompson som en väldigt trevlig bekantskap som jag ska hålla utkik efter framöver.</div></div><div><br /></div> Hans Persson Du är vad du läser Funderingar om vad jag läst, observationer om världen och annat småplock. Friends arena 2014-06-13T16:15:17+00:00 <p>[bambuser id=”4700375”]</p> David Hall (dp) Månhus Månhus är David Halls blogg om livet, Internet och annat. 2014-12: Joe Hill: Alpha &amp; Omega, 2014-04-14T20:08:31+00:00 <img src="" alt="" align="right" style="float: right;"/><div style="clear: both; text-align: center;" class="separator"><a style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;" href=""><img width="208" src="" border="0" height="320" /></a></div>Det här albumet är den sjätte och sista delen i serien <i>Locke &amp; Key</i> och jag tycker att det har varit en mycket trevlig bekantskap. Personerna har känts trovärdiga trots de ibland rätt skruvade övernaturligheter de har drabbats av. Illustrerandet har genomgående skötts med den äran av Gabriel Rodriguez.<br /><br />I den här avslutande volymen får vi så klart en del extra fyrverkerier innan upplösningen som jag tycker fungerar bra. Jag vill inte avslöja några detaljer men saker som jag förväntat mig skulle vara väsentliga utan att veta exakt hur blev mycket riktigt det och gav dessutom en extra knorr till själva berättandet.<br /><br />Man kan också notera att Hill gör en liten <a href="">homage till pappa</a> i en scen. Som alltid med referenser är det inte alla som kommer att förstå den, men här konstaterar de inblandade själva efter händelsen att det är just ingen i deras omgivning som förstår dem så det är väl inte mer än rätt att även en del av läsarna inte gör det.<br /><br />Jag är faktiskt lite sugen på att läsa om hela serien en gång till utan långa uppehåll mellan varje album (jag har köpt dem allt eftersom de kommit ut hela vägen) för att få lite bättre koll på handlingen genom att läsa hela på en gång.<br /><br />Joe Hill: <i>Alpha &amp; Omega</i><br />Illustrationer: Gabriel Rodriguez<br />IDW, 2014<br />192 sidor<br />ISBN: 978-1-61377-853-1<br /><br /> Hans Persson Du är vad du läser Funderingar om vad jag läst, observationer om världen och annat småplock. Blogg 100 som Flipboard-magasin 2014-03-01T17:36:56+00:00 <p>Jag väljer ut inlägg från <a href="">Blogg 100</a> och lägger ut i ett magasin på appen Flipboard:</p> <p><a href="">View my Flipboard Magazine.</a></p> <p>Kriterierna för mitt urval är helt godtyckliga men andemeningen är att jag själv ska tycka det är intressant och/eller att jag tror att andra tycker det är intressant att läsa.</p> <p>Själv tänker jag inte lova 100 inlägg närmaste 100 dagarna på denna blogg. Kanske kommer det ett och annat inlägg här. Däremot tänker jag och mina kolleger skriva på bloggen <a href=""></a>. Imorgon kommer mitt första inlägg som en del av Blogg 100. </p> <p>Senast jag bloggade på jobbloggen var från Las Vegas <a href="">när jag bevakade International Consumer Electronics Show</a> för TV4:s räkning.</p> David Hall (dp) Månhus Månhus är David Halls blogg om livet, Internet och annat. PuTTY-url 0.63 2013-08-07T23:36:21+00:00 <p>I just released PuTTY-url based on PuTTY 0.63. PuTTY-url is a patch that adds support for clickable URLs to PuTTY.</p> <p>You can download it from <a href=""></a>.</p> <p>Make sure to update, since PuTTY 0.63 includes fixes for four security issues. See the <a href="">PuTTY web site</a> for more information.</p> tobbez Upgrading firmware on the Linksys SRW2024 without using the web interface 2012-11-29T13:55:35+00:00 <p>This is useful if, for example, the web interface keeps resetting the connections.</p> <p>Upgrading the firmware requires first updating the boot code, and the regular console in the earlier firware doesn’t have support for flashing the boot code. However, there is a hidden IOS-like cli available, that makes it possible to upgrade the boot code over tftp. An additional benefit is that it is much faster than using xmodem.</p> <p><b>The steps</b></p> <ol> <li>Setup a tftp server on your machine, serving the files <code>srw2024_16_boot-101.rfb</code> and <code>ls20xx-12230.ros</code> (download from <a href=";catid=268438038" title="Cisco">Cisco</a>) </li><li>Connect your computer to the switch using ethernet and serial cables.</li> <li>Boot the switch.</li> <li>Log into the console.</li> <li>Press C-z.</li> <li>On the new promt, type <code>lcli</code> and press enter.</li> <li>To upgrade the boot code, type <code>copy tftp:///srw2024_16_boot-101.rfb boot</code></li> <li>Then upgrade the firmware: <code>copy tftp:///ls20xx-12230.ros image</code></li> <li>Lastly, restart the switch: <code>reload</code></li> </ol> <p>That’s it.</p> <p>As an aside, please note that the web interface only works in Internet Explorer, so if it seems like it doesn’t work, it’s probably because your’re using another browser.</p> tobbez, 2011-11-23T10:12:36+00:00 En liten, liten text om fotografering: <a href=""></a><br /><br />(Jag verkar ha flyttat mitt skrivande mer och mer till Google+, om ni saknat mig...) Leif Nixon Tankar från rooten,1999:blog-3861328598189272741 What I found in my system log, 2011-11-07T19:53:31+00:00 <a href="">A short write-up</a> (in English) about what the Chinese government appears to be doing to my systems. Leif Nixon Tankar från rooten,1999:blog-3861328598189272741 Gott Nytt År! (igen) urn:md5:01a340e9aeb92d0fa2aaec1d8ce969ac 2010-12-31T21:42:00+00:00 <p>Det har varit lite dåligt med postningar på bloggen, men nu är det i alla fall dags att önska ett Gott Nytt År!</p> <p>Ett nytt år som är det näst sista på väldigt länge som har en dag där tvåsiffrigt årsnummer, månad och dag i månad alla har samma värde. Efter den 11 november 2011 är det bara 12 december 2012 kvar innan man får vänta ända till den 1:a januari 2101 innan det går igen, och det är fasligt länge.</p> <p>Hoppas att 2011 eller 0x7DB blir ett minst lika intressant år som 2010!</p> poj Mer än Mat En blog om Mat och en hel del annat. urn:md5:12735 Bacon och Broccoli urn:md5:01a2076792763f307a76dab3cc94c8b0 2010-09-26T17:07:00+00:00 <p>Vissa kombinationer råkar man bara kombinera, och sen är man fast. Bacon och Broccoli är en sådan kombination. Dessutom låter det trevligt.</p> poj Mer än Mat En blog om Mat och en hel del annat. urn:md5:12735 AVR, Gentoo and Paludis, 2009-12-30T00:09:08+00:00 Seeing that there is a new AVR simulator for linux in town, <a href="">simavr</a>, I decided to get the latest avr gcc packages for Gentoo. (More about simavr when I have gotten a bit accustomed to it)<br /><br />As the crossdev scripts don't really wants to play nice with Paludis the packages have to be "created" manually. This is really a simple procedure as the packages themself already works for different targets, they just need to be told. I got the information on how to do it from the <a href="">Gentoo wiki</a>. <br /><br />First one needs a repo for the cross avr chain. We will call it cross-avr. It is created by putting this configuration file in /etc/paludis/repositories:<br /><br /><pre class="bash" name="code">master_repository = gentoo<br />format = ebuild<br />location = /var/paludis/repositories/cross-avr<br />names_cache = /var/cache/paludis/names<br />write_cache = /var/cache/paludis/metadata<br /></pre><br />And to get the files in the repo, make the directory and create symbolink links for the required packages:<br /><br /><pre class="bash" name="code">mkdir /var/paludis/repositories/cross-avr/{cross-avr,profiles} -p<br />cd /var/paludis/repositories/cross-avr/cross-avr<br />ln -s /usr/portage/dev-embedded/avr-libc<br />ln -s /usr/portage/sys-devel/binutils<br />ln -s /usr/portage/sys-devel/gcc<br />ln -s /usr/portage/sys-devel/gdb<br /></pre><br />The repo also needs to be named and as the category is not in the master tree (portage) it needs to be added to the categories file:<br /><br /><pre class="bash" name="code">cd ../profiles<br />echo cross-avr &gt; repo_name<br />echo cross-avr &gt; categories<br /></pre><br />Finally we need to tell paludis to use the avr-gcc for the other cross-avr packages, by placing this in /etc/paludis/bashrc<br /><br /><pre class="bash" name="code">#cross-build avr<br />if [[ "${CATEGORY}" == "cross-avr" ]]<br />then<br /> if [[ "${PN}" != "gcc" &amp;&amp; "${PN}" != "binutils" ]]<br /> then<br /> CBUILD=${CHOST}<br /> CHOST=avr<br /> CFLAGS="-Os"<br /> fi<br />fi<br /></pre><br />Now we have the ("auto-syncing" :D) repo set up!<br /><br />To make sure that paludis knows about the new packages we run:<br /><pre class="bash" name="code">paludis --regenerate-installable-cache cross-avr<br /></pre><br /><br />Next up is the installation. Do a pretend to see what paludis will pull in:<br /><pre class="bash" name="code">paludis cross-avr/binutils cross-avr/gcc cross-avr/avr-libc cross-avr/gdb -ip<br /></pre><br />Here it is important to note all the use flags for gcc. My experience is that most of them will break avr-gcc and my recommendation is to turn them all off.<br /><br />At last we are ready. Start the build and grab a mug of cocoa.<br /><br />While you wait it may be interesting to know that avr-libc will place the libs in /usr/avr. And if you want to start playing with simavr you need to change AVR_ROOT, in its Makefile.common, to this path. But more on that another time ;)<br /><br />When the packages are installed you may want to create a symlink in /usr/avr/lib to /usr/x86_64-pc-linux-gnu/avr/lib/ldscripts (substitute architechture as appropriate) because ld will have problems finding the linker scripts otherwise. (/usr/libexec/gcc/avr/ld: cannot open linker script file ldscripts/avr4.x: No such file or directory, <a href="">Gentoo bug</a>)<br /><br />Now you can compile your avr projects with avr-gcc! Happy hacking! Unknown notes Random notes on stuff I'm interested in.,1999:blog-4947850669095347038 Custom PATH in KDE run dialog, 2009-05-29T18:31:59+00:00 It has bothered me for a while that the KDE run dialog (Alt+F2) won't find my custom scripts in <i>~/bin</i>. After a failed attempt, with <i>~/.kde/env/bin_path</i>, I found a way that should (in theory) work with any desktop manager.<br /><br />The solution is to put the export command in a file called <i>~/.xprofile</i><br /><pre class="bash" name="code"><br />export PATH="/home/thomas/bin:${PATH}:/home/thomas/installs/bin"<br /></pre><br />(I keep all my user installed apps in ~/installs/bin ;)) Unknown notes Random notes on stuff I'm interested in.,1999:blog-4947850669095347038 Stockholm beer and whisky., 2007-09-29T19:45:13+00:00 <br /><a href=""><img src="" /></a> essgee essgee,1999:blog-3853179060413646984 Kom till Villevalla! Nu., 2007-09-06T19:26:01+00:00 <br /><a href=""><img src="" /></a> essgee essgee,1999:blog-3853179060413646984