<rss version="2.0">
  <channel>
    <title>senikk.com</title>
    <link>http://senikk.com</link>
    <description>senikk.com</description>
    <item>
      <title>Colon</title>
      <link>http://senikk.com/blog/view/519</link>
      <description>*Colon is a new stack-oriented programming language with focus on making GUI-applications for ARM based gadgets.*

*Use of signs*

A list of which chars used before or after Colon words and the description of them.
table(basic).
|_Char_|_Description_|
|name:|definition of words|
|nameX|repeat the word X times, ie. dup3 tail2|
|:name|pop from stack and store in _name_ word (a -&gt;)|
|!name|dup :name (a -&gt; a)|
|&#164;name or &#164;{...}|create a new concurrent process, pid on stack (-&gt; pid)|
|"@X @name" {@X @name}|pop position X from stack, @0 = first, @name call name use answer from stack, insert into string or block|
|+name|name + :name|

*Numbers*

table(basic).
|_Type_|_Description_|_Example_|
|integer|xxxx|1 5 -7 0|
|float|xx.xx|0.0 5.23 -23.12|
|hex|0xxxxh|0ah 052h 0fah|
|binary|0xxxxb|01111b 011011b|
|octal|0xxxxo|07o|

*Comparing*

table(basic).
|_Char_|_Description_|_Example_|_On stack_|
|&gt;|st&#248;rre enn|10 5 &gt;|10 true|
|&lt;|mindre enn|10 5 &lt;|10 false|
|&#8800;|ulik|10 5 &#8800;|10 true|
|=|lik|10 5 =|10 false|

*Math*

table(basic).
|_Char_|_Description_|_Example_|_On stack_|
|+|addisjon|10 5 +|15|
|-|subtraksjon|10 5 -|5|
|/|divisjon|10 5 /|2|
|**|multiplikasjon|10 5 **|50|
|%|modulo|10 5 %|0|

*Concurrency*

table(basic).
|_Word_|_Description_|_Example_|
|receive|receive - wait for an incomming message and puts it on stack|receive out|
|send|msg pid send - sends a message to pid|"hello" pid send _or_ 5 &#164;{receive out} send|

*Resources*

table(basic).
|_Word_|_Resource_|_Description_|
|open|dcolon|"dcolon://192.168.0.2:7777/echo" open|
|open|file|"file://home/senikk/test.txt" open|
|open|mysql|"mysql://peter:abc123@localhost/my_db" open|
|open|web|"http://senikk.com" open|
|open|module|"mymodule.col" open|

*Each*

table(basic).
|_Word_|_Description_|_Example_|
|key|key - put key on stack|key out|
|yield|yield - stop execution keep the position, custom generators|yield|
|;;|;; - break each execution|;;|
|to|a b to - to-generator from a to b|1 5 to|

&lt;code lang="colon"&gt;
{1 2 3 4} | out # liste
{name: "Terje Pedersen" age: 31} | "key: @key val: @0" out # hash
1 5 to | out # generator
"Hello World!" | "char: @0" out
&lt;/code&gt;

*Conditional*

table(basic).
|_Word_|_Description_|
|?|Execute block after if element on stack is true|
|:|Else block|
|;|End if|

&lt;code lang="colon"&gt;
# if
5 5 = ? "yes" out
# if/else
3 5 &gt; ? "greater" : "less" ; out
# if/else if/else
3 
5 &lt; ? "less" out
5 &gt; ? "greater" out
    : "equal" out
# switch
"a"
"a" = ?
  "case a" out
"b" = ?
  "case b" out
# pattern matching
{ok 5} {ok _} = ? "ok @tail" out
{warning "This is a warning"} {warning _} = ? "warning: @tail" out
{1 2} {x y} = ? "x=@x y=@y" out drop
&lt;/code&gt;</description>
      <pubDate>Sat, 13 Oct 2007 12:08:18 +0200</pubDate>
    </item>
    <item>
      <title>julen2006</title>
      <link>http://senikk.com/blog/view/396</link>
      <description>DVD
* Revolution OS (2001) - Linus Torvalds, Richard Stallman
* The Code (2001) - Alan Cox, Miguel de Icaza, Linus Torvalds
* The Triumph of the Nerds: The Rise of Accidental Empires - (1996)
* Test The Deathbed Vigil and other Tales of Digital Angst

CD
* En eller annen brassband cd med Aubade - Dawn Songs of the Fabulous Birds

MAGASIN
* "Abonnement p&#229; Linux Magasinet":http://linmag.no

KL&#198;R
* svarte sokker

BIL
* "Belkin TuneDok Car Holder for iPod, finnes hos Apple":http://store.apple.com/Apple/WebObjects/nostore.woa/6394042/wo/kB7IsodkIGoH23zowC22bZDZ5lq/3.0.21.1.0.8.25.7.11.6.3
* Spylerv&#230;ske

*Dyrere ting*

* "Olympus Zuiko 40-150mm telelinse":http://shop.japanphoto.no/Inventory/Navision/OLYMPUS-00ZUIKO
* "Zoom H4 minnekort opptaker":http://www.kickmusic.no/shop/default.aspx?ProdId=2144824</description>
      <pubDate>Thu, 07 Dec 2006 17:30:51 +0100</pubDate>
    </item>
    <item>
      <title>script-fu-enkel-tekst</title>
      <link>http://senikk.com/blog/view/318</link>
      <description>*Et lite eksempel p&#229; hvordan sette inn en liten, A photo by senikk, tekst nederst i h&#248;yre hj&#248;rne p&#229; et bilde via Script-Fu (Scheme) i GIMP.*

Kommer nok selv ikke til bruke meg av akkurat denne koden slik den er n&#229;, men en litt modifisert utgave som sp&#248;rr etter tittel og sentrerer den i topp. Dette fordi denne teksten her den har jeg allerede satt fast i rammemalen min.

&lt;code lang="scheme"&gt;
(define (senikk-photo-by image drawable)
  (let*
    ((width (car (gimp-image-width image)))
     (height (car (gimp-image-height image)))
	 (text "A photo by senikk")
	 (font-name "Rudelsberg")
	 (font-size 24))

	(gimp-image-undo-group-start image)		
	(set! text-size (gimp-text-get-extents-fontname text font-size 0 font-name))
	(set! text-width (car text-size))
	(set! text-height (cadr text-size))

	(set! text-layer (car (gimp-text-fontname image drawable
        (- width text-width 20) (- height text-height 10) text 0 1 font-size 0 font-name)))

	(gimp-floating-sel-anchor text-layer)
	(gimp-image-undo-group-end image)
	(gimp-displays-flush)))

(script-fu-register "senikk-photo-by"	      
          "A photo by senikk"
          "Creates a photo by senikk text in\
            the bottom-right corner."
          "Terje Pedersen &lt;terje@senikk.com&gt;"
          "Copyright 2006, Terje Pedersen"
          "2006-07-26, 2006"
		  "RGB*, GRAY*"
		  SF-IMAGE "Input Image" 0
		  SF-DRAWABLE "Input Drawable" 0)

(script-fu-menu-register "senikk-photo-by" 
					"&lt;Image&gt;/Script-Fu/Senikk")
&lt;/code&gt;</description>
      <pubDate>Wed, 26 Jul 2006 22:54:14 +0200</pubDate>
    </item>
    <item>
      <title>CoCompiler</title>
      <link>http://senikk.com/blog/view/310</link>
      <description>*En id&#233; jeg fikk etter brukt Gentoo en stund samt at jeg jo har drevet endel med koding i spr&#229;k som kompileres var &#229; lage en hjelpechip for kompilering.*

* Kort med en FPGA 
* Analysere kompileringsprosessen for &#229; finne ut hva en kan plassere i hardware for &#229; hjelpe til.
* AST (Abstract Syntax Tree) prosessor?


*Status:* id&#233;

</description>
      <pubDate>Thu, 20 Jul 2006 02:36:09 +0200</pubDate>
    </item>
    <item>
      <title>SenCmd</title>
      <link>http://senikk.com/blog/view/309</link>
      <description>*SenCmd er en kommandoserver for &#229; lage boter som fungerer p&#229; tvers av teknologier som muliggj&#248;r sending/mottakking av kommandoer/svar som f.eks. IRC, XMPP, MSN, SMS/MMS, console, e-post osv.*

* Du kan bruke den teknologien som passer deg til enhver tid.
* Du kan utvikle nye kommandoer uten &#229; at SenCmd kobler seg ned fra den m&#229;tte v&#230;re tilkoblet f.eks. IRC-servere.

F&#248;rste implementasjon var gjort i Java med BeanShell som scriptspr&#229;k bot kommandoer. Denne versjonen er desverre utilgjengelig da den ligger p&#229; en havarert harddisk, det var p&#229; en liten helg med programmering s&#229; den hadde desverre ikke havnet i versjonsh&#229;ndteringssystemet.

Men siden jeg hadde det s&#229; kjekt med SenCmd bestemte jeg meg for &#229; implementere p&#229; nytt, det sies vel at det gj&#248;res bedre for hver gang en gj&#248;r noe, forh&#229;pentligvis :-) S&#229; dagens versjon er laget i C# med Lua som scriptspr&#229;k. Kunne nok tenkt meg ogs&#229; her &#229; bruke "Minky":http://senikk.com/pages/minky ved en senere anledning.

Vet du om noen komersielle andvendelser av SenCmd eller lurer p&#229; noe s&#229; ikke n&#248;l med &#229; ta "kontakt":http://senikk.com/pages/kontakt med meg.

"bugtrack":http://bugtrack.senikk.com/index.php?tasks=all&amp;project=5

h3. Noen sm&#229; bot kommandoer i Lua

*echo*
&lt;code lang="lua"&gt;
function register ()
	addfilter("echo")
end

function run()
	send(sencmd.cmdline)
end
&lt;/code&gt;

*greeting*
&lt;code lang="lua"&gt;
function register()
	addfilter("greet")
end

function run()
	send("Hei " .. msg.from .. " :-)")
end
&lt;/code&gt;

h3. Lenger eksempel, typisk IRC-bot kommando, factoid

&lt;code lang="lua"&gt;
learn = {}

function register()
	addfilter(":.*:(.*) is also (.*)")	-- Append fact
	addfilter(":.*:(.*) is (.*)")		-- Set fact
	addfilter(":.*:(.*)\\?")		-- Get fact
end

function run()
	require("save.lua")
	dofile(storage)	

	if msg.match == 1 	then setfact(result("$1"),result("$2")) 
	elseif msg.match == 2 	then getfact(result("$1"))
	elseif msg.match == 0	then appendfact(result("$1"),result("$2"))
	end
end

function appendfact(key,append)
	key = string.lower(key)
	learn[key] = learn[key]..", "..append
	writeto(storage)
	save("learn",learn)
	send(key.." is now "..learn[key])
end

function setfact(key,value)
	key = string.lower(key)
	if learn[key] then send(key.." is already set to "..learn[key])
	else
		learn[string.lower(key)] = value
		writeto(storage)
		save("learn",learn)
		send(key.." is stored")
	end
end

function getfact(key)
	key = string.lower(key)
	if learn[key] then
		s,e = string.find(learn[key],"|")
		if e then randomfact(key)
		else send(key.." is said to be "..learn[key]) end
	else send(key.." isn't registered") end
end

function randomfact(key)
	local splitted = {}
	local regex = "([^|]*)|?"
	i = 1
	for item in string.gfind(learn[key].."|",regex) do
		splitted[i] = item
		i = i + 1
	end
	send(key.." is "..(string.gsub(splitted[math.random(1,i-2)],"^%s*(.-)%s*$","%1")))
end
&lt;/code&gt;</description>
      <pubDate>Sun, 30 Jul 2006 20:56:30 +0200</pubDate>
    </item>
    <item>
      <title>AJAX-Chat</title>
      <link>http://senikk.com/blog/view/308</link>
      <description>*Webbasert AJAX Chat, et lite prosjekt hvor SAJAX, Ruby og DRb ble testet. M&#229;let var en enkel chat-klient som fungerte selv bak brannmurer p&#229; jobb uten &#229; m&#229;tte trikse med &#229; kj&#248;re ting over porter som ikke var sperret og som ikke oppdaterte hele nettsiden.*

Burde kanskje hatt kanaler p&#229; den og kanskje hatt mulighet for &#229; bruke den mot IRC.

*Hvor:* "AJAX-Chat":http://blog.senikk.com/chat/chat.cgi

*Status:* Funker, men en liten bug med scrolling.</description>
      <pubDate>Mon, 17 Jul 2006 17:18:20 +0200</pubDate>
    </item>
    <item>
      <title>senlog</title>
      <link>http://senikk.com/blog/view/307</link>
      <description>*Et lite prosjekt for logging av klikk p&#229; et nettsted slik som mybloglog.com. Prosjektet var et lite eksperiment p&#229; hvor lett det var &#229; lage noe slikt.*

* Laget i PHP og JavaScript.
* Laget p&#229; bakgrunn av noe "B&#248;rge":http://blogg.forteller.net

*Status:* Fungerer, st&#248;tter &#229; overv&#229;ke flere nettsteder, men har ikke noe funksjonalitet for brukere. </description>
      <pubDate>Mon, 17 Jul 2006 16:57:35 +0200</pubDate>
    </item>
    <item>
      <title>Sbliki</title>
      <link>http://senikk.com/blog/view/306</link>
      <description>*M&#229; jo nesten nevne dette prosjektet ogs&#229; som er det som driver senikk.com bloggen ;P Sbliki er en kombinert blogg og wiki l&#248;sning laget i Ruby on Rails med AJAX finesser og WAP2.0 grensesnitt som ogs&#229; har kommenteringsmuligheter.*

* Blogg
* Wiki
* N&#248;kkelord
* Relaterte sider/innlegg basert p&#229; n&#248;kkelord
* Live s&#248;k
* AJAX basert kommentering, l&#229;st fast p&#229; siden

"bugtrack":http://bugtrack.senikk.com/index.php?tasks=all&amp;project=3

*Status:* Versjon 0.1</description>
      <pubDate>Fri, 28 Jul 2006 18:18:12 +0200</pubDate>
    </item>
    <item>
      <title>GMS</title>
      <link>http://senikk.com/blog/view/305</link>
      <description>*Group Message Service, GMS, er et gruppemeldingssystem for WAP2.0 (XHTML-MP) tiltenkt organisasjoner / vennegrupper som trenger litt mer kontroll p&#229; hvem som har lest meldingene samt et alternativ til &#229; sende meldinger til mange for dem som ikke har internett tilgjengelig.*

Siden det fortsatt ikke har blitt det helt store tr&#248;kket p&#229; WAP2.0 her i landet s&#229; har dette prosjekt ikke blitt gjort noe s&#230;rlig mer med.

*Status:* Litt testing gjenst&#229;r f&#248;r en beta kan tas i bruk.</description>
      <pubDate>Mon, 17 Jul 2006 07:36:38 +0200</pubDate>
    </item>
    <item>
      <title>Hysduo</title>
      <link>http://senikk.com/blog/view/301</link>
      <description>*Hysduo er em ordsammensetning av dialekt som i ta hys du o som betyr ta imot du ogs&#229;. Dette er prosjekt for &#229; forenkle det &#229;  selge digitalt drm-fritt innhold fra blogger og andre hjemmesider.*

Tanken bak er at det du som har en blogg eller enkel hjemmeside skal slippe &#229; ha peiling p&#229; hvordan sette opp en hel nettbutikk bare for &#229; selge digitalt innhold som f.eks. h&#248;yoppl&#248;slige utgaver av foto/video, pdf'er som f.eks. notesett/magasiner eller AutoCad tegninger av prosjekt ol.

*Status:* Diverse prototype testing.</description>
      <pubDate>Mon, 17 Jul 2006 07:38:31 +0200</pubDate>
    </item>
  </channel>
</rss>
