<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6359801303509915928</id><updated>2012-02-15T23:46:36.393-08:00</updated><title type='text'>Mike Krüger's Mono Blog</title><subtitle type='html'>Here I write about me and my work for MonoDevelop</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://mkruegermono.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6359801303509915928/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://mkruegermono.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Mike Krüger</name><uri>http://www.blogger.com/profile/10471063874075009219</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>12</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6359801303509915928.post-1876964168279644499</id><published>2011-05-27T01:31:00.000-07:00</published><updated>2011-05-27T01:45:56.286-07:00</updated><title type='text'>MonoDevelop Quick Fixes</title><content type='html'>Many people requested quick fixes &amp;amp; code analyzation features.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Michael Hutchinson implemented code analyzation quite some time ago, now that we've branched 2.6 we can add new features to master. I've added quick fixes &amp;amp; joined the two systems. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Quick fixes are like refactorings - they change code. But unlike most common refactorings they're much more fine grained and may add code. For example adding a property setter.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When the caret is on a position where a quick fix is available a little icon is showed indicating the fix. In conjunction with the AnalysisCore source code can be highlighted indicating a more pressuring fix which - for example removing code smells.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;I've made a little demo of what is currently available in MonoDevelop master:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.screencast.com/t/5t5cfhPY8sg"&gt;Link to quick fix demo.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;I can need more suggestions for quick fixes &amp;amp; indicators. I'll try to add as many as possible - unfortunately this feature doesn't make it into 2.6. But it's available in master as well as some other exciting features.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6359801303509915928-1876964168279644499?l=mkruegermono.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mkruegermono.blogspot.com/feeds/1876964168279644499/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6359801303509915928&amp;postID=1876964168279644499' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6359801303509915928/posts/default/1876964168279644499'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6359801303509915928/posts/default/1876964168279644499'/><link rel='alternate' type='text/html' href='http://mkruegermono.blogspot.com/2011/05/monodevelop-quick-fixes.html' title='MonoDevelop Quick Fixes'/><author><name>Mike Krüger</name><uri>http://www.blogger.com/profile/10471063874075009219</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>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6359801303509915928.post-8813098946333338094</id><published>2011-03-31T23:38:00.001-07:00</published><updated>2011-04-01T22:53:03.778-07:00</updated><title type='text'>Last minute MonoDevelop design change.</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://1.bp.blogspot.com/-1H2AAJaTo2U/TZV0xYoUSRI/AAAAAAAAADM/-KB4TsCnmkg/s1600/2011-04-01_0835.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;/a&gt;&lt;div style="text-align: left;"&gt;User surveys have shown that MonoDevelop users aren't happy with the text editor syntax highlighting colors. Now we've used an algorithm to determine the best color sheme possible.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;I promise that with the new color sheme you won't stop typing.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;With the new MonoDevelop color sheme simulations have shown that'll attract twice as much developers (even more female developers). You don't even have to choose the new color sheme - because we'll only support one for 2.6:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/-TbsTS2dmf1U/TZV0SocHAyI/AAAAAAAAADE/J_tbGCIX3bY/s1600/ColorShemeSelection.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img src="http://1.bp.blogspot.com/-TbsTS2dmf1U/TZV0SocHAyI/AAAAAAAAADE/J_tbGCIX3bY/s400/ColorShemeSelection.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5590502375892124450" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 273px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Ok here is the new color sheme in action - enjoy:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;img src="http://1.bp.blogspot.com/-1H2AAJaTo2U/TZV0xYoUSRI/AAAAAAAAADM/-KB4TsCnmkg/s400/2011-04-01_0835.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5590502904224303378" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 300px; " /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); "&gt;&lt;div&gt;Any comments ?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;EDIT:&lt;/div&gt;&lt;div&gt;If you've not guessed it yet - this is an april fool joke :)&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6359801303509915928-8813098946333338094?l=mkruegermono.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mkruegermono.blogspot.com/feeds/8813098946333338094/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6359801303509915928&amp;postID=8813098946333338094' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6359801303509915928/posts/default/8813098946333338094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6359801303509915928/posts/default/8813098946333338094'/><link rel='alternate' type='text/html' href='http://mkruegermono.blogspot.com/2011/03/last-minute-monodevelop-design-change.html' title='Last minute MonoDevelop design change.'/><author><name>Mike Krüger</name><uri>http://www.blogger.com/profile/10471063874075009219</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://1.bp.blogspot.com/-TbsTS2dmf1U/TZV0SocHAyI/AAAAAAAAADE/J_tbGCIX3bY/s72-c/ColorShemeSelection.png' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6359801303509915928.post-1387655422380278030</id><published>2010-06-14T03:23:00.000-07:00</published><updated>2010-06-14T03:28:23.720-07:00</updated><title type='text'>My hack week project</title><content type='html'>&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Some people on twitter have requested that mono develop should have something like GhostDoc.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&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&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;GhostDoc is an automated xml documentation generator for Visual Studio. &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;During the hack week I took the chance to create something similiar - I call the addin DocFood.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&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&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;I made a litte screen cast showing DocFood in action:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;object id="scPlayer" width="640" height="400"&gt; &lt;param name="movie" value="http://content.screencast.com/users/mkrueger76/folders/Jing/media/6822a872-0fa6-4f1a-840d-fbbce43b9f3d/jingswfplayer.swf"&gt; &lt;param name="quality" value="high"&gt; &lt;param name="bgcolor" value="#FFFFFF"&gt; &lt;param name="flashVars" value="thumb=http://content.screencast.com/users/mkrueger76/folders/Jing/media/6822a872-0fa6-4f1a-840d-fbbce43b9f3d/FirstFrame.jpg&amp;amp;containerwidth=640&amp;amp;containerheight=400&amp;amp;content=http://content.screencast.com/users/mkrueger76/folders/Jing/media/6822a872-0fa6-4f1a-840d-fbbce43b9f3d/00000001.swf"&gt; &lt;param name="allowFullScreen" value="true"&gt; &lt;param name="scale" value="showall"&gt; &lt;param name="allowScriptAccess" value="always"&gt; &lt;param name="base" value="http://content.screencast.com/users/mkrueger76/folders/Jing/media/6822a872-0fa6-4f1a-840d-fbbce43b9f3d/"&gt;  &lt;embed src="http://content.screencast.com/users/mkrueger76/folders/Jing/media/6822a872-0fa6-4f1a-840d-fbbce43b9f3d/jingswfplayer.swf" quality="high" bgcolor="#FFFFFF" width="640" height="400" type="application/x-shockwave-flash" allowscriptaccess="always" flashvars="thumb=http://content.screencast.com/users/mkrueger76/folders/Jing/media/6822a872-0fa6-4f1a-840d-fbbce43b9f3d/FirstFrame.jpg&amp;amp;containerwidth=1054&amp;amp;containerheight=739&amp;amp;content=http://content.screencast.com/users/mkrueger76/folders/Jing/media/6822a872-0fa6-4f1a-840d-fbbce43b9f3d/00000001.swf" allowfullscreen="true" base="http://content.screencast.com/users/mkrueger76/folders/Jing/media/6822a872-0fa6-4f1a-840d-fbbce43b9f3d/" scale="showall"&gt;&lt;/embed&gt; &lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;a href="http://www.screencast.com/t/ODcwZTRiOWQt"&gt;Full movie&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&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&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;How to obtain DocFood:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&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&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;+ Obtain a recent MonoDevelop source code (2.4 beta 2 - 2.4 final should work)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;+ Set up monodevelop build environment&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;+ &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;Go to &lt;/span&gt;&lt;a href="http://code.google.com/p/docfood/downloads/list"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;DocFood@GooleCode&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt; and download DocFood.tgz.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;+ extract the DocFood.tgz into the extras/ directory.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;+ Open the .sln file with monodevelop &amp;amp; compile.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;+ done.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&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&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;Or wait for the 2.6 release ... (should show up into the trunk somewhere after 2.4)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6359801303509915928-1387655422380278030?l=mkruegermono.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mkruegermono.blogspot.com/feeds/1387655422380278030/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6359801303509915928&amp;postID=1387655422380278030' title='24 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6359801303509915928/posts/default/1387655422380278030'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6359801303509915928/posts/default/1387655422380278030'/><link rel='alternate' type='text/html' href='http://mkruegermono.blogspot.com/2010/06/my-hack-week-project.html' title='My hack week project'/><author><name>Mike Krüger</name><uri>http://www.blogger.com/profile/10471063874075009219</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>24</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6359801303509915928.post-8619464064192736455</id><published>2010-05-04T07:00:00.000-07:00</published><updated>2010-05-04T07:54:17.443-07:00</updated><title type='text'>Web based build bots don't work for me</title><content type='html'>&lt;div&gt;For MonoDevelop we want a stable trunk - many people use the trunk version of MonoDevelop for their daily work.&lt;/div&gt;&lt;div&gt;Unfortunately I tend to break the trunk from time to time (I think every developer does). Sometimes I just break some unit tests.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;div&gt;Therfore we set up a web based build bot for monodevelop:&lt;/div&gt;&lt;div&gt;&lt;a href="http://wrench.mono-project.com/builds/monodevelop"&gt;http://wrench.mono-project.com/builds/monodevelop&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This automates the build process &amp;amp; unit testing. In theory this will help all developers to stabilize the trunk. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But my experience said: &lt;b&gt;WRONG&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Before we had a build bot a build failure was recognized mostly by Lluis Sanchez (thanks lluis) or some users who informed me in IRC that there is something not working. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now with the bild bot build failures are recognized mostly by Lluis Sanchez (thanks again) or some users who try to build monodevelop trunk and infom me on IRC that something isn't working.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;How can this happen now that we've a build bot ?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;-&gt; I have to go to that page and check if I broke something.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This isn't really an improvement ... I have always to manually check, if I broke something. &lt;/div&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/_qu7PsihBYZI/S-As3AsebyI/AAAAAAAAABc/nsnpp7ckFvM/s1600/InfoWindow.png"&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;I always wanted that the build bot send me an e-mail in case of build failure.&lt;/div&gt;&lt;div&gt;... but I think I would've missed that mail as well).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Then I had the idea: &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Just write a little monodevelop addin which informs me, if the build bot found something. This way:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;I would get informed without doing manual checks (-&gt; saves time)&lt;/li&gt;&lt;li&gt;I wouldn't svn up a non working version (-&gt; saves more time)&lt;/li&gt;&lt;li&gt;Maybe I would be more careful with check ins, if the build bot guard has some form of punishment when I break something (-&gt; may save time for our user)&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;With this in mind I just wrote a small addin for us monodevelop authors (and maybe other MonkeyWrench users) I call 'Build bot Guard'.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://code.google.com/p/monodevelopbuildbotguard/"&gt;http://code.google.com/p/monodevelopbuildbotguard/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It just displays a little icon in the monodevelop status bar (I like it simple).&lt;/div&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/_qu7PsihBYZI/S-At1HnPmQI/AAAAAAAAACE/b6vu9ghYKzk/s320/SadIcon.png"&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/_qu7PsihBYZI/S-At07ukZSI/AAAAAAAAAB8/rCVDCBBW2Ck/s320/HappyIcon.png"&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If the build is ok it looks like:&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_qu7PsihBYZI/S-At07ukZSI/AAAAAAAAAB8/rCVDCBBW2Ck/s1600/HappyIcon.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 50px; height: 24px;" src="http://2.bp.blogspot.com/_qu7PsihBYZI/S-At07ukZSI/AAAAAAAAAB8/rCVDCBBW2Ck/s320/HappyIcon.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5467420335037244706" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When there is something not ok the monkey becomes sad: &lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_qu7PsihBYZI/S-At1HnPmQI/AAAAAAAAACE/b6vu9ghYKzk/s1600/SadIcon.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 58px; height: 24px;" src="http://2.bp.blogspot.com/_qu7PsihBYZI/S-At1HnPmQI/AAAAAAAAACE/b6vu9ghYKzk/s320/SadIcon.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5467420338227747074" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Is somebody out there that wants to make the monkey sad ? I doubt that. This is really simple ... just an icon at the bottom.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But I need some more detailed info about the build bot results.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;Therefore I added a inform window on the icon click:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_qu7PsihBYZI/S-Aur1oyLKI/AAAAAAAAACM/KkZyVkA3WOE/s1600/InfoWindow.png"&gt;&lt;img style="float:center; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 206px;" src="http://4.bp.blogspot.com/_qu7PsihBYZI/S-Aur1oyLKI/AAAAAAAAACM/KkZyVkA3WOE/s320/InfoWindow.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5467421278295174306" /&gt;&lt;/a&gt;&lt;div&gt;&lt;div&gt;So far so good.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But I want to get informed if I broke the build.&lt;div&gt;(And I don't think that the small icon in the lower right corner informs me well about this)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For doing this the addin needs to know my svn user name - I added a small option panel. (There it's possible to set other MonkeyWrench projects by URL as well.) And if the user broke something a dialog appears:&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_qu7PsihBYZI/S-Av4MJnewI/AAAAAAAAACU/0lYzievnjlM/s1600/MonkeyWrath.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 254px;" src="http://2.bp.blogspot.com/_qu7PsihBYZI/S-Av4MJnewI/AAAAAAAAACU/0lYzievnjlM/s320/MonkeyWrath.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5467422590008523522" /&gt;&lt;/a&gt;&lt;div&gt;I really hope that this is enough that I'll fix the trunk ASAP. If I've some more time &amp;amp; there is interrest I'll improve the addin. Maybe even make it more flexible so that it'll be possible to add other web based build bots to it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Currently the addin has a down side: It can just track ONE project. We need something like user specific project policies. Maybe it's easer that the addin just tracks the solutions by itself. But that's something for future development.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Do you think too that build bots belong INSIDE the IDE ?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6359801303509915928-8619464064192736455?l=mkruegermono.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mkruegermono.blogspot.com/feeds/8619464064192736455/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6359801303509915928&amp;postID=8619464064192736455' title='15 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6359801303509915928/posts/default/8619464064192736455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6359801303509915928/posts/default/8619464064192736455'/><link rel='alternate' type='text/html' href='http://mkruegermono.blogspot.com/2010/05/web-based-build-bots-dont-work-for-me.html' title='Web based build bots don&apos;t work for me'/><author><name>Mike Krüger</name><uri>http://www.blogger.com/profile/10471063874075009219</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://2.bp.blogspot.com/_qu7PsihBYZI/S-At07ukZSI/AAAAAAAAAB8/rCVDCBBW2Ck/s72-c/HappyIcon.png' height='72' width='72'/><thr:total>15</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6359801303509915928.post-5800158983210173985</id><published>2009-11-20T08:46:00.001-08:00</published><updated>2009-11-20T08:49:09.576-08:00</updated><title type='text'>More bubble fun</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_qu7PsihBYZI/SwbH-NPVc1I/AAAAAAAAAA8/_YOYaaa6II8/s1600/ErrorBubbles2.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 154px;" src="http://2.bp.blogspot.com/_qu7PsihBYZI/SwbH-NPVc1I/AAAAAAAAAA8/_YOYaaa6II8/s320/ErrorBubbles2.png" alt="" id="BLOGGER_PHOTO_ID_5406228274224657234" border="0" /&gt;&lt;/a&gt;Ok I've now overworked the bubble drawing. And scrapped my old approach with the virtual lines.&lt;br /&gt;&lt;br /&gt;I need to add an ability to influence the line height &amp;amp; drawing. But the gui is somewhat working. I'll continue next week to finish the bubble thing. The coordinate translation may be a bit tricky.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6359801303509915928-5800158983210173985?l=mkruegermono.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mkruegermono.blogspot.com/feeds/5800158983210173985/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6359801303509915928&amp;postID=5800158983210173985' title='21 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6359801303509915928/posts/default/5800158983210173985'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6359801303509915928/posts/default/5800158983210173985'/><link rel='alternate' type='text/html' href='http://mkruegermono.blogspot.com/2009/11/more-bubble-fun.html' title='More bubble fun'/><author><name>Mike Krüger</name><uri>http://www.blogger.com/profile/10471063874075009219</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://2.bp.blogspot.com/_qu7PsihBYZI/SwbH-NPVc1I/AAAAAAAAAA8/_YOYaaa6II8/s72-c/ErrorBubbles2.png' height='72' width='72'/><thr:total>21</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6359801303509915928.post-1680212651819922273</id><published>2009-11-20T03:29:00.000-08:00</published><updated>2009-11-20T03:32:40.547-08:00</updated><title type='text'>Error bubbles in MonoDevelop</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_qu7PsihBYZI/SwZ9-KDPIGI/AAAAAAAAAA0/41B_7Nmlemk/s1600/ErrorBubbles.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 254px;" src="http://4.bp.blogspot.com/_qu7PsihBYZI/SwZ9-KDPIGI/AAAAAAAAAA0/41B_7Nmlemk/s320/ErrorBubbles.png" alt="" id="BLOGGER_PHOTO_ID_5406146909508149346" border="0" /&gt;&lt;/a&gt;MonoDevelop will have error bubbles in the next version. Currently it looks like this.&lt;br /&gt;&lt;br /&gt;The changes are not committed yet, but I want to give an update on what I'm currently working.&lt;br /&gt;&lt;br /&gt;Currently the coordinate translation doesn't work correctly - it'll take some days before I commit it. I hope it'll look good at this time :)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_qu7PsihBYZI/SwZ9r1L0NUI/AAAAAAAAAAs/K4yxvpT8iBY/s1600/ErrorBubbles.png"&gt;&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6359801303509915928-1680212651819922273?l=mkruegermono.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mkruegermono.blogspot.com/feeds/1680212651819922273/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6359801303509915928&amp;postID=1680212651819922273' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6359801303509915928/posts/default/1680212651819922273'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6359801303509915928/posts/default/1680212651819922273'/><link rel='alternate' type='text/html' href='http://mkruegermono.blogspot.com/2009/11/error-bubbles-in-monodevelop.html' title='Error bubbles in MonoDevelop'/><author><name>Mike Krüger</name><uri>http://www.blogger.com/profile/10471063874075009219</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://4.bp.blogspot.com/_qu7PsihBYZI/SwZ9-KDPIGI/AAAAAAAAAA0/41B_7Nmlemk/s72-c/ErrorBubbles.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6359801303509915928.post-3351662807316726499</id><published>2009-10-11T10:47:00.000-07:00</published><updated>2009-10-11T13:43:07.520-07:00</updated><title type='text'>Living during SVN downtime</title><content type='html'>&lt;div style="text-align: justify;"&gt;We had a svn downtime at the weekend and I decided to work on something different. I was bored because I don't like to work on monodevelop without svn.&lt;br /&gt;I've decided to do something useful and made a little hex editor user control using spare parts of the text editor control and it was very fun.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: right;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_qu7PsihBYZI/StIaqJtJfRI/AAAAAAAAAAM/NN0PVqo4WTU/s1600-h/HexEditor.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 262px;" src="http://2.bp.blogspot.com/_qu7PsihBYZI/StIaqJtJfRI/AAAAAAAAAAM/NN0PVqo4WTU/s320/HexEditor.png" alt="" id="BLOGGER_PHOTO_ID_5391401015378017554" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The control feels fast (at least compared to the other hex editors I tested). It could re-use red-black tree for data storage and almost all data structures used by the text editor.&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Some of the code changed, for example it's no longer needed to have locations as line/columns.&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Instead just the offset is used (btw. all calculations done by the hex editor are much simpler than in the text editor). It still needs some work, for example the undo/redo logic and cut&amp;amp;paste needs to be 'translated'. But this should be easy - I may do it during the next svn downtime :)&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_qu7PsihBYZI/StIf7t6y8QI/AAAAAAAAAAk/qOqzV-gnqsE/s1600-h/hexeditor2.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 320px; height: 224px;" src="http://1.bp.blogspot.com/_qu7PsihBYZI/StIf7t6y8QI/AAAAAAAAAAk/qOqzV-gnqsE/s320/hexeditor2.png" alt="" id="BLOGGER_PHOTO_ID_5391406814714851586" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;From the user point of view it feels like the monodevelop text editor.  It re-uses some of the drawing code and event handler logic.&lt;br /&gt;&lt;/div&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;Styling (could share style files with the text editor)&lt;/li&gt;&lt;li&gt;"Margin" model&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Caret blinking/drawing &lt;/li&gt;&lt;li&gt;Bookmarks&lt;/li&gt;&lt;li&gt;Mouse behavior (selection etc.)&lt;/li&gt;&lt;li&gt;It can do bookmarks, selection, zooming, group bytes, words, longs&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;After the 2.2 release I'll include a hex editor view in monodevelop. From time to time I need to view the hex code of files, then I can do this without leaving monodevelop.&lt;br /&gt;&lt;br /&gt;I wonder if anybody dares to make a stand alone version of the monodevelop hex editor and text editor. Both controls can easily be re-used in a standalone application.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6359801303509915928-3351662807316726499?l=mkruegermono.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mkruegermono.blogspot.com/feeds/3351662807316726499/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6359801303509915928&amp;postID=3351662807316726499' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6359801303509915928/posts/default/3351662807316726499'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6359801303509915928/posts/default/3351662807316726499'/><link rel='alternate' type='text/html' href='http://mkruegermono.blogspot.com/2009/10/living-during-svn-downtime.html' title='Living during SVN downtime'/><author><name>Mike Krüger</name><uri>http://www.blogger.com/profile/10471063874075009219</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://2.bp.blogspot.com/_qu7PsihBYZI/StIaqJtJfRI/AAAAAAAAAAM/NN0PVqo4WTU/s72-c/HexEditor.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6359801303509915928.post-5792433774303864221</id><published>2009-08-05T22:58:00.000-07:00</published><updated>2009-08-05T23:45:32.900-07:00</updated><title type='text'>Code Generation Popup</title><content type='html'>One feature I always wanted to have is the code generation pop up. I'm currently working on the refactoring part of MonoDevelop and I take the chance implementing the code generation popup.&lt;br /&gt;This is a real time saver, if you know how to use it.&lt;br /&gt;What can it do for you ? It can:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Create constructors and initialize members&lt;/li&gt;&lt;li&gt;Create properties&lt;/li&gt;&lt;li&gt;Create event OnXXX methods&lt;/li&gt;&lt;li&gt;Create ToString() method&lt;/li&gt;&lt;li&gt;Create Equals &amp;amp; HashCode&lt;/li&gt;&lt;/ul&gt;See the &lt;a href="http://monodevelop.com/Documentation/Feature_List/Quick_Code_Generation"&gt;Quick Code Generation&lt;/a&gt; entry in the mono develop wiki for more details on that feature.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6359801303509915928-5792433774303864221?l=mkruegermono.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mkruegermono.blogspot.com/feeds/5792433774303864221/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6359801303509915928&amp;postID=5792433774303864221' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6359801303509915928/posts/default/5792433774303864221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6359801303509915928/posts/default/5792433774303864221'/><link rel='alternate' type='text/html' href='http://mkruegermono.blogspot.com/2009/08/code-generation-popup.html' title='Code Generation Popup'/><author><name>Mike Krüger</name><uri>http://www.blogger.com/profile/10471063874075009219</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>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6359801303509915928.post-2190822719446814961</id><published>2009-07-29T22:42:00.000-07:00</published><updated>2009-07-29T22:43:57.376-07:00</updated><title type='text'>Twitter</title><content type='html'>I've now created a twitter account. I'll post there more up to date infos what I'm currently developing. My username there is mikrueger.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6359801303509915928-2190822719446814961?l=mkruegermono.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mkruegermono.blogspot.com/feeds/2190822719446814961/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6359801303509915928&amp;postID=2190822719446814961' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6359801303509915928/posts/default/2190822719446814961'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6359801303509915928/posts/default/2190822719446814961'/><link rel='alternate' type='text/html' href='http://mkruegermono.blogspot.com/2009/07/twitter.html' title='Twitter'/><author><name>Mike Krüger</name><uri>http://www.blogger.com/profile/10471063874075009219</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>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6359801303509915928.post-5049699584809320558</id><published>2009-07-09T04:54:00.000-07:00</published><updated>2009-07-09T05:07:52.562-07:00</updated><title type='text'>Refactoring, refactoring, refactoring</title><content type='html'>I'm in the process improving the refactoring in MonoDevelop.&lt;br /&gt;&lt;br /&gt;I hope that refactoring in MonoDevelop will be in a good shape 'really soon' (maybe in 1-2 months). I've looked at other tools eclipse, netbeans, intellij and michael hutchinson pointed me to some VS.NET plugins that add refactoring to VS.NET.&lt;br /&gt;&lt;br /&gt;I've created a new refactoring plug in and have thrown any refactoring stuff in there, we've a basic refactoring infrastructure. The refactoring system is based on single changes.  That means that refactorings generate a list of replacement operations which the user can view in a preview dialog (mostly the same as eclipse). However this preview dialog doesn't make sense for very small inline refactorings - they can be done without any dialog.&lt;br /&gt;&lt;br /&gt;Now I'm improving the infrastructure by writing some small refactorings. I first thought writing extract method is enough. But that isn't the case, other refactorings need different stuff. Therefore I'll implement some more. Wanna help ?&lt;br /&gt;&lt;br /&gt;I try to get my wife on board to help out with refactorings. She helped me to improve the refactoring infrastructure quite a bit (but the infrastructure needs some evolvement before I can write it down).  And she tries to implement some refactorings. It's really helpful to have someone which I can see working with mono develop. Some of the more advanced mono develop editing features alienate users ... that's something I need to think over.&lt;br /&gt;The features are really cool but are unpredictable for developers who don't know them.&lt;br /&gt;&lt;br /&gt;I was a bit lazy with writing new features in the last few weeks, but I think that adding some refactorins is worth introducing a ton of new bugs. The other IDEs offer a wide range of refactorings that I found really useful - stay tuned for some cool refactorings the next few weeks.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6359801303509915928-5049699584809320558?l=mkruegermono.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mkruegermono.blogspot.com/feeds/5049699584809320558/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6359801303509915928&amp;postID=5049699584809320558' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6359801303509915928/posts/default/5049699584809320558'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6359801303509915928/posts/default/5049699584809320558'/><link rel='alternate' type='text/html' href='http://mkruegermono.blogspot.com/2009/07/refactoring-refactoring-refactoring.html' title='Refactoring, refactoring, refactoring'/><author><name>Mike Krüger</name><uri>http://www.blogger.com/profile/10471063874075009219</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></entry><entry><id>tag:blogger.com,1999:blog-6359801303509915928.post-4768801845879568897</id><published>2008-09-03T05:05:00.000-07:00</published><updated>2008-09-03T05:44:24.254-07:00</updated><title type='text'>Hack week project</title><content type='html'>This hack week I choosed to do an ansi art viewing tool. Called &lt;a href="http://code.google.com/p/m-draw/"&gt;M-Draw&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Back in the 90' I had an own bbs system running and ansi art was used for the menus. There were some ansi art groups like &lt;a href="http://www.acid.org"&gt;ACiD&lt;/a&gt; or &lt;a href="http://www.ice.org/"&gt;iCE&lt;/a&gt; who made an art out of textmode drawings.&lt;br /&gt;&lt;br /&gt;I made an tool to load and convert different formats. During the years many formats were invented. I tried to make load/save routines for all these formats.&lt;br /&gt;During the hack week I had support for following formats:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/ANSI_escape_code"&gt;ANSI&lt;/a&gt; - this is the standard format &lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://ftsc.ozzmosis.com/docs/fsc-0025.001"&gt;AVATAR&lt;/a&gt; - this is a format for making the images very small&lt;/li&gt;&lt;li&gt;PCBoard - this format was used by a BBS system (&lt;a href="http://en.wikipedia.org/wiki/Pcboard"&gt;link&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;BIN - standard binary format (just like saving the screen buffer memory to a file)&lt;/li&gt;&lt;li&gt;ASCII - plain, colorless format&lt;/li&gt;&lt;/ul&gt;First I tried to make a console application (with editing capabilities).&lt;br /&gt;But this was more complicated than excepted and I switched to a GTK interface (without editing capabilities).&lt;br /&gt;The GUI is able to load &amp;amp; save all formats above.&lt;br /&gt;&lt;br /&gt;It is possible to view and edit the meta data information (&lt;a href="http://www.acid.org/info/sauce/sauce.htm"&gt;SAUCE&lt;/a&gt;) of the files. One of the nice things is that it's possible to load fonts from &lt;a href="http://en.wikipedia.org/wiki/TheDraw"&gt;TheDraw&lt;/a&gt;. TheDraw was one of the most widespread ansi creating tools and it made a format for ANSI art fonts. No other editor was able to load&amp;amp;use the proprietary TheDraw font files.&lt;br /&gt;In the 90' I re-engineered the TheDraw font routines and now I've rewritten them in C#.&lt;br /&gt;&lt;br /&gt;Still to do:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Adding more formats: X-Bin and Wildcat! BBS (these two are not really important)&lt;/li&gt;&lt;li&gt;Support for animation&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Adding editing capabilities&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;One of the problems with the console gui was that the old ansi files require the old dos font and the linux fonts are a bit different. Using a custom gtk widget and an old dos font file is much easier and looks better than using the linux console directly. The widget could be extended with zooming support, but for now it does it's job.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6359801303509915928-4768801845879568897?l=mkruegermono.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mkruegermono.blogspot.com/feeds/4768801845879568897/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6359801303509915928&amp;postID=4768801845879568897' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6359801303509915928/posts/default/4768801845879568897'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6359801303509915928/posts/default/4768801845879568897'/><link rel='alternate' type='text/html' href='http://mkruegermono.blogspot.com/2008/09/hack-week-project.html' title='Hack week project'/><author><name>Mike Krüger</name><uri>http://www.blogger.com/profile/10471063874075009219</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></entry><entry><id>tag:blogger.com,1999:blog-6359801303509915928.post-1348759433866075571</id><published>2008-03-01T08:45:00.000-08:00</published><updated>2009-07-29T22:46:13.853-07:00</updated><title type='text'>Background story</title><content type='html'>I'm the creator of the SharpDevelop IDE which I started out of curiosity at 2000 where Visual Studio was not available.&lt;br /&gt;I've begun my C# experience with the first released PDC version of C#. I always wanted to write a full featured IDE myself. I've written small editors (in Pascal and C) before, not only text also hex editors and ANSI drawing tools.&lt;br /&gt;The official release date of the first version I've used myself and gave to other people is 9/11/2000 (the birthday of my mother, has nothing to do with the precognition of a terrorist attack).  I invested much time in this project, delayed my university degree several years - but I had much fun.&lt;br /&gt;&lt;br /&gt;For the record:&lt;br /&gt;SharpDevelop was my first Windows Application. I always used to be a C/C++ unix (before that DOS/Pascal) programmer. I've developed Java applications during my computer sience study. But I came to C# because it was better than Java (in my opinion, I don't want do offend the Java fans, Java is great).&lt;br /&gt;&lt;br /&gt;... After the first half year of developing SharpDevelop I got kind support from Austria. Christoph Wille wrote me that he want to sponsor the project. He became the SharpDevelop "team" leader. The team consisted mostly: Me (programmer), Bernhard Spuida (documentation, he invented the names like codon), Christian Holm (testing) and Andrea Paatz (my girlfriend, she helped on various places with code and much mutch patience).&lt;br /&gt;Some time later Markus Palme joined the team, a very talented programmer which began to contribute VB.NET stuff. I left the project in 2005 after #Develop 1.1-&gt;2.0 was more or less completed (80%). At this time Daniel Grunwald joined #Develop development.&lt;br /&gt;I really wrote much code at that time and needed a break. I started to play World of Warcraft and overplayed it a 'little' ...&lt;br /&gt;At that time I lost a bit the believe in SharpDevelop. I thought with the free VS.NET versions there would be no room for a free IDE on windows - I thought that no cost was THE reason for the SharpDevelop user base on Windows for the Windows developers, fortunately I was wrong. At my univerity I got not very positive feedback on SharpDevelop, in fact they more or less ignored it, I couldn't use SharpDevelop for my diploma thesis.&lt;br /&gt;During that time I managed to finish my diploma in computer science (it's something like the master degree for you us people). Because I found no SharpDevelop supporter at my university I had to find a different project for my diploma: I wrote a small 2D RPG multi player computer game engine and editor for Windows CE.&lt;br /&gt;&lt;br /&gt;After finishing I looked out for something different - I began to work at a small closed source software company in the Berlin region (I didn't think about working for Novell at this time). It was very interesting. I've worked on a different development environment (no code development) - at this time I wrote a nice WPF forms designer. I got a development contract for 6 months, at the end I wrote to Miguel, if I can work for Novell and he said yes. The company didn't want to let me go (It was a very cool company, but Novell is cool too), but I had made my decision.&lt;br /&gt;&lt;br /&gt;I joined MonoDevelop in April 2007 and I first needed to set up MonoDevelop for Linux development.&lt;br /&gt;At the beginning it was very difficult, MonoDevelop run only for about 2 minutes without crash on my computer - I wasn't used to mono and linux development at this time. And I found it all very difficult to work with it. (Maybe thats one reason why we spend a half year for bug fixing)&lt;br /&gt;But after struggling for a while I became used to it. I needed to learn linux/gtk# development and to integrate in the mono team, but I've manged it ^^ and can do full time work on MonoDevelop now.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6359801303509915928-1348759433866075571?l=mkruegermono.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mkruegermono.blogspot.com/feeds/1348759433866075571/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6359801303509915928&amp;postID=1348759433866075571' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6359801303509915928/posts/default/1348759433866075571'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6359801303509915928/posts/default/1348759433866075571'/><link rel='alternate' type='text/html' href='http://mkruegermono.blogspot.com/2008/03/background-story.html' title='Background story'/><author><name>Mike Krüger</name><uri>http://www.blogger.com/profile/10471063874075009219</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></entry></feed>
