<?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;AkIHQXk4fip7ImA9WhRRFE4.&quot;"><id>tag:blogger.com,1999:blog-4909329195064505990</id><updated>2011-11-27T16:02:10.736-08:00</updated><category term="Personal" /><category term="C++" /><category term="Qt" /><category term="Hunting" /><category term="Software Engineering" /><category term="Politik" /><category term="In_Swedish" /><title>KjellKod . CC</title><subtitle type="html">&lt;i&gt;Is similar to my name but also a Swedish word game.
KjellKod pronounced in Swedish will sound like &lt;u&gt;källkod&lt;/u&gt; i.e. the Swedish word for source code
&lt;br&gt;&lt;br&gt;
Something funny is that in Norwegian KjellKod is more pronounced like &lt;u&gt;Kjell Kødd&lt;/u&gt; (Kødde = slang for joke or rude-joke)&lt;/i&gt;</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://kjellkod.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://kjellkod.blogspot.com/" /><author><name>KjellKod</name><uri>http://www.blogger.com/profile/11968795750533698545</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>10</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/KjellkodCc" /><feedburner:info uri="kjellkodcc" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;A0UGSHw8cSp7ImA9Wx5XEk0.&quot;"><id>tag:blogger.com,1999:blog-4909329195064505990.post-5715001869468767591</id><published>2010-09-11T05:44:00.000-07:00</published><updated>2010-09-11T05:47:09.279-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-11T05:47:09.279-07:00</app:edited><title>Moving to wordpress</title><content type="html">Because of the irritating editing bugs that blogspot has had for as long time as I have used it I have decided to give Wordpress a try. A nice benefit of wordpress is that I can easily updated blog posts and manage it through a nifty iphone app.&lt;br /&gt;
&lt;br /&gt;
So until I know better ;) you can find me at &lt;a href="http://kjellkod.wordpress.com/"&gt;kjellkod.wordpress.com&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Thanks for reading my blog&lt;br /&gt;
Kjell Hedström (a.k.a. KjellKod)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4909329195064505990-5715001869468767591?l=kjellkod.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Dy1canZkI5LModbJNIHpSp2HOPE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Dy1canZkI5LModbJNIHpSp2HOPE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Dy1canZkI5LModbJNIHpSp2HOPE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Dy1canZkI5LModbJNIHpSp2HOPE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/KjellkodCc/~4/8mxfiCl43DY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kjellkod.blogspot.com/feeds/5715001869468767591/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4909329195064505990&amp;postID=5715001869468767591" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4909329195064505990/posts/default/5715001869468767591?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4909329195064505990/posts/default/5715001869468767591?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/KjellkodCc/~3/8mxfiCl43DY/moving-to-wordpress.html" title="Moving to wordpress" /><author><name>KjellKod</name><uri>http://www.blogger.com/profile/11968795750533698545</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://kjellkod.blogspot.com/2010/09/moving-to-wordpress.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkQFRXY8eSp7ImA9Wx5SFko.&quot;"><id>tag:blogger.com,1999:blog-4909329195064505990.post-3550567190802920723</id><published>2010-08-12T16:20:00.000-07:00</published><updated>2010-08-12T21:38:34.871-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-12T21:38:34.871-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Software Engineering" /><category scheme="http://www.blogger.com/atom/ns#" term="C++" /><title>Active Object</title><content type="html">&lt;span class="Apple-style-span" style="color: #444444; font-family: Verdana, Helvetica, Arial, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: black; font-family: arial; font-size: small; font-weight: normal; line-height: normal;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #444444; font-family: Verdana, Helvetica, Arial, sans-serif;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #444444; font-family: Verdana, Helvetica, Arial, sans-serif;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #444444; font-family: Verdana, Helvetica, Arial, sans-serif;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #444444; font-family: Verdana, Helvetica, Arial, sans-serif;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #444444; font-family: Verdana, Helvetica, Arial, sans-serif;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #444444; font-family: Verdana, Helvetica, Arial, sans-serif;"&gt;&lt;b&gt;&lt;div style="font-family: 'Times New Roman'; font-size: medium; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span style="color: #444444; font-family: Verdana, Helvetica, Arial, sans-serif; line-height: 18px;"&gt;&lt;span style="color: black;"&gt;&lt;span style="color: #444444;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;Active Object&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;a.k.a&amp;nbsp;&lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Active_object" rel="nofollow" style="color: #333333; text-decoration: underline;" target="_blank"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;Actor&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&amp;nbsp;is&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;a great design pattern that should be used way more in my opinion. Instead of using raw threads you have them encapsuled in an object. This gives you easy concurrency and good handling of threads that avoids many of the pitfalls of using raw threads (races, etc).&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a href="https://sites.google.com/site/kjellhedstrom2/active_object" style="color: #333333; text-decoration: underline;" target="_blank"&gt;&lt;span style="color: blue;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;I've put together an example&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="color: black;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&amp;nbsp;expired by Herb Sutter's&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://herbsutter.com/2010/07/12/effective-concurrency-prefer-using-active-objects-instead-of-naked-threads/" rel="nofollow" style="color: #333333; text-decoration: underline;" target="_blank"&gt;&lt;span style="color: black;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;article&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="color: black;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&amp;nbsp;"&lt;/span&gt;&lt;/span&gt;&lt;i&gt;&lt;span style="color: black;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;Prefer using active objects instead of naked threads&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;span style="color: black;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;" but using generic callbacks since I do not have access to any C++0x yet&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span style="color: #444444; font-family: Verdana, Helvetica, Arial, sans-serif; line-height: 18px;"&gt;&lt;span style="color: black;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;br /&gt;
&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; font-size: medium; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span style="color: #444444; font-family: Verdana, Helvetica, Arial, sans-serif; line-height: 18px;"&gt;&lt;span style="color: black;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;Herb shows how you with C++0x can do&amp;nbsp;this:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: 'Times New Roman'; font-size: medium;"&gt;&lt;span style="font-family: Verdana, Helvetica, Arial, sans-serif; font-size: small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: 'Times New Roman'; font-size: medium;"&gt;&lt;span style="font-family: Verdana, Helvetica, Arial, sans-serif; font-size: small;"&gt;&lt;pre style="background-color: #f5fbfc; border-bottom-color: rgb(132, 187, 251); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(132, 187, 251); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(132, 187, 251); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(132, 187, 251); border-top-style: solid; border-top-width: 1px; font-family: monospace; font-size: 1.1em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; overflow-x: auto; overflow-y: auto; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; white-space: pre-wrap; width: 450px;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;class Backgrounder {
public:
  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #38761d;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;// Save and Print will execute the lambdas in the 
  // background thread (active object thread)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;
  void Save(string filename){a.Send([=]{ … }); } 
  void Print(Data&amp;amp; data) {a.Send([=, &amp;amp;data] { … } ); }
private:
  Active a;
};&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/pre&gt;&lt;div style="clear: both; font-size: 0.8em; margin-bottom: 0.75em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;/div&gt;&lt;div style="clear: both; font-size: 0.8em; margin-bottom: 0.75em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;Mmm, nice way of utilizing lambda expressions, don't you think?&amp;nbsp;However, with just plain old pre-C++0x (like most of us use in 2010)&amp;nbsp;You can with normal C++ and a touch of template magic get this:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt; &lt;span style="font-family: 'Times New Roman'; font-size: medium;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman'; font-size: medium; line-height: normal;"&gt;&lt;span style="font-family: Verdana, Helvetica, Arial, sans-serif; font-size: small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: 'Times New Roman'; font-size: medium;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman'; font-size: medium; line-height: normal;"&gt;&lt;span style="font-family: Verdana, Helvetica, Arial, sans-serif; font-size: small;"&gt;&lt;pre style="background-color: #f5fbfc; border-bottom-color: rgb(132, 187, 251); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(132, 187, 251); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(132, 187, 251); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(132, 187, 251); border-top-style: solid; border-top-width: 1px; font-family: monospace; font-size: 1.1em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; overflow-x: auto; overflow-y: auto; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; white-space: pre-wrap; width: 450px;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;class Backgrounder {
public:
  void Save(string filename){
    a.send(bind(this, &amp;amp;Backgrounder::BgSave, filename));  }

  void Print( Data&amp;amp; data ){
    a.send(bind(this, &amp;amp;Backgrounder::BgPrint, data));
  }
private:
  void BgSave(string filename){...}
  void BgPrint(Data&amp;amp;; data){...}
  Active a;
};&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/pre&gt;&lt;div style="clear: both; font-size: 0.8em; margin-bottom: 0.75em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;/div&gt;&lt;div style="clear: both; font-size: 0.8em; margin-bottom: 0.75em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;Easy as 1, 2, 3 don't you think? And that's all it takes for working with an Active object that will execute jobs in the background. Why EVER use naked threads again for normal mundane tasks like bakground processing, saving files etc?&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;
&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;For more details and information how the Active works&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.kjellkod.cc/active_object" target="_blank"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;you can find my article here&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;. It is heavily influenced by Herbs&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #444444; line-height: 18px;"&gt;&lt;a href="http://herbsutter.com/2010/07/12/effective-concurrency-prefer-using-active-objects-instead-of-naked-threads/" rel="nofollow" style="color: #333333; text-decoration: underline;" target="_blank"&gt;&lt;span style="color: black;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;article&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&amp;nbsp;and his&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.gotw.ca/gotw/083.htm" target="_blank"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;Gotw 83&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&amp;nbsp;(&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;Generic Callbacks&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&amp;nbsp;:)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="font-family: 'Times New Roman'; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Verdana, Helvetica, Arial, sans-serif;"&gt;&lt;span style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;Till next time. Cheers&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; font-size: medium; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Verdana, Helvetica, Arial, sans-serif;"&gt;&lt;span style="line-height: 18px;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&amp;nbsp;Kjell&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/b&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4909329195064505990-3550567190802920723?l=kjellkod.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/8hZk7iI1Y6SkIui7yb-zjJF-EUs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8hZk7iI1Y6SkIui7yb-zjJF-EUs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/8hZk7iI1Y6SkIui7yb-zjJF-EUs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8hZk7iI1Y6SkIui7yb-zjJF-EUs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/KjellkodCc/~4/IqBlNVBeR2k" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kjellkod.blogspot.com/feeds/3550567190802920723/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4909329195064505990&amp;postID=3550567190802920723" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4909329195064505990/posts/default/3550567190802920723?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4909329195064505990/posts/default/3550567190802920723?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/KjellkodCc/~3/IqBlNVBeR2k/active-object.html" title="Active Object" /><author><name>KjellKod</name><uri>http://www.blogger.com/profile/11968795750533698545</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>2</thr:total><feedburner:origLink>http://kjellkod.blogspot.com/2010/08/active-object.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUICQ309eSp7ImA9WxFUGU0.&quot;"><id>tag:blogger.com,1999:blog-4909329195064505990.post-513713310210109478</id><published>2010-06-30T07:12:00.000-07:00</published><updated>2010-06-30T07:19:22.361-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-06-30T07:19:22.361-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="In_Swedish" /><title>Bevisat: Humlan KAN flyga</title><content type="html">Som en liten sidolänk på &lt;a href="http://hiqbloggen.wordpress.com/2010/06/18/en-testare-funderar"&gt;HiQ bloggen&lt;/a&gt; på &lt;a href="http://hiqbloggen.wordpress.com/2010/06/18/en-testare-funderar"&gt;&lt;/a&gt; så hittade jag till en kul artikel som visade att humlor nu vetenskapligen bevisat kan flyga enligt de fysikaliska lagarna. Äntligen har forskarna kommit ikapp med sin matematiska modell och bevisat att det faktiskt är vetenskapligt, tekniskt möjligt för humlan att flyga.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Detta irritationsmoment har gäckat forskare sedan 1930 då man kom fram till att Humlan inte kan flyga, men gör det trots vetenskapligt bevisade fysikaliska lagar. Nu förra året så blev det då bevisat - om ni inte redan hängt med i humlesvängen så har ni chansen nu: &lt;a href="http://www.ox.ac.uk/document.rm?id=1003" style="font-weight: bold; color: rgb(51, 102, 204); "&gt;Smoke visualization of free-flying bumblebees indicates independent leading-edge vortices on each wing pair&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4909329195064505990-513713310210109478?l=kjellkod.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/zeeAPbAh76g192KqZ5FQAob2fsI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zeeAPbAh76g192KqZ5FQAob2fsI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/zeeAPbAh76g192KqZ5FQAob2fsI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zeeAPbAh76g192KqZ5FQAob2fsI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/KjellkodCc/~4/FhPIW8zkUvQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kjellkod.blogspot.com/feeds/513713310210109478/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4909329195064505990&amp;postID=513713310210109478" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4909329195064505990/posts/default/513713310210109478?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4909329195064505990/posts/default/513713310210109478?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/KjellkodCc/~3/FhPIW8zkUvQ/bevisat-humlan-kan-flyga.html" title="Bevisat: Humlan KAN flyga" /><author><name>KjellKod</name><uri>http://www.blogger.com/profile/11968795750533698545</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total><feedburner:origLink>http://kjellkod.blogspot.com/2010/06/bevisat-humlan-kan-flyga.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkUCRH4zeSp7ImA9WxNbE0Q.&quot;"><id>tag:blogger.com,1999:blog-4909329195064505990.post-4599136845253619864</id><published>2009-11-15T14:31:00.000-08:00</published><updated>2009-11-16T09:57:45.081-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-16T09:57:45.081-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Software Engineering" /><category scheme="http://www.blogger.com/atom/ns#" term="C++" /><title>Article at CodeProject C++ Lock Free Circular Queue</title><content type="html">I attended Herb Sutter's Effective Concurrency Seminar (Europe 2009), a very inspiring seminar where he approached multi-core targeted programming. One thing we worked with was the dangers of Lock-Free programming and hazards of volatile in C++.&lt;br /&gt;&lt;br /&gt;I got curious since I've seen a couple of simple single producer -&gt; single consumer Circular Queue implementations that are implemented as Lock-Free and using just that, the important state variables defined as volatile. &lt;span style="font-weight: bold;"&gt;So how come they work &lt;/span&gt;(being used for years), or do they?&lt;br /&gt;&lt;br /&gt;Volatile as you might know is not intended for multi-threading but for accessing hardware devices (and more). It turns out that volatile plays a minor role and that it's mostly the compiler and computer platform that decides whether or not this kind of Circular Queues will be safe to use.&lt;br /&gt;&lt;br /&gt;I have implemented a thread safe circular queue in C++ and explain in this article when it works and when it will not work. This is an area outside the scope of the C++ standard (until C++0x) and is suitable for (at least) x86 or x64 platforms.&lt;br /&gt;&lt;br /&gt;For those of you who want to read up on the inner workings of the Circular Queue, I have provided a short description of it and my implementation. For those of you who are already familiar with it and just want to know if this thread safe circular queue is for real, just go straight to the Implementation section. You can find the whole article either at &lt;a href="http://www.codeproject.com/KB/threads/LockFree.aspx"&gt;CodeProject &lt;/a&gt;or at my &lt;a href="http://kjell.hedstrom.googlepages.com/threadsafecircularqueue"&gt;page&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4909329195064505990-4599136845253619864?l=kjellkod.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/3jU5JEq7MUIDyY9AH_UkMCIlhI8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3jU5JEq7MUIDyY9AH_UkMCIlhI8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/3jU5JEq7MUIDyY9AH_UkMCIlhI8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3jU5JEq7MUIDyY9AH_UkMCIlhI8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/KjellkodCc/~4/koJXs46Q4Yc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kjellkod.blogspot.com/feeds/4599136845253619864/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4909329195064505990&amp;postID=4599136845253619864" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4909329195064505990/posts/default/4599136845253619864?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4909329195064505990/posts/default/4599136845253619864?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/KjellkodCc/~3/koJXs46Q4Yc/article-at-codeproject-c-lock-free.html" title="Article at CodeProject C++ Lock Free Circular Queue" /><author><name>KjellKod</name><uri>http://www.blogger.com/profile/11968795750533698545</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://kjellkod.blogspot.com/2009/11/article-at-codeproject-c-lock-free.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEQNR304cCp7ImA9WxRVGE8.&quot;"><id>tag:blogger.com,1999:blog-4909329195064505990.post-7192265107952049629</id><published>2008-09-06T12:00:00.001-07:00</published><updated>2008-11-16T01:06:36.338-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-16T01:06:36.338-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Hunting" /><category scheme="http://www.blogger.com/atom/ns#" term="Personal" /><title>Hunting in the North of Sweden</title><content type="html">So finally after many, many hours of studying, even more hours at the shooting range practising with both clay pigeons &amp;amp; shotgun or on the &lt;span style="font-style: italic;"&gt;moose range&lt;/span&gt; with my &lt;a href="http://www.howa1500.com/category/810-Howa_1500_Rifles_308_Winchester.aspx"&gt;Howa 1500&lt;/a&gt; (&lt;span style="font-style: italic;"&gt;.308 Winchester&lt;/span&gt;) it is time for my first &lt;a href="http://www.nordicway.com/search/Sweden/Sweden_Moose%20Hunting.htm"&gt;moose hunting&lt;/a&gt; trip. It'll be near Luleå - actually closer to Boden - which is very much in the North of Sweden.&lt;br /&gt;&lt;br /&gt;I trust my Howa will be up for the task (&lt;a href="http://www.testfakta.se/img/2007/8/23/16464.pdf"&gt;_ref_&lt;/a&gt;)  although I'm sure it's more in the Hunter's skill  than in the weapon of choice whether or not the hunt is successful or not.&lt;br /&gt;&lt;br /&gt;Today we scouted the area where I'll be on my first hunt ever. It seems to have a lot of wild life and even some brown bears can show up. We have license to hunt brown bear too,. but unless I'm up in one of the &lt;a href="http://www.jagareforbundet.se/news/images/jagare_i_jakttornA80.jpg"&gt;towers&lt;/a&gt; where a wounded bear can't easily get to me I will simply never even try for that game.&lt;br /&gt;&lt;br /&gt;If opportunity arrise I hope that I can take a side trip to see if there are any &lt;a href="http://sv.wikipedia.org/wiki/J%C3%A4rpe"&gt;&lt;span style="text-decoration: underline;"&gt;hazelhen&lt;/span&gt;&lt;/a&gt; ( a kind of woodland groose) that can be dinner ;-) but that's more for the challenge - I don't think I would get lucky in this area.&lt;br /&gt;&lt;br /&gt;I honestly don't think I'll manage to even glimpse one of big northern &lt;a href="http://www.234.dk/images/00614-framsida.jpg"&gt;moose &lt;/a&gt;but I sure hope so.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4909329195064505990-7192265107952049629?l=kjellkod.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/nb9WT9R7OGNfTuZQkcLYaixf38A/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nb9WT9R7OGNfTuZQkcLYaixf38A/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/nb9WT9R7OGNfTuZQkcLYaixf38A/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nb9WT9R7OGNfTuZQkcLYaixf38A/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/KjellkodCc/~4/Ohhq2rR4UNU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kjellkod.blogspot.com/feeds/7192265107952049629/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4909329195064505990&amp;postID=7192265107952049629" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4909329195064505990/posts/default/7192265107952049629?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4909329195064505990/posts/default/7192265107952049629?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/KjellkodCc/~3/Ohhq2rR4UNU/hunting-in-north-of-sweden.html" title="Hunting in the North of Sweden" /><author><name>KjellKod</name><uri>http://www.blogger.com/profile/11968795750533698545</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://kjellkod.blogspot.com/2008/09/hunting-in-north-of-sweden.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0EDQXk_cSp7ImA9WxdXGE0.&quot;"><id>tag:blogger.com,1999:blog-4909329195064505990.post-4837893528487816850</id><published>2008-06-29T23:59:00.000-07:00</published><updated>2008-06-30T00:07:50.749-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-06-30T00:07:50.749-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Politik" /><category scheme="http://www.blogger.com/atom/ns#" term="In_Swedish" /><title>FRA Lagen och dess verkningar</title><content type="html">(This one is in Swedish folks ....)&lt;br /&gt;&lt;br /&gt;Angående FRA lagen och även mina kommentarer kring FRA chefens utlägg där han inte gillar att folket säger vad de tycker.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.svd.se/opinion/brannpunkt/artikel_1413419.svd"&gt;http://www.svd.se/opinion/brannpunkt/artikel_1413419.svd&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Min åsikt är att lagen är vidrig i det att FRA får makten att bygga ut en infrastruktur och medel för att kunna göra avlyssning på en helt annan nivå än de kan idag.&lt;br /&gt;&lt;br /&gt;Syftet är gott nog IDAG,. problemet är att klimatet i Sverige kan ändras. För inte så länge sedan så avlyssnade Polisen och Säpo väldigt många personer som tillhörde vänsterpartiet. Med en lika liten ändring i dagens politiska klimat från då till nu så skulle FRA kunna använda det snart utbyggda spanar-infrastrukturen till att avlyssna/spana på de nu intressanta personerna ,... kanske de är miljödebattörer, veganer, vänsterpartister, torrent användare, &lt;em&gt;you name it&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Frågan är inte OM utan NÄR det kommer att missbrukas. Finns ramverket och strukturen så är steget väldigt litet att gå från att avlyssna en viss typ av kommunikation till att avlyssna en grupp av människor.&lt;br /&gt;&lt;br /&gt;Jag hoppas det här blir en valfråga. Om det blir det så är chansen väldigt stor att jag röstar på det parti som omedelbart vill ta bort denna stygghet - oavsett vilket parti det handlar om. Så viktigt tycker jag detta är.&lt;br /&gt;&lt;br /&gt;Kjell Hedström, Moderat och MUF-vän.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4909329195064505990-4837893528487816850?l=kjellkod.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/qvyXj3B3l4unn0oMBtZeXUYYyV0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qvyXj3B3l4unn0oMBtZeXUYYyV0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/qvyXj3B3l4unn0oMBtZeXUYYyV0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qvyXj3B3l4unn0oMBtZeXUYYyV0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/KjellkodCc/~4/wCo3ubiTQco" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kjellkod.blogspot.com/feeds/4837893528487816850/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4909329195064505990&amp;postID=4837893528487816850" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4909329195064505990/posts/default/4837893528487816850?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4909329195064505990/posts/default/4837893528487816850?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/KjellkodCc/~3/wCo3ubiTQco/fra-lagen-och-dess-verkningar.html" title="FRA Lagen och dess verkningar" /><author><name>KjellKod</name><uri>http://www.blogger.com/profile/11968795750533698545</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://kjellkod.blogspot.com/2008/06/fra-lagen-och-dess-verkningar.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkIARXk-fSp7ImA9Wx5SFk4.&quot;"><id>tag:blogger.com,1999:blog-4909329195064505990.post-1491488990711603032</id><published>2007-10-07T04:20:00.000-07:00</published><updated>2010-08-12T10:35:44.755-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-12T10:35:44.755-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Software Engineering" /><category scheme="http://www.blogger.com/atom/ns#" term="C++" /><title>KSignal - A Signal and Slot (Observer Design Pattern) implementation</title><content type="html">&lt;div&gt;&lt;strong&gt;&lt;a href="http://en.wikipedia.org/wiki/Signals_and_slots"&gt;Signal and slots&lt;/a&gt;&lt;/strong&gt; is a concept developed from &lt;a href="http://www.trolltech.com/"&gt;Qt&lt;/a&gt;. It is basically a generalized implementation of the &lt;a href="http://en.wikipedia.org/wiki/Observer_pattern"&gt;Observer pattern&lt;/a&gt;. The purpose of the KjellKod signal-n-slot is to have the power of Observer pattern - but made with generic &lt;a href="http://www.partow.net/programming/templatecallback/"&gt;function callback&lt;/a&gt;. The most famous implementations of Signals and Slots are made by &lt;a href="http://doc.trolltech.com/4.3/signalsandslots.html"&gt;Qt&lt;/a&gt; and &lt;a href="http://www.boost.org/doc/html/signals.html"&gt;Boost&lt;/a&gt;. My own implementation of signals and slots (&lt;a href="http://kjell.hedstrom.googlepages.com/signalandslots"&gt;KSignal&lt;/a&gt;) were made in 2006-2007 when I wanted to learn more about C++ generic function callbacks. Now it's a fully functional library that is in use in multiple projects.&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;My own signal-n-slot definition&lt;/strong&gt;&lt;br /&gt;
The &lt;a href="http://kjell.hedstrom.googlepages.com/signalandslots"&gt;KjellKod signal-slot&lt;/a&gt; mechanism is a C++, cross platform compatible implementation of the Observer design pattern. Signals are basically notifications of an (observable) event. Signals are connected to Slots which each store a &lt;a href="http://www.partow.net/programming/templatecallback/"&gt;function callback&lt;/a&gt; to an object. A signal can be connected to many slots and all slots/receivers are notified when the signal is emitted.&lt;br /&gt;
&lt;br /&gt;
A signal can be just a notification, or it can pass along information. This make's it very handy when creating &lt;a href="http://en.wikipedia.org/wiki/Loose_coupling#Loose_coupling_in_computing"&gt;loosely coupled&lt;/a&gt; software systems.&lt;br /&gt;
&lt;br /&gt;
The only requirement on an objects function callback that is to be stored within a slot is that it must be able to receive the same argument(s) as the publishing signal is sending. I.e. If it is a void signal, then the slot (stored callback function) must have a zero argument list. Likewise, if the signal sends out an argument, the receiving function must have that argument type, and only that argument in its argument list. If this requirement is not adhered to, the compiler will generate an error message. I.e. signal/slot is &lt;strong&gt;typesafe&lt;/strong&gt;.&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="background-color: black;"&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;Modified below: 2010-08-12&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Thanks to&lt;span class="Apple-style-span" style="color: blue;"&gt; "&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Arial, Verdana, sans-serif; font-size: 13px; font-weight: bold; line-height: 18px; white-space: nowrap;"&gt;&amp;nbsp;&lt;span dir="ltr"&gt;&lt;a href="http://www.blogger.com/profile/02029998081457691232" rel="nofollow" style="color: #3366cc; font-weight: bold; text-decoration: underline;"&gt;andy_t_roo" (Andrew)&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;comment below which directed me to &lt;a href="http://www.codeproject.com/KB/cpp/FastDelegate.aspx"&gt;FastDelegate&lt;/a&gt;&amp;nbsp;which in its turn made me look at &lt;a href="http://www.gotw.ca/gotw/083.htm"&gt;GotW 83&lt;/a&gt;&amp;nbsp;where Herb Sutter gives an excellent (as always) example of how to encapsulate generic callbacks.&lt;br /&gt;
&lt;br /&gt;
Back when I made KSignals version 1 (dynamic memory) and version 2 (static memory for embedded systems) I had not read&amp;nbsp;&lt;a href="http://www.gotw.ca/gotw/083.htm"&gt;GotW_83: Generic Callbacks&lt;/a&gt;&amp;nbsp;&amp;nbsp;but I'm still kind of happy that I unbeknowst of much still managed to on my own come up with something very similar, although lacking some of the finer points Herb makes.&lt;br /&gt;
&lt;br /&gt;
Either way &lt;b&gt;I strongly recommend&lt;/b&gt; you to read &lt;b&gt;Herbs&lt;/b&gt;&lt;a href="http://www.gotw.ca/gotw/083.htm"&gt;&lt;b&gt; Gotw article&lt;/b&gt;&lt;/a&gt;&amp;nbsp;since it's very, very easy read and explains better than any other function callback or function pointer text that I've read how to setup the basics that are needed for &lt;a href="http://www.kjellkod.cc/signalandslots"&gt;Signals and Slots&lt;/a&gt;. If you think this is something good, then please go ahead and use my &lt;a href="http://www.kjellkod.cc/signalandslots"&gt;versions&lt;/a&gt; and tailor make them as you please (which should be easy since they're only few lines with bare bone code)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4909329195064505990-1491488990711603032?l=kjellkod.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/y-Ds_Uq2uERQsliFxxKWHZ6xcpM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/y-Ds_Uq2uERQsliFxxKWHZ6xcpM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/y-Ds_Uq2uERQsliFxxKWHZ6xcpM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/y-Ds_Uq2uERQsliFxxKWHZ6xcpM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/KjellkodCc/~4/lyM7Qx7sodU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kjellkod.blogspot.com/feeds/1491488990711603032/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4909329195064505990&amp;postID=1491488990711603032" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4909329195064505990/posts/default/1491488990711603032?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4909329195064505990/posts/default/1491488990711603032?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/KjellkodCc/~3/lyM7Qx7sodU/ksignal-signal-and-slot-observer-design.html" title="KSignal - A Signal and Slot (Observer Design Pattern) implementation" /><author><name>KjellKod</name><uri>http://www.blogger.com/profile/11968795750533698545</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>2</thr:total><feedburner:origLink>http://kjellkod.blogspot.com/2007/10/ksignal-signal-and-slot-observer-design.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkQHQn46cSp7ImA9WB9SGUw.&quot;"><id>tag:blogger.com,1999:blog-4909329195064505990.post-4437668178988635881</id><published>2007-02-12T08:38:00.001-08:00</published><updated>2007-10-08T23:12:13.019-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-10-08T23:12:13.019-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Software Engineering" /><title>QTextEdit with drag-n-drop (cut-n-paste) of text images and links</title><content type="html">&lt;span style="font-family:times new roman;"&gt;I am right now waiting to get security clearance for a project and while that is taking place I have some extra time on my hands to indulge in Qt and some widget programming.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;Step 1 in a 4-fun project was to make a simple Text Editor, preferably in Rich Text with embedded pictures or in second hand with html&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;Using &lt;/span&gt;&lt;a style="FONT-FAMILY: times new roman" href="http://doc.trolltech.com/4.2/qtextedit.html"&gt;QTextEdit&lt;/a&gt;&lt;span style="font-family:times new roman;"&gt; and following a &lt;/span&gt;&lt;a style="FONT-FAMILY: times new roman" href="http://doc.trolltech.com/4.2/demos-textedit.html"&gt;Qt example&lt;/a&gt;&lt;span style="font-family:times new roman;"&gt; it was easy to get started. The example is not fully functional so some minor glitches had to be fixed but mostly it was just great seeing how the &lt;/span&gt;&lt;span style="FONT-STYLE: italic;font-family:times new roman;" &gt;Trolls&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt; had done it and then redo what needed to be done differently to suit my needs.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;Now &lt;/span&gt;one &lt;span style="font-family:times new roman;"&gt;thing bugged me though. The QTextEdit comes already with drag-n-drop functionality (text, images etc) BUT it was not drag-cut-n-paste/drop that you would expect instead it was drag-copy-n-paste/drop. Do you understand what I mean here? &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;Anyhow. By subclassing QTextEdit it was possible to solve this - even though I racked my brains and had too much trial and error for my taste before it worked out. The &lt;/span&gt;&lt;span style="FONT-STYLE: italic;font-family:times new roman;" &gt;Trolls&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt; HAD some information about how to do it&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;but not so much.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;I.e. in short you need to implement two functions of your &lt;span style="FONT-STYLE: italic"&gt;QTextEdit&lt;/span&gt; subclass. I call my subclass simply &lt;span style="FONT-STYLE: italic"&gt;TextEdit&lt;/span&gt;&lt;br /&gt;1. &lt;/span&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;virtual void dragEnterEvent(QDragEnterEvent *e);&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;In&lt;/span&gt; the implementation you simply put&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255);font-family:courier new;" &gt;void TextEdit::dragEnterEvent(QDragEnterEvent *e)&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255);font-family:courier new;" &gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255);font-family:courier new;" &gt;&lt;blockquote&gt;e-&gt;acceptProposedAction();&lt;/blockquote&gt;&lt;/span&gt;&lt;span style="COLOR: rgb(51,51,255);font-family:courier new;" &gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-STYLE: italic"&gt;acceptProposedAction() &lt;/span&gt;simply agrees to make the drop action the (in Qt) defined for this &lt;span style="FONT-STYLE: italic"&gt;QDragEnterEvent.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;2. &lt;span style="COLOR: rgb(51,51,255)"&gt;virtual void dropEvent(QDropEvent *e);&lt;br /&gt;&lt;/span&gt;This tells your subclass exactly what to do when reciving a &lt;span style="FONT-STYLE: italic"&gt;QDropEvent&lt;/span&gt; what we are interested in is to do a cut-n-paste of the selected area into the newly chosen (dragged) position.&lt;br /&gt;In the implemantation (with lots of comments just for explaining :)&lt;br /&gt;&lt;br /&gt;NOTE (Feb 18:) first I wrote this function as in the bottom of this entry, but ended up with inconsistent cursor behaviour so with the help of J-P at QtCentre.org I ended up with a clean and simple solution for this problem. The whole discussion you can find at : QCentre &lt;a href="http://www.qtcentre.org/forum/f-qt-programming-2/t-drag-n-drop-with-cut-and-not-copy-5699-post29493.html"&gt;QTextEdit::dropEvent&lt;/a&gt; discussion&lt;br /&gt;&lt;br /&gt;Working solution from J-P&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255);font-family:courier new;" &gt;&lt;/span&gt;&lt;span style="COLOR: rgb(51,51,255);font-family:courier new;" &gt;&lt;blockquote&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;void TextEdit::dropEvent(QDropEvent *event)&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;QDropEvent drop(event-&gt;pos(),&lt;/span&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;Qt::MoveAction, event-&gt;mimeData(),&lt;/span&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt; event-&gt;mouseButtons(), Qt::ShiftModifier, event-&gt;type());&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(0,0,0)"&gt;// &lt;/span&gt;&lt;span style="COLOR: rgb(102,102,102)"&gt;Qt::ShiftModifier makes it into CUT instead of COPY&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(0,0,0)"&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;QTextEdit::dropEvent(&amp;amp;drop);&lt;/span&gt; &lt;/span&gt;// &lt;span style="COLOR: rgb(102,102,102)"&gt;Call the parent function w/ the modified event&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;/span&gt;My original and non-working solution&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255);font-family:courier new;" &gt;void TextEdit::dropEvent(QDropEvent *event)&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255);font-family:courier new;" &gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255);font-family:courier new;" &gt;&lt;/span&gt;&lt;span style="COLOR: rgb(51,51,255);font-family:courier new;" &gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="COLOR: rgb(51,51,255);font-family:courier new;" &gt;QTextCursor cursor = textCursor(); /*&lt;span style="COLOR: rgb(102,102,102)"&gt;starting cursor &lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: rgb(51,51,255);font-family:courier new;" &gt;*/&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255);font-family:courier new;" &gt;event-&gt;acceptProposedAction(); &lt;/span&gt;&lt;span style="COLOR: rgb(51,51,255);font-family:courier new;" &gt;/*&lt;/span&gt;&lt;span style="COLOR: rgb(51,51,255);font-family:courier new;" &gt;&lt;span style="COLOR: rgb(102,102,102)"&gt;Accept the incoming event&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: rgb(51,51,255);font-family:courier new;" &gt;*/&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255);font-family:courier new;" &gt;&lt;br /&gt;/*&lt;/span&gt;&lt;span style="COLOR: rgb(51,51,255);font-family:courier new;" &gt;&lt;span style="COLOR: rgb(102,102,102)"&gt;Cursor for the selected position (drag-n-drop position)&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: rgb(51,51,255);font-family:courier new;" &gt;*/&lt;/span&gt;&lt;br /&gt;&lt;qtextedit&gt;&lt;qtgui&gt;&lt;span style="COLOR: rgb(51,51,255);font-family:courier new;" &gt;QTextCursor insertionCursor = cursorForPosition(event-&gt;pos());&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/qtgui&gt;&lt;/qtextedit&gt;&lt;br /&gt;&lt;qtextedit&gt;&lt;qtgui&gt;&lt;span style="COLOR: rgb(51,51,255);font-family:courier new;" &gt;if (event-&gt;dropAction() == Qt::MoveAction &lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255);font-family:courier new;" &gt;event-&gt;dropAction() == Qt::CopyAction) &lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255);font-family:courier new;" &gt;{&lt;br /&gt;&lt;/span&gt;&lt;/qtgui&gt;&lt;/qtextedit&gt;&lt;span style="COLOR: rgb(51,51,255);font-family:courier new;" &gt;&lt;/span&gt;&lt;span style="COLOR: rgb(51,51,255);font-family:courier new;" &gt;/* &lt;span style="COLOR: rgb(102,102,102)"&gt;Start atomic operation (undo/redo)&lt;/span&gt; */&lt;/span&gt;&lt;span style="COLOR: rgb(51,51,255);font-family:courier new;" &gt;&lt;br /&gt;insertionCursor.beginEditBlock();&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="COLOR: rgb(51,51,255);font-family:courier new;" &gt;/* &lt;span style="COLOR: rgb(102,102,102)"&gt;Extract text before removing selected area&lt;/span&gt; */&lt;br /&gt;&lt;/span&gt;&lt;span style="COLOR: rgb(51,51,255);font-family:courier new;" &gt;QTextDocumentFragment text = cursor.selection();&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="COLOR: rgb(51,51,255);font-family:courier new;" &gt;/* &lt;span style="COLOR: rgb(102,102,102)"&gt;Remove from original position&lt;/span&gt; */&lt;br /&gt;&lt;/span&gt;&lt;span style="COLOR: rgb(51,51,255);font-family:courier new;" &gt;cursor.removeSelectedText();&lt;br /&gt;&lt;/span&gt;&lt;span style="COLOR: rgb(51,51,255);font-family:courier new;" &gt;&lt;br /&gt;/* &lt;span style="COLOR: rgb(102,102,102)"&gt;Insert dragged text/image/link &lt;/span&gt;*/&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255);font-family:courier new;" &gt;insertionCursor.insertFragment( text );&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="COLOR: rgb(51,51,255);font-family:courier new;" &gt;/* &lt;span style="COLOR: rgb(102,102,102)"&gt;End atomic operation (undo/redo)&lt;/span&gt; */&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255);font-family:courier new;" &gt;insertionCursor.endEditBlock(); &lt;/span&gt;&lt;span style="COLOR: rgb(51,51,255);font-family:courier new;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="COLOR: rgb(51,51,255);font-family:courier new;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="COLOR: rgb(51,51,255);font-family:courier new;" &gt;/* &lt;span style="COLOR: rgb(102,102,102)"&gt;The line below doesn't seem to work, Qt bug?&lt;/span&gt; */&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255);font-family:courier new;" &gt;setTextCursor( insertionCursor );&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="COLOR: rgb(51,51,255);font-family:courier new;" &gt;}&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="COLOR: rgb(51,51,255);font-family:courier new;" &gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;qtextedit&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;&lt;/span&gt;&lt;br /&gt;&lt;qtgui&gt;&lt;br /&gt;&lt;/qtgui&gt;&lt;/qtextedit&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4909329195064505990-4437668178988635881?l=kjellkod.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/vjNAAFf8tizUulyljEpIqL-Z9HM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vjNAAFf8tizUulyljEpIqL-Z9HM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/vjNAAFf8tizUulyljEpIqL-Z9HM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vjNAAFf8tizUulyljEpIqL-Z9HM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/KjellkodCc/~4/2jN28YnKG6A" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kjellkod.blogspot.com/feeds/4437668178988635881/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4909329195064505990&amp;postID=4437668178988635881" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4909329195064505990/posts/default/4437668178988635881?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4909329195064505990/posts/default/4437668178988635881?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/KjellkodCc/~3/2jN28YnKG6A/qtextedit-with-read-drag-n-drop-cut-n_12.html" title="QTextEdit with drag-n-drop (cut-n-paste) of text images and links" /><author><name>KjellKod</name><uri>http://www.blogger.com/profile/11968795750533698545</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://kjellkod.blogspot.com/2007/02/qtextedit-with-read-drag-n-drop-cut-n_12.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUMAQ3Y5fSp7ImA9WB9VGEU.&quot;"><id>tag:blogger.com,1999:blog-4909329195064505990.post-751420255225510780</id><published>2007-02-02T23:58:00.000-08:00</published><updated>2007-12-05T11:37:22.825-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-12-05T11:37:22.825-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Software Engineering" /><category scheme="http://www.blogger.com/atom/ns#" term="Qt" /><title>Qt4 on Free IDE Visual Studio Express 2005 C++ with Qt code completion</title><content type="html">&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;HowTo Setup Qt 4.2.2 With Visual C++ Express (Free) Edition&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;b&gt;&lt;span style=""&gt;With Qt Code Completion&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style=""&gt;&lt;br /&gt;&lt;b&gt;Note: &lt;/b&gt;An updated version of this is also published on &lt;a href="http://kjell.hedstrom.googlepages.com/qt4_visual_studio_express_2005"&gt;KjellKod.cc&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1)&lt;/b&gt; Download and install &lt;a href="http://msdn.microsoft.com/vstudio/express/visualc/default.aspx"&gt;&lt;span style="color:blue;"&gt;Microsoft Visual C++ Express edition&lt;/span&gt;&lt;/a&gt; in the installation instructions they mention that you should ALSO install the &lt;a href="http://msdn.microsoft.com/vstudio/express/visualc/usingpsdk/"&gt;&lt;span style="color:blue;"&gt;SDK&lt;/span&gt;&lt;/a&gt;, don't forget to DO just that. &lt;b&gt;Very Important:&lt;/b&gt; Don't forget to follow the instructions on that page. Since they will describe how to setup the SDK to work for this version of Visual Studio. NOTE that in these descriptions some files that may need to be deleted will be HIDDEN so using the search or 'un-hide' files might be good.&lt;br /&gt;&lt;br /&gt;NOTE: If you update Visual C++ express with SP1, then you must also apply some &lt;i&gt;hotpatches&lt;/i&gt;, since bugs are introduced with the SP1. See &lt;a href="http://support.microsoft.com/kb/930198"&gt;&lt;span style="color:blue;"&gt;http://support.microsoft.com/kb/930198&lt;/span&gt;&lt;/a&gt; for more information&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2)&lt;/b&gt; &lt;a href="http://www.trolltech.com/developer/downloads/qt/windows"&gt;&lt;span style="color:blue;"&gt;Download Qt&lt;/span&gt;&lt;/a&gt; (if you haven't done it already) . Download also a patch for it, &lt;a href="http://sourceforge.net/project/showfiles.php?group_id=49109"&gt;&lt;span style="color:blue;"&gt;patch for 4.2.2 can be found here&lt;/span&gt;&lt;/a&gt; (not official?)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;3) &lt;/b&gt;Unpack Qt to a location that does NOT contain spaces. I.e. "C:\Program Files" is NOT a good choice. I used &lt;i&gt;I:\lib\Qt\4.2.2&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;4) &lt;/b&gt;Set System Environment Variables&lt;br /&gt;&lt;b&gt;QTDIR&lt;/b&gt; variable as a system environment variable&lt;br /&gt;I.e. My Computer-&gt;Advanced-&gt;Environment Variables&lt;br /&gt;Variable name: &lt;i&gt;QTDIR&lt;/i&gt;&lt;br /&gt;Variable value: &lt;i&gt;I:\lib\Qt\4.2.2&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Similarly make another system environment variable &lt;b&gt;QMAKESPEC&lt;/b&gt; to &lt;i&gt;win32-msvc2005&lt;/i&gt;&lt;br /&gt;Note: If you want to use for example ming-gw you should do this one differently &lt;i&gt;win32-msvc2005 &lt;/i&gt;is ONLY if you want to use the compiler &amp;amp; debugger that comes integrated with Visual Studio 2005 Express C++ (damn, that's a long name)&lt;br /&gt;&lt;br /&gt;Add also &lt;b&gt;PATH&lt;/b&gt; to be the path to your Qt\bin directory i.e. in this case &lt;i&gt;I:\lib\Qt\4.2.2\bin&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;5) &lt;/b&gt;Now test that your system environment variables are working. Open up a prompt and type&lt;br /&gt;echo %QTDIR%&lt;br /&gt;echo %QMAKESPEC%&lt;br /&gt;Both times you should have gotten the corresponding value for that system environment variable.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;6) &lt;/b&gt;Unpack the &lt;a href="http://sourceforge.net/project/showfiles.php?group_id=49109"&gt;&lt;span style="color:blue;"&gt;Qt patch&lt;/span&gt;&lt;/a&gt; to where you installed Qt and open a cmd prompt and do &lt;i&gt;cd %QTDIR%&lt;/i&gt;&lt;br /&gt;, run &lt;i&gt;installpatch42.bat&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;7 a)&lt;/b&gt; Now it's time to setup the VC++ compiler and to compile Qt.&lt;br /&gt;First you need to patch the &lt;i&gt;vsvars32.bat&lt;/i&gt; script that are found in "&lt;i&gt;C:\Program Files\Microsoft Visual Studio 8\Common7\Tools"&lt;/i&gt; . Copy it to a safe location in case you mess up.&lt;br /&gt;&lt;br /&gt;Add to the INCLUDE, LIB, and BIN lines according to following:&lt;br /&gt;&lt;b&gt;PATH Original:&lt;/b&gt;&lt;br /&gt;&lt;i&gt;@set PATH=C:\Program Files\Microsoft Visual Studio 8\Common7\IDE;C:\Program Files\Microsoft Visual Studio 8\VC\BIN;C:\Program Files\Microsoft Visual Studio 8\Common7\Tools;C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\bin;C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727;C:\Program Files\Microsoft Visual Studio 8\VC\VCPackages;%PATH%&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;PATH Changed to:&lt;/b&gt;&lt;br /&gt;&lt;i&gt;@set PATH=C:\Program Files\Microsoft Visual Studio 8\Common7\IDE;C:\Program Files\Microsoft Visual Studio 8\VC\BIN;C:\Program Files\Microsoft Visual Studio 8\Common7\Tools;C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\bin;C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727;C:\Program Files\Microsoft Visual Studio 8\VC\VCPackages;&lt;b&gt;C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Bin;&lt;/b&gt;%PATH%&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;INCLUDE Original:&lt;/b&gt;&lt;br /&gt;@set INCLUDE=C:\Program Files\Microsoft Visual Studio 8\VC\INCLUDE;%INCLUDE%&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Include Changed to:&lt;/b&gt;&lt;br /&gt;&lt;i&gt;@set INCLUDE=C:\Program Files\Microsoft Visual Studio 8\VC\INCLUDE;&lt;b&gt;C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include&lt;/b&gt;;%INCLUDE%&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;LIB Original:&lt;/b&gt;&lt;br /&gt;&lt;i&gt;@set LIB=C:\Program Files\Microsoft Visual Studio 8\VC\LIB;C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\lib;%LIB%&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;LIB Changed to:&lt;/b&gt;&lt;br /&gt;&lt;i&gt;@set LIB=C:\Program Files\Microsoft Visual Studio 8\VC\LIB;C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\lib;&lt;b&gt;C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Lib;&lt;/b&gt;%LIB%&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Run the &lt;i&gt;vsvars32.bat&lt;/i&gt; &lt;/b&gt;script which sets up the system environment for the VC++ compiler.&lt;br /&gt;I.e. you are standing in %QTDIR% then you are running WITH the &lt;i&gt;"&lt;/i&gt; signs: "&lt;i&gt;C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat&lt;/i&gt;"&lt;br /&gt;&lt;br /&gt;&lt;b&gt;7 b)&lt;/b&gt; Run &lt;b&gt;qconfigure.bat&lt;/b&gt; script as &lt;i&gt;qconfigure.bat msvc2005&lt;/i&gt;. Answer &lt;b&gt;Yes&lt;/b&gt; to all questions.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;7 c)&lt;/b&gt; Run &lt;b&gt;nmake &lt;/b&gt;which will compile &amp;amp; "install" Qt. This seems more accurate though than only running qconfigure.bat - beware that it'll take some time since your whole Qt installation is compiled.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;8) &lt;/b&gt;Setup VC++ Environment Configuration&lt;br /&gt;&lt;br /&gt;&lt;b&gt;8a)&lt;/b&gt; &lt;b&gt;Include files&lt;/b&gt; that you need when including Qt into your source code&lt;br /&gt;Go to Tools-&gt;Options-&gt;Projects and Solutions-&gt;VC++ Directories-&gt;Include files&lt;br /&gt;Add the following either with the syntax of $(QTDIR)\... or with the full path:&lt;br /&gt;&lt;i&gt;$(QTDIR)\include&lt;/i&gt;&lt;br /&gt;&lt;i&gt;$(QTDIR)\include\Qt&lt;br /&gt;$(QTDIR)\include\QtCore&lt;br /&gt;$(QTDIR)\include\QtGui&lt;br /&gt;$(QTDIR)\include\QtNetwork&lt;br /&gt;$(QTDIR)\include\QtSvg&lt;br /&gt;$(QTDIR)\include\QtXml&lt;br /&gt;$(QTDIR)\include\Qt3Support&lt;br /&gt;$(QTDIR)\include\ActiveQt&lt;/i&gt;&lt;br /&gt;... etc, for all the include directories that you might need&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;8b)&lt;/b&gt; &lt;b&gt;Library files&lt;/b&gt; that you need when including/building Qt &amp;amp; source code&lt;br /&gt;Go to Tools-&gt;Options-&gt;Projects and Solutions-&gt;VC++ Directories-&gt;Library files&lt;br /&gt;Add&lt;i&gt; $(QTDIR)\lib&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;8c )&lt;/b&gt; &lt;b&gt;Source files &lt;/b&gt;that you need to enable Intellisense to do &lt;b&gt;Qt code completion&lt;/b&gt;&lt;br /&gt;Go to Tools-&gt;Options-&gt;Projects and Solutions-&gt;VC++ Directories-&gt;Source files&lt;br /&gt;Add &lt;i&gt;$(QTDIR)\src&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;If you had an old project than maybe you also need close down VC++ and then delete the IntelliSense file (*.ncb). Don't worry when you start the project again the file will be re-created.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;"Don't fix it unless it's broken"&lt;/b&gt;&lt;br /&gt;When I tried to compile my first project (completely unrelated, but it was &lt;a href="http://www.quickfixengine.org/"&gt;&lt;span style="color:blue;"&gt;QuickFix&lt;/span&gt;&lt;/a&gt;) I ran into some trouble due to that the &lt;b&gt;wchar_t &lt;/b&gt;was defined in an incompatible way in the old libraries compared to Visual Studio 2005 Express. This could be rectified by setting up the QuickFix project so that the &lt;b&gt;wchar_t&lt;/b&gt; should use the code definition rather than the VSC++ definition.&lt;br /&gt;To do this: &lt;span style="color:black;"&gt;Right-click on project (or sub-project), choose&lt;br /&gt;&lt;i&gt;References-&gt;Configuration Properties-&gt;C/C++-&gt;Language-&gt;&lt;/i&gt;&lt;/span&gt;&lt;i&gt;Treat wchar_t as a built-in type&lt;/i&gt; change from &lt;i&gt;&lt;u&gt;Yes&lt;/u&gt;&lt;/i&gt; to &lt;i&gt;&lt;u&gt;No&lt;/u&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;"Create your first project - A simple Hello World in Qt"&lt;br /&gt;&lt;/b&gt;OK, now you're ready to try your first project. Since Qt already comes with a very easy and nice way to manage the make system we're going to use that.&lt;br /&gt;Creating a new Project as such:&lt;br /&gt;&lt;i&gt;File-&gt;New Project-&gt;Visual C++ -&gt;General-&gt;Makefile Project&lt;/i&gt;&lt;br /&gt;(set up Name, Location etc according to your liking)&lt;br /&gt;&lt;br /&gt;Create an very simple .pro file (these can also be autogenerated)&lt;br /&gt;This will be the basis for your Qt auto-updated Makefile later&lt;br /&gt;It can look something like this (&lt;span style="color: rgb(51, 51, 255);"&gt;whatever_project_name_you_like.pro)&lt;/span&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 12pt; line-height: normal;"&gt;&lt;span style=""&gt;TEMPLATE += app&lt;/span&gt;&lt;span style=""&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;CONFIG += qt warn_on&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;SOURCES += main.cpp &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;TARGET = whatever_project_name_you_like&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;win32:debug:CONFIG += console&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style=""&gt;Add a file also to the project:&lt;br /&gt;(Right click project -&gt; Add new item -&gt; C++ file (call it main.cpp)&lt;br /&gt;Make it look something like this:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_kDuCTD1PbLc/R1b9leL0IbI/AAAAAAAAB9Y/2saTbvT4-LM/s1600-h/hello_world.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_kDuCTD1PbLc/R1b9leL0IbI/AAAAAAAAB9Y/2saTbvT4-LM/s400/hello_world.jpg" alt="" id="BLOGGER_PHOTO_ID_5140574844889604530" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style=""&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style=""&gt;&lt;code&gt;&lt;br /&gt;&lt;br /&gt;Now set up your environment to autogenerate Makefiles and compile according to your .pro file&lt;br /&gt;&lt;i&gt;Configuration Properties -&gt; NMake -&gt; General&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="color:black;"&gt;Build Command Line&lt;/span&gt;&lt;/i&gt;&lt;span style="color:black;"&gt; &lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;qmake &amp;amp;&amp;amp; nmake debug&lt;/span&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="color:black;"&gt;Rebuild Command Line&lt;/span&gt;&lt;/i&gt;&lt;span style="color:black;"&gt; &lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;qmake &amp;amp;&amp;amp; nmake debug-clean&lt;/span&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="color:black;"&gt;Clean Command Line&lt;/span&gt;&lt;/i&gt;&lt;span style="color:black;"&gt; &lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;nmake debug-clean&lt;/span&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="color:black;"&gt;Outpu&lt;/span&gt;&lt;/i&gt;&lt;span style="color:black;"&gt;t &lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;debug/projectname.exe&lt;/span&gt;&lt;span style="color:black;"&gt; &lt;/span&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;(Just an example on the output)&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/code&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="line-height: 115%;"&gt;Try compiling it, it should work now&lt;br /&gt;&lt;br /&gt;Good Luck :-)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;----------------------------------- &lt;/b&gt;&lt;br /&gt;I moved my blog entry below here so that you folks wouldn't get side-tracked by seeing it first ;-)&lt;br /&gt;&lt;b&gt;--------------------------------------&lt;/b&gt;&lt;br /&gt;For the last 5 years I have mostly worked with Linux - developing software using IDEs such as XEmacs and KDevelop.&lt;br /&gt;&lt;br /&gt;I think KDevelop is promising but still very buggy. I heard some rumour that they will come out with a cross-platform IDE soon. THAT would really be something.&lt;br /&gt;&lt;br /&gt;Anyhow, since I quit Park Air Systems in Norway in 2006 and started working for HiQ in Sweden I have slowly moved from Linux/Unix SW Engineering to now mostly on Windows. Since I still love to use Qt ( &lt;a href="http://www.trolltech.com/"&gt;&lt;span style="color:blue;"&gt;Trolltech&lt;/span&gt;&lt;/a&gt; )'s libraries I wanted a way to integrate them on the IDE's that I can use on Windows.&lt;br /&gt;&lt;br /&gt;I have tried &lt;a href="http://qdevelop.org/"&gt;&lt;span style="color:blue;"&gt;QDevelop&lt;/span&gt;&lt;/a&gt; and &lt;a href="http://sourceforge.net/projects/edyuk"&gt;&lt;span style="color:blue;"&gt;Edyuk&lt;/span&gt;&lt;/a&gt; for my own project (KjellKod) at home but someone at work said that now Visual Studio comes as a FREE (for Open Source only?) IDE version. I've tried it at work and at home and after MINOR problems got it up and running AND being able to use with their Intellisense code completion some third-part code like Qt 4.2.*&lt;br /&gt;&lt;br /&gt;I WISH developers for other IDEs would look at Visual Studio Express 2005. It is CLEAN it is EASY to configure AND it does not CRASH (hint to KDevelop poeple)...&lt;br /&gt;&lt;br /&gt;Without wanting to start a Flame War I thought I would post how to set it up and what I did to fix some minor quirks that I found. Mind you that the ORIGINAL articles that I followed for a starter were "&lt;a href="http://psi-im.org/wiki/Compiling_Qt4_on_Windows" title="Click to do a full-text search for this title"&gt;&lt;span style="color:blue;"&gt;Building QT 4 with Visual C++ 2005&lt;/span&gt;&lt;/a&gt;" and "&lt;a href="http://psi-im.org/wiki/Compiling_Qt4_on_Windows"&gt;&lt;span style="color:blue;"&gt;Compiling Qt4 on Windows&lt;/span&gt;&lt;/a&gt;" I have just added some little tidbits that I thought were missing ... (now WHY haven't they set up their pages to recive feedback?)&lt;br /&gt;&lt;br /&gt;&lt;!--[if !supportLineBreakNewLine]--&gt;&lt;br /&gt;&lt;!--[endif]--&gt;&lt;/span&gt;&lt;span style="line-height: 115%;font-size:10;" &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4909329195064505990-751420255225510780?l=kjellkod.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ww9HOZ34Ha8srCritglORcy6df8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ww9HOZ34Ha8srCritglORcy6df8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ww9HOZ34Ha8srCritglORcy6df8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ww9HOZ34Ha8srCritglORcy6df8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/KjellkodCc/~4/OJ1dGfGLxQU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kjellkod.blogspot.com/feeds/751420255225510780/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4909329195064505990&amp;postID=751420255225510780" title="38 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4909329195064505990/posts/default/751420255225510780?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4909329195064505990/posts/default/751420255225510780?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/KjellkodCc/~3/OJ1dGfGLxQU/qt4-on-free-ide-visual-studio-express.html" title="Qt4 on Free IDE Visual Studio Express 2005 C++ with Qt code completion" /><author><name>KjellKod</name><uri>http://www.blogger.com/profile/11968795750533698545</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://bp1.blogger.com/_kDuCTD1PbLc/R1b9leL0IbI/AAAAAAAAB9Y/2saTbvT4-LM/s72-c/hello_world.jpg" height="72" width="72" /><thr:total>38</thr:total><feedburner:origLink>http://kjellkod.blogspot.com/2007/02/qt4-on-free-ide-visual-studio-express.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A08ARnc9fip7ImA9WB9SGU0.&quot;"><id>tag:blogger.com,1999:blog-4909329195064505990.post-4399312023700061061</id><published>2007-02-02T00:15:00.000-08:00</published><updated>2007-10-08T23:04:07.966-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-10-08T23:04:07.966-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Personal" /><title>KjellKod Goes Blogging</title><content type="html">First Blog EVER today. I think I will keep it short &amp;amp; simple.&lt;br /&gt;1st consultant job interview today for some time - it sounds like it could be a match. It's about radar technology and they need a C++ Software Engineer, we'll see what happens&lt;br /&gt;&lt;br /&gt;22pm: I got thrown off at the interview a little. My rhythm got messed up... But I still think I made a good impression. I will know by Monday - who knows, maybe I'll be working for SAAB for some months?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4909329195064505990-4399312023700061061?l=kjellkod.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/CHJ040j9UP1TR88qW_61wTOaalM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CHJ040j9UP1TR88qW_61wTOaalM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/CHJ040j9UP1TR88qW_61wTOaalM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CHJ040j9UP1TR88qW_61wTOaalM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/KjellkodCc/~4/qvutcmfygeM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kjellkod.blogspot.com/feeds/4399312023700061061/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4909329195064505990&amp;postID=4399312023700061061" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4909329195064505990/posts/default/4399312023700061061?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4909329195064505990/posts/default/4399312023700061061?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/KjellkodCc/~3/qvutcmfygeM/kjellkod-goes-blogging.html" title="KjellKod Goes Blogging" /><author><name>KjellKod</name><uri>http://www.blogger.com/profile/11968795750533698545</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://kjellkod.blogspot.com/2007/02/kjellkod-goes-blogging.html</feedburner:origLink></entry></feed>

