<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;CUEMR3w7eyp7ImA9WhRVFkg.&quot;"><id>tag:blogger.com,1999:blog-8038382809366979121</id><updated>2012-01-15T19:54:46.203+01:00</updated><category term="programmering" /><category term="agil udvikling" /><category term="foto" /><category term="lidt af hvert" /><category term="SOA" /><title>Høghs blog</title><subtitle type="html">Kom og lyt til en "gammel sur mand", som nok arbejder på at blive gammel, men som i virkeligheden nok er mere skuffet end sur...</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://hoeghsblog.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://hoeghsblog.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/8038382809366979121/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Bjarne Høgh Nielsen</name><uri>http://www.blogger.com/profile/10408934360381211598</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://bp0.blogger.com/_oKswy8x72fk/Ru7GvQsPP-I/AAAAAAAAA7A/WElUcgxMXVc/s1600/IMG_0388-1.JPG" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>129</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/HoeghsBlog" /><feedburner:info uri="hoeghsblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;CUEMR3w6fyp7ImA9WhRVFkg.&quot;"><id>tag:blogger.com,1999:blog-8038382809366979121.post-4922387083077408141</id><published>2012-01-15T18:10:00.004+01:00</published><updated>2012-01-15T19:54:46.217+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-15T19:54:46.217+01:00</app:edited><title>How to get Spring transactions to work with the JUnit Theories testrunner</title><content type="html">Yes, I will make an exception and write this in English because I think the subject might have broader interest: A solution to the challenge of combining the JUnit Theories testrunner with Spring transaction support.&lt;br /&gt;&lt;br /&gt;I am not going to say a lot about JUnit Theories (or @Rule that matter); you can google plenty of good information about that yourself. I am definitely NOT going to even try to talk about how to get Spring transactions to work with your database of choice. And I am not going to argue that it makes much sense to combine Theories and transactional databases. But, hey, challenges doesn't have to make sense to be interesting, right? :-)&lt;br /&gt;&lt;br /&gt;And this is a challenge, because Springs support for unittest almost only works with the Spring testrunner and Theories only works if you use the Theories testrunner - and you can only have one testrunner per test. But luckily there is a way out.&lt;br /&gt;&lt;br /&gt;So, lets see some code - and lets start with this fairly simple Spring based test:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;@ContextConfiguration(locations = "classpath:testcontext.xml")&lt;br /&gt;&lt;b&gt;@Transactional&lt;br /&gt;@RunWith(SpringJUnit4ClassRunner.class)&lt;/b&gt;&lt;br /&gt;public class SimpleTest {&lt;br /&gt;    @Autowired DataSource datasource;&lt;br /&gt;&lt;br /&gt;    private JdbcTemplate jdbcTemplate;&lt;br /&gt;&lt;br /&gt;    @Before public void setup() throws SQLException {&lt;br /&gt;        jdbcTemplate = new JdbcTemplate(datasource);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    @Test&lt;br /&gt;    public void canInsert() throws SQLException {&lt;br /&gt;        jdbcTemplate.update("INSERT INTO test( id ) VALUES (?)", 1);&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Note that it uses the Spring testrunner and that it wants to be transactional. Doing so makes Spring to some pretty nifty magic behind the scenes, so that everything you do to the database in a single test is wrapped in a transaction that is rolled back afterwards. Spring has even thought of starting the transaction before the @Before method and will first end it after the @After method, which is pretty clever.&lt;br /&gt;&lt;br /&gt;But it all hinges on using the the Spring testrunner. So what if you want to use another testrunner like for instance Theories? &lt;br /&gt;&lt;br /&gt;Well, the Spring testrunner delegates to another Spring class called TestContextManager and a fairly common workaround therefore is to do the same delegation in the @Before method as Spring would do in the testrunner. Just like this:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;@ContextConfiguration(locations = "classpath:testcontext.xml")&lt;br /&gt;@Transactional&lt;br /&gt;&lt;b&gt;@RunWith(Theories.class)&lt;/b&gt;&lt;br /&gt;public class BuggedTheoriesTest {&lt;br /&gt;    @Autowired DataSource datasource;&lt;br /&gt;&lt;br /&gt;    private JdbcTemplate jdbcTemplate;&lt;br /&gt;&lt;br /&gt;    @Before public void setup() throws Exception {&lt;br /&gt;        //here we hook into the Spring test-support framework&lt;br /&gt;&lt;b&gt;        final TestContextManager tcm = new TestContextManager(getClass());&lt;br /&gt;        tcm.prepareTestInstance(this);&lt;/b&gt;&lt;br /&gt;        //this will work for everything but spring transactions as transactions expects to be enabled before @Before&lt;br /&gt;&lt;br /&gt;        jdbcTemplate = new JdbcTemplate(datasource);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    @Test&lt;br /&gt;    public void canInsert() throws SQLException {&lt;br /&gt;        jdbcTemplate.update("INSERT INTO test( id ) VALUES (?)", 1);&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;The good news is, that it actually manages to get the spring context loaded so the database is accessible. The bad news is, that we're just a tad to late for transactions to work. Remember that they were supposed to start before the @Before method? Well, the downside here is that we're too late when we try to call upon the help of Spring in the @Before method it self.&lt;br /&gt;&lt;br /&gt;My googling skills didn't find any solution to this problem, which probably goes to say a lot about my googling skills. So I came up with the solution below (the parts of which I have found by googling :-)). I am not going to say it is particularly clever or even pretty, but hey, it seems to work!&lt;br /&gt;&lt;br /&gt;It is based on using the @Rule annotation that was introduced in JUnit 4.7. I am not sure why it is called a "rule", but it is a mechanism that enabled you to define a wrapper that will wrap every invocation of testmethods in the test including the @Before and @After parts.&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;@ContextConfiguration(locations = "classpath:testcontext.xml")&lt;br /&gt;@Transactional&lt;br /&gt;@RunWith(Theories.class)&lt;br /&gt;public class FixedTheoriesTest {&lt;br /&gt;    @Autowired DataSource datasource;&lt;br /&gt;&lt;br /&gt;    private JdbcTemplate jdbcTemplate;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;    @Rule public SpringTestContextManagerRule springTestContextManagerRule = new SpringTestContextManagerRule();&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;    @Before public void setup() throws Exception {&lt;br /&gt;        jdbcTemplate = new JdbcTemplate(datasource);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    @DataPoints public static int[] ids() {&lt;br /&gt;        return new int[] {1,2,5,10,20,50,100,200,500};&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    @Theory&lt;br /&gt;    public void canInsert(int id) throws SQLException {&lt;br /&gt;        jdbcTemplate.update("INSERT INTO test( id ) VALUES (?)", id);&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/code&gt;&lt;br /&gt;That's all there is too it: Spring with transactions working with JUnit Theories!&lt;br /&gt;&lt;br /&gt;Oh, and yes, you'll probably need this as well :-D :&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;public class SpringTestContextManagerRule implements MethodRule{&lt;br /&gt;&lt;br /&gt;    @Override&lt;br /&gt;    public Statement apply(final Statement statement, final FrameworkMethod frameworkMethod, final Object testInstance) {&lt;br /&gt;        return new Statement() {&lt;br /&gt;            @Override&lt;br /&gt;            public void evaluate() throws Throwable {&lt;br /&gt;                final TestContextManager tcm = new TestContextManager(testInstance.getClass());&lt;br /&gt;                tcm.prepareTestInstance(testInstance);&lt;br /&gt;                tcm.beforeTestMethod(testInstance, frameworkMethod.getMethod());&lt;br /&gt;                try {&lt;br /&gt;                    &lt;b&gt;statement.evaluate();&lt;/b&gt;&lt;br /&gt;                    tcm.afterTestMethod(testInstance, frameworkMethod.getMethod(), null);&lt;br /&gt;                } catch (Throwable t ) {&lt;br /&gt;                    tcm.afterTestMethod(testInstance, frameworkMethod.getMethod(), t);&lt;br /&gt;                    throw t;&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;        };&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Notice how this Rule makes a Statement that has an evaluate()-method that wraps around the statement passed to it. In that way rules can make statements that wraps statements of other rules, eventually leading to a statement wrapping an actual testmethod.&lt;br /&gt;&lt;br /&gt;There is one caveat, though: The implementation is based on a MethodRule; this has been deprecated in later versions of JUnit, and is supposed to be replaced with a TestRule. The only problem with the new TestRule is that it will only provide you with the name of the test method to be invoked, not a reference to the method itself. It should be possible to work around this, but it is easier to use a MethodRule regardless of the deprecation warning.&lt;br /&gt;&lt;br /&gt;I have uploaded a maven-based project to &lt;a href="https://github.com/hoegh/SpringTestContextManagerRule"&gt;github&lt;/a&gt;. It should be fairly self-contained, the only real assumption is, that there is a MySQL database on localhost with a schema called testdb that can be used by the user "test".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8038382809366979121-4922387083077408141?l=hoeghsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/HoeghsBlog/~4/HPKHkkaNt04" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://hoeghsblog.blogspot.com/feeds/4922387083077408141/comments/default" title="Kommentarer til indlægget" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8038382809366979121&amp;postID=4922387083077408141" title="0 kommentarer" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8038382809366979121/posts/default/4922387083077408141?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8038382809366979121/posts/default/4922387083077408141?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/HoeghsBlog/~3/HPKHkkaNt04/how-to-get-spring-transactions-to-work.html" title="How to get Spring transactions to work with the JUnit Theories testrunner" /><author><name>Bjarne Høgh Nielsen</name><uri>http://www.blogger.com/profile/10408934360381211598</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://bp0.blogger.com/_oKswy8x72fk/Ru7GvQsPP-I/AAAAAAAAA7A/WElUcgxMXVc/s1600/IMG_0388-1.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://hoeghsblog.blogspot.com/2012/01/how-to-get-spring-transactions-to-work.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE4EQXs6fSp7ImA9WhdaFEo.&quot;"><id>tag:blogger.com,1999:blog-8038382809366979121.post-2109660903343451413</id><published>2011-10-24T18:43:00.002+02:00</published><updated>2011-10-24T19:21:40.515+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-24T19:21:40.515+02:00</app:edited><title>Logik for teknokrater</title><content type="html">I dag var jeg vidne til en sand Århus-historie: På Banegårdspladsen i Århus var jeg ved at stige på rutebilen til Skanderborg, da passageren foran mig beder om et klippekort. Det prøver chaufføren så at lave, men må efter lidt tid give op med ordene: "Nåe ja, jeg kan ikke sælge klippekort sålænge vi er i Århus, og det står også på Midt-trafiks hjemmeside" "Ah, hvad?" tænkte jeg.&lt;br /&gt;&lt;br /&gt;Det med hjemmesiden er i øvrigt en sandhed med modifikationer, for man har åbenbart forsøgt at kompensere for kvalitet i beskrivelsen af reglen med kvantitet i antallet af steder, hvor den er nævnt ... med det resultat, at man står forvirret tilbage med et inkonsistent billede af, hvad der er op og ned. Hovedparten af formuleringerne peger dog ganske rigtigt i den generelle retning, at man kan ikke købe klippekort i busserne, så længe at de befinder sig i Århus eller Randers. &lt;br /&gt;&lt;br /&gt;Hvorfor står til gengæld hen i det uvisse - jeg vil gætte på, at det er en konsekvens af at man har forsøgt at slå rutebiler og bybusser sammen; det giver nemlig god mening, at man ikke kan købe klippekort i bybusserne i Århus. &lt;br /&gt;&lt;br /&gt;Nu kunne man så have valgt at sige, at man slet ikke kunne købe klippekort i busserne længere, men det turde man måske ikke af frygt for at fornærme os, der kommer fra landet (som f.eks. Skanderborg)? Og hvis årsagen vitterlig er, at man ikke kan eller vil have samme service i århusianske bybusser som i resten af Midt-trafiks område, så kunne man f.eks. have formuleret reglen som at busser, der ikke kører ud af Århusområdet, ikke vil sælge klippekort. &lt;br /&gt;&lt;br /&gt;Man kunne såmænd også have lavet denne aktuelle regel, og så ladet det være op til chaufføren, om han rent "undtagelsesvist" ville vælge at se bort fra den, trafiksituationen, ruteføringen og omstændighederne i øvrigt taget i betragtning. Hvad ville ulykken være ved, at der en gang imellem skulle smutte et klippekort eller to over pulten i bussen, så længe chaufføren har friheden til at kunne henvise til hovedreglen?&lt;br /&gt;&lt;br /&gt;Men nej, ikke alene finder man på en ny finurlig regel, i stedet for at benytte sammenlægningen til at få luget ud i de mere eller mindre tilfældige forskelle der var i de eksisterende regler, men selvfølgelig skulle man bruge penge på at få modificeret billetautomaterne. Og det er da en sand Århus-historie sådan at kaste gode penge efter dårlige. &lt;br /&gt;&lt;br /&gt;PS: Passageren fik for resten sit klippekort; chaufføren var af den service-mindede type, som der heldigvis stadig er mange af bag rattet af vore lokale rutebiler, og han formåede derfor at overbevise bussen og/eller billet-maskinen midlertidigt om, at vi ikke længere var i Århus. For uden for Århus-området må man godt være hjælpsom.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8038382809366979121-2109660903343451413?l=hoeghsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/HoeghsBlog/~4/wcpGxBPdl-Y" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://hoeghsblog.blogspot.com/feeds/2109660903343451413/comments/default" title="Kommentarer til indlægget" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8038382809366979121&amp;postID=2109660903343451413" title="0 kommentarer" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8038382809366979121/posts/default/2109660903343451413?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8038382809366979121/posts/default/2109660903343451413?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/HoeghsBlog/~3/wcpGxBPdl-Y/logik-for-teknokrater.html" title="Logik for teknokrater" /><author><name>Bjarne Høgh Nielsen</name><uri>http://www.blogger.com/profile/10408934360381211598</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://bp0.blogger.com/_oKswy8x72fk/Ru7GvQsPP-I/AAAAAAAAA7A/WElUcgxMXVc/s1600/IMG_0388-1.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://hoeghsblog.blogspot.com/2011/10/logik-for-teknokrater.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0EHR3c4eyp7ImA9WxFbF04.&quot;"><id>tag:blogger.com,1999:blog-8038382809366979121.post-5444656156254389406</id><published>2010-07-10T07:26:00.000+02:00</published><updated>2010-07-10T07:27:16.933+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-10T07:27:16.933+02:00</app:edited><title>Lottoøkonomi</title><content type="html">Da jeg i sin tid startede på Handelshøjskolen, da grinede vi en del af vittigheden om, at lotteri i virkeligheden er en ekstraskat på de sandsynlighedsregningsmæssigt udfordrede. Senere er det gået op for mig, at intet kunne være mindre sandt: et negligerbart men sikkert tab imod en lille mulighed for en skelsættende stor gevinst, kan faktisk være attraktiv (det kommer i høj grad an på, hvad ens situation i øvrigt er). Og læg så dertil retten til at drømme for en stund. Næh, verden er ikke så nem som de introducerende tekster gerne ville gøre den til.&lt;br /&gt;&lt;br /&gt;Første gang at jeg hørte om Helle og Villys &lt;em&gt;"giv os en time om ugen"&lt;/em&gt;-plan, så tænkte jeg godt nok, at det var underligt, at det blev opfattet som en mere farbar vej at bede 40 mennesker, som allerede arbejder "fuld" tid, om en time mere, end at få bare en arbejdsdygtig, men i dag offentligt forsøget person, igang med at arbejde.&lt;br /&gt;&lt;br /&gt;Men måske har de ret - det er trods alt deres gesjæft at have en god fornemmelse for, hvad retning de politiske vinde blæser. Og ihukommende mine erfaringer med lotterispillets finurligheder, så må jeg erkende, at man ikke bare lige kan regne om imellem fuldtidsbeskæftigede og ubeskæftigede (i videste forstand, for vi har efterhånden fået opbygget et system, hvor man nemt kan blive klassificeret som værende "uden for arbejdsstyrken" og dermed ved et kunstgreb ikke tæller med som arbejdsløs).&lt;br /&gt;&lt;br /&gt;Det er i hvert fald rigtigt set, at vi bliver nødt til at tage tyren godt ved hornene og kigge den dybt i øjnene - vi bliver nødt til at øge vores effektivitet, og vil vi ikke løbe hurtigere, så må vi enten løbe i længere tid (eller være flere til at løbe). Så på den led, så er det fin plan - man kan måske nok med rette indvende, at det er både for lidt og for sent til at gøre en forskel, men der er vi jo nok tilbage ved det, som mere prosaisk ofte kaldes for det muliges kunst. Hellere en fugl i hånden end ti på taget!&lt;br /&gt;&lt;br /&gt;Trods det lave ambitionsniveau har forslaget nu alligevel sine udfordringer i praksis:&lt;br /&gt;&lt;br /&gt;Den første står jeg såmænd selv for - jeg arbejder allerede jævnligt mere end en time ekstra om ugen uden at det medfører nogen særlig opmærksomhed (jeg har fået at vide, at det følger med fin titel, ansvar og gråt hår...). Så jeg tænker, at det må være alle I andre, som altså lige må lægge jer lidt mere i selen, og se at komme ind i spillet!&lt;br /&gt;&lt;br /&gt;Og så er der den med at have gjort regning uden vært, for man kan måske nok mene, at Villy og Helle her er ude med at love en gratis omgang på andres regning. Siden det kom frem, har vi da også måtte lægge øre til, at de godt og grundigt er blevet undsagt af "en af deres egne", nemlig Dennis Kristensen. Selvom han tydeligvis har nogle medlemmer i ældreplejen, som sagtens vil kunne finde de berømte 12 minutter om dagen, uden at komme til at svede af den grund, så mener han stadig at buen i hans kreds er spændt til bristepunktet. Så han tænker også, at det må være nogle andre, som må lægge sig godt i selen, og se at komme ind i spillet!&lt;br /&gt;&lt;br /&gt;Men det for mig største skud for boven, som planen fik, kom faktisk fra en helt anden kant: en kyndig person henledte i al stilhed opmærksomheden på, at store dele af overenskomstforhandlingerne er lokale - og der er central indflydelse ikke gangbar valuta. Så de mere lavmælte af Helle og Villys venner kan næppe heller levere varen - de regner nemlig også med at sende regningen for festen videre til nogle andre.&lt;br /&gt;&lt;br /&gt;Så måske er det alligevel ikke så nemt at få 40 fuldtidsbeskæftigede til at arbejde lidt mere. Synd, for vi bliver altså nød til at gøre noget ved den samlede samfundsproduktion, hvis vi alle skal have et godt liv, også fremover.&lt;br /&gt;&lt;br /&gt;PS: Læg i øvrigt mærke til retorikken - det var ikke "en time om ugen", men "12 minutter om dagen". Det svarer lidt til, at alting koster noget med ...99 til sidst. Og mon ikke det virker bedre end "giv os halvdelen af din frokostpause", for det vil vække de sovende uhyrer omkring betalt frokost i nogle dele af samfundet...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8038382809366979121-5444656156254389406?l=hoeghsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/HoeghsBlog/~4/vhxTKiwWlF4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://hoeghsblog.blogspot.com/feeds/5444656156254389406/comments/default" title="Kommentarer til indlægget" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8038382809366979121&amp;postID=5444656156254389406" title="0 kommentarer" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8038382809366979121/posts/default/5444656156254389406?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8038382809366979121/posts/default/5444656156254389406?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/HoeghsBlog/~3/vhxTKiwWlF4/lottokonomi.html" title="Lottoøkonomi" /><author><name>Bjarne Høgh Nielsen</name><uri>http://www.blogger.com/profile/10408934360381211598</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://bp0.blogger.com/_oKswy8x72fk/Ru7GvQsPP-I/AAAAAAAAA7A/WElUcgxMXVc/s1600/IMG_0388-1.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://hoeghsblog.blogspot.com/2010/07/lottokonomi.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0MESHw8fip7ImA9WxFWEU4.&quot;"><id>tag:blogger.com,1999:blog-8038382809366979121.post-3565440389269709323</id><published>2010-05-29T09:42:00.003+02:00</published><updated>2010-05-29T13:10:09.276+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-29T13:10:09.276+02:00</app:edited><title>Den ægte vare</title><content type="html">Det er et stykke tid siden, at jeg sidst har ladet høre fra mig her, og - hånden på hjertet - så skyldes det hovedsageligt, at jeg har haft travlt med alt muligt andet. Men det skyldes også, at der - efter min mening - virkelig sker ting og sager i dansk politik for tiden.&lt;br /&gt;&lt;br /&gt;Væk er den Fogh'ske æras småmaniske regler, som grundlæggende havde til formål at undgå at få trykket alt for hårdt på speederen. Lidt ligesom når man efter overgangen fra SU til lønindkomst må lave regler for sig selv om at prøve at undgå fastfood mere end en dag om ugen, eller at kun spise chips om fredagen.&lt;br /&gt;&lt;br /&gt;Næh, nu går det for de mange forskellige interessegrupperinger vist mere ud på at sikre, at man ikke mister noget af det forspring, som man vandt, da alt gik hurtigt. &lt;br /&gt;&lt;br /&gt;Generelt set, så ser det ud til at den foretrukne løsning er at malke de køer, som man nu engang har, endnu hårdere - og at klemme deres foder. Ikke særligt ambitiøst, for der er da også rigeligt med tyre rundt omkring, som trænger til at blive taget grundigt ved hornene, men det er vel at forvente, når nu Folketinget er fyldt op med 179 socialdemokrater i varierende nuancer.&lt;br /&gt;&lt;br /&gt;Jeg troede aldrig, at denne dag ville komme, men jeg overvejer faktisk lige nu at stemme på Socialdemokraterne (dem med stort "S") - ikke fordi, at jeg synes at "Helle og Villy's store plan" er noget særligt - det er helt grundlæggende for alt lidt og for alt sent - næh, det måske mere fordi, at det er tydeligt, hvem der har omkring hundrede års erfaring i at være socialdemokrater, og hvem der hjælpeløst prøver at fumle sig frem i lånte gevandter, der ærligt talt ikke klæder dem særligt godt.&lt;br /&gt;&lt;br /&gt;Og når valget nu står imellem forskellige slags socialdemokrater, hvorfor så ikke vælge den ægte vare?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8038382809366979121-3565440389269709323?l=hoeghsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/HoeghsBlog/~4/WcBepjPVPL0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://hoeghsblog.blogspot.com/feeds/3565440389269709323/comments/default" title="Kommentarer til indlægget" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8038382809366979121&amp;postID=3565440389269709323" title="0 kommentarer" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8038382809366979121/posts/default/3565440389269709323?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8038382809366979121/posts/default/3565440389269709323?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/HoeghsBlog/~3/WcBepjPVPL0/den-gte-vare.html" title="Den ægte vare" /><author><name>Bjarne Høgh Nielsen</name><uri>http://www.blogger.com/profile/10408934360381211598</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://bp0.blogger.com/_oKswy8x72fk/Ru7GvQsPP-I/AAAAAAAAA7A/WElUcgxMXVc/s1600/IMG_0388-1.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://hoeghsblog.blogspot.com/2010/05/den-gte-vare.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkYNQ306eip7ImA9WxFTFUo.&quot;"><id>tag:blogger.com,1999:blog-8038382809366979121.post-1536515950358435542</id><published>2010-04-06T20:06:00.002+02:00</published><updated>2010-04-06T20:23:12.312+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-06T20:23:12.312+02:00</app:edited><title>Den ene synd...</title><content type="html">Der er en god, gammel vending, som siger, at den ene synd ikke undskylder den anden. Men kan en god gerning så undskylde en synd? Altså en slags aflad for forkant?&lt;br /&gt;&lt;br /&gt;Når jeg spørger sådan, så er det fordi, at jeg lige har modtaget et CO&lt;sub&gt;2&lt;/sub&gt; kompenseret brev. Jep, den er god nok, se bare her hos &lt;a href="http://www.post.dk/omtanke"&gt;Post Danmark&lt;/a&gt;. Man må med andre ord godt opføre sig grimt, bare man får nogle andre til at opføre sig tilsvarende pænt! &lt;br /&gt;&lt;br /&gt;Det er da et koncept med perspektiv i: næste gang jeg bliver taget i en fartkontrol, så henviser jeg bare til, at min kone altid kører meget langsommere end tilladt - og hvis jeg en gang skulle formå at forhindre en snothvalp i at få et par velfortjente flade, så er jeg allerede tilgivet, når junior engang kommer til at skramme bilen.&lt;br /&gt;&lt;br /&gt;Tak, Post Danmark, for sand innovativ tænkning af den slags, som gør verden til et meget bedre sted.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8038382809366979121-1536515950358435542?l=hoeghsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/HoeghsBlog/~4/zzgMA21LjMs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://hoeghsblog.blogspot.com/feeds/1536515950358435542/comments/default" title="Kommentarer til indlægget" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8038382809366979121&amp;postID=1536515950358435542" title="0 kommentarer" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8038382809366979121/posts/default/1536515950358435542?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8038382809366979121/posts/default/1536515950358435542?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/HoeghsBlog/~3/zzgMA21LjMs/den-ene-synd.html" title="Den ene synd..." /><author><name>Bjarne Høgh Nielsen</name><uri>http://www.blogger.com/profile/10408934360381211598</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://bp0.blogger.com/_oKswy8x72fk/Ru7GvQsPP-I/AAAAAAAAA7A/WElUcgxMXVc/s1600/IMG_0388-1.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://hoeghsblog.blogspot.com/2010/04/den-ene-synd.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0MASXsyeyp7ImA9WxBaEUs.&quot;"><id>tag:blogger.com,1999:blog-8038382809366979121.post-7844655784139584479</id><published>2010-03-21T10:46:00.004+01:00</published><updated>2010-03-21T10:57:28.593+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-21T10:57:28.593+01:00</app:edited><title>Kontekstfri II</title><content type="html">Som opfølgning på min &lt;a href="http://hoeghsblog.blogspot.com/2010/03/kontektsfri.html"&gt;post&lt;/a&gt; om &lt;a href="http://www.contextfreeart.org/index.html"&gt;Context Free&lt;/a&gt; kan vi vist godt klare et par billeder mere, begge fuldt deterministiske:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_oKswy8x72fk/S6XrtCRK5PI/AAAAAAAAG7Q/C1SmcUWP-HY/s1600-h/ball-overlap.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 399px;" src="http://2.bp.blogspot.com/_oKswy8x72fk/S6XrtCRK5PI/AAAAAAAAG7Q/C1SmcUWP-HY/s400/ball-overlap.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5451022082937382130" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_oKswy8x72fk/S6Xr3mjN4RI/AAAAAAAAG7Y/RaOFz5BKc0o/s1600-h/circsierp.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 374px;" src="http://3.bp.blogspot.com/_oKswy8x72fk/S6Xr3mjN4RI/AAAAAAAAG7Y/RaOFz5BKc0o/s400/circsierp.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5451022264475443474" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Det er virkelig simple programmer, som ligger bag billederne - ovenstående billede er f.eks. lavet med flg. kode:&lt;br /&gt;&lt;code&gt;&lt;pre&gt;&lt;br /&gt;startshape START&lt;br /&gt;&lt;br /&gt;background { b -1 } &lt;br /&gt;&lt;br /&gt;rule START {&lt;br /&gt;  CIRCA{ h 0 sat 1 b 0.5 a -.2}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;rule CIRCA{&lt;br /&gt;  3 * {r 120 x 4} CIRCO { s 0.5 b 0.1 h 5 }  &lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;rule CIRCO{&lt;br /&gt;   CIRCLE{ s 8}&lt;br /&gt;   CIRCA{}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/code&gt;&lt;br /&gt;...og så lover jeg ikke at skrive mere om det (medmindre der er mere at sige end bare det, at jeg har lavet flere billeder).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8038382809366979121-7844655784139584479?l=hoeghsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/HoeghsBlog/~4/IN5KY6O4ydI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://hoeghsblog.blogspot.com/feeds/7844655784139584479/comments/default" title="Kommentarer til indlægget" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8038382809366979121&amp;postID=7844655784139584479" title="0 kommentarer" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8038382809366979121/posts/default/7844655784139584479?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8038382809366979121/posts/default/7844655784139584479?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/HoeghsBlog/~3/IN5KY6O4ydI/kontekstfri-ii.html" title="Kontekstfri II" /><author><name>Bjarne Høgh Nielsen</name><uri>http://www.blogger.com/profile/10408934360381211598</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://bp0.blogger.com/_oKswy8x72fk/Ru7GvQsPP-I/AAAAAAAAA7A/WElUcgxMXVc/s1600/IMG_0388-1.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_oKswy8x72fk/S6XrtCRK5PI/AAAAAAAAG7Q/C1SmcUWP-HY/s72-c/ball-overlap.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://hoeghsblog.blogspot.com/2010/03/kontekstfri-ii.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUIMSH47eCp7ImA9WxBaEUw.&quot;"><id>tag:blogger.com,1999:blog-8038382809366979121.post-1923150045265823295</id><published>2010-03-20T21:19:00.004+01:00</published><updated>2010-03-20T21:39:49.000+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-20T21:39:49.000+01:00</app:edited><title>Kontektsfri</title><content type="html">Jeg sidder og leger med et program kaldet &lt;a href="http://www.contextfreeart.org/index.html"&gt;Context Free&lt;/a&gt;. Det er ret simpelt; det har et sprog - en kontekstfri grammatik - som kan bruges til at tegne med. Med meget simple instruktion kan man lave overraskende grafik - her er hvad jeg er kommet til at lave efter en times tid:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_oKswy8x72fk/S6Uvco3cU6I/AAAAAAAAG60/MPsMXYdfSgQ/s1600-h/flower.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 398px; height: 400px;" src="http://2.bp.blogspot.com/_oKswy8x72fk/S6Uvco3cU6I/AAAAAAAAG60/MPsMXYdfSgQ/s400/flower.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5450815093054657442" /&gt;&lt;/a&gt;&lt;br /&gt;...og så også den her:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_oKswy8x72fk/S6UyMI0ofgI/AAAAAAAAG68/UY7X1CG7aUU/s1600-h/spiral.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 400px;" src="http://4.bp.blogspot.com/_oKswy8x72fk/S6UyMI0ofgI/AAAAAAAAG68/UY7X1CG7aUU/s400/spiral.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5450818108109913602" /&gt;&lt;/a&gt;&lt;br /&gt;Det er hverken stort eller revolutionerede, men det er faktisk et glimrende tidsfordriv.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8038382809366979121-1923150045265823295?l=hoeghsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/HoeghsBlog/~4/rjbzaAUCEJQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://hoeghsblog.blogspot.com/feeds/1923150045265823295/comments/default" title="Kommentarer til indlægget" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8038382809366979121&amp;postID=1923150045265823295" title="0 kommentarer" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8038382809366979121/posts/default/1923150045265823295?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8038382809366979121/posts/default/1923150045265823295?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/HoeghsBlog/~3/rjbzaAUCEJQ/kontektsfri.html" title="Kontektsfri" /><author><name>Bjarne Høgh Nielsen</name><uri>http://www.blogger.com/profile/10408934360381211598</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://bp0.blogger.com/_oKswy8x72fk/Ru7GvQsPP-I/AAAAAAAAA7A/WElUcgxMXVc/s1600/IMG_0388-1.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_oKswy8x72fk/S6Uvco3cU6I/AAAAAAAAG60/MPsMXYdfSgQ/s72-c/flower.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://hoeghsblog.blogspot.com/2010/03/kontektsfri.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkUBR3o5fip7ImA9WxBbF0Q.&quot;"><id>tag:blogger.com,1999:blog-8038382809366979121.post-6713346180419106905</id><published>2010-03-17T02:50:00.002+01:00</published><updated>2010-03-17T03:50:56.426+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-17T03:50:56.426+01:00</app:edited><title>Gode nyheder fra Irak</title><content type="html">Set herfra er det gået ret let henover de lokale medier, at der kommer rigtigt gode nyheder fra Irak for tiden; måske fordi at dårlige nyheder set fra mediernes perspektiv er gode nyheder, og omvendt (og måske fordi at medierne i virkeligheden bare spejler noget meget menneskeligt)?&lt;br /&gt;&lt;br /&gt;Den ene gode nyhed fandt jeg i "The Economist", hvor jeg tilfældigt fandt en artikel om Irak, som havde en illustration af antallet af dødsfald indenfor de nationale og koalitionens styrker i Irak: i 2009 falder det dramatisk til noget, som i sammenligning med det det tidligere niveau må betegnes som stort set ingenting.&lt;br /&gt;&lt;br /&gt;Den anden gode nyhed er, at valget i Irak er forløbet fredeligt (alle ca. 50.000 valgsteder var åbne) og med stor og bred opbakning (over 60% valgdeltagelse, også i de sunni-muslimske områder) - og det endda uden nævneværdige uregelmæssigheder. Den nyhed kan man bl.a. finde i Weekendavisen.&lt;br /&gt;&lt;br /&gt;Valget er det andet frie valg i Irak, og denne gang skulle der være sket et skred væk fra grupperinger orienteret omkring etnicitet, religions- og klan-tilhørsforhold, og over imod egentlige interessefællesskabet (interesserne kan naturligvis stadig udspringe et mere regionalt ønske om øget autonomi, men det er vel også forståeligt nok, så længe at det favner bredt i regionen).&lt;br /&gt;&lt;br /&gt;Noget kunne derfor tyde på, at befolkningens store ønske om fred og økonomisk fremgang står for at blive indfriet, hvilket nok vil blive fulgt med stor opmærksomhed og blandede følelser fra nabolandene - og ikke mindst Iran og Saudi Arabien. Magtbalancen i Mellemøsten kan være ved at rykke sig, og det er nok også i det lys, at man skal se mange af de øvrige nyheder, som vi for tiden får fra den kant.&lt;br /&gt;&lt;br /&gt;At der er relativt stille herhjemme omkring udviklingen i Irak kan skyldes en berettiget afventede holdning - det er næsten for godt til at være sandt, og det er en udvikling som i nogen grad balancerer på en knivsæg, så det kan bestemt stadig nå at gå ganske meget galt.&lt;br /&gt;&lt;br /&gt;Men mon ikke en betydelig del af forklaringen også er, at der er mange, som har været ude med "det-går-aldrig-godt"-agtige fordømmelser, som nu har travlt med at finde noget andet at snakke om? At det tilsyneladende er ved at lykkedes at intervenere fysisk, og med en større indsats og betydelig investering, bevares, at få dreje en lukket, nationalistisk og elitært totalitær nation i retning af frihed og fred, er temmelig skelsættende.&lt;br /&gt;&lt;br /&gt;Inden vi lader os rive alt for meget med i eufori over de gode nyheder, så lad os for det første for det hårdt prøvede irakiske folk og for alle os andre håbe, at det er virkelig er en udvikling, som har bidt sig fast. &lt;br /&gt;&lt;br /&gt;Men lad os også lige reflektere over to forhold, nemlig dels at beslutningen om at handle tilsyneladende blev truffet på et meget tyndt grundlag af, hvad der nok må betegnes som ønsketænkning - at forstandige og godhjertede folk lod sig forlede til at viderebringe dette til vores fremmeste forsamlinger, siger måske noget noget om, hvor farligt det i virkeligheden er. Det at vi (måske) kommer i mål betyder ikke, at vejen dertil nødvendigvis har været den rigtige.&lt;br /&gt;&lt;br /&gt;Og dels, som bør vi også tænke grundigt over, hvilke unikke omstændigheder som gjorde forskellen her. Det er en tilsyneladende succes, som det vil være yderst fristende at forsøge at kopiere, men hvis vi ikke forstår forudsætningerne, så ender vi sandsynligvis med en temmelig dårlig kopi fremfor en ny succes.&lt;br /&gt;&lt;br /&gt;Så lad os glædes, men lad os ikke blive overmodige.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8038382809366979121-6713346180419106905?l=hoeghsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/HoeghsBlog/~4/Dw85uK0Ixwk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://hoeghsblog.blogspot.com/feeds/6713346180419106905/comments/default" title="Kommentarer til indlægget" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8038382809366979121&amp;postID=6713346180419106905" title="0 kommentarer" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8038382809366979121/posts/default/6713346180419106905?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8038382809366979121/posts/default/6713346180419106905?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/HoeghsBlog/~3/Dw85uK0Ixwk/gode-nyheder-fra-irak.html" title="Gode nyheder fra Irak" /><author><name>Bjarne Høgh Nielsen</name><uri>http://www.blogger.com/profile/10408934360381211598</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://bp0.blogger.com/_oKswy8x72fk/Ru7GvQsPP-I/AAAAAAAAA7A/WElUcgxMXVc/s1600/IMG_0388-1.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://hoeghsblog.blogspot.com/2010/03/gode-nyheder-fra-irak.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEMGQXw8cSp7ImA9WxBbFUQ.&quot;"><id>tag:blogger.com,1999:blog-8038382809366979121.post-6150894120301936838</id><published>2010-03-14T18:21:00.002+01:00</published><updated>2010-03-14T19:47:00.279+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-14T19:47:00.279+01:00</app:edited><title>Dumme computer</title><content type="html">Der er en gammel vending, som siger, at det er menneskeligt at fejle, men for virkelig at lave ulykker, så skal man bruge en computer. Amen!&lt;br /&gt;&lt;br /&gt;Jeg har en computer - den er god. Jeg har også en ekstern harddisk med USB forbindelse. - den er smart. Så har jeg to operativsystemer på computeren: Ubuntu, som af en eller anden grund altid virker - og så Windows, som bare er ... ja, godt gammeldags jysk træls.&lt;br /&gt;&lt;br /&gt;"Hvorfor bruger jeg så ikke bare altid Ubuntu?", sidder I sikker derude og spørger jer selv. Tjo, fordi at der bare er nogle programmer, som er svære at undvære, og som enten ikke findes til andet end Windows, eller også kun findes i en latterligt out-dated og semi-halvhjertet version; Googles Picasa f.eks.&lt;br /&gt;&lt;br /&gt;Picasa er smart - bl.a. fordi at det ikke retter i billederne, men derimod gemmer en liste af ændringer ved siden af, så ændringerne bare kan gentages, hvergang billedet skal vises - det gør det supernemt at ombestemme sig. Men Picasa gemmer listen af ændringen et eller andet obskurt sted, hvilket bl.a. gør backup til noget halv-vanskeligt noget.&lt;br /&gt;&lt;br /&gt;Men det har også en anden effekt, for hvis Picasa opdager, at den ikke længere kan finde et billede, så glemmer den øjeblikkeligt alt om alle ændringerne til billedet. Og det er den sørme god til, for kan den ikke finde nogen af alle de ti-tusinder af billeder, som jeg efterhånden har samlet sammen, så glemmer den alt om dem på et splitsekund ... og det uden at sige noget om det.&lt;br /&gt;&lt;br /&gt;"Hvordan kan billeder da blive væk?", sidder I sikkert også tænker, "... har du ikke bare selv slettet dem?". Ah, helt så oplagt er det ikke - og hvis det bare havde været det, så havde det vel sådan set været en form for OK. Næh, det er værre end som så, for hvis man virkelig skal lave ulykker, så kræver det en computer - eller rettere, Windows.&lt;br /&gt;&lt;br /&gt;For da jeg havde min gode, gamle XP, da kunne den ikke altid finde den eksterne harddisk (hvilket var underligt, for det kunne Ubuntu altid). Og ingen harddisk fortolker Picasa straks om, at der ingen billeder er. Puf! Alt væk på et splitsekund.&lt;br /&gt;&lt;br /&gt;Så fik jeg Vista, og den var ikke meget bedre. Måske endda værre, men jeg fik samtidig ny hardware, så det var ikke så tydeligt.&lt;br /&gt;&lt;br /&gt;Nu har jeg Windows 7, og den er væsentlig bedre til at finde den eksterne harddisk (... dog stadig ikke så god som Ubuntu!) - men så har den til gengæld et andet trick oppe i ærmet: Når den ikke lide kan finde den eksterne harddisk med det samme, så får den da bare et andet drevbogstav. Så engang imellem hedder den eksterne harddisk F: og en gang imellem hedder den L:. Og når det skifter, så kan Picasa igen ikke finde nogle billeder, og - puf! - så er det forfra med billedsamlingen igen.&lt;br /&gt;&lt;br /&gt;I behøver ikke at spørge, om jeg er træt af det. Havde Picasa dog bare ikke været sådan et glimrende program på alle andre måder, så ville alt have været nemmere!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8038382809366979121-6150894120301936838?l=hoeghsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/HoeghsBlog/~4/s5--WbO7Fwo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://hoeghsblog.blogspot.com/feeds/6150894120301936838/comments/default" title="Kommentarer til indlægget" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8038382809366979121&amp;postID=6150894120301936838" title="0 kommentarer" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8038382809366979121/posts/default/6150894120301936838?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8038382809366979121/posts/default/6150894120301936838?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/HoeghsBlog/~3/s5--WbO7Fwo/dumme-computer.html" title="Dumme computer" /><author><name>Bjarne Høgh Nielsen</name><uri>http://www.blogger.com/profile/10408934360381211598</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://bp0.blogger.com/_oKswy8x72fk/Ru7GvQsPP-I/AAAAAAAAA7A/WElUcgxMXVc/s1600/IMG_0388-1.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://hoeghsblog.blogspot.com/2010/03/dumme-computer.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUADRXg4eSp7ImA9WxBUGUQ.&quot;"><id>tag:blogger.com,1999:blog-8038382809366979121.post-8023424042812204821</id><published>2010-03-07T20:58:00.002+01:00</published><updated>2010-03-07T21:29:34.631+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-07T21:29:34.631+01:00</app:edited><title>Farlig knivlov</title><content type="html">Det regerende flertal i folketinget har godt nok ikke imponeret de seneste mange år - dels ved ret systematisk at danse som katten om den varme grød på helt nødvendige beslutninger, men også ved temmelig klodset håndtering af beslutninger, som mildest talt forekommer knap så presserende. Hvad der er lavpunktet, kan være svært at sige, men en af topkandidaterne er bestemt den såkaldte knivlov.&lt;br /&gt;&lt;br /&gt;Et eksempel på hvor tåbelig den lov er, oplevede jeg selv, da jeg var ude for at gå på stierne her i området. Det jeg kom på stien nede imellem skolen, gymnasiet, svømmehallen og børnehaverne, så jeg noget ligge i bladene, som på afstand måske godt lidt kunne ligne en urtekniv. Min første tanke var, at hvis det nu var en kniv, så jeg hellere tage den med hjem, og få den smidt ud. Men så slog det mig, at hvis jeg nu blev stoppet af ordensmagten og hvis den nu viser sig at være for lang, så ville jeg per automatik blive anklaget for overtrædelse af knivloven.&lt;br /&gt;&lt;br /&gt;Nu er anklaget heldigvis ikke det samme som dømt, og den dømmende magt er heldigvis som den langt overskyggende hovedregel meget rutinerede i at navigere i gråzonen imellem lovens bogstav og lovens hensigt i allehånde lavpraktiske dagligdagssituationer. Alligevel havde jeg ikke lyst til at tage chancen, for dels er 7 dages fængsel ikke noget, som jeg har lyst til, og dels afhænger mit nuværende job indirekte af en nogenlunde ren straffeattest, så også hus, bil og familiens hverdag i det hele taget stod på spil.&lt;br /&gt;&lt;br /&gt;Modet endte med at svigte mig, så jeg gik over på den anden side af stien. Lad os bare håbe enten, at det ikke var en kniv - eller, hvis det var en kniv, så at den bliver fundet af nogle &lt;em&gt;fornuftige&lt;/em&gt; børn under den kriminelle lavalder, som vist er det bedste bud på nogen, som risikofrit kan sørge for at den bliver bortskaffet på betryggende vis.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8038382809366979121-8023424042812204821?l=hoeghsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/HoeghsBlog/~4/15AIPquMj7s" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://hoeghsblog.blogspot.com/feeds/8023424042812204821/comments/default" title="Kommentarer til indlægget" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8038382809366979121&amp;postID=8023424042812204821" title="0 kommentarer" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8038382809366979121/posts/default/8023424042812204821?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8038382809366979121/posts/default/8023424042812204821?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/HoeghsBlog/~3/15AIPquMj7s/farlig-knivlov.html" title="Farlig knivlov" /><author><name>Bjarne Høgh Nielsen</name><uri>http://www.blogger.com/profile/10408934360381211598</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://bp0.blogger.com/_oKswy8x72fk/Ru7GvQsPP-I/AAAAAAAAA7A/WElUcgxMXVc/s1600/IMG_0388-1.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://hoeghsblog.blogspot.com/2010/03/farlig-knivlov.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck4HQ3sycCp7ImA9WxBUEU4.&quot;"><id>tag:blogger.com,1999:blog-8038382809366979121.post-7125635866113362230</id><published>2010-02-25T21:41:00.001+01:00</published><updated>2010-02-25T21:48:52.598+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-25T21:48:52.598+01:00</app:edited><title>Hvordan synes I selv det går?</title><content type="html">Det er kommet på mode, ikke bare at bede om mailadresser på alle dem, som vil handle med en, men at bruge denne mailadresse til at sende spørgeskemaundersøgelser. Altså bare sådan en lille en med to helt overordnede spørgsmål om, hvor stor en oplevelse handlen har været for en.&lt;br /&gt;&lt;br /&gt;Som tommelfingerregel er det fint at vise interesse, men jeg kan ikke forstå, hvorfor man sender spørgeskemaet med det samme? Det er vist kun McDonald, som sælger så simple produkter, at man vil være i stand til at svare så kort efter. Alligevel får man spørgeskemaer fra webshops o.lign. straks, når de har afsendt varen (og det er jo dage før man modtager pakken, endsige oplever hvordan service er efter salget, hvis man skulle få brug for returnere noget). &lt;br /&gt;&lt;br /&gt;Efter mit jobskifte i foråret, så kom jeg også til en "pensionsrådgivningssamtale", og til trods for, at den mundede ud i, at der var en række ting, som vi lige skulle have på plads, så kom spørgeskemaet prompte - og så er det, at jeg undrer mig over, hvad man i virkeligheden vil have svar på? For jeg kunne jo kun svare på, hvor god "rådgiveren" er til at love - men ikke sige noget om, hvorvidt vedkommende også kan følge op på løfterne, vel?&lt;br /&gt;&lt;br /&gt;Den anden ting, som jeg undrer mig over, er længden på spørgeskemaerne. Normalt står der kun noget i retning af: "Går det godt?" - det er sikkert fordi, at man forventes høfligt at svare "Ja, og hvad med dig?", ikk'? For hvad vil de gøre, hvis man svarer "Næh, egentlig ikke" - uden uddybning, så kan man jo ikke bruge det til noget.&lt;br /&gt;&lt;br /&gt;Jeg ved ikke med jer, men jeg er begyndt at ignorere de spørgeskemaer. Jeg har ellers gjort en dyd ud af at svare oprigtigt, når folk spørger interesseret til, hvad jeg synes, men disse "undersøgelser" er altså mest af alt en arrogant fornærmelse.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8038382809366979121-7125635866113362230?l=hoeghsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/HoeghsBlog/~4/DKeZycvOB54" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://hoeghsblog.blogspot.com/feeds/7125635866113362230/comments/default" title="Kommentarer til indlægget" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8038382809366979121&amp;postID=7125635866113362230" title="0 kommentarer" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8038382809366979121/posts/default/7125635866113362230?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8038382809366979121/posts/default/7125635866113362230?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/HoeghsBlog/~3/DKeZycvOB54/hvordan-synes-i-selv-det-gar.html" title="Hvordan synes I selv det går?" /><author><name>Bjarne Høgh Nielsen</name><uri>http://www.blogger.com/profile/10408934360381211598</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://bp0.blogger.com/_oKswy8x72fk/Ru7GvQsPP-I/AAAAAAAAA7A/WElUcgxMXVc/s1600/IMG_0388-1.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://hoeghsblog.blogspot.com/2010/02/hvordan-synes-i-selv-det-gar.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUYBSXw5fCp7ImA9WxBXFk8.&quot;"><id>tag:blogger.com,1999:blog-8038382809366979121.post-5455726020817635316</id><published>2010-01-27T21:05:00.002+01:00</published><updated>2010-01-27T21:12:38.224+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-27T21:12:38.224+01:00</app:edited><title>Trælst</title><content type="html">Prøv at forstille jer følelsen af, at være en dreng på otte, som lige har fået overbevist sine forældre om, at man er blevet for stor til sin cykel. Så bruger man  tid på at besøge forskellige cykelhandlere, og endelig finder man en drøm af en ny cykel: sort med røde flammer, 7 gear og nav-dynamo. Og selvom den er dyr, så er det den, som bliver købt ... og selvfølgelig får man den med hjem med det samme.&lt;br /&gt;&lt;br /&gt;Der går så to dage, hvor man kan sole sig i den opmærksomhed, som en ny cykel giver blandt skolebørn i den alder, men da man tredje dag kommer ud fra sidste time for at tage sin cykel op til SFO, så er den der ikke. Væk. Borte. Stjålet!&lt;br /&gt;&lt;br /&gt;Det skete for den store af mine drenge i dag. Trælst.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8038382809366979121-5455726020817635316?l=hoeghsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/HoeghsBlog/~4/tJpg1ASohIM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://hoeghsblog.blogspot.com/feeds/5455726020817635316/comments/default" title="Kommentarer til indlægget" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8038382809366979121&amp;postID=5455726020817635316" title="0 kommentarer" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8038382809366979121/posts/default/5455726020817635316?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8038382809366979121/posts/default/5455726020817635316?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/HoeghsBlog/~3/tJpg1ASohIM/trlst.html" title="Trælst" /><author><name>Bjarne Høgh Nielsen</name><uri>http://www.blogger.com/profile/10408934360381211598</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://bp0.blogger.com/_oKswy8x72fk/Ru7GvQsPP-I/AAAAAAAAA7A/WElUcgxMXVc/s1600/IMG_0388-1.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://hoeghsblog.blogspot.com/2010/01/trlst.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUMERX04eCp7ImA9WxBXE0s.&quot;"><id>tag:blogger.com,1999:blog-8038382809366979121.post-771546315748026424</id><published>2010-01-24T20:19:00.002+01:00</published><updated>2010-01-24T21:03:24.330+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-24T21:03:24.330+01:00</app:edited><title>Avisoverskrifter og graffiti</title><content type="html">Hvad har graffiti og avisoverskrifter til fælles? En hel del, i hvert fald rent sprogligt, for begge dele har reduceres sproget, ja nærmest kogt det ind til den pure essens. Det betyder også, at det engang imellem bliver utilsigtet tænkevækkende.&lt;br /&gt;&lt;br /&gt;Tag f.eks. denne overskrift, som jeg læste over skulderen på en med-passager i bussen den anden dag:&lt;br /&gt;&lt;h3 style="font-family:sans-serif"&gt;Ubegrundet frygt er farlig&lt;/h3&gt;Hmm. &lt;br /&gt;&lt;br /&gt;Bortset fra, at der sikkert tænkes på angst, så er der udtryk for en interessant selvmodsigelse - for hvis ubegrundet angst er farlig, så er den vel ikke ubegrundet? Eller er det måske angsten for angsten, som er velbegrundet?&lt;br /&gt;&lt;br /&gt;Uden alle omstændigheder, så er det næppe nogen nyhed, at angst fortærer sjæle (...og det var så den anden underhåndsreference til Fassbinder - nu skal jeg nok holde!).&lt;br /&gt;&lt;br /&gt;Jeg lovede vist også noget graffiti - her er lidt fra tunnellen under vejen, hvor jeg står på rutebilen:&lt;br /&gt;&lt;img src="http://lh4.ggpht.com/_oKswy8x72fk/S1yc5ZVCPiI/AAAAAAAAGMo/OTDfAkG3ol4/s400/1001-IMG_1840.JPG" /&gt;&lt;br /&gt;Jeg kommer til at smile hver gang, at jeg går forbi, for jeg kommer til at tænke på trolden &lt;a href="http://en.wikipedia.org/wiki/Detritus_(Discworld)#Detritus"&gt;Detritus&lt;/a&gt; fra DiscWorld, der jo som bekendt gør karriere i Ankh-Morpork City Watch - og på hans "piecemaker", som er et ombygget belejringsvåben, som Detritus bruger som et overdimensioneret armbrøst.&lt;br /&gt;&lt;br /&gt;Eller hvad med den her, taget samme sted fra:&lt;br /&gt;&lt;img src="http://lh6.ggpht.com/_oKswy8x72fk/S1yc5xXiz3I/AAAAAAAAGMs/mHz6ToDuLlo/s400/1001-IMG_1841.JPG" /&gt;&lt;br /&gt;hvor til man kun kan tilføje: &lt;i&gt;"...og alle andre voldelige intolerante!"&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;Hov, ventligeetøjeblik! :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8038382809366979121-771546315748026424?l=hoeghsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/HoeghsBlog/~4/iDH8CkDzZds" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://hoeghsblog.blogspot.com/feeds/771546315748026424/comments/default" title="Kommentarer til indlægget" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8038382809366979121&amp;postID=771546315748026424" title="0 kommentarer" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8038382809366979121/posts/default/771546315748026424?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8038382809366979121/posts/default/771546315748026424?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/HoeghsBlog/~3/iDH8CkDzZds/avisoverskrifter-og-graffiti.html" title="Avisoverskrifter og graffiti" /><author><name>Bjarne Høgh Nielsen</name><uri>http://www.blogger.com/profile/10408934360381211598</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://bp0.blogger.com/_oKswy8x72fk/Ru7GvQsPP-I/AAAAAAAAA7A/WElUcgxMXVc/s1600/IMG_0388-1.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/_oKswy8x72fk/S1yc5ZVCPiI/AAAAAAAAGMo/OTDfAkG3ol4/s72-c/1001-IMG_1840.JPG" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://hoeghsblog.blogspot.com/2010/01/avisoverskrifter-og-graffiti.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUQARHk5fCp7ImA9WxBQEkk.&quot;"><id>tag:blogger.com,1999:blog-8038382809366979121.post-7808865091793710219</id><published>2010-01-11T20:24:00.002+01:00</published><updated>2010-01-11T21:55:45.724+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-11T21:55:45.724+01:00</app:edited><title>Statsautoriserede dummebøder</title><content type="html">En af de ting, som sker i disse dage, er at vores stat begynder at opkræve almindelige bankrenter for det mellemværende, som vi som borgere og skatteydere måtte have med den. Første gang at jeg hørte om det, synes jeg nok, at det lød ... lad os sige "interessant", men jo mere jeg tænker over det, jo mere betænkelig bliver jeg.&lt;br /&gt;&lt;br /&gt;Misforstå mig ikke, jeg kommer ikke til at græde en eneste tåre over, at folk, som bevidst har udnyttet reglerne, nu ikke længere har den mulighed (eller i det mindste ikke længere bliver belønnet for det). Det gælder både dem, som bevidst har brugt skattevæsnet som en billig finansiering ved systematisk at underspille deres økonomiske formåen - og dem, som jeg har kendskab til brugte skattesystemet til at lave en gunstig ferieopsparing ved at forskudsregistrere en højere indkomst end de selv regnede med.&lt;br /&gt;&lt;br /&gt;Næh, min betænkelighed går mere på, at man først laver et system så overmåde kompliceret, at ingen almindelige mennesker har en jordisk chance for at gennemskue det, og så bagefter kræver penge op af alle som gætter forkert - både dem, som gætter for meget, og dem som gætter for lidt. Det lugter temmeligt meget af dummebøder.&lt;br /&gt;&lt;br /&gt;Fornemmelsen af, at man i virkeligheden slet ikke ser noget problem i tingenes tilstand, men snarere er ude efter endnu en finansieringskilde, som ikke er omfattet er det selverklærede skattestop, bliver forstærket, når man graver lidt mere i de bagvedliggende tal: Der har altid været flere skatteydere, som har overskydende skat til gode, end der er skatteydere med udestående restskat, og tilsammen har de altid haft en større samlet overskydende skat end den tilsvarende samlede restskat. Skatteyderne har derfor altid været med til at nettofinansiere staten.&lt;br /&gt;&lt;hr/&gt;Lidt fakta fra Danmarks statistik:&lt;br /&gt;I 2008 var der ca. 3 mio. skatteydere, som samlet set skulle have 25 mia. kroner tilbage for overskydende skat. Tilsvarende var der ca. 1,4 mio. skatteydere, som skulle efterbetale en restskat på i alt 9 mia. kroner. Der var ca. 0,5 mio. skatteydere, som hverken havde overskydende skat eller restskat.&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/SNfH_2heoeNh_Sub0Dbheg?authkey=Gv1sRgCOfso6y5gsmxDw&amp;feat=embedwebsite"&gt;&lt;img src="http://lh6.ggpht.com/_oKswy8x72fk/S0uL_tbQ3pI/AAAAAAAAGJg/hn_zczezK3w/s640/restskat.gif" /&gt;&lt;/a&gt;&lt;br /&gt;Antallet er skatteydere har ligget nogenlunde stabilt i hele perioden, og specielt over de sidste 10 år (i 2001 hhv. 2004 var der dog en forskydning på ca. 0,5 mio skatteydere fra overskydende skat til restskat - de to år ses også som knæk i ovenstående diagram)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8038382809366979121-7808865091793710219?l=hoeghsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/HoeghsBlog/~4/TteKxXIflKo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://hoeghsblog.blogspot.com/feeds/7808865091793710219/comments/default" title="Kommentarer til indlægget" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8038382809366979121&amp;postID=7808865091793710219" title="0 kommentarer" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8038382809366979121/posts/default/7808865091793710219?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8038382809366979121/posts/default/7808865091793710219?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/HoeghsBlog/~3/TteKxXIflKo/statsautoriserede-dummebder.html" title="Statsautoriserede dummebøder" /><author><name>Bjarne Høgh Nielsen</name><uri>http://www.blogger.com/profile/10408934360381211598</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://bp0.blogger.com/_oKswy8x72fk/Ru7GvQsPP-I/AAAAAAAAA7A/WElUcgxMXVc/s1600/IMG_0388-1.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/_oKswy8x72fk/S0uL_tbQ3pI/AAAAAAAAGJg/hn_zczezK3w/s72-c/restskat.gif" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://hoeghsblog.blogspot.com/2010/01/statsautoriserede-dummebder.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEcCQnk6eSp7ImA9WxBREU0.&quot;"><id>tag:blogger.com,1999:blog-8038382809366979121.post-5250451450079965923</id><published>2009-12-29T12:18:00.002+01:00</published><updated>2009-12-29T16:54:23.711+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-29T16:54:23.711+01:00</app:edited><title>Om minareter og folkets vilje...</title><content type="html">&lt;a style="float:right" href="http://picasaweb.google.dk/lh/photo/j5Fj0h5X-nAsb_Rgf-tANA?authkey=Gv1sRgCOfso6y5gsmxDw&amp;feat=embedwebsite"&gt;&lt;img src="http://lh3.ggpht.com/_oKswy8x72fk/SznlJdWkAlI/AAAAAAAAGFo/O--VGPHIjKc/s400/0912-IMG_1761.JPG" /&gt;&lt;/a&gt;Det vakte en del opmærksomhed rundt omkring i verden, og da i særdeleshed i Danmark, da svejtserne fornyligt i en folkeafstemning mønstrede et flertal for et forslag om forbud imod minareter. Det blev - vel i sær i Danmark - udlagt som et grimt eksempel på religiøs chauvinisme eller måske endda islamofobisk betinget religionsforfølgelse. &lt;br /&gt;&lt;br /&gt;I Danmark blev nyheden ofte ledsaget af udsagnet om, at nu fik Svejts også sin Muhammed krise; jeg forstår ikke det tilsyneladende traume, som vi som nation åbenbart stadig har over, at nogle i sin tid hidsede sig voldsomt op over nogle tegninger, og jeg forstår da slet ikke, hvorfor vi har så travlt med, at andre tilsyneladende også skal udsættes for det samme. Krise blev det nu ikke til - i hvert fald ikke i første omgang - det blev mest til nogle skuldertræk og en del advarende ord om det principielle i problemstillingen (sjovt nok mest fra andre religiøse bevægelser).&lt;br /&gt;&lt;br /&gt;Den mest forstandige behandling af begivenheden stod weekendavisen for i en kommentar, og jeg hæftede mig specielt ved bemærkningen om, at det ville blive vanskeligt at udmønte det resultat i konkret lovning. Svejts har vedkendt sig det udbredte og snusfornuftige princip om, at man i lovgivning ikke vil gå efter manden, men altid kun efter bolden - og det har man i øvrigt stadfæstet både i grundlovsmæssigt regi, og ved at bakke op om adskillige internationale konventioner.&lt;br /&gt;&lt;br /&gt;Hvad vil det sige i praksis - ja, skal man udtrykke det populært, så vil det aldrig blive forbudt at være blondine, og jeg vil bestemt heller ikke bryde mig om et samfund, hvor det kunne ske - men det vil bestemt være muligt at forbyde brugen af afblegningsmidler, hvis det kunne ske med henvisning til f.eks. sikkerheds- eller sundsmæssige hensyn. Det er ikke udtryk for blondine-diskrimination, også selvom det sikkert vil blive opfattet som sådan af mange brintoverilte-blondiner, for det forhindrer hverken naturlige blondiner eller f.eks. solafblegning af håret.&lt;br /&gt;&lt;br /&gt;Men tilbage til minareterne og folket vilje: Selvom inspirationen til forslaget om forbud imod minareter sikkert udspringer fra kredse med islamofobisk eller såmænd "bare" xenofobisk baggrund, så tvivler jeg personligt på, at det reelt er det, som ligger bag resultatet. Næ, jeg tror, at bevæggrunden er langt mere lavpraktisk af natur, og det synspunkt synes jeg faktisk, at jeg fik opbakning til i en omgang agurketidsjournalistik, når den er bedst, i nyhederne i går (beklager, men jeg husker ikke, om det var den ene eller den anden kanal): &lt;br /&gt;&lt;br /&gt;Når agurketiden truer, så finder man jo gerne et kontroversielt emne at lave en såkaldt "meningsmåling" om (hvad ofte bliver udlagt som en "folkeafstemning-light", hvilket er helt urimeligt, men lad det nu ligge i denne omgang), og denne gang var det minaretforbudet, som skulle igennem vridemaskinen. Ikke overraskende kom man frem til samme resultat som i Svejts.&lt;br /&gt;&lt;br /&gt;Her kunne historien så havde stoppet i en almindelig bedre-moralsk fordømmelse af folket stemme(!), men journalisterne havde været snedige, for de havde ledsaget det åbenlyse spørgsmål med spørgsmålet om, hvorvidt at man havde noget imod moskeer i det hele taget. Det havde man overraskende nok ikke, og det kom måske nok bag på journalisterne - det kom i hvert fald i første omgang bag på mig. &lt;br /&gt;&lt;br /&gt;Men ved nærmere eftertanke, så giver det måske ganske god mening - hvis man ikke bryder sig om tanken om en muezzins højlydte bedekald fem gange dagligt, men kun bliver spurgt om, hvordan man har det med moskeer, så vil man nok svare negativt - jeg ville i hvert fald. Den samme tanke havde man åbenbart også haft blandt journalisterne, for man havde efterfølgende været rundt og spørge folk på gaden om, hvad de mente om minareter uden bedekald, og det havde de åbenbart ikke kunnet finde nogen, som havde noget imod - og så blev historien rundet af med bemærkningen om, at det faktisk end ikke tilladt med den slags bedekald i den eksisterende lovgivning.&lt;br /&gt;&lt;br /&gt;Lad mig sige det igen: glimrende agurketids-journalitisk. Mere af det, tak!&lt;br /&gt;&lt;br /&gt;Og her ligger løsningen til svejtserne kattepine sikkert også - det vil give mening at forbyde højlydte bedekald, men i øvrigt tillade minareter i det hele taget (givet at bygningsregulativer og anden fornuftig håndhævelse af naturlig byudviklingen behørigt respekteres) - teknisk set vil det nok kræve endnu en folkeafstemning for at tilfredsstille deres forfatning, vil jeg tro uden at kende noget særligt til det. Højlydte bedekalde vil jo nemt kunne komme til både at overdøve kukure og udløse laviner ;-).&lt;br /&gt;&lt;br /&gt;Der løb den sag så ud - der er rent politisk set ikke fugl føde på den. Men hvis man alligevel tager den opgave på sig, at lave lovgivning imod højlydt påkalden af opmærksomhed i det offentlige rum - kald som rækker ud over de allerede omvendte og velvillige lyttere - så synes jeg bestemt, at man seriøst skal overveje at ophæve "folke"-kirkens monopol på at ødelægge byboeres søde skønhedssøvn søndag morgen - det hører efter min mening heller ingen steder henne. Eller i det mindste lave et krav om, at der kun måtte ringes, når kirken var over 80% fuld, til almindelig oplysning om, at så er det nu, hvis man stadig vil have en plads (det vil nok i praksis blive det samme som et totalforbud :-)).&lt;br /&gt;&lt;br /&gt;Og når vi er i gang, så kast lige et blik på det vedlagte billede - ja, det er en kirke, men se lige på begge sider af dens kønne tårn: der er nogen, som har tilladt opsætning af lyskastere til en eller anden mere eller mindre tilfældig sportsplads. Sådan noget kan ses 10-20 km væk (dem i Randers kan ses fra motorvejen hele vejen forbi Randers, og er faktisk mere generende end modkørende med langt lys). Og for hvad? Fordi at 22 folk kan rende rundt omkring en bold, mens et par hundrede andre kigger på, medens de forsøger at drikke sig bøvede i lunken fadøl.&lt;br /&gt;&lt;br /&gt;Eller hvad med de såkaldte "forlystelsesparker", som åbenbart gerne vil placere sig midt i de bynære skove ... hvis ikke de da kan komme helt ind i centrum ved siden af rådhus og hovedbanegård. Lad os også få dem med, når vi skal lovgive om ro og orden.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8038382809366979121-5250451450079965923?l=hoeghsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/HoeghsBlog/~4/iivx5hBR4hI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://hoeghsblog.blogspot.com/feeds/5250451450079965923/comments/default" title="Kommentarer til indlægget" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8038382809366979121&amp;postID=5250451450079965923" title="0 kommentarer" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8038382809366979121/posts/default/5250451450079965923?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8038382809366979121/posts/default/5250451450079965923?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/HoeghsBlog/~3/iivx5hBR4hI/om-minareter-og-folkets-vilje.html" title="Om minareter og folkets vilje..." /><author><name>Bjarne Høgh Nielsen</name><uri>http://www.blogger.com/profile/10408934360381211598</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://bp0.blogger.com/_oKswy8x72fk/Ru7GvQsPP-I/AAAAAAAAA7A/WElUcgxMXVc/s1600/IMG_0388-1.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/_oKswy8x72fk/SznlJdWkAlI/AAAAAAAAGFo/O--VGPHIjKc/s72-c/0912-IMG_1761.JPG" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://hoeghsblog.blogspot.com/2009/12/om-minareter-og-folkets-vilje.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUcCRXs7fyp7ImA9WxBSE0k.&quot;"><id>tag:blogger.com,1999:blog-8038382809366979121.post-4159851587739669642</id><published>2009-12-20T21:33:00.002+01:00</published><updated>2009-12-20T22:04:24.507+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-20T22:04:24.507+01:00</app:edited><title>Tragedien om COP15</title><content type="html">Parternes 15. konference (COP15) viste sig ikke at handle om klima, men om fordelingspolitik. Bevares, klimaet var i høj grad anledningen, eller om man vil, undskyldningen, men efterhånden som skåltalerne klingede af, så blev det hurtigt tydeligt, at det mere handlede om retten til rigdom.&lt;br /&gt;&lt;br /&gt;Der er ingen tvivl om, at festen er ved at blive noget overfyldt, og de oprindelige deltagere i festen (den første verden) er alvorlig bekymrede for, om der i det hele taget kan blive ved med at være en fest, hvis alle andre også skal være med. De andre (anført af G77) er i høj grad af den overbevisning, at nu er det deres tur til at feste, og hvis der ikke er plads til alle, så må de, som allerede har festet længe, jo bare afgive pladsen.&lt;br /&gt;&lt;br /&gt;Det er ikke nogen ny diskussion, ja faktisk er den ældgammel - den har bare fået nye klæder at svøbe sig i - og derfor er det  ret forudsigeligt, hvad der kommer til at ske (eller rettere, ikke ske).&lt;br /&gt;&lt;br /&gt;Nogle vil jo mene, at vi bare skal rykke lidt sammen, og så skal det nok altsammen gå. Andre mener, at man bare skal appelere til den sunde fornuft, for det er tydeligt, at hvis der ikke sker noget, så vil det hele blive ødelagt for alle.&lt;br /&gt;&lt;br /&gt;Det er i virkeligheden meget anerkendelseværdige synspunkter, som udspringer af gode hjerter, men desværre er det ikke så nemt i praksis, for vi står jo med noget der ligner ærkeeksemplet på &lt;a href="http://en.wikipedia.org/wiki/Tragedy_of_the_commons"&gt;"Tragedy of the Commons"&lt;/a&gt; (jeg tror at det på dansk oversættes til "Fælledens kollaps") - problemstilling som overfiskeri og anden form for rovdrift på naturressourcer er vand imod de problemer, som vi angiveligt står over for her. Og jeg beklager at sige det, men sporene skræmmer - løsninger, som har fungeret i mindre målestok, ser ikke ud til at kunne virke her.&lt;br /&gt;&lt;br /&gt;Spilteoretikerne giver os heller ikke meget håb - vi står med et ikke-nulsums spil, med store ligheder med "Fangernes dilemma". Enhver kan se, at den eneste rigtige løsning på fangernes dilemma, er at stå sammen, men fristelsen for at "free-ride" er i praksis for stor, og sanktionerne tilsvarende alt for små.&lt;br /&gt;&lt;br /&gt;COP15 var en chance som skulle tages, også selvom den var spinkel, mend det gik desværre som frygtet. Det eneste håb jeg kan se for en ændring, er at en gruppe af den tunge spillere går sammen, og bliver enige om at ændre spillets regler ... og samtidig gør det klart for alle andre deltagere, at hvis de stadig vil være med i spillet, så skal det være efter de nye regler.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8038382809366979121-4159851587739669642?l=hoeghsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/HoeghsBlog/~4/RdEmSQLpFkU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://hoeghsblog.blogspot.com/feeds/4159851587739669642/comments/default" title="Kommentarer til indlægget" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8038382809366979121&amp;postID=4159851587739669642" title="0 kommentarer" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8038382809366979121/posts/default/4159851587739669642?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8038382809366979121/posts/default/4159851587739669642?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/HoeghsBlog/~3/RdEmSQLpFkU/tragedien-om-cop15.html" title="Tragedien om COP15" /><author><name>Bjarne Høgh Nielsen</name><uri>http://www.blogger.com/profile/10408934360381211598</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://bp0.blogger.com/_oKswy8x72fk/Ru7GvQsPP-I/AAAAAAAAA7A/WElUcgxMXVc/s1600/IMG_0388-1.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://hoeghsblog.blogspot.com/2009/12/tragedien-om-cop15.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0cFSHkyeip7ImA9WxNaF0s.&quot;"><id>tag:blogger.com,1999:blog-8038382809366979121.post-1690489307233937261</id><published>2009-12-02T16:37:00.002+01:00</published><updated>2009-12-02T16:50:19.792+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-02T16:50:19.792+01:00</app:edited><title>Julen er startet</title><content type="html">I har sikkert også opdaget det, men ellers så kan jeg oplyse om, at julen er startet. For os startede den i går (1. december) kl. 05.38. Der kunne jeg ved selvsyn konstatere, at begge drenge var lysvågne og igang med at åbne julekalendre og checke gavesokker. Og så har jeg endda hørt fra nogle af mine kollegaer, at det var sent - hans dreng havde første gang vækket dem kl. 3 for at spørge, om han ikke snart måtte stå op.&lt;br /&gt;&lt;br /&gt;Det med gavesokkerne var ellers tæt på: Aftenen før, da jeg var ved at lægge drengene i seng, da kigger den yngste af dem alvorligt på mig. "Far, der er ingen gavesok", siger han så. Åh, nej, det havde vi lige glemt alt om. Jeg roder mig ud i en lang bortforklaring om, at nisserne at kommet bagud med forberedelserne i år, og derfor ikke er klar med alle gaverne til gavesokkerne. "Jamen, julemanden har en gavemaskine, som kan lave alt, hvad vi ønsker os", svarer han bare. Ja, det måtte jeg jo indrømme, for det havde vi jo lige læst i godnathistorien for nogle dage siden.&lt;br /&gt;&lt;br /&gt;Og nisserne havde sørme nået det alligevel. Personligt synes jeg nu godt nok, at det lignede noget fra det lager med børnefødselsgaver, som min kære kone har opbygget. Eller også så fik nisserne gavemaskinen til at virke. Smilet på den yngstes ansigt, da han opdagede gavesokken og fandt ud af, at den også havde indhold, var i hvertfald ikke til at tage fejl af.&lt;br /&gt;&lt;br /&gt;Jow, jow - det er ganske vist. Julen er kommet rettidigt i gang igen i år! Ho, ho, ho!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8038382809366979121-1690489307233937261?l=hoeghsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/HoeghsBlog/~4/telDW8DZRQA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://hoeghsblog.blogspot.com/feeds/1690489307233937261/comments/default" title="Kommentarer til indlægget" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8038382809366979121&amp;postID=1690489307233937261" title="0 kommentarer" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8038382809366979121/posts/default/1690489307233937261?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8038382809366979121/posts/default/1690489307233937261?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/HoeghsBlog/~3/telDW8DZRQA/julen-er-startet.html" title="Julen er startet" /><author><name>Bjarne Høgh Nielsen</name><uri>http://www.blogger.com/profile/10408934360381211598</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://bp0.blogger.com/_oKswy8x72fk/Ru7GvQsPP-I/AAAAAAAAA7A/WElUcgxMXVc/s1600/IMG_0388-1.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://hoeghsblog.blogspot.com/2009/12/julen-er-startet.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D08FSXYzcCp7ImA9WxNbFE0.&quot;"><id>tag:blogger.com,1999:blog-8038382809366979121.post-600526979094081318</id><published>2009-11-16T20:37:00.002+01:00</published><updated>2009-11-16T22:10:18.888+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-16T22:10:18.888+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="programmering" /><title>Områdeviden</title><content type="html">I forhold til databaser, så er jeg typen, som gerne vil udtrykke så meget viden om det domæne, som data omhandler, i databasen. Som minimum helt banalt identitet (og her tænker jeg ikke på kunstige nøgler) og referentiel integritet; og i virkeligheden vil jeg gerne sige meget mere, men som oftest understøtter databasesystemerne det kun i ringe udstrækning. Men lidt har også ret.&lt;br /&gt;&lt;br /&gt;Jeg vil gerne have, at databasesystemet hjælper mig med at holde orden i data, så programmerne ikke behøver at gøre det. På den måde bliver programmerne - efter min mening - sikrere og mere koncise.&lt;br /&gt;&lt;br /&gt;I modsætning her til står det synspunkt, at databasen sådan set bare er en stor spand, hvor man kan hælde semistrukturerede data i, og det med mindst muligt besvær. Integritetsregler er mest af alt i vejen, og i øvrigt så koster de vist også performance.&lt;br /&gt;&lt;br /&gt;Når man opfatter databasen på den måde, så giver det sig selv, at det bliver programmernes ansvar selv at sikre sig, at der er orden i data. Det lægger en større byrde på omhu og på kvalitetssikring.&lt;br /&gt;&lt;br /&gt;Selvom jeg har valgt side, så har begge synsvinkler faktisk hver i sær sin rimelighed. Er strukturen i rivende udvikling og/eller er skemaet til at overskue, så er det sandt, at integritetsregler mest af alt er i vejen. Men når kompleksiteten stiger, og når det er vigtigt at have konsistente data, så er det ofte nødvendigt at have databasesystemet som kustoden, som dels kan hjælpe med at vise vej, og dels kan afvise de værste unoder.&lt;br /&gt;&lt;br /&gt;Kort sagt, så hjælper integriteretreglerne med fastholde viden om domænet.&lt;br /&gt;&lt;br /&gt;I forhold til programmeringssprog, så er jeg typen, som har det bedst med sprog, som har en statisk typestruktur. Statisk typecheck gør det muligt at udtrykke ens forståelse af domænet præcist, og advarer en tidligt, hvis man - populært sagt - prøver at blande pærer og bananer.&lt;br /&gt;&lt;br /&gt;I modsætning hertil står programmeringssprog med en dynamisk typestruktur. Hvis domæneforståelsen er under udvikling, og man i har tilstrækkeligt overblik og udviser fornøden omhu, så er statisk typecheck mest af alt en spændetrøje på kreativiteten. &lt;br /&gt;&lt;br /&gt;Jeg kunne fortsætte, men i virkeligheden så vil jeg blive ganske skuffet, hvis I ikke allerede har gættet, at min pointe er, at der er tale en interessant parallel: integritetsregler i en database er en måde at udtrykke forretningsforståelse på, og det er typesystemet i et programmeringssprog også.&lt;br /&gt;&lt;br /&gt;Min holdning burde også være klar: jeg vil hellere lade compileren sikre konsistensen, end at jeg vil bruge tid på at skrive og vedligeholde unittest, som i bund og grund kun gør det samme. &lt;br /&gt;&lt;br /&gt;Alligevel må jeg erkende, at det kan blive belastende hele tiden at skulle bekræfte compileren i, at man godt kan huske, hvad der er pærer og hvad der der bananer. Rigtigt slemt bliver det, når man har noget kode, hvor man egentlig i bund og grund er lige glad med, om det er den ene eller den anden konkrete type - man tager bare imod pærer og giver pærer videre ... og viser de sig på et tidspunkt i virkeligheden at være bananer, så gør det ikke noget, bare man kan få og give dem videre uden at det bliver blandet sammen.&lt;br /&gt;&lt;br /&gt;Tag f.eks. følgende lille stump Scala kode:&lt;br /&gt;&lt;code&gt;&lt;pre&gt;class Bowl {&lt;br /&gt;  def getAFruit = new Pear&lt;br /&gt;  def add(fruit: Pear) = "Added "+fruit.toString &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;case class Pear  &lt;br /&gt;case class Banana&lt;br /&gt;  &lt;br /&gt;object Mixer {&lt;br /&gt;  def mix(aBowl: Bowl, anotherBowl: Bowl) = {&lt;br /&gt;    val fruit = aBowl getAFruit;&lt;br /&gt;    anotherBowl add(fruit)&lt;br /&gt;  }&lt;br /&gt;}&lt;/pre&gt;&lt;/code&gt;&lt;br /&gt;Her er tale om skåle til een slags frugt, og en mixer, som tager et stykke frugt fra den slags skåle og lægger det over i en anden skål af samme slags. Og &lt;br /&gt;grundlæggende set, så er mixeren faktisk lige glad med frugter - var det ikke lige fordi, at jeg havde kaldt metoder og variable noget frugtagtigt, så kunne det faktisk være hvad som helst. &lt;br /&gt;&lt;br /&gt;Ændrer man skålen til at give og tage bananer i stedet, så virker mixeren stadig. Men prøver man at lave om på skålen, så den giver bananer og tager imod pærer, så brokker compileren sig, som den skal - så der er i virkeligheden et typecheck omme bagved - vi bliver bare hjulpet af typeinferensen til at glemme det for et øjeblik. Og sådan bør det også være - det ligner for mig nærmest noget af det gode fra begge verdener.&lt;br /&gt;&lt;br /&gt;...og så for at lige at forgribe evt. kommentarer: Ja, det kunne modelleres mere præcist, f.eks. med anonyme typer - men det er helt anden snak.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8038382809366979121-600526979094081318?l=hoeghsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/HoeghsBlog/~4/34_fTMLjitU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://hoeghsblog.blogspot.com/feeds/600526979094081318/comments/default" title="Kommentarer til indlægget" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8038382809366979121&amp;postID=600526979094081318" title="0 kommentarer" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8038382809366979121/posts/default/600526979094081318?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8038382809366979121/posts/default/600526979094081318?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/HoeghsBlog/~3/34_fTMLjitU/omradeviden.html" title="Områdeviden" /><author><name>Bjarne Høgh Nielsen</name><uri>http://www.blogger.com/profile/10408934360381211598</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://bp0.blogger.com/_oKswy8x72fk/Ru7GvQsPP-I/AAAAAAAAA7A/WElUcgxMXVc/s1600/IMG_0388-1.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://hoeghsblog.blogspot.com/2009/11/omradeviden.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUQFQH85fSp7ImA9WxNVFko.&quot;"><id>tag:blogger.com,1999:blog-8038382809366979121.post-5258501802439015015</id><published>2009-10-27T20:18:00.002+01:00</published><updated>2009-10-27T20:55:11.125+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-27T20:55:11.125+01:00</app:edited><title>Om kontorer</title><content type="html">Prøv at læse ComputerWorld i dag - de har en artikel med titlen "Sådan indretter du det bedste it-kontor" (nej, ingen præcise links, for det kan danske dagblade ikke lide) - man skal godt nok igennem de første par sider for at komme igennem de fleste almindeligheder, men så kommer der også et par fine pointer.&lt;br /&gt;&lt;br /&gt;En pointe er, at store kontorer gør det nemt at finde sammen for at samarbejde. Forudsat selvfølgelig, at man kan finde ud af at samarbejde i forvejen, for ellers begynder man bare at gå hinanden på nerverne, og i værste fald udarter der sig en "tyssekultur" (hvor er det dog et fedt ord!). Det er sandt - jeg har siddet i store kontorer, hvor vi kunne sidde hele projektet, og være os selv, sammen, og det var rigtigt godt. Men jeg har også siddet i kontorlandskab, hvor vi var adskillige projektet fordelt over flere forskellige afdelinger, og det var en pest.&lt;br /&gt;&lt;br /&gt;En anden pointe er, at der ikke kun er brug for samarbejde, men også brug for plads til individuelt arbejde. Ja, tak! Her er man knapt så klar i spyttet, og svinger sig højest op til at mumle noget om plads til hjemmearbejdspladser. Det er efter min mening ikke godt nok - hjemmearbejde er efter min mening ikke ideelt; både fordi, at det er et skråplan at invitere arbejdet alt for permanent indenfor, der hvor man helst skulle have en helle - men også fordi at det simpelthen er for upraktisk. Ja, bevares, ikke et eneste ondt ord herfra om den fleksibilitet, som hjemmearbejdspladser giver - tvært imod - det er bare ikke løsningen på behovet for rum til individualitet. Der må kunne laves noget, som er bedre, og gerne noget, som man kan føle er ens eget, på samme måde, som kontorstolen og bordet er det i storrummet. Jeg tror snildt at en gruppe af mennesker vil kunne dele sådan et sted, bare det ikke bliver alt for mange.&lt;br /&gt;&lt;br /&gt;En tredje pointe er, at der er behov for "projektrum" - det er ikke helt klart, om det skal tages bogstaveligt, og forstås som en ekstra lokale til projektet (hvilket absolut giver mening), eller om det mere er et spørgsmål om projektet også skal kunne rummes. Vigtigt er det i hvert fald med vægplads til alt hvad projektet behøver - opslagstavler, grafer, plakater, oversigter og fælles bøger: alt det, som ofte bliver ofret i storrummene for at få stoppet de sidste par personer ind, og for at lave plads til store vinduer med dagslys. Forstå det dog: &lt;em&gt;vi har brug for vægplads!&lt;/em&gt; ... og det inkluderer også pladsen umiddelbart foran væggen - der kan ikke lige stå et skrivebord eller sidde en ekstra person med ryggen til; og heller ikke selvom han er ekstern konsulent, og kun er der tre dage om ugen.&lt;br /&gt;&lt;br /&gt;Så storrumskontorer - ja, tak, for det er på mange måder en genial ide - men husk at der stadig skal være plads til at være individuel ... og &lt;em&gt;aldrig&lt;/em&gt; på bekostning af vægpladsen og rummet til spontane møder (ellers samles vi på gangen eller foran kaffeautomaten - eller endnu værre, holder helt op med at mødes!).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8038382809366979121-5258501802439015015?l=hoeghsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/HoeghsBlog/~4/Axrem4AcKYQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://hoeghsblog.blogspot.com/feeds/5258501802439015015/comments/default" title="Kommentarer til indlægget" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8038382809366979121&amp;postID=5258501802439015015" title="0 kommentarer" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8038382809366979121/posts/default/5258501802439015015?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8038382809366979121/posts/default/5258501802439015015?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/HoeghsBlog/~3/Axrem4AcKYQ/om-kontorer.html" title="Om kontorer" /><author><name>Bjarne Høgh Nielsen</name><uri>http://www.blogger.com/profile/10408934360381211598</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://bp0.blogger.com/_oKswy8x72fk/Ru7GvQsPP-I/AAAAAAAAA7A/WElUcgxMXVc/s1600/IMG_0388-1.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://hoeghsblog.blogspot.com/2009/10/om-kontorer.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUEERXg9fyp7ImA9WxNWEkU.&quot;"><id>tag:blogger.com,1999:blog-8038382809366979121.post-420359983997368203</id><published>2009-10-11T16:35:00.007+02:00</published><updated>2009-10-11T21:00:04.667+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-11T21:00:04.667+02:00</app:edited><title>Hvad kan vi nå...?</title><content type="html">Der er vist et ordsprog siger siger, at hvis man prøver at jage to fugle, så får man ingen af dem. Jeg vil her prøve at tale om to ting, som begge har noget at gøre med hvor meget man kan nå (som nogle kalder det effektivitet eller velocity eller noget helt tredje...), og så håber jeg, at de er så beslægtede, at jeg får ram på i hvert fald noget af det.&lt;br /&gt;&lt;br /&gt;Den første er den erkendelse, som vi vel alle kender, at når man skal koncentrere sig, så skal man have ro. Det er derfor, at der er stille på bibliotekets læsesal, og det er derfor, at vi som studerende lukkede os inde på vores værelser, når vi skulle have noget fra hånden. Jeg ynder selv at bruge metaforen, at vi bygger mentale korthuse - med den prøver jeg dels at ramme det faktum, at man ikke kan bygge et korthus halvhjertet: det kræver fuld koncentration - men også at det hele kan ramle sammen selv ved små udefra kommende forstyrrelser: en tilfældig vind fra en dør som bliver åbent, eller en uforsigtig person, som lige snitter bordet, hvor korthuset står på ... der skal ikke meget til.&lt;br /&gt;&lt;br /&gt;Jeg har tidligere blogget lidt om &lt;a href="http://hoeghsblog.blogspot.com/2009/06/du-er-hvad-du-spiser.html"&gt;ready-ready&lt;/a&gt;, hvor jeg dengang hæftede mig ved det faktum, at ting skulle være i orden og helt klar, inden man gik i gang. Men jeg har også haft lejlighed høre &lt;a href="http://agile2009.agilealliance.org/files/WHI0001%20ScrumCMMI%20from%20Good%20to%20Great%201_11.PDF"&gt;Carsten fortælle om sin artikel&lt;/a&gt;, og han pegede også på, at det var vigtigt at kunne gøre det færdig, som man var gået i gang med. Eller med andre ord, at det ikke var nok, at alle opgaver var klar - det var også vigtigt, at der ikke blev skiftet hest i vadestedet flere gange undervejs.&lt;br /&gt;&lt;br /&gt;Der er en erkendelse, som andre også er kommet frem til: i denne artikel fra &lt;a href="http://www.codinghorror.com/blog/archives/000691.html"&gt;Coding Horror&lt;/a&gt; fortælles om den dramatiske nedgang i opgaveløsningsevnen der kommer, når man prøver at multitaske - og i denne artikel fra &lt;a href="http://softwarenation.blogspot.com/2009/01/importance-of.html"&gt;Software Nation&lt;/a&gt; diskuteres begrebet "flow", og det faktum at flow-stilstanden kan brydes på et øjeblik, men som tommelfingerregel tager i omegnen af et helt kvarter at skabe - der skal mao. ikke mange forstyrrelser til på en dag førend megen god tid er blevet tabt.&lt;br /&gt;&lt;br /&gt;Derfor ser man også tit, at folk med behov for at koncentrere sig prøver at skabe lommer af ro i løbet af dagen, f.eks. ved at møde tidligt, blive sent eller ved at tage hovedtelefoner på. Nogle kan også formå at komme i en zen-lignende trance, som gør at de virker distræte og tabt for omverdenen.&lt;br /&gt;&lt;br /&gt;Ud fra ovenstående er det oplagt, at jo mere ro, jo bedre, men det er desværre ikke så simpelt. Meget af det, som vi i dag går og laver, er blevet så kompliceret, at det kræver andres hjælp - en hjælp, som vi har brug for, for ikke at få brudt vores flow, men som samtidig gør, at vi bliver nød til at bryde andres flow. &lt;br /&gt;&lt;br /&gt;At diskutere hvad, der vil være den rette balance, er bestemt også interessant, men faktisk vil jeg ikke gå længere her, end til at konstatere, at ro og kontinuitet hhv. forstyrrelser og afbrydelser er en betydelig faktor i forståelsen af, hvor meget man kan nå.&lt;br /&gt;&lt;br /&gt;Det er vel en af grundene til, at man ser mange gå væk fra at estimere i timer, for ingen timer er ens: et timeestimat indeholder både et gæt på opgavens kompleksitet og et gæt på den forventede produktivitet. En bedre måde at estimere på vil være, at fokusere på kompleksitet og effektivitet som to forskellige størrelser. &lt;br /&gt;&lt;br /&gt;Kompleksitet kan man måle i idealtimer (hvor lang tid skal en uforstyrret udvikler bruge), og derefter lave en forholdsmæssig reduktion for, hvad forstyrrelser betyder - en tommelfingerregel siger, at der kan leveres 6 effektive timer på en 7½ times arbejdsdag, men det afhænger meget af forstyrrelsernes karakter og omfang, så det kan til tider være væsentligt mindre (i parentes skal bemærkes, at denne størrelse godt kan blive selvrefererende, for i virkeligheden vil det feedback som kommer i kraft af vundne erfaringer gøre, at man efter nogen tid ikke længere arbejder med "idealtimer", men derimod med "den slags timer, som der er seks af på en dag med de sædvanlige forstyrrelser" ... men det er en anden snak).&lt;br /&gt;&lt;br /&gt;Andre går skridtet videre, og frigør helt kompleksitet fra fysisk eller virtuel tid, for vi har alle forskellige forudsætninger (og forskellighed kendetegner netop et godt team, for så kan man supplere hinanden). Forskelligheden betyder f.eks., at det er helt naturligt, at jeg kan se på en opgave og tænke "10 dage", mens mine kollegaer tænker "2 dage" hhv. "5 dage" - og vi kan alle have ret, hver for sig. Derfor vil man ofte i stedet prøve at estimere i relative størrelser af sammenlignelige opgaver - det være sig "storypoints" eller "gummibamser" eller hvad man nu finder på - pointen er, at ved at frigøre sig fra noget, som a priori har en fast betydning, så kan man i stedet blive enige om en fælles relativ reference.&lt;br /&gt;&lt;br /&gt;Godt - hvis vi nu lige for argumentet skyld lige antager, at der er helt styr på det med vurdere, hvor lang tid noget tager, så er der faktisk endnu en usikkerhed, som jeg tit oplever at man overser: nemlig hvor meget tid, som rent faktisk står til rådighed.&lt;br /&gt;&lt;br /&gt;Det mentale trylletrick som oftest laves, er at antage at alle er der fuld tid, medmindre at de holder fri eller er på heldags kursus el.lign ... og det er faktisk ofte på langt sigt og i det store og hele et meget godt gæt (som så også er regnet ind i antagelsen om en 6 effektive timer på en dag). Men det er et gæt, på samme måde som vi ovenfor gættede på produktiviteten.&lt;br /&gt;&lt;br /&gt;I og med at det er et gæt, så er det faktisk interessant at måle på den på samme måde som fremdrift måles. Skyldes den faktiske fremdrift f.eks. høj produktivitet kombineret med korte dage og sygdom, eller er det lav produktivitet med lange dage og en helt usædvanlig sygdomsfri periode?&lt;br /&gt;&lt;br /&gt;Har man let adgang til løbende registrering af timeforbrug, så kan det derfor være interessant at plotte en kurve over et "faktisk effort burndown" plottet op imod det "planlagte effort burndown", som jo findes på alle burndowncharts. Og hvis adgangen til faktisk forbrug ikke er så let, så er det såmænd også meget fint bare at tage totalen med i de jævnlige revurderinger (f.eks. ifm. retrospektiv). For på samme måde, som det er interessant at diskutere, hvor megen "kompleksitet", som man nåede i forhold til planen, så er det også ganske interessant at diskutere, hvor god planen var. Er niveauet stabilt, så bliver der ikke så meget at snakke om, men ændrer det sig, så kan det være, at der er forhold som kræver opmærksomhed.&lt;br /&gt;&lt;br /&gt;Opsummerende, så kan man sige, at spørgsmålet om, hvad man kan nå afhænger af (mindst) tre faktorer: &lt;ol&gt;&lt;li&gt;Opgavens omfang (kompleksitet)&lt;/li&gt;&lt;li&gt;Vilkårene for dens løsning (effektivitet, eller kompleksitet i forhold til forbrugt tid)&lt;/li&gt;&lt;li&gt;Ressourceudnyttelse (efficiens, eller forbrugt tid i forhold til planlagt tid)&lt;/li&gt;&lt;/ol&gt;Om muligt, så bør man opsamle erfaringer for alle tre faktorer - for kender man dem ikke, så er det yderst vanskeligt at sige noget om, hvad man kan nå. Ved at skille faktorerne ad i stedet for at betragte dem samlet, så vil man dels opnå en mindre samlet variation i gættene, men også en større forståelse for, hvorfor gættene lander, hvor de gør.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8038382809366979121-420359983997368203?l=hoeghsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/HoeghsBlog/~4/gPshQUL_0XQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://hoeghsblog.blogspot.com/feeds/420359983997368203/comments/default" title="Kommentarer til indlægget" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8038382809366979121&amp;postID=420359983997368203" title="0 kommentarer" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8038382809366979121/posts/default/420359983997368203?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8038382809366979121/posts/default/420359983997368203?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/HoeghsBlog/~3/gPshQUL_0XQ/hvad-kan-vi-na.html" title="Hvad kan vi nå...?" /><author><name>Bjarne Høgh Nielsen</name><uri>http://www.blogger.com/profile/10408934360381211598</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://bp0.blogger.com/_oKswy8x72fk/Ru7GvQsPP-I/AAAAAAAAA7A/WElUcgxMXVc/s1600/IMG_0388-1.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://hoeghsblog.blogspot.com/2009/10/hvad-kan-vi-na.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0cGQXY8eCp7ImA9WxNQFUg.&quot;"><id>tag:blogger.com,1999:blog-8038382809366979121.post-4250996326822481197</id><published>2009-09-21T20:37:00.002+02:00</published><updated>2009-09-21T20:50:20.870+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-21T20:50:20.870+02:00</app:edited><title>15 skridt</title><content type="html">Bussen går et stykke fra, hvor vi bor, og derfor har vi efterhånden fået en hel lille tradition med at deles om tage min kones cykel der hen, og så lade den stå ved stoppestedet til, når vi kommer hjem igen.&lt;br /&gt;&lt;br /&gt;I dag da jeg kom med bussen, da kunne jeg så konstatere, at nogen havde brugt cykelkurven som affaldsspand: der lå en halv pølse og noget sammenkrøllet pølsepapir i den - de glade givere havde i øvrigt ikke været særligt gode til at ramme, for der lå lige så meget på jorden omkring cyklen.&lt;br /&gt;&lt;br /&gt;Og så er det, at man spørger sig selv: hvorfor? Den nærmeste skraldespand var stort set tom, og lå kun femten skridt væk - jeg ved det, for jeg talte dem, da jeg gik derhen med affaldet. &lt;br /&gt;&lt;br /&gt;Gad vide, om det er nogen, som trænger meget til briller, men ikke har råd på grund af finanskrisen? Eller måske kom jeg helt uforvarende til at ødelægge en fremtidig installationskunstners allerførste værk?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8038382809366979121-4250996326822481197?l=hoeghsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/HoeghsBlog/~4/zbK0HIcNj6Q" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://hoeghsblog.blogspot.com/feeds/4250996326822481197/comments/default" title="Kommentarer til indlægget" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8038382809366979121&amp;postID=4250996326822481197" title="4 kommentarer" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8038382809366979121/posts/default/4250996326822481197?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8038382809366979121/posts/default/4250996326822481197?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/HoeghsBlog/~3/zbK0HIcNj6Q/15-skridt.html" title="15 skridt" /><author><name>Bjarne Høgh Nielsen</name><uri>http://www.blogger.com/profile/10408934360381211598</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://bp0.blogger.com/_oKswy8x72fk/Ru7GvQsPP-I/AAAAAAAAA7A/WElUcgxMXVc/s1600/IMG_0388-1.JPG" /></author><thr:total>4</thr:total><feedburner:origLink>http://hoeghsblog.blogspot.com/2009/09/15-skridt.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0UDRns6eSp7ImA9WxNQEU8.&quot;"><id>tag:blogger.com,1999:blog-8038382809366979121.post-4201692771299678307</id><published>2009-09-16T21:05:00.002+02:00</published><updated>2009-09-16T21:27:57.511+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-16T21:27:57.511+02:00</app:edited><title>Tegnsætsudfordringer</title><content type="html">Jeg har lige for nyligt skrevet som at bruge &lt;a href="http://hoeghsblog.blogspot.com/2009/09/c-webservice-og-curl.html"&gt;curl til test af ikke-trivielle C#-webservices&lt;/a&gt; - hvis man er usædvanligt skarpøjet, så vil man kunne have set, at jeg har lavet en potentiel tegnsætsfejl - men man kan ikke se det mere, for jeg har rettet eksemplet til; jeg vil gerne forklare her, hvor i den bestod:&lt;br /&gt;&lt;br /&gt;XML-dokumentet sagde jo selv, at det var skrevet i UTF-8 tegnsættet - men faktisk var det endda skrevet i den delmængde, som også er kendt som US-ASCII. Hvis man kigger på headeren til content-type, som findes i scriptet, så kan man se, at mime-typen er sat til "text/xml". At burde derfor være idel lykke, ikke sandt?&lt;br /&gt;&lt;br /&gt;Nej, så langt fra, for hvis man nærlæser &lt;a href="http://www.ietf.org/rfc/rfc3023"&gt;RFC3023&lt;/a&gt;, så kan man i afsnit 3.1 se, at der på det stærkeste anbefales at angive et tegnsæt til typen text/xml - og hvis man ikke gør det, så skal indholdet fortolket som værende US-ASCII! Mit eksempel går derfor kun godt, fordi at det tilfældigvis holdt sig indenfor US-ASCII, men i samme øjeblik at man f.eks. prøver at skrive "ÆØÅæøå", så bryder det sammen på subtil vis.&lt;br /&gt;&lt;br /&gt;Løsningen er derfor at ændre mime-typen til "text/xml;charset=utf-8".&lt;br /&gt;&lt;br /&gt;Spørg lige om det var svært at finde, når man opdager problemet i en integrationstest, hvor webservicen som sagt er skrevet i C#, men hvor den skriver data ned i en Oracle-database, hvor det så senere læses af en server, som er skrevet i C++, som sender det over en socket-baseret legacy-protokol for at havne i MFC/C++ baseret klient?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8038382809366979121-4201692771299678307?l=hoeghsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/HoeghsBlog/~4/PGUAIddcAt4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://hoeghsblog.blogspot.com/feeds/4201692771299678307/comments/default" title="Kommentarer til indlægget" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8038382809366979121&amp;postID=4201692771299678307" title="0 kommentarer" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8038382809366979121/posts/default/4201692771299678307?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8038382809366979121/posts/default/4201692771299678307?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/HoeghsBlog/~3/PGUAIddcAt4/tegnstsudfordringer.html" title="Tegnsætsudfordringer" /><author><name>Bjarne Høgh Nielsen</name><uri>http://www.blogger.com/profile/10408934360381211598</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://bp0.blogger.com/_oKswy8x72fk/Ru7GvQsPP-I/AAAAAAAAA7A/WElUcgxMXVc/s1600/IMG_0388-1.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://hoeghsblog.blogspot.com/2009/09/tegnstsudfordringer.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUEDQ3wzcSp7ImA9WxNQEU8.&quot;"><id>tag:blogger.com,1999:blog-8038382809366979121.post-5002296794040479357</id><published>2009-09-08T19:37:00.003+02:00</published><updated>2009-09-16T21:01:12.289+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-16T21:01:12.289+02:00</app:edited><title>C# Webservice og curl</title><content type="html">For nyligt blev jeg bedt om at hjælpe på et projekt, hvor man havde brug for at udvide nogle webservices, som var skrevet i C#. Ja, det er ikke just min boldgade, men hvor svært kan det være? Og det er faktisk gået over al forventning. &lt;br /&gt;&lt;br /&gt;At kalde det for webservices er måske lidt en tilsnigelse, for der er i vid udstrækning tale om et remote procedure call, også selvom det er pakket fint ind - der bruges godt nok plusord som "SOAP", "WSDL" og "Document Literal" (i en helt egenartig variation - bravo Microsoft!), men reelt skriver man en metode, og så bruger man værktøjer til at generere "det ind imellem". &lt;br /&gt;&lt;br /&gt;Kigger man på den WSDL, som kommer ud af det, så bliver man ikke imponeret. At man har felter med en datatype, som kan være Null, betyder ikke at feltet skal være optionelt - jeg kiggede bl.a. på en webservice til at sende SMS'er, og der måtte man ifølge service definitionen selv om, om man ville angive telefonnummer og besked!&lt;br /&gt;&lt;br /&gt;Kan man sluge den kamel (og det er noget af kamel at sluge for en person som jeg, der er til stærkt typede sprog), så må man sige, at det er ganske nemt. Og muligheden for at kalde den autogenerede metode via POST af en tilsvarende autogenereret formular, er tilnærmelsesvist genialt. Hvor er det dog nemt at få en hurtig test af det, som man lige har flikket sammen.&lt;br /&gt;&lt;br /&gt;Men så var det, at jeg pludselig rendte ind i flg. besked på testsiden:&lt;br /&gt;&lt;blockquote&gt;The test form is only available for methods with primitive types or arrays of primitive types as parameters.&lt;/blockquote&gt;...mand, og nu gik det ellers lige så godt med mine små "Hello, world!" eksperimenter.&lt;br /&gt;&lt;br /&gt;Den sad jeg så lidt og grublede over. Det kunne da ikke være sandt, at man ikke kunne teste sådan en webservice på andre måder end ved at lave en hel ny klient til den?&lt;br /&gt;&lt;br /&gt;Så var det, at jeg faldt over &lt;a href="http://en.wikipedia.org/wiki/CURL"&gt;cURL&lt;/a&gt;. Hmm. Sammen med afvisningen på testsiden var der jo et eksempeldokument - mon ikke det kunne lade sig gøre, at kalde webservicen direkte via cURL?&lt;br /&gt;&lt;br /&gt;Dokumentet kunne f.eks. være dette:&lt;br /&gt;&lt;style type="text/css"&gt;&lt;!--.syntax0 {color: #000000;}.syntax1 {color: #cc0000;}.syntax2 {color: #ff8400;}.syntax3 {color: #6600cc;}.syntax4 {color: #cc6600;}.syntax5 {color: #ff0000;}.syntax6 {color: #9966ff;}.syntax7 {background: #ffffcc;color: #ff0066;}.syntax8 {color: #006699;font-weight: bold;}.syntax9 {color: #009966;font-weight: bold;}.syntax10 {color: #0099ff;font-weight: bold;}.syntax11 {color: #66ccff;font-weight: bold;}.syntax12 {color: #02b902;}.syntax13 {color: #ff00cc;}.syntax14 {color: #cc00cc;}.syntax15 {color: #9900cc;}.syntax16 {color: #6600cc;}.syntax17 {color: #0000ff;}.syntax18 {color: #000000;font-weight: bold;}.gutter {background: #dbdbdb;color: #000000;}.gutterH {background: #dbdbdb;color: #990066;}--&gt;&lt;/style&gt;&lt;pre&gt;&lt;span class="syntax0"&gt;&lt;span class="gutter"&gt;   1:&lt;/span&gt;&lt;span class="syntax10"&gt;&amp;lt;?&lt;/span&gt;&lt;span class="syntax10"&gt;xml&lt;/span&gt;&lt;span class="syntax10"&gt; &lt;/span&gt;&lt;span class="syntax10"&gt;version=&amp;quot;1.0&amp;quot;&lt;/span&gt;&lt;span class="syntax10"&gt; &lt;/span&gt;&lt;span class="syntax10"&gt;encoding=&amp;quot;utf-8&amp;quot;?&lt;/span&gt;&lt;span class="syntax10"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   2:&lt;/span&gt;&lt;span class="syntax17"&gt;&amp;lt;&lt;/span&gt;&lt;span class="syntax12"&gt;soap&lt;/span&gt;&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax17"&gt;Envelope&lt;/span&gt;&lt;span class="syntax17"&gt; &lt;/span&gt;&lt;span class="syntax12"&gt;xmlns&lt;/span&gt;&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax17"&gt;xsi&lt;/span&gt;&lt;span class="syntax17"&gt;=&lt;/span&gt;&lt;span class="syntax13"&gt;&amp;quot;&lt;/span&gt;&lt;span class="syntax13"&gt;http://www.w3.org/2001/XMLSchema-instance&lt;/span&gt;&lt;span class="syntax13"&gt;&amp;quot;&lt;/span&gt;&lt;span class="syntax17"&gt; &lt;/span&gt;&lt;span class="syntax12"&gt;xmlns&lt;/span&gt;&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax17"&gt;xsd&lt;/span&gt;&lt;span class="syntax17"&gt;=&lt;/span&gt;&lt;span class="syntax13"&gt;&amp;quot;&lt;/span&gt;&lt;span class="syntax13"&gt;http://www.w3.org/2001/XMLSchema&lt;/span&gt;&lt;span class="syntax13"&gt;&amp;quot;&lt;/span&gt;&lt;span class="syntax17"&gt; &lt;/span&gt;&lt;span class="syntax12"&gt;xmlns&lt;/span&gt;&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax17"&gt;soap&lt;/span&gt;&lt;span class="syntax17"&gt;=&lt;/span&gt;&lt;span class="syntax13"&gt;&amp;quot;&lt;/span&gt;&lt;span class="syntax13"&gt;http://schemas.xmlsoap.org/soap/envelope/&lt;/span&gt;&lt;span class="syntax13"&gt;&amp;quot;&lt;/span&gt;&lt;span class="syntax17"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   3:&lt;/span&gt;  &lt;span class="syntax17"&gt;&amp;lt;&lt;/span&gt;&lt;span class="syntax12"&gt;soap&lt;/span&gt;&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax17"&gt;Body&lt;/span&gt;&lt;span class="syntax17"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   4:&lt;/span&gt;    &lt;span class="syntax17"&gt;&amp;lt;&lt;/span&gt;&lt;span class="syntax17"&gt;TestData&lt;/span&gt;&lt;span class="syntax17"&gt; &lt;/span&gt;&lt;span class="syntax17"&gt;xmlns&lt;/span&gt;&lt;span class="syntax17"&gt;=&lt;/span&gt;&lt;span class="syntax13"&gt;&amp;quot;&lt;/span&gt;&lt;span class="syntax13"&gt;http://test.example.org/ws&lt;/span&gt;&lt;span class="syntax13"&gt;&amp;quot;&lt;/span&gt;&lt;span class="syntax17"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;   5:&lt;/span&gt;      &lt;span class="syntax17"&gt;&amp;lt;&lt;/span&gt;&lt;span class="syntax17"&gt;Id&lt;/span&gt;&lt;span class="syntax17"&gt;&amp;gt;&lt;/span&gt;Alfa&lt;span class="syntax17"&gt;&amp;lt;&lt;/span&gt;&lt;span class="syntax17"&gt;/&lt;/span&gt;&lt;span class="syntax17"&gt;Id&lt;/span&gt;&lt;span class="syntax17"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   6:&lt;/span&gt;      &lt;span class="syntax17"&gt;&amp;lt;&lt;/span&gt;&lt;span class="syntax17"&gt;list&lt;/span&gt;&lt;span class="syntax17"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   7:&lt;/span&gt;        &lt;span class="syntax17"&gt;&amp;lt;&lt;/span&gt;&lt;span class="syntax17"&gt;item&lt;/span&gt;&lt;span class="syntax17"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   8:&lt;/span&gt;          &lt;span class="syntax17"&gt;&amp;lt;&lt;/span&gt;&lt;span class="syntax17"&gt;field&lt;/span&gt;&lt;span class="syntax17"&gt;&amp;gt;&lt;/span&gt;NAME&lt;span class="syntax17"&gt;&amp;lt;&lt;/span&gt;&lt;span class="syntax17"&gt;/&lt;/span&gt;&lt;span class="syntax17"&gt;field&lt;/span&gt;&lt;span class="syntax17"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   9:&lt;/span&gt;          &lt;span class="syntax17"&gt;&amp;lt;&lt;/span&gt;&lt;span class="syntax17"&gt;oldValue&lt;/span&gt;&lt;span class="syntax17"&gt;&amp;gt;&lt;/span&gt;gammelt navn&lt;span class="syntax17"&gt;&amp;lt;&lt;/span&gt;&lt;span class="syntax17"&gt;/&lt;/span&gt;&lt;span class="syntax17"&gt;oldValue&lt;/span&gt;&lt;span class="syntax17"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  10:&lt;/span&gt;          &lt;span class="syntax17"&gt;&amp;lt;&lt;/span&gt;&lt;span class="syntax17"&gt;newValue&lt;/span&gt;&lt;span class="syntax17"&gt;&amp;gt;&lt;/span&gt;nyt navn&lt;span class="syntax17"&gt;&amp;lt;&lt;/span&gt;&lt;span class="syntax17"&gt;/&lt;/span&gt;&lt;span class="syntax17"&gt;newValue&lt;/span&gt;&lt;span class="syntax17"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  11:&lt;/span&gt;        &lt;span class="syntax17"&gt;&amp;lt;&lt;/span&gt;&lt;span class="syntax17"&gt;/&lt;/span&gt;&lt;span class="syntax17"&gt;item&lt;/span&gt;&lt;span class="syntax17"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  12:&lt;/span&gt;        &lt;span class="syntax17"&gt;&amp;lt;&lt;/span&gt;&lt;span class="syntax17"&gt;item&lt;/span&gt;&lt;span class="syntax17"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  13:&lt;/span&gt;          &lt;span class="syntax17"&gt;&amp;lt;&lt;/span&gt;&lt;span class="syntax17"&gt;field&lt;/span&gt;&lt;span class="syntax17"&gt;&amp;gt;&lt;/span&gt;CITY&lt;span class="syntax17"&gt;&amp;lt;&lt;/span&gt;&lt;span class="syntax17"&gt;/&lt;/span&gt;&lt;span class="syntax17"&gt;field&lt;/span&gt;&lt;span class="syntax17"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  14:&lt;/span&gt;          &lt;span class="syntax17"&gt;&amp;lt;&lt;/span&gt;&lt;span class="syntax17"&gt;oldValue&lt;/span&gt;&lt;span class="syntax17"&gt;&amp;gt;&lt;/span&gt;Gammelby&lt;span class="syntax17"&gt;&amp;lt;&lt;/span&gt;&lt;span class="syntax17"&gt;/&lt;/span&gt;&lt;span class="syntax17"&gt;oldValue&lt;/span&gt;&lt;span class="syntax17"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  15:&lt;/span&gt;          &lt;span class="syntax17"&gt;&amp;lt;&lt;/span&gt;&lt;span class="syntax17"&gt;newValue&lt;/span&gt;&lt;span class="syntax17"&gt;&amp;gt;&lt;/span&gt;Nyborg&lt;span class="syntax17"&gt;&amp;lt;&lt;/span&gt;&lt;span class="syntax17"&gt;/&lt;/span&gt;&lt;span class="syntax17"&gt;newValue&lt;/span&gt;&lt;span class="syntax17"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  16:&lt;/span&gt;        &lt;span class="syntax17"&gt;&amp;lt;&lt;/span&gt;&lt;span class="syntax17"&gt;/&lt;/span&gt;&lt;span class="syntax17"&gt;item&lt;/span&gt;&lt;span class="syntax17"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  17:&lt;/span&gt;      &lt;span class="syntax17"&gt;&amp;lt;&lt;/span&gt;&lt;span class="syntax17"&gt;/&lt;/span&gt;&lt;span class="syntax17"&gt;list&lt;/span&gt;&lt;span class="syntax17"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  18:&lt;/span&gt;    &lt;span class="syntax17"&gt;&amp;lt;&lt;/span&gt;&lt;span class="syntax17"&gt;/&lt;/span&gt;&lt;span class="syntax17"&gt;TestData&lt;/span&gt;&lt;span class="syntax17"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;  19:&lt;/span&gt;  &lt;span class="syntax17"&gt;&amp;lt;&lt;/span&gt;&lt;span class="syntax17"&gt;/&lt;/span&gt;&lt;span class="syntax12"&gt;soap&lt;/span&gt;&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax17"&gt;Body&lt;/span&gt;&lt;span class="syntax17"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="gutterH"&gt;  20:&lt;/span&gt;&lt;span class="syntax17"&gt;&amp;lt;&lt;/span&gt;&lt;span class="syntax17"&gt;/&lt;/span&gt;&lt;span class="syntax12"&gt;soap&lt;/span&gt;&lt;span class="syntax18"&gt;:&lt;/span&gt;&lt;span class="syntax17"&gt;Envelope&lt;/span&gt;&lt;span class="syntax17"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;Og cURL kan kaldes på flg. måde:&lt;br /&gt;&lt;style type="text/css"&gt;&lt;!--.syntax0 {color: #000000;}.syntax1 {color: #cc0000;}.syntax2 {color: #ff8400;}.syntax3 {color: #6600cc;}.syntax4 {color: #cc6600;}.syntax5 {color: #ff0000;}.syntax6 {color: #9966ff;}.syntax7 {background: #ffffcc;color: #ff0066;}.syntax8 {color: #006699;font-weight: bold;}.syntax9 {color: #009966;font-weight: bold;}.syntax10 {color: #0099ff;font-weight: bold;}.syntax11 {color: #66ccff;font-weight: bold;}.syntax12 {color: #02b902;}.syntax13 {color: #ff00cc;}.syntax14 {color: #cc00cc;}.syntax15 {color: #9900cc;}.syntax16 {color: #6600cc;}.syntax17 {color: #0000ff;}.syntax18 {color: #000000;font-weight: bold;}.gutter {background: #dbdbdb;color: #000000;}.gutterH {background: #dbdbdb;color: #990066;}--&gt;&lt;/style&gt;&lt;pre&gt;&lt;span class="syntax0"&gt;&lt;span class="gutter"&gt;   1:&lt;/span&gt;&lt;span class="syntax2"&gt;#!&lt;/span&gt;&lt;span class="syntax2"&gt;/bin/bash&lt;/span&gt;&lt;br /&gt;&lt;span class="gutter"&gt;   2:&lt;/span&gt;curl -H &lt;span class="syntax13"&gt;&amp;quot;&lt;/span&gt;&lt;span class="syntax13"&gt;SOAPAction&lt;/span&gt;&lt;span class="syntax13"&gt;:&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;\&amp;quot;http&lt;/span&gt;&lt;span class="syntax13"&gt;:&lt;/span&gt;&lt;span class="syntax13"&gt;/&lt;/span&gt;&lt;span class="syntax13"&gt;/&lt;/span&gt;&lt;span class="syntax13"&gt;test&lt;/span&gt;&lt;span class="syntax13"&gt;.&lt;/span&gt;&lt;span class="syntax13"&gt;example&lt;/span&gt;&lt;span class="syntax13"&gt;.&lt;/span&gt;&lt;span class="syntax13"&gt;org&lt;/span&gt;&lt;span class="syntax13"&gt;/&lt;/span&gt;&lt;span class="syntax13"&gt;ws&lt;/span&gt;&lt;span class="syntax13"&gt;/&lt;/span&gt;&lt;span class="syntax13"&gt;TestData\&amp;quot;&lt;/span&gt;&lt;span class="syntax13"&gt;&amp;quot;&lt;/span&gt; \&lt;br /&gt;&lt;span class="gutter"&gt;   3:&lt;/span&gt;  -H &lt;span class="syntax13"&gt;&amp;quot;&lt;/span&gt;&lt;span class="syntax13"&gt;Content&lt;/span&gt;&lt;span class="syntax13"&gt;-&lt;/span&gt;&lt;span class="syntax13"&gt;Type&lt;/span&gt;&lt;span class="syntax13"&gt;:&lt;/span&gt;&lt;span class="syntax13"&gt; &lt;/span&gt;&lt;span class="syntax13"&gt;text&lt;/span&gt;&lt;span class="syntax13"&gt;/&lt;/span&gt;&lt;span class="syntax13"&gt;xml;charset=utf-8&lt;/span&gt;&lt;span class="syntax13"&gt;&amp;quot;&lt;/span&gt; \&lt;br /&gt;&lt;span class="gutter"&gt;   4:&lt;/span&gt;  -d @testdata.xml \ &lt;br /&gt;&lt;span class="gutterH"&gt;   5:&lt;/span&gt;  http://localhost/TestWebService/TestWebService.asmx?&lt;span class="syntax9"&gt;op&lt;/span&gt;&lt;span class="syntax18"&gt;=&lt;/span&gt;TestData&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;De to "-H" sætter headers på, og "-d" refererer til filen med ovenstående xml-dokument (som er body i beskeden). Sværere er det såmænd ikke.&lt;br /&gt;&lt;br /&gt;Yeah!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8038382809366979121-5002296794040479357?l=hoeghsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/HoeghsBlog/~4/dlqecf5-tM8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://hoeghsblog.blogspot.com/feeds/5002296794040479357/comments/default" title="Kommentarer til indlægget" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8038382809366979121&amp;postID=5002296794040479357" title="2 kommentarer" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8038382809366979121/posts/default/5002296794040479357?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8038382809366979121/posts/default/5002296794040479357?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/HoeghsBlog/~3/dlqecf5-tM8/c-webservice-og-curl.html" title="C# Webservice og curl" /><author><name>Bjarne Høgh Nielsen</name><uri>http://www.blogger.com/profile/10408934360381211598</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://bp0.blogger.com/_oKswy8x72fk/Ru7GvQsPP-I/AAAAAAAAA7A/WElUcgxMXVc/s1600/IMG_0388-1.JPG" /></author><thr:total>2</thr:total><feedburner:origLink>http://hoeghsblog.blogspot.com/2009/09/c-webservice-og-curl.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEACQHo_eyp7ImA9WxNSGU8.&quot;"><id>tag:blogger.com,1999:blog-8038382809366979121.post-7424081651132177668</id><published>2009-09-02T21:09:00.002+02:00</published><updated>2009-09-02T22:19:21.443+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-02T22:19:21.443+02:00</app:edited><title>Demo</title><content type="html">Da jeg tidligere skrev om &lt;a href="http://hoeghsblog.blogspot.com/2009/08/knibergs-checkliste-v20.html"&gt;Kniberg scrum checkliste&lt;/a&gt; faldt der pludselig nogle brikker på plads for mig - og jeg vil gerne dele nogle af dem med jer her, men lov mig til gengæld, at tilgive mig på forhånd, hvis der i virkeligheden er tale om, at jeg er den sidste til at indse det indlysende!&lt;br /&gt;&lt;br /&gt;Og hvad er det så, som er gået op for mig? Jo, at demo er vigtigt for et godt scrum.&lt;br /&gt;&lt;br /&gt;Tit springes demo over, og vel som oftest fordi at det er en noget kunstig affære - en ceremoni, som der står i teoribøgerne, at man skal lave (som f.eks. førnævnte checkliste)- og så laver man det. Sådan har mange af de demoer, som jeg har deltaget i på diverse teams i hvert fald været, og er der noget, som vi ikke har tid til i en agil verden, så er det ceremoni!&lt;br /&gt;&lt;br /&gt;Vi har også prøvet at efterrationalisere over det, og som oftest har det været noget med, at vi med demoen markerede, at vi var færdige - eller med andre ord en slags sejrsdans over sprintet. Hmm - hvis ikke man har styr på sit done-kriterium, så vil ikke nok så mange demoer hjælpe en ... og hvem har ikke oplevet en demo af noget, som i virkeligheden viste sig at være foilware? Nej, jeg mener ikke, at det er derfor. &lt;br /&gt;&lt;br /&gt;Et andet argument var, at nu havde vi arbejdet på så mange forskellige ting i løbet af sprintet, at det var godt, at vi fik lejlighed til at vise det frem for hinanden. Hmm i anden - der er forhåbentlig kun et team, og det har forhåbentlig allerede arbejde sammen imod samme mål i et helt sprint ... så hvad er der lige at vise hinanden? Næh, det kan heller ikke være derfor.&lt;br /&gt;&lt;br /&gt;Lad os i stedet kigge på nogle af de andre elementer i scrum: &lt;br /&gt;&lt;br /&gt;Vi har for det første en Product Owner (ja, altså en rigtig en, som skal leve - eller dø! - med det, som vi laver, og ikke sådan en "produkt-stråmand", som man desværre alt for tit ser i stedet for), fordi at vi hele tiden vil lave de ting, som er til størst nytte.&lt;br /&gt;&lt;br /&gt;Vi har for det andet retrospectives, fordi at vi hele tiden vil forsøge at gøre det bare lidt bedre (og fordi at vi ved, at gør man det hele tiden lidt bedre, så bliver det meget bedre på langt sigt!).&lt;br /&gt;&lt;br /&gt;Hvad er demoen så? Jo, det er det sted, hvor vi som team får direkte feedback fra dem, som skal leve af og med resultatet af vores arbejde. Hvis Product Owner er en rigtig Product Owner, så er han helt essentiel for, at demoen giver værdi: for temaet skal opleve, hvor han griner og hvor han græder. Men det skal ikke kun være begrænset til Product Owner selv - der må meget gerne være andre slutbrugere til stede - de som også skal leve af, og med, det som temaet har frembragt.&lt;br /&gt;&lt;br /&gt;Som et naturligt resultat af en demo vil hele teamet have en forståelse af, hvad som virkede godt, og hvad, som virkede mindre godt - og det er en viden, som teamet kan tage med direkte med tilbage i dets arbejde på løbende at forbedre processen.&lt;br /&gt;&lt;br /&gt;Demo skal derfor falde rimeligt kort efter sprintets afslutning, og gerne inden retrospektiv, for en god demo vil danne et godt udgangspunkt for diskussionen på retrospektivet.&lt;br /&gt;&lt;br /&gt;Teamet vil, når det har mødt brugerne, også naturligt få en bedre forståelse for baggrunden for de ønsker, som det fremover skal arbejde med realisere, og vil derfor være væsentligt bedre rustet til dette.&lt;br /&gt;&lt;br /&gt;Demo har også en anden værdi - for i scrum fokuserer man hele tiden på, at levere noget, som gør en synlig forskel ... og hvordan kan man vise noget frem, som ikke gør en synlig forskel? Demoen er dermed en indikator af, om Product Owner og temaet tilsammen evner at fokusere på det rette ... falder det svært eller unaturligt at lave en demo efter et sprint, så spørg jer selv, om det er det rette, som man har brugt tiden på?&lt;br /&gt;&lt;br /&gt;Endelig er der jo det faktum, at der ikke er noget mere motiverende end at vide, at man har gjort en positiv forskel - og det gælder også for et scrumteam.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8038382809366979121-7424081651132177668?l=hoeghsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/HoeghsBlog/~4/P-wOlen3CX4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://hoeghsblog.blogspot.com/feeds/7424081651132177668/comments/default" title="Kommentarer til indlægget" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8038382809366979121&amp;postID=7424081651132177668" title="5 kommentarer" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8038382809366979121/posts/default/7424081651132177668?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8038382809366979121/posts/default/7424081651132177668?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/HoeghsBlog/~3/P-wOlen3CX4/demo.html" title="Demo" /><author><name>Bjarne Høgh Nielsen</name><uri>http://www.blogger.com/profile/10408934360381211598</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://bp0.blogger.com/_oKswy8x72fk/Ru7GvQsPP-I/AAAAAAAAA7A/WElUcgxMXVc/s1600/IMG_0388-1.JPG" /></author><thr:total>5</thr:total><feedburner:origLink>http://hoeghsblog.blogspot.com/2009/09/demo.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEcGSHg4eip7ImA9WxNSEk4.&quot;"><id>tag:blogger.com,1999:blog-8038382809366979121.post-4815655456956984293</id><published>2009-08-25T19:40:00.003+02:00</published><updated>2009-08-25T22:27:09.632+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-25T22:27:09.632+02:00</app:edited><title>Overskud i hverdagen</title><content type="html">I denne sommerferie havde vi lavet en fælles liste over ting, som vi godt kunne tænke os, og børnene havde blandt andet fået skrevet på, at vi skulle tage en tur med Kulhuse-færgen &lt;a href="http://da.wikipedia.org/wiki/MF_Columbus"&gt;M/F Columbus&lt;/a&gt;, når vi var i mormors sommerhus.&lt;br /&gt;&lt;br /&gt;&lt;a style="clear:both" href="http://picasaweb.google.dk/lh/photo/QZAxK5OTtPk7CeyXhJnffg?authkey=Gv1sRgCOfso6y5gsmxDw&amp;feat=embedwebsite"&gt;&lt;img src="http://lh5.ggpht.com/_oKswy8x72fk/SpQhupLuiBI/AAAAAAAAENo/Vq9UBuwcAhA/s400/DSC_4286-01.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Vi måtte faktisk køre en omvej for at komme med over, overfarten er kort og vi har gjort det flere gange før - men det bliver helt opvejet af noget udefinerbart - måske er det hyggen, og måske er det fordi at turen faktisk er ganske malerisk, så vi havde alle høje forventninger.&lt;br /&gt;&lt;br /&gt;Det var en smuk sommeraften, og straks da vi kom ombord, så fløj ungerne ud, for de skulle op for at hilse på skipper og hans papegøje. Og så gik snakken ellers, for skipper er en rigtig hyggelig fætter. Der var selvfølgelig mange spørgsmål, og skipper viste gerne, hvordan han kunne styre færgens to motorer. &lt;br /&gt;&lt;br /&gt;Så faldt snakken på, at min store dreng havde været på Bakken for at fejre sin fødselsdag dagen før (han er stadig i den alder, hvor fødselsdage er noget, man praler af), og så spurgte skipper, som drengene ville have en karrusel-tur?&lt;br /&gt;&lt;br /&gt;Det ville de rigtigt nok gerne, og da vi var kommet ned og havde stillet os i stævnen, så lod skipper færgen tage en 360&lt;sup&gt;o&lt;/sup&gt; snurretur omkring egen akse! Vi var tæt nok på land til, at vi kunne se folk stå og måbe derinde, og drengene var ikke til at skyde igennem bagefter: det er helt sikkert en af feriens allerstørste oplevelser.&lt;br /&gt;&lt;br /&gt;Det er virkelig at have overskud i hverdagen, og herfra skal lyde en stor tak til skipper!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8038382809366979121-4815655456956984293?l=hoeghsblog.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/HoeghsBlog/~4/8X7EMY3RMVI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://hoeghsblog.blogspot.com/feeds/4815655456956984293/comments/default" title="Kommentarer til indlægget" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8038382809366979121&amp;postID=4815655456956984293" title="0 kommentarer" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8038382809366979121/posts/default/4815655456956984293?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8038382809366979121/posts/default/4815655456956984293?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/HoeghsBlog/~3/8X7EMY3RMVI/overskud-i-hverdagen.html" title="Overskud i hverdagen" /><author><name>Bjarne Høgh Nielsen</name><uri>http://www.blogger.com/profile/10408934360381211598</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://bp0.blogger.com/_oKswy8x72fk/Ru7GvQsPP-I/AAAAAAAAA7A/WElUcgxMXVc/s1600/IMG_0388-1.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/_oKswy8x72fk/SpQhupLuiBI/AAAAAAAAENo/Vq9UBuwcAhA/s72-c/DSC_4286-01.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://hoeghsblog.blogspot.com/2009/08/overskud-i-hverdagen.html</feedburner:origLink></entry></feed>

