<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Programmerer.com &#187; programmering</title>
	<atom:link href="http://programmerer.com/category/programmering/feed/" rel="self" type="application/rss+xml" />
	<link>http://programmerer.com</link>
	<description>Når linker til youtube-videoer med søte katter som snubler og er morsomme i en epost fra en kollega ikke er nok</description>
	<lastBuildDate>Mon, 30 Jan 2012 15:59:17 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.1</generator>
		<item>
		<title>Programmereren, som poeten</title>
		<link>http://programmerer.com/2011/04/programmereren-som-poeten/</link>
		<comments>http://programmerer.com/2011/04/programmereren-som-poeten/#comments</comments>
		<pubDate>Wed, 20 Apr 2011 06:02:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[energi]]></category>
		<category><![CDATA[programmering]]></category>

		<guid isPermaLink="false">http://programmerer.com/?p=264</guid>
		<description><![CDATA[&#8220;The programmer, like the poet, works only slightly removed from pure thought-stuff. He builds his castles in the air, from air, creating by exertion of the imagination. Few media of creation are so flexible, so easy to polish and rework, &#8230; <a href="http://programmerer.com/2011/04/programmereren-som-poeten/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fprogrammerer.com%2F2011%2F04%2Fprogrammereren-som-poeten%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fprogrammerer.com%2F2011%2F04%2Fprogrammereren-som-poeten%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>&#8220;The programmer, like the poet, works only slightly removed from pure thought-stuff. He builds his castles in the air, from air, creating by exertion of the imagination. Few media of creation are so flexible, so easy to polish and rework, so readily capable of realizing grand conceptual structures.&#8221;</p>
<p>— <a href="http://www.goodreads.com/author/quotes/3174788.Frederick_P_Brooks">Frederick P. Brooks</a></p>
]]></content:encoded>
			<wfw:commentRss>http://programmerer.com/2011/04/programmereren-som-poeten/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hvordan vi bygde en facebook chat-applikasjon på NRKbeta i løpet av bare en måned</title>
		<link>http://programmerer.com/2010/01/hvordan-vi-bygde-en-facebook-chat-applikasjon-pa-nrkbeta-i-l%c3%b8pet-av-bare-en-maned/</link>
		<comments>http://programmerer.com/2010/01/hvordan-vi-bygde-en-facebook-chat-applikasjon-pa-nrkbeta-i-l%c3%b8pet-av-bare-en-maned/#comments</comments>
		<pubDate>Mon, 18 Jan 2010 07:59:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[løsningsdesign]]></category>
		<category><![CDATA[programmering]]></category>
		<category><![CDATA[smidig]]></category>

		<guid isPermaLink="false">http://programmerer.com/?p=124</guid>
		<description><![CDATA[Hvordan vi bygde en facebook chat-applikasjon på NRKbeta i løpet av bare en måned: ved å "leverage" eksisterende teknologier, og få erfarne programmerer til å sette dem sammen, samt lage de manglende bitene. <a href="http://programmerer.com/2010/01/hvordan-vi-bygde-en-facebook-chat-applikasjon-pa-nrkbeta-i-l%c3%b8pet-av-bare-en-maned/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fprogrammerer.com%2F2010%2F01%2Fhvordan-vi-bygde-en-facebook-chat-applikasjon-pa-nrkbeta-i-l%25c3%25b8pet-av-bare-en-maned%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fprogrammerer.com%2F2010%2F01%2Fhvordan-vi-bygde-en-facebook-chat-applikasjon-pa-nrkbeta-i-l%25c3%25b8pet-av-bare-en-maned%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>NRK har fått med seg at kidsa sitter med laptopen på fanget når de ser på tv, og at de twitrer og chatter om det de ser. De ønsker naturlig nok å trekke kidsa nærmere seg ved å være tilstede der kidsa (også) er &#8212; på nettet.</p>
<p>Prosjekleder Andreas Wiik på &#8220;NRK Nye Medier&#8221; hadde fått oppgaven: På en liten måned skulle han ha en fullt brukbar chatte-tjeneste på nett, med innebygd markedsføring.  NRK ønsker altså å bygge et stykke software der kidsa &#8212; og eventuelle andre som føler seg kallet til en intim chattestund fokusert på en enkelt tv-sending &#8212; naturlig vil samles for å kommentere det stygge håret til tv-verten, eller oppfordre andre til å stemme på sin favoritt, eller hva-enn-kidsa-bestemmer-seg-for-å-gjøre med en fokusert chatte-tjeneste.</p>
<h2>Hvordan lager du en fungerende Facebook chatte-applikasjon på 20 arbeidsager? Desember 2009?</h2>
<p>Som en første iterasjon av et større prosjekt, ville prosjektleder Andreas Wiik  kjapt bygge en tjeneste som kapitaliserte på en eksisterende brukergruppe  så den kunne &#8220;go viral&#8221; &#8212; altså spres ved at folk forteller hverandre om den. Han ville lage en TV-prat applikasjon som kunne spres virtuelt via folks vennelister.  Andreas samler tre konsulenter fra tre forskjellige selskaper, får opp en utviklingsserver og alt som hører til, og kjører en slags mini-scrum med ukeslange sprinter. Og lykkes. Ved første Melodi Grand Prix delfinale legges linken til facebook-applikasjonen ut på NRKbeta, og 250 brukere signer opp og begynner å chatte.</p>
<h2>Bevisst bruk av åpne løsninger</h2>
<p>En slik kjapp utvikling hadde ikke vært mulig uten et bevisst fokus på å bruke eksisterende, åpne løsninger. Istedenfor å utvikle kruttet på nytt, legges all tid og energi inn på å skape bare akkurat det som er nytt ved den nye softwaren. En <a href="http://www.igniterealtime.org/projects/openfire/" target="_blank">Openfire chat-sever</a> ble brukt som underliggende chatte-teknologi. Denne implementerer den åpne <a href="http://xmpp.org/" target="_blank">XMPP</a>-standarden (også kjent under det mer sexy navnet Jabber). XMPP er en xml-standard for både gruppe- og direktemeldinger, og for såkalte &#8220;presence&#8221;-meldinger; slike som forteller vennene dine at du er &#8220;online&#8221; eller &#8220;idle&#8221; eller &#8220;out fishing&#8221;. For å bygge opp slike xml-strenger som følger XMPP-standarden, slik at vi kunne sende dem fra brukernes nettlesere til Openfire-serveren, benyttet vi Jack Moffitt&#8217;s <a href="http://code.stanziq.com/strophe/" target="_blank">Strophe-bibliotek</a>. Dette er et deilig javascript-bibliotek som brukes til å bygge XMPP-xml, og som i tillegg tar seg av å sette opp en <a href="http://xmpp.org/extensions/xep-0124.html" target="_blank">BOSH</a>-forbindelse til serveren,og gir oss hendelser fra serveren på et gullfat.  Strophe kan derimot ikke brukes til å tolke xml&#8217;en som kommer fra Openfire-serveren. Men til det passet <a href="http://jquery.com/" target="_blank">jQuery</a> som hånd-i-hanske.</p>
<h2>Masters of Glue</h2>
<p>Når teknologiene allerede er laget, hva gjør programmereren i prosjektet? På mange måter kan vi si at programmererens oppgave blir å lime eksisterende teknologier sammen; han lager litt logikk for å lime sammen brukerhåndteringen til Facebook og OpenFire, litt logikk for å bestemme hvordan OpenFire-chattemeldinger skal vises i browseren, litt logikk som bestemmer hvordan brukeren skal kunne interagere med den nye applikasjonen. Det kan kanskje høres ut som om programmererens rolle nedtones. Det kan være fristende å sette inn nyutdannede, rimeligere &#8220;ressurser&#8221; i et slikt arbeid. I praksis bør du tenke deg om en gang til før du iverksetter en slik taktikk. Hvorfor? Fordi det å raskt sette seg inn i forskjellige <a href="http://no.wikipedia.org/wiki/API_(programmering)" target="_blank">APIer</a> er det samme som å raskt sette seg inn i andre programmereres tankesett. Og det krever erfaring.</p>
<h2>Eksisterende teknologier + Erfarne programmerere = Rask utvikling av nye produkter</h2>
<p>Hvordan er det mulig å lage en fullt fungerende, testklar viral chatte-applikasjon på en måned? Svar: ved å &#8220;leverage&#8221; eksisterende teknologier, og få erfarne programmerere til å sette dem sammen, samt lage de manglende bitene. På 20 dager har vi ikke laget et perfekt produkt, det er fremdeles noen feil og mangler. Men på kun en liten måned har vi laget et produkt som kan vises frem og brukes. <a href="http://nrkbeta.no/2010/01/11/hva-var-det-vi-brukte-xmpp-til/" target="_blank">De første brukerne vil kunne komme med tilbakemeldinger</a> og dermed være med på å forme det videre produktet slik at det blir noe de kunne tenke seg å bruke på lengre sikt. På den måten kan du sikre at du ikke bruker lang tid og mye penger på å utvikle et produkt det til slutt viser seg at ingen vil ha.</p>
]]></content:encoded>
			<wfw:commentRss>http://programmerer.com/2010/01/hvordan-vi-bygde-en-facebook-chat-applikasjon-pa-nrkbeta-i-l%c3%b8pet-av-bare-en-maned/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Twitter kan hjelpe deg finne programmeringsoppdrag</title>
		<link>http://programmerer.com/2009/12/twitter-kan-hjelpe-deg-finne-programmeringoppdrag/</link>
		<comments>http://programmerer.com/2009/12/twitter-kan-hjelpe-deg-finne-programmeringoppdrag/#comments</comments>
		<pubDate>Tue, 15 Dec 2009 08:42:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[drømmejobben]]></category>
		<category><![CDATA[programmering]]></category>
		<category><![CDATA[konsulent]]></category>
		<category><![CDATA[oppdrag]]></category>
		<category><![CDATA[sosiale medier]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://programmerer.com/?p=117</guid>
		<description><![CDATA[Du har kanskje tenkt på at du kan promotere deg som programmerer og konsulent ved å blogge og tweete om relevante, nyttige informasjonsbiter. Men søker du gjennom den store strømmen av sanntidsinformasjon for å se om noen leter etter deg &#8230; <a href="http://programmerer.com/2009/12/twitter-kan-hjelpe-deg-finne-programmeringoppdrag/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fprogrammerer.com%2F2009%2F12%2Ftwitter-kan-hjelpe-deg-finne-programmeringoppdrag%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fprogrammerer.com%2F2009%2F12%2Ftwitter-kan-hjelpe-deg-finne-programmeringoppdrag%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Du har kanskje tenkt på at du kan promotere deg som programmerer og konsulent ved å blogge og tweete om relevante, nyttige informasjonsbiter. Men søker du gjennom den store strømmen av sanntidsinformasjon for å se om noen leter etter deg (eller noen som deg) &#8212; akkurat nå?</p>
<p>I et distré øyeblikk satt jeg og kikket gjennom <a href="http://collecta.com/#q=programmerer">http://collecta.com/#q=programmerer</a>, et realtime-søk i sosiale medier, på termen &#8220;programmerer&#8221;. I lista idag var det en som søkte etter en PLS-programmerer, og  en som ønsket seg programmerer/systemutviklere. Han som var på jakt etter en PLS-programmerer, ba folk om å RT, altså å re-tweete.</p>
<p>Hva betyr det i praksis? Jo det betyr at han ber folk som følger ham på twitter, om å sende den samme tweeten, så folk som følger dem på twitter, også kan få vite at han er på jakt etter en slik programmerer. Så langt var det en re-tweet. Gjett hva han gjorde? Jo han ba også folk om å re-tweete. Hvis hans følgere også tar oppfordringen, vil den origianale twitter-brukeren snart nå ut til noen som kan det han er på jakt etter.</p>
<p>Men: sjekker du jevnlig, så kan du nå din neste oppdragsgiver først, før han finner noen andre.</p>
<p>Det er jo verdt en tanke.</p>
]]></content:encoded>
			<wfw:commentRss>http://programmerer.com/2009/12/twitter-kan-hjelpe-deg-finne-programmeringoppdrag/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google AppEngine + IntelliJ, a Step-by-Step Guide</title>
		<link>http://programmerer.com/2009/11/google-appengine-intellij-a-step-by-step-guide/</link>
		<comments>http://programmerer.com/2009/11/google-appengine-intellij-a-step-by-step-guide/#comments</comments>
		<pubDate>Wed, 18 Nov 2009 17:13:56 +0000</pubDate>
		<dc:creator>arne</dc:creator>
				<category><![CDATA[programmering]]></category>
		<category><![CDATA[intellij idea google appengine]]></category>

		<guid isPermaLink="false">http://programmerer.com/?p=103</guid>
		<description><![CDATA[Setting up a new Google AppEngine project in IntelliJ is easy-peasy once you know how. <a href="http://programmerer.com/2009/11/google-appengine-intellij-a-step-by-step-guide/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fprogrammerer.com%2F2009%2F11%2Fgoogle-appengine-intellij-a-step-by-step-guide%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fprogrammerer.com%2F2009%2F11%2Fgoogle-appengine-intellij-a-step-by-step-guide%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Setting up a new Google AppEngine project in IntelliJ is easy-peasy once you know how. Here&#8217;s how:</p>
<p><strong>Project Setup</strong></p>
<ol>
<li>Create project from scratch
<ul>
<li>type: <strong>Java Module</strong></li>
<li>enable creation of source folder <strong>src</strong></li>
<li>check <strong>Web Application</strong> in the “select technologies” window</li>
</ul>
</li>
<li>Configure project structure
<ul>
<li>Project SDK should be <strong>1.6</strong> (though 1.5 should work too)</li>
<li>Add dependency to library <strong>Google App Engine</strong> (containing appengine-tools-api.jar)</li>
</ul>
</li>
<li>Create config file
<ul>
<li>Create appengine-web.xml in WEB-INF with the following contents:<br />
<em>&lt;?xml version=”1.0” encoding=”utf-8”?&gt;<br />
&lt;appengine-web-app xmlns=”http://appengine.google.com/ns/1.0”&gt;<br />
&lt;application&gt;&lt;/application&gt;<br />
&lt;version&gt;1&lt;/version&gt;<br />
&lt;/appengine-web-app&gt;</em></li>
<li>If you know what application name you should use, go ahead and fill it in.<em><br />
</em></li>
</ul>
</li>
<li>Create servlet
<ul>
<li>Right click project root, choose <strong>New -&gt; Servlet</strong><br />
This will create servlet class and update web.xml as needed.</li>
<li>Add a <strong>servlet mapping</strong> in the Assembly Descriptor tab.<br />
<strong>NOTE</strong>: <em>Make sure the URL Pattern starts with a slash (/).</em></li>
<li>In the servlet’s <strong>doGet</strong> method, add the following:<br />
response.setContentType(“text/plain”);<br />
response.getWriter().println(“Hello, world!”);</li>
</ul>
</li>
<li>Create runner
<ul>
<li>Create <strong>new application</strong> configuration</li>
<li> <strong>Main class</strong>: com.google.appengine.tools.KickStart</li>
<li> <strong>Program parameters</strong>:<br />
com.google.appengine.tools.development.DevAppServerMain out\exploded\[<em>your-project-name</em>]Web</li>
<li> <strong>Environment variables</strong>:<br />
SDK_LIB=C:\lib\appengine-java-sdk\lib<br />
SDK_CONFIG=C:\lib\appengine-java-sdk\config\sdk<br />
(where it is assumed that google app engine SDK is located at C:\lib\appengine-java-sdk)</li>
</ul>
</li>
<li>Open page in browser
<ul>
<li>Navigate to http://localhost:8080/[<em>your-url-pattern</em>]</li>
<li> <strong>NOTE</strong>: To stop/restart the app, use Exit (<img class="alignnone size-full wp-image-104" src="http://programmerer.com/wp-content/uploads/exit.png" alt="exit" width="17" height="16" />) rather than Stop. Otherwise Jetty will keep running in the background.</li>
</ul>
</li>
</ol>
<p><strong>Deploying the application </strong></p>
<ol>
<li>Update the &lt;application&gt; tag in appengine-web.xml so it contains the Google app-id of your project.</li>
<li>Upload to server.
<ul>
<li>If you have set up an external tool (described below), simply invoke the tool from <strong>Tools </strong>&gt;<strong> Google App Engine </strong>&gt;<strong> Deploy</strong></li>
<li>Otherwise, perform the following steps to deploy manually:<strong><br />
</strong></li>
</ul>
<ul>
<li>
<ul>
<li>Open a command line window</li>
<li>Navigate to the app-engine’s bin folder</li>
<li>Enter: appcfg.cmd update [<em>full-path-to-intellij-project-root</em>]\out\exploded\[<em>your-project-name</em>]Web</li>
</ul>
</li>
<li>Enter Google account info when prompted.</li>
<li> <strong>NOTE:</strong> If appcfg.exe reports it cannot find javac.exe, it may be necessary to edit the appcfg.cmd file:<br />
Instead of invoking “java” (which is specifying whichever java happens to be on your system path), use the fully qualified path of the 1.6 JDK’s java.exe.</li>
</ul>
</li>
<li>Open page in browser
<ul>
<li>Navigate to http://[<em>your-app-id</em>].appspot.com/[<em>your-project-name</em>]Web</li>
</ul>
</li>
</ol>
<p><strong>Setting up a new External Tool in IntelliJ</strong></p>
<ol>
<li>Open the <strong>Settings</strong> menu (<em>Ctrl+Alt+S</em>) and click <strong>External Tools</strong> under <strong>IDE Settings</strong>.</li>
<li>Click <strong>Add</strong> and use the following properties:
<ul>
<li> <strong>Name</strong>: Deploy</li>
<li> <strong>Group</strong>: Google App Engine</li>
<li> <strong>Description</strong>: Deploy to Google App Engine</li>
<li> <strong>Menu</strong>: “Main menu” checked</li>
<li> <strong>Open console</strong>: checked</li>
<li> <strong>Synchronize files after execution</strong>: checked</li>
<li> <strong>Program</strong>: C:\lib\appengine-java-sdk\bin\appcfg.cmd</li>
<li> <strong>Parameters</strong>: update $ProjectFileDir$\out\exploded\$ProjectName$Web</li>
<li> <strong>Working directory</strong>: C:\lib\appengine-java-sdk\bin</li>
</ul>
</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://programmerer.com/2009/11/google-appengine-intellij-a-step-by-step-guide/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hvordan lande drømmeprosjektet? Med eksempel-CV!</title>
		<link>http://programmerer.com/2009/10/hvordan-lande-dr%c3%b8mmeprosjektet-med-eksempel-cv/</link>
		<comments>http://programmerer.com/2009/10/hvordan-lande-dr%c3%b8mmeprosjektet-med-eksempel-cv/#comments</comments>
		<pubDate>Sun, 18 Oct 2009 18:48:47 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[drømmejobben]]></category>
		<category><![CDATA[programmering]]></category>

		<guid isPermaLink="false">http://programmerer.com/?p=65</guid>
		<description><![CDATA[Slashdot har en historie ikveld om hvordan du  som programmerer selger ferdigheter du har fått gjennom open source &#8211; prosjekter, men rådene gjelder for alle som jobber på prosjekter, og som skal selge seg selv videre i neste prosjekt. Du &#8230; <a href="http://programmerer.com/2009/10/hvordan-lande-dr%c3%b8mmeprosjektet-med-eksempel-cv/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fprogrammerer.com%2F2009%2F10%2Fhvordan-lande-dr%25c3%25b8mmeprosjektet-med-eksempel-cv%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fprogrammerer.com%2F2009%2F10%2Fhvordan-lande-dr%25c3%25b8mmeprosjektet-med-eksempel-cv%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Slashdot har en historie ikveld om hvordan du  som programmerer selger ferdigheter du har fått gjennom open source &#8211; prosjekter, men rådene gjelder for alle som jobber på prosjekter, og som skal selge seg selv videre i neste prosjekt. Du stikker seg ut, sier forfatteren Zack Grossbart, ved måten du snakker om prosjektet på. Hvilke features jobbet du med? Designet du nye deler av systemet? Ledet du møter?</p>
<p><a href="http://developers.slashdot.org/story/09/10/17/182238/How-To-List-FOSS-Experience-On-Your-Resume">Full story hos Slashdot. Linken til CV er nederst i artikkelen.</a></p>
<p>Nært relatert er også Zacks tanker om &#8220;<a href="http://www.zackgrossbart.com/blog/2009/10/brand/" target="_blank">personal branding</a>&#8221; og &#8220;<a href="http://www.zackgrossbart.com/hackito/resume/" target="_blank">hvordan formattere en cv</a>&#8220;.</p>
]]></content:encoded>
			<wfw:commentRss>http://programmerer.com/2009/10/hvordan-lande-dr%c3%b8mmeprosjektet-med-eksempel-cv/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

