<?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-2760720841939228560</id><updated>2012-01-21T03:06:48.138-08:00</updated><category term='wcf'/><category term='articles'/><category term='Microsoft &quot;Oslo&quot;'/><category term='xaml'/><category term='tools'/><category term='internet explorer'/><category term='silverlight'/><category term='ogc'/><category term='neXus.BLOGS'/><category term='or mapper'/><category term='spatial#'/><category term='gis'/><category term='ssh'/><category term='wspbuilder'/><category term='ribbon'/><category term='msbuild'/><category term='copssh'/><category term='odbc'/><category term='microsoft sharepoint'/><category term='oracle'/><category term='c#'/><category term='IL'/><category term='content management'/><category term='DeepEarth'/><category term='windows forms'/><category term='microsoft access'/><category term='svg'/><category term='generics'/><category term='data access'/><category term='oledb'/><category term='MGraph'/><category term='microsoft'/><category term='bacula'/><category term='.net 2.0'/><category term='web sites'/><category term='ubuntu'/><category term='critical software'/><category term='nullable types'/><category term='subversion'/><title type='text'>Wiggy Thoughts</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://wiggythoughts.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://wiggythoughts.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Pedro Gomes</name><uri>http://www.blogger.com/profile/00827412539290098837</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>53</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2760720841939228560.post-3551045448700760426</id><published>2010-10-14T10:55:00.000-07:00</published><updated>2010-10-14T11:02:49.396-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>Now for something a little bit different</title><content type='html'>In the past weeks, I've been working on a project to build a windows service. At start we thought on a standard and regular multi threaded approach.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;That's it, normally you design it to have a thread pool and one job queue. Thant each thread get's one job from the queue and goes all the way processing the job.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;One of the guy's here suggested using a different approach, based on &lt;a href="http://www.eecs.harvard.edu/~mdw/papers/seda-sosp01.pdf"&gt;this&lt;/a&gt; paper. The idea is to break the job processing in several processing modules, each of them providing by it's one queue. I did it, and we came up with a very interesting result.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So, the bottom line, do take some time to think and consider different solutions for common problems, from time to time new solutions tend to surprise us&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760720841939228560-3551045448700760426?l=wiggythoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wiggythoughts.blogspot.com/feeds/3551045448700760426/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760720841939228560&amp;postID=3551045448700760426' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/3551045448700760426'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/3551045448700760426'/><link rel='alternate' type='text/html' href='http://wiggythoughts.blogspot.com/2010/10/now-for-something-little-bit-different.html' title='Now for something a little bit different'/><author><name>Pedro Gomes</name><uri>http://www.blogger.com/profile/00827412539290098837</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><entry><id>tag:blogger.com,1999:blog-2760720841939228560.post-7391923086449892367</id><published>2010-05-09T06:45:00.000-07:00</published><updated>2010-05-09T06:51:23.912-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='bacula'/><title type='text'>Reset Bacula Catalog Database</title><content type='html'>Every time i need to do a new bacula setup, i end up needing to clean the catalog database after installation and configuration tests.&lt;br /&gt;&lt;br /&gt;In &lt;a href="http://blog.mansonthomas.com/2009/09/reset-bacula-database-and-files.html"&gt;this post&lt;/a&gt; there's a very simple straightforward how-to.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760720841939228560-7391923086449892367?l=wiggythoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wiggythoughts.blogspot.com/feeds/7391923086449892367/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760720841939228560&amp;postID=7391923086449892367' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/7391923086449892367'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/7391923086449892367'/><link rel='alternate' type='text/html' href='http://wiggythoughts.blogspot.com/2010/05/reset-bacula-catalog-database.html' title='Reset Bacula Catalog Database'/><author><name>Pedro Gomes</name><uri>http://www.blogger.com/profile/00827412539290098837</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-2760720841939228560.post-1665952791413122313</id><published>2010-03-09T04:30:00.001-08:00</published><updated>2010-03-09T04:30:15.255-08:00</updated><title type='text'>PowerPivots and Sharepoint 2010</title><content type='html'>&lt;p&gt;If you’re going to install a new sharepoint 2010 box, consider that you must folow special procedures in order to allow the PowerPivots installer to run with success.&lt;/p&gt;  &lt;p&gt;In my experience one is normally lead to do a normal install, and when a curious user asks you to provide PowerPivots integration in you sharepoint box… you’re in real problems.&lt;/p&gt;  &lt;p&gt;Recently i found &lt;a href="http://powerpivot-info.com/post/66-step-by-step-guide-on-installing-powerpivot-for-sharepoint"&gt;this&lt;/a&gt; post that in a very clear way explains the steps needed to make things work.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760720841939228560-1665952791413122313?l=wiggythoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wiggythoughts.blogspot.com/feeds/1665952791413122313/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760720841939228560&amp;postID=1665952791413122313' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/1665952791413122313'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/1665952791413122313'/><link rel='alternate' type='text/html' href='http://wiggythoughts.blogspot.com/2010/03/powerpivots-and-sharepoint-2010.html' title='PowerPivots and Sharepoint 2010'/><author><name>Pedro Gomes</name><uri>http://www.blogger.com/profile/00827412539290098837</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-2760720841939228560.post-1561373180813048427</id><published>2010-01-04T12:51:00.001-08:00</published><updated>2010-01-04T12:51:27.496-08:00</updated><title type='text'>A nice tool… and i had never heard about it</title><content type='html'>&lt;p&gt;LogParser… yes the name says everything, it’s a simple command line tool from Microsoft and serves to parse log files (you can get it &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=890cd06b-abf8-4c25-91b2-f8d975cf8c07&amp;amp;displaylang=en"&gt;here&lt;/a&gt;).&lt;/p&gt;  &lt;p&gt;The Problem: Almost 1GB of IIS log files and willing to identify site 404 errors.&lt;/p&gt;  &lt;p&gt;The solution: Log parser and a simple &lt;a href="http://www.brettb.com/DetectingASPErrorsInIISLogFiles.asp"&gt;blog post&lt;/a&gt; explaining how to use it.&lt;/p&gt;  &lt;p&gt;So I've executed the following command:&lt;/p&gt;  &lt;p&gt;logparser &amp;quot;SELECT [cs-uri-stem], [cs-uri-query], Count(*) AS [Hits] FROM c:\logs\web\ex*.log WHERE sc-status = 404    &lt;br /&gt;GROUP BY [cs-uri-stem], [cs-uri-query]&amp;quot;&lt;/p&gt;  &lt;p&gt;And I’m done.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760720841939228560-1561373180813048427?l=wiggythoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wiggythoughts.blogspot.com/feeds/1561373180813048427/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760720841939228560&amp;postID=1561373180813048427' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/1561373180813048427'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/1561373180813048427'/><link rel='alternate' type='text/html' href='http://wiggythoughts.blogspot.com/2010/01/nice-tool-and-i-had-never-heard-about.html' title='A nice tool… and i had never heard about it'/><author><name>Pedro Gomes</name><uri>http://www.blogger.com/profile/00827412539290098837</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-2760720841939228560.post-2940611365864092192</id><published>2009-12-01T13:45:00.001-08:00</published><updated>2009-12-01T13:45:40.670-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='internet explorer'/><category scheme='http://www.blogger.com/atom/ns#' term='microsoft'/><title type='text'>That’s it… Had enough of slow Internet Explorer</title><content type='html'>&lt;p&gt;For several days now, my internet explorer was just too slow. Opening a new tab or a new window could take 10 to 15 seconds, and that was just annoying me. Today was time to say… “No More!”.&lt;/p&gt;  &lt;p&gt;I thought that the slow IE response should be related to some bad add-on. So I’ve just disabled them all. And guess what, i just got my IE to work ok.&lt;/p&gt;  &lt;p&gt;So i start by enabling them one by one, i figured out that my problem was because of the “Sun Java&amp;#160; Plug-is SSV Helper”. That means that it was time to google a little, i was not willing to believe that i was the only one with that problem. As normal i was correct, several links pointed that this is a common problem.&lt;/p&gt;  &lt;p&gt;I leave here some links with useful information:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blog.mediawhole.com/2009/06/ie8-slow-to-load-slow-to-create-new.html"&gt;Link 1&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.walkernews.net/2009/11/09/disable-java-plug-in-that-causes-ie-8-tab-slow-opening-problem/"&gt;Link 2&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760720841939228560-2940611365864092192?l=wiggythoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wiggythoughts.blogspot.com/feeds/2940611365864092192/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760720841939228560&amp;postID=2940611365864092192' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/2940611365864092192'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/2940611365864092192'/><link rel='alternate' type='text/html' href='http://wiggythoughts.blogspot.com/2009/12/thats-it-had-enough-of-slow-internet.html' title='That’s it… Had enough of slow Internet Explorer'/><author><name>Pedro Gomes</name><uri>http://www.blogger.com/profile/00827412539290098837</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-2760720841939228560.post-8470460845996715493</id><published>2009-08-24T02:27:00.001-07:00</published><updated>2009-08-24T02:31:37.957-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='microsoft sharepoint'/><title type='text'>Software (and Sharepoint) Development</title><content type='html'>&lt;p&gt;Nowadays it’s really important to do a proper google search before embracing a new development task. This gains a bigger importance when we’re talking about sharepoint development.&lt;/p&gt;  &lt;p&gt;Why? &lt;/p&gt;  &lt;p&gt;Simple, sharepoint development is done on virtual machine in a single server environment, but production scenarios are normally populated by several servers in a Sharepoint Farm.&lt;/p&gt;  &lt;p&gt;Just to give you all an example: I was starting a simple task - “Just add a simple WSP Feature to allow application content deployment, much like calling STSADM –o copyappbincontent”.&lt;/p&gt;  &lt;p&gt;My first thought was, “Ok, that’s a simple one”… than as usually i googled a little about it, just to get myself into context and figure out if someone had any problem in a similar approach. The truth is that it has token me only a few minutes, to figure out that my task was not going to be that simple, because i found &lt;a href="http://software.sharepointsolutions.com/Community/t/75.aspx"&gt;this&lt;/a&gt; and &lt;a href="http://sharepointinterface.com/2009/06/06/the-applyapplicationcontenttolocalserver-method-and-why-it-comes-up-short/"&gt;this one to&lt;/a&gt;. After that, I've started implementing a different solution for that not so simple task.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;Bottom line: Allays (even for the simpler tasks) have someone in your team to “loose” a few minutes investigating for problems and solutions… it will save you (or your team) a lot.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760720841939228560-8470460845996715493?l=wiggythoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wiggythoughts.blogspot.com/feeds/8470460845996715493/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760720841939228560&amp;postID=8470460845996715493' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/8470460845996715493'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/8470460845996715493'/><link rel='alternate' type='text/html' href='http://wiggythoughts.blogspot.com/2009/08/software-and-sharepoint-development.html' title='Software (and Sharepoint) Development'/><author><name>Pedro Gomes</name><uri>http://www.blogger.com/profile/00827412539290098837</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-2760720841939228560.post-240028870867563233</id><published>2009-08-19T14:57:00.001-07:00</published><updated>2009-08-19T14:57:25.247-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='microsoft sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='content management'/><title type='text'>Content Management and Sharepoint</title><content type='html'>&lt;p&gt;The use of Sharepoint as a content management product is growing fast. Microsoft Sharepoint is a average product that has several advantages, been one of them it’s ease of use. Standard users can by itself deploy content management solutions with low effort. &lt;/p&gt;  &lt;p&gt;Ease of use sometimes means that important issues are left aside. Despite what the majority believes, content management is not all about content types and template layouts. One of the major and probably the most important issue to solve in a content management solution is content categorization.&lt;/p&gt;  &lt;p&gt;If you don’t provide your solution with the means to properly categorize the information, soon it will be left down. Sharepoint somehow provide means to categorize contents but they are poorly implemented. Basically, you can use sub-sites, lists, folders, navigation and that’s it. If one wants to provide extended cross-site categorization capabilities it is left alone with the need to implement custom tools.&lt;/p&gt;  &lt;p&gt;I find it very important to discuss proper content categorization, as it is a key for success in a content management solution. Therefore i will be writing more about this issues here.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760720841939228560-240028870867563233?l=wiggythoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wiggythoughts.blogspot.com/feeds/240028870867563233/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760720841939228560&amp;postID=240028870867563233' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/240028870867563233'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/240028870867563233'/><link rel='alternate' type='text/html' href='http://wiggythoughts.blogspot.com/2009/08/content-management-and-sharepoint.html' title='Content Management and Sharepoint'/><author><name>Pedro Gomes</name><uri>http://www.blogger.com/profile/00827412539290098837</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-2760720841939228560.post-2401509736077679437</id><published>2009-06-21T01:49:00.001-07:00</published><updated>2009-06-21T02:36:17.458-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='microsoft sharepoint'/><title type='text'>Provision lookup field using only the list schema</title><content type='html'>&lt;p&gt;Defining a lookup field on a list schema seems to be a simple task… but as almost everything that looks simple, it turns out not so simple.&lt;/p&gt;  &lt;p&gt;My first approach was to simply include this in my list schema:&lt;/p&gt;  &lt;div class="csharpcode"&gt;   &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Field&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;{52C2BFC2-268B-4bc8-9D6D-A7BEDEFDFA8C}&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Lookup&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;QuestionCategory&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="attr"&gt;     DisplayName&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Category&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;List&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;{a8c71795-34a4-41e2-b15e-72a3620a1887}&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;ShowField&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;CategoryName&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;br /&gt;&lt;p&gt;And it didn’t worked. First thought was to create a feature receiver that would handle the lookup field provision. But after a few minutes googling about the problem i found that apparently de List attribute should be set to the lookup list relative path. So, this one just works:&lt;/p&gt;&lt;br /&gt;&lt;div class="csharpcode"&gt;&lt;br /&gt;  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Field&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;{52C2BFC2-268B-4bc8-9D6D-A7BEDEFDFA8C}&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Lookup&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;QuestionCategory&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="attr"&gt;     DisplayName&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Categoria&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;List&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;$Resources:core,lists_Folder;/Categories&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;ShowField&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;CategoryName&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&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/2760720841939228560-2401509736077679437?l=wiggythoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wiggythoughts.blogspot.com/feeds/2401509736077679437/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760720841939228560&amp;postID=2401509736077679437' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/2401509736077679437'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/2401509736077679437'/><link rel='alternate' type='text/html' href='http://wiggythoughts.blogspot.com/2009/06/define-lookup-field-on-list-schema.html' title='Provision lookup field using only the list schema'/><author><name>Pedro Gomes</name><uri>http://www.blogger.com/profile/00827412539290098837</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></entry><entry><id>tag:blogger.com,1999:blog-2760720841939228560.post-7285285624706224520</id><published>2009-06-20T12:32:00.001-07:00</published><updated>2009-06-20T12:35:02.494-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='microsoft sharepoint'/><title type='text'>Removing the “Title” column from a sharepoint list</title><content type='html'>&lt;p&gt;Recently I’ve needed to provide a list without using the default “Title” column. Removing the title was quite easy.&lt;/p&gt;  &lt;p&gt;The problem is that if you remove the “Title” column you lose the item menu… or not! yes, it’s true, it took me a while googling the internet, but i found &lt;a href="http://blog.ekerot.org/2009/01/replace-title-link-in-listviews/"&gt;this&lt;/a&gt;. It’s a nice, and simple post that explains how to add the link and the menu to a custom column. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760720841939228560-7285285624706224520?l=wiggythoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wiggythoughts.blogspot.com/feeds/7285285624706224520/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760720841939228560&amp;postID=7285285624706224520' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/7285285624706224520'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/7285285624706224520'/><link rel='alternate' type='text/html' href='http://wiggythoughts.blogspot.com/2009/06/removing-title-column-from-sharepoint.html' title='Removing the “Title” column from a sharepoint list'/><author><name>Pedro Gomes</name><uri>http://www.blogger.com/profile/00827412539290098837</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-2760720841939228560.post-5947835515826651911</id><published>2009-06-12T00:38:00.001-07:00</published><updated>2009-06-12T00:54:40.219-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='microsoft sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='wspbuilder'/><title type='text'>Linked Files and WSPBuilder</title><content type='html'>&lt;p&gt;I’m a WSPBuilder fan. I like the way it works, and i really like the Visual Studio extensions.&lt;/p&gt;&lt;p&gt;As everything else WSPBuilder is not perfect, it has at least one major drawback. It can’t handle visual studio linked files. This is a major problem for me, because i like to have my pages and user controls on a Web application and use a different project for the WSP.&lt;/p&gt;&lt;p&gt;To solve this problem I've created a simple command line application that reads the WSP project, and copies the linked files to the expected location. Now i use this tool as a PreBuild step for my WSP project, and that’s it… Linked files now work like a charm.&lt;/p&gt;&lt;p&gt;You can download the tool from &lt;a href="http://sites.google.com/site/wiggythoughts/files/CopyVsLinkedFiles.zip"&gt;here&lt;/a&gt; and check it’s source code (very simple) :&lt;/p&gt;&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="preproc"&gt;#region&lt;/span&gt; Revision history&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="rem"&gt;// 6/12/2009 7:14:58 AM, Pedro M.V.Gomes -&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&lt;span class="rem"&gt;//      Initial version.&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&lt;span class="preproc"&gt;#endregion&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt; &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;&lt;span class="preproc"&gt;#region&lt;/span&gt; Using directives&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.IO;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Xml;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;&lt;span class="preproc"&gt;#endregion&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt; &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; PedroMVGomes.CopyVsLinkedFiles {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;    &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;    &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; Program {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; Main(&lt;span class="kwrd"&gt;string&lt;/span&gt;[] args) {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;            &lt;span class="rem"&gt;// check arguments&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (args.Length != 1) {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;                Console.Out.WriteLine(&lt;span class="str"&gt;"syntax error"&lt;/span&gt;);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;                Console.Out.WriteLine(&lt;span class="str"&gt;"usage: CopyVsLinkedFiles.exe VSProject"&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;                &lt;span class="kwrd"&gt;return&lt;/span&gt; -1;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;            }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt; &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;            &lt;span class="rem"&gt;// output welcome message&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;            Console.Out.WriteLine(&lt;span class="str"&gt;"Visual Studio Linked Files Copy Tool"&lt;/span&gt;);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;            Console.Out.WriteLine(&lt;span class="str"&gt;"Version: 0.1.0.0"&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;            Console.Out.WriteLine(&lt;span class="str"&gt;"Created by Pedro M.V.Gomes, All rights reserved"&lt;/span&gt;);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;            Console.Out.WriteLine(&lt;span class="str"&gt;"http://wiggythoughts.blogspot.com/"&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;            Console.Out.WriteLine();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;            &lt;span class="rem"&gt;// file must exist&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt; file = args[0];&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (!File.Exists(file)) {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  34:  &lt;/span&gt;                Console.Out.WriteLine(&lt;span class="str"&gt;"project file not found"&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  35:  &lt;/span&gt;                &lt;span class="kwrd"&gt;return&lt;/span&gt; -2;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  36:  &lt;/span&gt;            }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  37:  &lt;/span&gt; &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  38:  &lt;/span&gt;            &lt;span class="rem"&gt;// get folder name, will use later to combine with linked relative path&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  39:  &lt;/span&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt; projectFolder = Path.GetDirectoryName(file);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  40:  &lt;/span&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  41:  &lt;/span&gt;            &lt;span class="rem"&gt;// load project XML&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  42:  &lt;/span&gt;            XmlDocument projectFile = &lt;span class="kwrd"&gt;new&lt;/span&gt; XmlDocument();&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  43:  &lt;/span&gt;            projectFile.Load(file);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  44:  &lt;/span&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  45:  &lt;/span&gt;            &lt;span class="rem"&gt;// add msbuild namespace&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  46:  &lt;/span&gt;            XmlNamespaceManager nsManager = &lt;span class="kwrd"&gt;new&lt;/span&gt; XmlNamespaceManager(projectFile.NameTable);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  47:  &lt;/span&gt;            nsManager.AddNamespace(&lt;span class="str"&gt;"mns"&lt;/span&gt;, &lt;span class="str"&gt;"http://schemas.microsoft.com/developer/msbuild/2003"&lt;/span&gt;);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  48:  &lt;/span&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  49:  &lt;/span&gt;            &lt;span class="rem"&gt;// search linked nodes&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  50:  &lt;/span&gt;            XmlNodeList nodes = projectFile.DocumentElement.SelectNodes(&lt;span class="str"&gt;@"//mns:Content/mns:Link"&lt;/span&gt;, nsManager);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  51:  &lt;/span&gt;            &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (XmlNode node &lt;span class="kwrd"&gt;in&lt;/span&gt; nodes) {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  52:  &lt;/span&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  53:  &lt;/span&gt;                &lt;span class="rem"&gt;// compute source and target path&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  54:  &lt;/span&gt;                &lt;span class="kwrd"&gt;string&lt;/span&gt; linkFile = node.FirstChild.Value;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  55:  &lt;/span&gt;                &lt;span class="kwrd"&gt;string&lt;/span&gt; linkedFile = node.ParentNode.Attributes[&lt;span class="str"&gt;"Include"&lt;/span&gt;].Value;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  56:  &lt;/span&gt;                &lt;span class="kwrd"&gt;string&lt;/span&gt; source = Path.Combine(projectFolder, linkedFile);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  57:  &lt;/span&gt;                &lt;span class="kwrd"&gt;string&lt;/span&gt; target = Path.Combine(projectFolder, linkFile);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  58:  &lt;/span&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  59:  &lt;/span&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt; (File.Exists(target)) {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  60:  &lt;/span&gt;                    &lt;span class="rem"&gt;// compare file modified dates and decide if we need to copy the files&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  61:  &lt;/span&gt;                    FileInfo sourceFileInfo = &lt;span class="kwrd"&gt;new&lt;/span&gt; FileInfo(source);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  62:  &lt;/span&gt;                    FileInfo targetFileInfo = &lt;span class="kwrd"&gt;new&lt;/span&gt; FileInfo(target);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  63:  &lt;/span&gt;                    &lt;span class="kwrd"&gt;if&lt;/span&gt; (targetFileInfo.LastWriteTimeUtc == sourceFileInfo.LastWriteTimeUtc) {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  64:  &lt;/span&gt;                        &lt;span class="kwrd"&gt;continue&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  65:  &lt;/span&gt;                    }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  66:  &lt;/span&gt;                }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  67:  &lt;/span&gt; &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  68:  &lt;/span&gt;                &lt;span class="rem"&gt;// copy files&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  69:  &lt;/span&gt;                Console.Out.WriteLine(&lt;span class="str"&gt;"Copying file {0} to {1}"&lt;/span&gt;, source, target);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  70:  &lt;/span&gt;                File.Copy(source, target, &lt;span class="kwrd"&gt;true&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  71:  &lt;/span&gt;            }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  72:  &lt;/span&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  73:  &lt;/span&gt;            &lt;span class="rem"&gt;// done&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  74:  &lt;/span&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; 0;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  75:  &lt;/span&gt;        }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  76:  &lt;/span&gt;    }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  77:  &lt;/span&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt; font-size: small;&lt;br /&gt; color: black;&lt;br /&gt; font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt; background-color: #ffffff;&lt;br /&gt; /*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt&lt;br /&gt;{&lt;br /&gt; background-color: #f4f4f4;&lt;br /&gt; width: 100%;&lt;br /&gt; margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760720841939228560-5947835515826651911?l=wiggythoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wiggythoughts.blogspot.com/feeds/5947835515826651911/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760720841939228560&amp;postID=5947835515826651911' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/5947835515826651911'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/5947835515826651911'/><link rel='alternate' type='text/html' href='http://wiggythoughts.blogspot.com/2009/06/linked-files-and-wspbuilder.html' title='Linked Files and WSPBuilder'/><author><name>Pedro Gomes</name><uri>http://www.blogger.com/profile/00827412539290098837</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><entry><id>tag:blogger.com,1999:blog-2760720841939228560.post-6092056213669810469</id><published>2009-05-12T23:27:00.001-07:00</published><updated>2009-05-12T23:27:07.329-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='microsoft sharepoint'/><title type='text'>Now that’s a smart thing…</title><content type='html'>&lt;p&gt;Just imagine this… you have a development server that goes out of hard disk space. No problem you delete some unused and temporary files, and you can say problem solved.    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;Well, that's not quite... if you have Excel Services for SharePoint running... you're may be in trouble. If the Excel Services workbook cache is in the disk that got out of space, then Excel Services will cease working, and just getting the disk free space up won’t solve it. To so that, you will have to restart excel services, by running these commands: &lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;strong&gt;stsadm -o provisionservice -action stop -servicetype &amp;quot;Microsoft.Office.Excel.Server.ExcelServerSharedWebService, Microsoft.Office.Excel.Server, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&amp;quot;&lt;/strong&gt;&lt;/em&gt; &lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;strong&gt;stsadm -o provisionservice -action start -servicetype &amp;quot;Microsoft.Office.Excel.Server.ExcelServerSharedWebService, Microsoft.Office.Excel.Server, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&amp;quot;&lt;/strong&gt;&lt;/em&gt; &lt;/p&gt;  &lt;p&gt;After each stsadm command you better issue a IISRESET. &lt;/p&gt;  &lt;p&gt;Ok, now you can say problem solved.... but it has token me 2 hours to get it done.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760720841939228560-6092056213669810469?l=wiggythoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wiggythoughts.blogspot.com/feeds/6092056213669810469/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760720841939228560&amp;postID=6092056213669810469' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/6092056213669810469'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/6092056213669810469'/><link rel='alternate' type='text/html' href='http://wiggythoughts.blogspot.com/2009/05/now-thats-smart-thing.html' title='Now that’s a smart thing…'/><author><name>Pedro Gomes</name><uri>http://www.blogger.com/profile/00827412539290098837</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-2760720841939228560.post-2521264893699991944</id><published>2009-01-15T02:14:00.001-08:00</published><updated>2009-01-15T02:16:14.314-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='articles'/><title type='text'>This one is for your Boss</title><content type='html'>&lt;p&gt;I was doing my mourning readings when I found this &lt;a href="http://www.joelonsoftware.com/items/2009/01/13.html"&gt;post&lt;/a&gt; on Joel Spolsky's Blog (Fog Creek, Joel's company, recently changed to a new office, were every one gets its own private space).&lt;/p&gt;  &lt;p&gt;For the ones that work on an Open-plan and don't like to, follow &lt;a href="http://www.news.com.au/business/story/0,27753,24906913-5017672,00.html"&gt;this article&lt;/a&gt; to your boss.&lt;/p&gt;  &lt;p&gt;What does it says?&lt;/p&gt;  &lt;p&gt;It talks about some scientific study from the Queensland University of Technology's Institute of Health and Biomedical Innovation (what a large name!) from Australia. They concluded that switching to the modern open-plan offices led to lower productivity and higher worker stress.&lt;/p&gt;  &lt;p&gt;Take a look on what they said (I think this is no novelty for the ones that work on open-plan offices, but now there's a scientific study to use as support)&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;quot;The high level of noise causes employees to lose concentration, leading to low productivity, there are privacy issues because everyone can see what you are doing on the computer or hear what you are saying on the phone, and there is a feeling of insecurity.''&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;quot;The problem is that employers are always looking for ways to cut costs, and using open-plan designs can save 20 per cent on construction.''&lt;/em&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760720841939228560-2521264893699991944?l=wiggythoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wiggythoughts.blogspot.com/feeds/2521264893699991944/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760720841939228560&amp;postID=2521264893699991944' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/2521264893699991944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/2521264893699991944'/><link rel='alternate' type='text/html' href='http://wiggythoughts.blogspot.com/2009/01/this-one-is-for-your-boss.html' title='This one is for your Boss'/><author><name>Pedro Gomes</name><uri>http://www.blogger.com/profile/00827412539290098837</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-2760720841939228560.post-4876400441699341675</id><published>2009-01-15T01:44:00.001-08:00</published><updated>2009-01-15T01:46:37.434-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft &quot;Oslo&quot;'/><category scheme='http://www.blogger.com/atom/ns#' term='MGraph'/><title type='text'>MGraph - Funny name... what's that?</title><content type='html'>&lt;p&gt;In the past months the Microsoft &amp;quot;Oslo&amp;quot; initiative has been discussed in several blogs.&lt;/p&gt;  &lt;p&gt;Microsoft &amp;quot;Oslo&amp;quot; is not related with the norwegian capital city, it is a group of tools and specifications that aim to ease the software development. Microsoft is focused on modeling and in how the proper tools and specification can participate in the several parts of the software lifecycle.&lt;/p&gt;  &lt;p&gt;Part of the &amp;quot;Oslo&amp;quot; initiative is the M language, basically M has 3 subsets, MSchema, MGramar and MGraph.&lt;/p&gt;  &lt;p&gt;MGraph is a specification (one should not call it a language) that allows to store data in a structured manner. The ones that are familiar with JSON, will find MGraph very similar to it.&lt;/p&gt;  &lt;p&gt;Lars Corneliussen, had published a blog post that talks about MGraph and compares it with plain XML and also with JSON. It worth's reading, and you can reach it &lt;a href="http://startbigthinksmall.wordpress.com/2008/12/10/mgraph-the-next-xml/"&gt;here&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760720841939228560-4876400441699341675?l=wiggythoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wiggythoughts.blogspot.com/feeds/4876400441699341675/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760720841939228560&amp;postID=4876400441699341675' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/4876400441699341675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/4876400441699341675'/><link rel='alternate' type='text/html' href='http://wiggythoughts.blogspot.com/2009/01/mgraph-new-language.html' title='MGraph - Funny name... what&amp;#39;s that?'/><author><name>Pedro Gomes</name><uri>http://www.blogger.com/profile/00827412539290098837</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-2760720841939228560.post-3445947322960323498</id><published>2009-01-12T04:32:00.001-08:00</published><updated>2009-05-12T23:31:10.775-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='microsoft sharepoint'/><title type='text'>SharePoint - How to change the server name</title><content type='html'>&lt;p&gt;Well in my new job I'm getting to know Microsoft SharePoint Server. I'm doing some R&amp;amp;D on Microsoft Infopath and Microsoft Sharepoint. After a few hours reading information about the subject, I've decided to get my hands dirty and give both Infopath a Sharepoint a try.&lt;/p&gt;  &lt;p&gt;I've started with a Sharepoint virtual server, and there i installed Infopath. Then on the process I've figured that i would need to change the virtual server name, witch I did. Today I've realized that by changing the server name the Sharepoint is working no more.&lt;/p&gt;  &lt;p&gt;Glad there's Internet, and glad there's google, just go &lt;a href="http://www.sharepointblogs.com/nrdev/archive/2008/07/15/tip-how-to-rename-a-sharepoint-server-machine-name.aspx"&gt;here&lt;/a&gt;, you will find a simple how-to rename a SharePoint server.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760720841939228560-3445947322960323498?l=wiggythoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wiggythoughts.blogspot.com/feeds/3445947322960323498/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760720841939228560&amp;postID=3445947322960323498' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/3445947322960323498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/3445947322960323498'/><link rel='alternate' type='text/html' href='http://wiggythoughts.blogspot.com/2009/01/sharepoint-how-to-change-server-name.html' title='SharePoint - How to change the server name'/><author><name>Pedro Gomes</name><uri>http://www.blogger.com/profile/00827412539290098837</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-2760720841939228560.post-131248860107608023</id><published>2008-12-30T14:07:00.001-08:00</published><updated>2008-12-30T14:07:09.324-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ssh'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>SSH Tunnels and SQUID</title><content type='html'>&lt;p&gt;I've been using PuTTY for a long time as a way to bypass some corporate web filters. With PuTTY I can create a SSH tunnel and gain access to my home SQUID proxy server, allowing me to use my own home Internet connection.&lt;/p&gt;  &lt;p&gt;Now for something that is really new to me, there's no need to use SQUID, yes only PuTTY and SSH are required. This &lt;a href="http://www.dotcomunderground.com/blogs/2008/12/11/putty-ssh-tunnel-to-hide-ip/"&gt;post&lt;/a&gt; describes very simple way to use the SSH server as a SOCKS proxy.&lt;/p&gt;  &lt;p&gt;My home SQUID is now going on for a long retire. Uninstall is planed for the next weekend. KISS (Keep It Simple, Stupid), one less service running on my home Linux Server.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760720841939228560-131248860107608023?l=wiggythoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wiggythoughts.blogspot.com/feeds/131248860107608023/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760720841939228560&amp;postID=131248860107608023' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/131248860107608023'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/131248860107608023'/><link rel='alternate' type='text/html' href='http://wiggythoughts.blogspot.com/2008/12/ssh-tunnels-and-squid.html' title='SSH Tunnels and SQUID'/><author><name>Pedro Gomes</name><uri>http://www.blogger.com/profile/00827412539290098837</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-2760720841939228560.post-709062509451172714</id><published>2008-12-20T06:17:00.001-08:00</published><updated>2008-12-20T06:17:31.826-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DeepEarth'/><category scheme='http://www.blogger.com/atom/ns#' term='gis'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>GIS once again</title><content type='html'>&lt;p&gt;Isn't life a funny thing!&lt;/p&gt;  &lt;p&gt;It's now less than a month after a job change witch I though would break my connection with GIS technologies and I'm already posting about the same issue.&lt;/p&gt;  &lt;p&gt;Recently i was contacted by one of the &lt;a href="http://www.codeplex.com/deepearth"&gt;DeepEarth&lt;/a&gt; project leaders. He asked for my assistance and also for the possibility to reuse some of the Spatial# project code.&lt;/p&gt;  &lt;p&gt;Conclusion, I'm now participating in the &lt;a href="http://www.codeplex.com/deepearth"&gt;DeepEarth&lt;/a&gt; project. I also invite you all to check the project, it as impressed me a lot.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760720841939228560-709062509451172714?l=wiggythoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wiggythoughts.blogspot.com/feeds/709062509451172714/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760720841939228560&amp;postID=709062509451172714' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/709062509451172714'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/709062509451172714'/><link rel='alternate' type='text/html' href='http://wiggythoughts.blogspot.com/2008/12/gis-once-again.html' title='GIS once again'/><author><name>Pedro Gomes</name><uri>http://www.blogger.com/profile/00827412539290098837</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-2760720841939228560.post-9052848449776317749</id><published>2008-11-11T02:10:00.001-08:00</published><updated>2009-05-12T23:32:57.596-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='critical software'/><title type='text'>Moving</title><content type='html'>&lt;p&gt;After 6 year's working in the GIS market time to move has arrived.&lt;/p&gt;  &lt;p&gt;Since 17-Nov, I'm experimenting new adventures and a new job. I joined the &lt;a href="http://www.criticalsoftware.com/"&gt;Critical Software&lt;/a&gt; team.&lt;/p&gt;  &lt;p&gt;I will continue to post in this blog although the main subject will change. As I won't be working in GIS no more, the GIS related posts will start to drop, and eventually disappear. &lt;/p&gt;  &lt;p&gt;Nevertheless, the last 6 year were very exciting and challenging, and I will forever be a GIS curious and will always be interested and awaiting for the the new solutions that will arise.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760720841939228560-9052848449776317749?l=wiggythoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wiggythoughts.blogspot.com/feeds/9052848449776317749/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760720841939228560&amp;postID=9052848449776317749' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/9052848449776317749'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/9052848449776317749'/><link rel='alternate' type='text/html' href='http://wiggythoughts.blogspot.com/2008/11/moving.html' title='Moving'/><author><name>Pedro Gomes</name><uri>http://www.blogger.com/profile/00827412539290098837</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-2760720841939228560.post-2635816099584935039</id><published>2008-07-03T06:51:00.001-07:00</published><updated>2008-07-03T06:51:59.101-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>NULLS - Improve the way you handle them in C#</title><content type='html'>&lt;p&gt;I've recently discovered the Null-Coalescing operator. Didn't knew it exists, and I can't now say that it is a very cool operator.&lt;/p&gt; &lt;p&gt;Several times you like to assign a variable with the value from another variable, but you would like to set a different value if the source is null.&lt;/p&gt; &lt;p&gt;For this situations i would write something like this:&lt;/p&gt; &lt;div class="csharpcode"&gt;&lt;br&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;if&lt;/span&gt;(null == source) {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:    &lt;/span&gt;&lt;span class="kwrd"&gt;return&lt;/span&gt; "it is null";&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;} &lt;span class="kwrd"&gt;else&lt;/span&gt; {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:    &lt;/span&gt;&lt;span class="kwrd"&gt;return&lt;/span&gt; source;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;}&lt;/pre&gt;&lt;br&gt;&lt;pre&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;Or this:&lt;/p&gt;&lt;br /&gt;&lt;div class="csharpcode"&gt;&lt;br&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;return &lt;/span&gt; (null == source) ? "it is null" : source;&lt;/pre&gt;&lt;br&gt;&lt;pre&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;But now I can write this:&lt;/p&gt;&lt;br /&gt;&lt;div class="csharpcode"&gt;&lt;br&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;return &lt;/span&gt; source ?? "it is null";&lt;/pre&gt;&lt;br&gt;&lt;pre&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;What's the difference ? None! all the three sample produce the same result... personally the last one is the I like the most.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760720841939228560-2635816099584935039?l=wiggythoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wiggythoughts.blogspot.com/feeds/2635816099584935039/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760720841939228560&amp;postID=2635816099584935039' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/2635816099584935039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/2635816099584935039'/><link rel='alternate' type='text/html' href='http://wiggythoughts.blogspot.com/2008/07/nulls-improve-way-you-handle-them-in-c.html' title='NULLS - Improve the way you handle them in C#'/><author><name>Pedro Gomes</name><uri>http://www.blogger.com/profile/00827412539290098837</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-2760720841939228560.post-5580794047892336005</id><published>2008-06-26T03:17:00.001-07:00</published><updated>2008-06-26T03:17:35.088-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net 2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>ORA 01460 Passing BLOB parameter</title><content type='html'>&lt;p&gt;Honestly this has been one of the strangest problems that came across me.&lt;/p&gt; &lt;p&gt;I have code that inserts geometries into oracle tables using stored procedures. Due to legacy reasons I'm still using WKB to get the job done, therefore the procedure parameters are of type BLOB.&lt;/p&gt; &lt;p&gt;Recently when inserting a given polygon, I has blown by the ORA01460 error. Browsing the net just pointed me to the parameter value length.&lt;/p&gt; &lt;p&gt;But, then the byte array length was not that strange. It's an 32646 bytes length array! So why the error ?&lt;/p&gt; &lt;p&gt;Further investigation shows that I was successfully passing larger and smaller array to the stored procedure. Things were getting event stranger...&lt;/p&gt; &lt;p&gt;My first shot was truncating the array, and it worked (got an error due to invalid WKB).&lt;/p&gt; &lt;p&gt;So to solve the problem, I'm now adding extra 0 bytes at the array end.... and guess what... it works!&lt;/p&gt; &lt;div class="csharpcode"&gt;&lt;br&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span style="color: #2b91af"&gt;IWKs&lt;/span&gt; wks = (&lt;span style="color: #2b91af"&gt;IWKs&lt;/span&gt;)(&lt;span style="color: #2b91af"&gt;GeometryAdapter&lt;/span&gt;.Convert((&lt;span style="color: #2b91af"&gt;IGeometry&lt;/span&gt;)value);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="kwrd"&gt;byte&lt;/span&gt;[] buffer = wks.ExportToWKB();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;parameter.Value = buffer;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;parameter.Size = buffer.Length;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&lt;span class="kwrd"&gt;if&lt;/span&gt; (parameter.Size == 32646) {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;  &lt;span class="kwrd"&gt;byte&lt;/span&gt;[] newBuffer = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;byte&lt;/span&gt;[50000];&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;  buffer.CopyTo(newBuffer, 0);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;  parameter.Value = newBuffer;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;  parameter.Size = 50000;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;}&lt;/pre&gt;&lt;br&gt;&lt;pre&gt;&lt;/pre&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760720841939228560-5580794047892336005?l=wiggythoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wiggythoughts.blogspot.com/feeds/5580794047892336005/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760720841939228560&amp;postID=5580794047892336005' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/5580794047892336005'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/5580794047892336005'/><link rel='alternate' type='text/html' href='http://wiggythoughts.blogspot.com/2008/06/ora-01460-passing-blob-parameter.html' title='ORA 01460 Passing BLOB parameter'/><author><name>Pedro Gomes</name><uri>http://www.blogger.com/profile/00827412539290098837</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></entry><entry><id>tag:blogger.com,1999:blog-2760720841939228560.post-4573828273594369203</id><published>2008-02-24T00:48:00.001-08:00</published><updated>2008-02-24T00:48:10.240-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='subversion'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Subversion Backup Script</title><content type='html'>&lt;p&gt;In the last days I've been upgrading my backup system. Now I'm using &lt;a href="http://www.bacula.org"&gt;Bacula&lt;/a&gt;. Setting up bacula in ubuntu was very simple and straightforward.&lt;/p&gt;  &lt;p&gt;I also had to develop a script to backup (dump) my subversion repository to a local folder. Bacula job will later get the subversion dump and place it in the backup storage.&lt;/p&gt;  &lt;p&gt;I've decided to publish my script here as it may serve as a&amp;#160; guide and help others with the same requirements.&lt;/p&gt;  &lt;p&gt;You can get my subversion backup script &lt;a href="http://blogs.focuspoint-solutions.com/wiggythoughts/files/subversion_backup.zip"&gt;here&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760720841939228560-4573828273594369203?l=wiggythoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wiggythoughts.blogspot.com/feeds/4573828273594369203/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760720841939228560&amp;postID=4573828273594369203' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/4573828273594369203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/4573828273594369203'/><link rel='alternate' type='text/html' href='http://wiggythoughts.blogspot.com/2008/02/subversion-backup-script.html' title='Subversion Backup Script'/><author><name>Pedro Gomes</name><uri>http://www.blogger.com/profile/00827412539290098837</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><entry><id>tag:blogger.com,1999:blog-2760720841939228560.post-5961848115846009896</id><published>2008-01-02T04:10:00.000-08:00</published><updated>2008-01-02T04:13:00.776-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><category scheme='http://www.blogger.com/atom/ns#' term='articles'/><title type='text'>CodeProject Article</title><content type='html'>I’ve now concluded one of the oldest todo list items. Publish a CodeProject article. Yes it is true, I’ve published an article and you can check it &lt;a href="http://www.codeproject.com/KB/dotnet/invokegenericmethods.aspx"&gt;here.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760720841939228560-5961848115846009896?l=wiggythoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wiggythoughts.blogspot.com/feeds/5961848115846009896/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760720841939228560&amp;postID=5961848115846009896' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/5961848115846009896'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/5961848115846009896'/><link rel='alternate' type='text/html' href='http://wiggythoughts.blogspot.com/2008/01/codeproject-article.html' title='CodeProject Article'/><author><name>Pedro Gomes</name><uri>http://www.blogger.com/profile/00827412539290098837</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-2760720841939228560.post-7537533929790727733</id><published>2007-12-20T08:33:00.001-08:00</published><updated>2007-12-20T08:44:29.134-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><category scheme='http://www.blogger.com/atom/ns#' term='wcf'/><title type='text'>WCF - Getting operation contract type</title><content type='html'>&lt;p&gt;In my current WCF adventure, I had the need to get the operation contract type. After a few moments of struggle i got this solution:&lt;/p&gt;  &lt;div class="csharpcode"&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Type&lt;/span&gt; GetOperationContractType(&lt;span style="color: #2b91af"&gt;OperationContext &lt;/span&gt;operationContext) {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;  &lt;span style="color: #2b91af"&gt;ServiceEndpointCollection&lt;/span&gt; endPoints = operationContext.Host.Description.Endpoints;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;  &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (&lt;span style="color: #2b91af"&gt;ServiceEndpoint&lt;/span&gt; endpoint &lt;span class="kwrd"&gt;in&lt;/span&gt; endpoints) {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    &lt;span class="kwrd"&gt;if&lt;/span&gt; (endpoint.Contract.Name == operationContext.EndpointDispatcher.ContractName) {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;      &lt;span class="kwrd"&gt;return&lt;/span&gt; endpoint.Contract.ContractType;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;    }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;  }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;  &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;null&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;}&lt;/pre&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/2760720841939228560-7537533929790727733?l=wiggythoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wiggythoughts.blogspot.com/feeds/7537533929790727733/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760720841939228560&amp;postID=7537533929790727733' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/7537533929790727733'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/7537533929790727733'/><link rel='alternate' type='text/html' href='http://wiggythoughts.blogspot.com/2007/12/wcf-getting-operation-contract-type.html' title='WCF - Getting operation contract type'/><author><name>Pedro Gomes</name><uri>http://www.blogger.com/profile/00827412539290098837</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-2760720841939228560.post-1217074525214180206</id><published>2007-12-19T07:03:00.001-08:00</published><updated>2007-12-19T07:03:25.980-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><category scheme='http://www.blogger.com/atom/ns#' term='wcf'/><title type='text'>WCF and Object References</title><content type='html'>&lt;p&gt;I'm currently migrating to WCF an application that uses .NET Remoting.&lt;/p&gt;  &lt;p&gt;I quickly ran into a problem with object references. By default, in the WCF object references are not preserved, which means that, if you pass a object graph with circular references, you are in serious problems.&lt;/p&gt;  &lt;p&gt;The best thing with the WCF is that it is highly and easily customizable. My problem is easily fixed by using a custom Serializer that will do the job of preserving the object references.&lt;/p&gt;  &lt;p&gt;Just check &lt;a href="http://blogs.msdn.com/sowmy/archive/2006/03/26/561188.aspx"&gt;this post&lt;/a&gt; on Sowmy Srinivasan's Blog. It's a simple how-to that clearly guides you to the process of creating and using a custom serializer on the WCF.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760720841939228560-1217074525214180206?l=wiggythoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wiggythoughts.blogspot.com/feeds/1217074525214180206/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760720841939228560&amp;postID=1217074525214180206' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/1217074525214180206'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/1217074525214180206'/><link rel='alternate' type='text/html' href='http://wiggythoughts.blogspot.com/2007/12/wcf-and-object-references.html' title='WCF and Object References'/><author><name>Pedro Gomes</name><uri>http://www.blogger.com/profile/00827412539290098837</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-2760720841939228560.post-3234299007812062750</id><published>2007-11-09T02:41:00.001-08:00</published><updated>2007-11-09T02:41:43.675-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ogc'/><category scheme='http://www.blogger.com/atom/ns#' term='microsoft'/><title type='text'>Microsoft now is a OGC member</title><content type='html'>&lt;p&gt;That's true, just read this &lt;a href="http://www.opengeospatial.org/pressroom/pressreleases/781"&gt;press release&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;From the Microsoft point of view, this seams like a logical move as some of their flagship products (SQL Server 2008 and Virtual Earth) will include or already include spatial support. What this also means is that for sure MS products will support the OGC standards witch is very good news.&lt;/p&gt;  &lt;p&gt;I'm a confess addicted to OGC standards, even wen using third-party engines that do not provide the standard interfaces, I tend to create a abstraction for OGC compliancy.&lt;/p&gt;  &lt;p&gt;With all that said, I welcome Microsoft move to join the Open Geospatial Consortium. &lt;/p&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760720841939228560-3234299007812062750?l=wiggythoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wiggythoughts.blogspot.com/feeds/3234299007812062750/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760720841939228560&amp;postID=3234299007812062750' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/3234299007812062750'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/3234299007812062750'/><link rel='alternate' type='text/html' href='http://wiggythoughts.blogspot.com/2007/11/microsoft-now-is-ogc-member.html' title='Microsoft now is a OGC member'/><author><name>Pedro Gomes</name><uri>http://www.blogger.com/profile/00827412539290098837</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-2760720841939228560.post-5979947054020723709</id><published>2007-11-09T01:35:00.001-08:00</published><updated>2007-11-09T01:35:52.649-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ogc'/><category scheme='http://www.blogger.com/atom/ns#' term='spatial#'/><title type='text'>Spatial# and OGC Web Map Service</title><content type='html'>&lt;p&gt;After some time of reflection, I've decided to implement the OGC Web Map Service in the Spatial# project.&lt;/p&gt;  &lt;p&gt;OGC WMS will be also the supporting protocol for the client controls.&lt;/p&gt;  &lt;p&gt;The choice was made to allow client and server parts of the spatial# project to live independently.&lt;/p&gt;  &lt;p&gt;In the future one will be allowed to use the client user control against any WMS server. Additionally the server will also be available to any application that supports the OGC WMS standard.&lt;/p&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760720841939228560-5979947054020723709?l=wiggythoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wiggythoughts.blogspot.com/feeds/5979947054020723709/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760720841939228560&amp;postID=5979947054020723709' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/5979947054020723709'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/5979947054020723709'/><link rel='alternate' type='text/html' href='http://wiggythoughts.blogspot.com/2007/11/spatial-and-ogc-web-map-service.html' title='Spatial# and OGC Web Map Service'/><author><name>Pedro Gomes</name><uri>http://www.blogger.com/profile/00827412539290098837</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-2760720841939228560.post-5116076468565076266</id><published>2007-10-31T01:06:00.001-07:00</published><updated>2007-10-31T01:06:43.335-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>Application Splash Screen</title><content type='html'>&lt;p&gt;In one of my projects, I was needing to add a Splash Screen to a windows application. As usual i searched the web for some samples and ideas and came across this &lt;a href="http://blogs.infosupport.com/wouterv/archive/2007/08/25/The-Package-Explorer-splash-screen_3A00_-Multi_2D00_threaded-application-initialization.aspx"&gt;post&lt;/a&gt;. It is a really good splash screen component, I highly recommend it.&lt;/p&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760720841939228560-5116076468565076266?l=wiggythoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wiggythoughts.blogspot.com/feeds/5116076468565076266/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760720841939228560&amp;postID=5116076468565076266' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/5116076468565076266'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/5116076468565076266'/><link rel='alternate' type='text/html' href='http://wiggythoughts.blogspot.com/2007/10/application-splash-screen.html' title='Application Splash Screen'/><author><name>Pedro Gomes</name><uri>http://www.blogger.com/profile/00827412539290098837</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-2760720841939228560.post-6945239842058987487</id><published>2007-10-22T00:56:00.001-07:00</published><updated>2007-10-22T00:57:47.011-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web sites'/><title type='text'>Good Ideas &amp; Bad Sites</title><content type='html'>&lt;p&gt;The Internet is the place were good ideas easily can provide profit. But the thing is, good ideas need to be packed with good looking and working web sites. There are several business that have failed to achieve profit because they were using bad web sites.&lt;/p&gt;  &lt;p&gt;The problem is that company tend to ignore the need for a web architect. Often companies assume that web sites can be provided by curious kids. This attitude normally has bad results. &lt;/p&gt;  &lt;p&gt;Just as a way to prove my point, let me start by confessing that I'm an Internet shopper. But i do buy things on traditional shops, and wen I do that, I first google the net for reviews. The thing is, if the product I&amp;#x2019;m willing to buy has some defects, certainly somebody has posted a complaint somewhere in the Internet.&lt;/p&gt;  &lt;p&gt;Recently I've found &lt;a href="http://www.trustsource.org"&gt;trustedsource.org&lt;/a&gt;. The idea is to provide a site were customers can write their on review on products they've used. This is what call a good idea, but the problem with it is that it's using a very bas site.&lt;/p&gt;  &lt;p&gt;I do think that their site is needing some professional help because it is clumsy. I've fought hard to find some products and realized that they are categorized. The problem is that there's no way to browse the categories.&lt;/p&gt;  &lt;p&gt;I've however found some information using google, for instance &lt;a href="http://www.trustsource.org/hairloss"&gt;Provillus&lt;/a&gt; is customers the top rated product for hair loss prevention. (my wife would probably love if I use it), also they have a &lt;a href="http://www.trustsource.org/cash-advance"&gt;payday loans&lt;/a&gt; products category.&lt;/p&gt;  &lt;p&gt;As I wrote earlier, this is a good idea, but using a very poorly designed web site, clearly a example that the site architecture was not taken under the correct consideration. As for all good ideas I would like it to succeeded, but for that a site redesign is urgent.&lt;/p&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760720841939228560-6945239842058987487?l=wiggythoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wiggythoughts.blogspot.com/feeds/6945239842058987487/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760720841939228560&amp;postID=6945239842058987487' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/6945239842058987487'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/6945239842058987487'/><link rel='alternate' type='text/html' href='http://wiggythoughts.blogspot.com/2007/10/good-ideas-bad-sites.html' title='Good Ideas &amp;amp; Bad Sites'/><author><name>Pedro Gomes</name><uri>http://www.blogger.com/profile/00827412539290098837</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-2760720841939228560.post-2427418336525267963</id><published>2007-10-15T01:44:00.001-07:00</published><updated>2007-11-13T03:12:26.992-08:00</updated><title type='text'>Back on track</title><content type='html'>&lt;p&gt;After a few weeks working for a urgent project, that ended this last weekend with a work trip to Paris, I'm back on to the Spatial Sharp project.&lt;/p&gt;  &lt;p&gt;During this week I will reevaluate the work in progress and reschedule the postponed 1st release.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760720841939228560-2427418336525267963?l=wiggythoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wiggythoughts.blogspot.com/feeds/2427418336525267963/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760720841939228560&amp;postID=2427418336525267963' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/2427418336525267963'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/2427418336525267963'/><link rel='alternate' type='text/html' href='http://wiggythoughts.blogspot.com/2007/10/back-on-track.html' title='Back on track'/><author><name>Pedro Gomes</name><uri>http://www.blogger.com/profile/00827412539290098837</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></entry><entry><id>tag:blogger.com,1999:blog-2760720841939228560.post-6713723978680756832</id><published>2007-09-21T11:51:00.001-07:00</published><updated>2007-09-21T12:46:06.353-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Minimal Ubuntu Desktop</title><content type='html'>&lt;p&gt;I've been searching for a minimal ubuntu desktop distribution and so far I found none.&lt;/p&gt;  &lt;p&gt;It's true that there's &lt;a href="http://www.xubuntu.org/"&gt;xubuntu&lt;/a&gt; but that's not what I was looking for. I wanted a gnome ubuntu but without the added stuff (evolution open office and others) that the desktop distribution includes.&lt;/p&gt;  &lt;p&gt;I've decided to go on my one and, and also post the steps here fore others that may be searching for the same.&lt;/p&gt;  &lt;p&gt;First off all you need to download the Ubuntu 7.04 Alternate CD distribution&lt;/p&gt;  &lt;p&gt;Then install the base command line system&lt;/p&gt;  &lt;p&gt;&amp;#xA0;&lt;img id="id" alt="ubuntu install screen" src="http://blogs.focuspoint-solutions.com/wiggythoughts/files/ubuntu_01.jpg" /&gt; &lt;/p&gt;  &lt;p&gt;Finish the system installation (it's a text mode install) and run the following commands.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;Note that you must have access to the Internet from the newly installed system.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;First we need to get apt-get lists updated and upgrade the system.&lt;/p&gt;  &lt;p&gt;sudo apt-get update&lt;/p&gt;  &lt;p&gt;sudo apt-get upgrade&lt;/p&gt;  &lt;p&gt;sudo apt-get dist-upgrade&lt;/p&gt;  &lt;p&gt;After running these commands we must restart the system (sudo shutdown -r now).&lt;/p&gt;  &lt;p&gt;Now we're ready to install the remaining packages.&lt;/p&gt;  &lt;p&gt;sudo apt-get install gdm gnome-applets gnome-terminal menu metacity nautilus synaptic x-window-system-core desktop-effects gnome-themes gnome-themes-extras firefox firefox-gnome-support feisty-gdm-themes feisty-session-splashes feisty-wallpapers openssl ssh smbclient smbfs ubuntu-artwork update-manager update-notifier apport-gtk usplash usplash-theme-ubuntu xcursor-themes gedit&lt;/p&gt;  &lt;p&gt;Now restart the system once more and you should boot to a gnome ubuntu linux with firefox just like the one on this image&lt;/p&gt;  &lt;p&gt;&amp;#xA0;&lt;img id="id" alt="ubuntu minimal desktop login screen" src="http://blogs.focuspoint-solutions.com/wiggythoughts/files/ubuntu_02.jpg" /&gt;&lt;/p&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760720841939228560-6713723978680756832?l=wiggythoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wiggythoughts.blogspot.com/feeds/6713723978680756832/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760720841939228560&amp;postID=6713723978680756832' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/6713723978680756832'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/6713723978680756832'/><link rel='alternate' type='text/html' href='http://wiggythoughts.blogspot.com/2007/09/minimal-ubuntu-desktop.html' title='Minimal Ubuntu Desktop'/><author><name>Pedro Gomes</name><uri>http://www.blogger.com/profile/00827412539290098837</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-2760720841939228560.post-9035257227326089460</id><published>2007-09-12T01:21:00.001-07:00</published><updated>2007-09-12T01:21:10.797-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='microsoft'/><title type='text'>Funny Things</title><content type='html'>&lt;p&gt;They do happen. I was just checking this blog stats on Google Analytics and I found out that Rob Relyea as a post on in his &lt;a href="http://rrelyea.spaces.live.com/blog/cns!167AD7A5AB58D5FE!2165.entry"&gt;blog&lt;/a&gt; referring to this one. &lt;/p&gt;  &lt;p&gt;Funny is that by linking to his post, I spent some time reading Rob's blog and decided to give &lt;a href="http://writer.live.com/"&gt;Windows Live Writer&lt;/a&gt; a try. &lt;/p&gt;  &lt;p&gt;In one word.... it's good. Worked as a charm with my blog. It's a really good piece of software that I highly recommend to everyone that has is one blog.&lt;/p&gt;  &lt;p&gt;The software detected my blog settings (including the provider although I'm using a personal server to host it). The    &lt;br /&gt;Live Writer editor is far better than blogger online editor. It has spelling, advanced html features, blogger tags (shows up as writer categories). It is also capable of showing a post preview that is fast and works very well&lt;/p&gt;  &lt;p&gt;It's a 5 start's award proving that Microsoft is able to provide really good and free software.&lt;/p&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760720841939228560-9035257227326089460?l=wiggythoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wiggythoughts.blogspot.com/feeds/9035257227326089460/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760720841939228560&amp;postID=9035257227326089460' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/9035257227326089460'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/9035257227326089460'/><link rel='alternate' type='text/html' href='http://wiggythoughts.blogspot.com/2007/09/funny-things.html' title='Funny Things'/><author><name>Pedro Gomes</name><uri>http://www.blogger.com/profile/00827412539290098837</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-2760720841939228560.post-1280868072985604154</id><published>2007-09-09T23:16:00.000-07:00</published><updated>2007-09-09T23:21:31.644-07:00</updated><title type='text'>Postponed</title><content type='html'>Due to professional commitments that I must comply, the release of the 1st version of Spatial# has been postponed 2 months. &lt;br /&gt;&lt;br /&gt;In the next following weeks there will be very little activity for this project. It will be resumed by mid October.&lt;br /&gt;&lt;br /&gt;This situation doesn’t fill me with joy; I was committed with the previous deadline and willing to fulfill it. But them there’s the real side of life, the one were we need to eat and provide food and accommodations to our family.&lt;br /&gt;I’ve been thinking this last weekend, and after all taken under consideration, postponing the spatial# release date came up as the wise move to follow.&lt;br /&gt;&lt;br /&gt;Until the new date arrives, I will continue to blog here for project news and developments. I’m also willing to consider candidates that want to join the project team.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760720841939228560-1280868072985604154?l=wiggythoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wiggythoughts.blogspot.com/feeds/1280868072985604154/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760720841939228560&amp;postID=1280868072985604154' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/1280868072985604154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/1280868072985604154'/><link rel='alternate' type='text/html' href='http://wiggythoughts.blogspot.com/2007/09/postponed.html' title='Postponed'/><author><name>Pedro Gomes</name><uri>http://www.blogger.com/profile/00827412539290098837</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-2760720841939228560.post-4229734661778905666</id><published>2007-08-30T08:05:00.000-07:00</published><updated>2007-08-30T23:43:17.650-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='spatial#'/><title type='text'>100th Revison</title><content type='html'>Google code SpatialSharp subversion repository has reached revision 100.&lt;br /&gt;&lt;br /&gt;As a way to celebrate this event, I’m publishing the next steps in the project life:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;In the next few days a preview of the Silverlight map server control will be available. It is still a very early development stage preview but it will allow the community to check the control capablilities. &lt;/li&gt;&lt;li&gt;A series of posts that will be done in this blog will provide a guide on how to use the Silverlight map server control to display ESRI Shape file data online. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Also as a celebration for the 100th revision, the project just got a logo. Check it below. &lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;img src="http://blogs.focuspoint-solutions.com/wiggythoughts/files/spatialsharp_logo.gif" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760720841939228560-4229734661778905666?l=wiggythoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wiggythoughts.blogspot.com/feeds/4229734661778905666/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760720841939228560&amp;postID=4229734661778905666' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/4229734661778905666'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/4229734661778905666'/><link rel='alternate' type='text/html' href='http://wiggythoughts.blogspot.com/2007/08/100th-revison.html' title='100th Revison'/><author><name>Pedro Gomes</name><uri>http://www.blogger.com/profile/00827412539290098837</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><entry><id>tag:blogger.com,1999:blog-2760720841939228560.post-663640029978281381</id><published>2007-08-17T07:10:00.000-07:00</published><updated>2007-09-02T23:24:43.486-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='spatial#'/><category scheme='http://www.blogger.com/atom/ns#' term='msbuild'/><title type='text'>Release builds command line script</title><content type='html'>I’ve created a command line script for Spatial#. It has the ability to generate debug and release binaries and 2 zip archives. One with the sources and other with the generated binaries.&lt;br /&gt;&lt;br /&gt;I’ve posted the script here for anyone that would like to use it as a source of knowledge.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blogs.focuspoint-solutions.com/wiggythoughts/files/build-release.zip"&gt;Build-Release.zip&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760720841939228560-663640029978281381?l=wiggythoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wiggythoughts.blogspot.com/feeds/663640029978281381/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760720841939228560&amp;postID=663640029978281381' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/663640029978281381'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/663640029978281381'/><link rel='alternate' type='text/html' href='http://wiggythoughts.blogspot.com/2007/08/release-builds-command-line-script.html' title='Release builds command line script'/><author><name>Pedro Gomes</name><uri>http://www.blogger.com/profile/00827412539290098837</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-2760720841939228560.post-3770730465304934350</id><published>2007-08-07T23:26:00.000-07:00</published><updated>2007-08-07T23:28:56.200-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='spatial#'/><title type='text'>Back from Vacations</title><content type='html'>Back from vacations&lt;br /&gt;&lt;br /&gt;After 3 weeks away, I’m back. I had great relaxing vacations in Algarve (south of Portugal). &lt;br /&gt;&lt;br /&gt;It was time to recharge batteries.&lt;br /&gt;&lt;br /&gt;I spent time hanging on the beach, reading books (mostly romances and novels) and taking several pictures with my new Canon 400D (one of these days I will be putting my photos here in this blog).&lt;br /&gt;&lt;br /&gt;As usually summer vacations also serve as a balance period, I’ve made same plans for the Spatial# project, and I’m very motivated to fulfill them.&lt;br /&gt;&lt;br /&gt;First, and in a very short period of time, a web site for the project will be launched. Also there will be a scheduled monthly release (wile version 1 is not reached). The first one will hit the street at the 15th September.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760720841939228560-3770730465304934350?l=wiggythoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wiggythoughts.blogspot.com/feeds/3770730465304934350/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760720841939228560&amp;postID=3770730465304934350' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/3770730465304934350'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/3770730465304934350'/><link rel='alternate' type='text/html' href='http://wiggythoughts.blogspot.com/2007/08/back-from-vacations.html' title='Back from Vacations'/><author><name>Pedro Gomes</name><uri>http://www.blogger.com/profile/00827412539290098837</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><entry><id>tag:blogger.com,1999:blog-2760720841939228560.post-8477105161799498296</id><published>2007-06-26T00:12:00.000-07:00</published><updated>2007-06-26T13:02:23.244-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='gis'/><category scheme='http://www.blogger.com/atom/ns#' term='spatial#'/><category scheme='http://www.blogger.com/atom/ns#' term='xaml'/><title type='text'>ESRI Shape file to XAML and JPG</title><content type='html'>Using Spatial# you can now generate a XAML or JPEG output.&lt;br /&gt;I’m planning on writing a CodeProject article explaining how to do it, but for that I must implement coordinate system transformations in Spatial#&lt;br /&gt;&lt;br /&gt;For only ERSI Shape files with planar corrdinates are supported. The basic is done by creating an ERSI Shape file layer, and using one of the supplied renderers to generate the output.&lt;br /&gt;&lt;br /&gt;The following code shows how to do it. You will only need the Spatial# project binaries.&lt;br /&gt;&lt;br/&gt;&lt;br/&gt;&lt;br /&gt;&lt;strong&gt;Code to Output as XAML&lt;/strong&gt;&lt;br /&gt;&lt;div class="csharpcode"&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="rem"&gt;// XAML&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;StringWriter stringWriter = &lt;span class="kwrd"&gt;new&lt;/span&gt; StringWriter();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;Xaml2DRenderer renderer = &lt;span class="kwrd"&gt;new&lt;/span&gt; Xaml2DRenderer(stringWriter);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;renderer.CanvasWidth = 500;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;renderer.CanvasHeight = 750;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;&lt;span class="rem"&gt;// create layer&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;&lt;span class="kwrd"&gt;string&lt;/span&gt; filePath = &lt;span class="str"&gt;"c:\\f.shp"&lt;/span&gt;);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;EsriShapeFileLayerProvider esriShpProvider = &lt;span class="kwrd"&gt;new&lt;/span&gt; EsriShapeFileLayerProvider(filePath);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;VectorLayer layer = &lt;span class="kwrd"&gt;new&lt;/span&gt; VectorLayer(esriShpProvider);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;&lt;span class="rem"&gt;// create style&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;Style style = &lt;span class="kwrd"&gt;new&lt;/span&gt; Style();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;style.Fill = &lt;span class="kwrd"&gt;new&lt;/span&gt; LinearGradientFillPrimitive(Color.FromArgb(25, 125, 125), Color.FromArgb(210, 210, 210), 45);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;style.Stroke = &lt;span class="kwrd"&gt;new&lt;/span&gt; SolidStrokePrimitive(Color.Yellow);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;&lt;span class="rem"&gt;// render all the layer&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;RenderEngine renderEngine = &lt;span class="kwrd"&gt;new&lt;/span&gt; RenderEngine(layer, renderer);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;renderEngine.Render(style, esriShpProvider.Bounds);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;&lt;span class="kwrd"&gt;string&lt;/span&gt; output = &lt;span class="str"&gt;"c:\\sample.xaml"&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;File.Delete(output);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;File.WriteAllText(output, stringWriter.GetStringBuilder().ToString());&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Code to Output as JPEG&lt;/strong&gt;&lt;br /&gt;&lt;div class="csharpcode"&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; (Bitmap bmp = &lt;span class="kwrd"&gt;new&lt;/span&gt; Bitmap(500, 750, PixelFormat.Format32bppArgb))&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; (Graphics bmpDC = Graphics.FromImage(bmp)) {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;  bmpDC.SmoothingMode = SmoothingMode.AntiAlias;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;  bmpDC.CompositingQuality = CompositingQuality.HighQuality;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;  Gdi2DRenderer renderer = &lt;span class="kwrd"&gt;new&lt;/span&gt; Gdi2DRenderer(bmpDC);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;  renderer.CanvasWidth = 500;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;  renderer.CanvasHeight = 750;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;  &lt;span class="rem"&gt;// create layer&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;  &lt;span class="kwrd"&gt;string&lt;/span&gt; filePath = &lt;span class="str"&gt;"c:\\f.shp"&lt;/span&gt;);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;  EsriShapeFileLayerProvider esriShpProvider = &lt;span class="kwrd"&gt;new&lt;/span&gt; EsriShapeFileLayerProvider(filePath);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;  VectorLayer layer = &lt;span class="kwrd"&gt;new&lt;/span&gt; VectorLayer(esriShpProvider);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;  &lt;span class="rem"&gt;// create style&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;  Style style = &lt;span class="kwrd"&gt;new&lt;/span&gt; Style();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;  style.Fill = &lt;span class="kwrd"&gt;new&lt;/span&gt; LinearGradientFillPrimitive(Color.FromArgb(25, 125, 125), Color.FromArgb(210, 210, 210), 45);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;  style.Stroke = &lt;span class="kwrd"&gt;new&lt;/span&gt; SolidStrokePrimitive(Color.Yellow);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;  &lt;span class="rem"&gt;// render all the layer&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;  RenderEngine renderEngine = &lt;span class="kwrd"&gt;new&lt;/span&gt; RenderEngine(layer, renderer);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;  renderEngine.Render(style, esriShpProvider.Bounds);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;  &lt;span class="kwrd"&gt;string&lt;/span&gt; output = Path.Combine("c:\\", outputFileName);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;  File.Delete(output);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;  bmp.Save(output, ImageFormat.Jpeg);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;}&lt;/pre&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/2760720841939228560-8477105161799498296?l=wiggythoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wiggythoughts.blogspot.com/feeds/8477105161799498296/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760720841939228560&amp;postID=8477105161799498296' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/8477105161799498296'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/8477105161799498296'/><link rel='alternate' type='text/html' href='http://wiggythoughts.blogspot.com/2007/06/esri-shape-file-to-xaml-and-jpg.html' title='ESRI Shape file to XAML and JPG'/><author><name>Pedro Gomes</name><uri>http://www.blogger.com/profile/00827412539290098837</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></entry><entry><id>tag:blogger.com,1999:blog-2760720841939228560.post-8636424975470966615</id><published>2007-06-15T01:49:00.000-07:00</published><updated>2007-06-15T01:57:44.501-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='or mapper'/><category scheme='http://www.blogger.com/atom/ns#' term='IL'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>Emit with care</title><content type='html'>One of the major features of the .NET framework is Reflection.Emit. It allows you to dynamically generate assemblies using IL. Well being a very powerful tool, it can sometimes be very harmful.&lt;br /&gt;&lt;br /&gt;It happened to me, I’m using Reflection.Emit in my ORM to generate dynamic field setters and getters.&lt;br /&gt;&lt;br /&gt;Using Reflection.Emit the tool generates dynamic code, which can be called using the following delegates.&lt;br /&gt;&lt;br /&gt;&lt;div class="csharpcode"&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;delegate&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; GenericSetter(&lt;span class="kwrd"&gt;object&lt;/span&gt; target, &lt;span class="kwrd"&gt;object&lt;/span&gt; &lt;span class="kwrd"&gt;value&lt;/span&gt;);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt; &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;delegate&lt;/span&gt; &lt;span class="kwrd"&gt;object&lt;/span&gt; GenericGetter(&lt;span class="kwrd"&gt;object&lt;/span&gt; target);&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;All worked ok, until the day that I’ve in a clumsy coded method, decided to call the delegate using a wrong type of object. The field in question is of type ObjectRef&amp;lt;T&amp;gt; and I was passing an object of type T.&lt;br /&gt;&lt;br /&gt;No runtime error is raised and all is working ok, but when I inspected the object, the ObjectRef&amp;lt;T&amp;gt; field now stores a PropertyChangedEventHandler value, very strange!!&lt;br /&gt;&lt;br /&gt;I’ve gone back to my IL emit code and found that it was not casting the input to the correct type.&lt;br /&gt;&lt;br /&gt;You can download my DinamicaMethods class &lt;a href="http://blogs.focuspoint-solutions.com/wiggythoughts/files/DynamicMethods.zip"&gt;here&lt;/a&gt;. It includes methods to generate dynamic field and property getters/setters.&lt;br /&gt;&lt;br /&gt;Bottom line: Just one line missing in the IL caused a lot of mess…. So do Emit… but with care…&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blogs.focuspoint-solutions.com/wiggythoughts/files/DynamicMethods.zip"&gt;DynamicMethods.zip&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760720841939228560-8636424975470966615?l=wiggythoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wiggythoughts.blogspot.com/feeds/8636424975470966615/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760720841939228560&amp;postID=8636424975470966615' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/8636424975470966615'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/8636424975470966615'/><link rel='alternate' type='text/html' href='http://wiggythoughts.blogspot.com/2007/06/emit-with-care.html' title='Emit with care'/><author><name>Pedro Gomes</name><uri>http://www.blogger.com/profile/00827412539290098837</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-2760720841939228560.post-2286583627677229625</id><published>2007-06-13T04:36:00.000-07:00</published><updated>2007-06-13T23:29:56.377-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net 2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>SendKeys MSDN Error</title><content type='html'>&lt;p&gt;MSDN documentation stats that for sending special keys using the SendKeys .NET Framework class you are entitled to enclose it within braces ({); See &lt;a href="http://msdn2.microsoft.com/en-us/library/system.windows.forms.sendkeys.send(VS.80).aspx"&gt;http://msdn2.microsoft.com/en-us/library/system.windows.forms.sendkeys.send(VS.80).aspx&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Well that’s ok; the problem is with the supplied sample code. I admit, I jumped to the sample code, used it, got the exception, and latter read the all document. The question is, if you use the supplied sample code, you will get and error, because “{ENTER” is not valid. The correct sample is bellow:&lt;/p&gt;&lt;br /&gt;&lt;div class="csharpcode"&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="rem"&gt;// Clicking Button1 causes a message box to appear.&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Button1_Click(System.Object sender, System.EventArgs e) {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;  MessageBox.Show(&lt;span class="str"&gt;"Click here!"&lt;/span&gt;);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;}&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;&lt;span class="rem"&gt;// Use the SendKeys.Send method to raise the Button1 click event &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;&lt;span class="rem"&gt;// and display the message box.&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Form1_DoubleClick(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, System.EventArgs e) {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;  &lt;span class="rem"&gt;// Send the enter key; since the tab stop of Button1 is 0, this&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;  &lt;span class="rem"&gt;// will trigger the click event.&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;  SendKeys.Send(&lt;span class="str"&gt;"{ENTER}"&lt;/span&gt;);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;}&lt;/pre&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/2760720841939228560-2286583627677229625?l=wiggythoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wiggythoughts.blogspot.com/feeds/2286583627677229625/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760720841939228560&amp;postID=2286583627677229625' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/2286583627677229625'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/2286583627677229625'/><link rel='alternate' type='text/html' href='http://wiggythoughts.blogspot.com/2007/06/sendkeys-msdn-error.html' title='SendKeys MSDN Error'/><author><name>Pedro Gomes</name><uri>http://www.blogger.com/profile/00827412539290098837</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-2760720841939228560.post-5170415806076337437</id><published>2007-06-12T00:00:00.000-07:00</published><updated>2007-06-13T06:04:27.858-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gis'/><category scheme='http://www.blogger.com/atom/ns#' term='spatial#'/><title type='text'>JTS CoordinateSequence</title><content type='html'>Martin Davis from the JTS Team pointed to me that it is indeed possible to use arrays of doubles as coordinate storage in the JTS. It is in fact possible, and rather simple. For that, one is just required to create the appropriate CoordinateSequence (and supply a custom GeometryFactory). &lt;br /&gt;&lt;br /&gt;This approach can clearly reduce the memory usage by JTS (and of course C# ports). Also this is in fact a very good OO design, and the JTS team is once again to be congratulated.&lt;br /&gt;&lt;br /&gt;As for Spatial#, I will continue implementing its simpler model, were geometry coordinates are always represented by a single array of doubles. From my experience I found no situation were a different representation is needed. Also knowing this representation in advance, allows some algorithm optimizations that the generalized JTS CoordinateSequence design doesn’t.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760720841939228560-5170415806076337437?l=wiggythoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wiggythoughts.blogspot.com/feeds/5170415806076337437/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760720841939228560&amp;postID=5170415806076337437' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/5170415806076337437'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/5170415806076337437'/><link rel='alternate' type='text/html' href='http://wiggythoughts.blogspot.com/2007/06/jts-coordinatesequence.html' title='JTS CoordinateSequence'/><author><name>Pedro Gomes</name><uri>http://www.blogger.com/profile/00827412539290098837</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-2760720841939228560.post-1502440960780518140</id><published>2007-06-07T11:02:00.001-07:00</published><updated>2007-06-08T02:20:01.918-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gis'/><category scheme='http://www.blogger.com/atom/ns#' term='spatial#'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>Spatial# ESRI Shape File Reader</title><content type='html'>&lt;span xmlns=""&gt;&lt;p&gt;The Spatial# ERSI Shape file reader is almost finished although not all the shape file types are supported yet.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;As part of the Spatial# project I've created a performance tests project with the objective of comparing the performance behavior of C# GIS Engine implementations. JTS or other java implementations will not be included in these comparison tests as I'm not interested in a development platform performance comparison.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;The first test compares ESRI shape file reading. At this moment I'm comparing Spatial# and NetTopologySuite (others will be included latter).&lt;/p&gt;&lt;p&gt;The results are good for Spatial# as it performs almost 40% better. I think that this situation is related to a simpler data representation of the Geometries (has I wrote before Spatial# uses array of doubles instead of array of Coordinate objects).&lt;br /&gt;&lt;/p&gt;&lt;p&gt;The ESRI Shape file read test consists in reading 5 shape files, with sizes from 284KB to 57MB. All the libraries are forced to read the geometries contained in the files.&lt;/p&gt;&lt;p&gt;I've executed the test 10 times for each library, discarded the higher and lower execution time, and computed the average execution time considering only the remaining 8 iterations. &lt;/p&gt;&lt;p&gt;The following table shows the test results&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div style="TEXT-ALIGN: center"&gt;&lt;table style="BORDER-COLLAPSE: collapse" border="0"&gt;&lt;colgroup&gt;&lt;col style="WIDTH: 160px"&gt;&lt;/col&gt;&lt;col style="WIDTH: 127px"&gt;&lt;/col&gt;&lt;col style="WIDTH: 127px"&gt;&lt;/col&gt;&lt;/colgroup&gt;&lt;tbody valign="top"&gt;&lt;tr&gt;&lt;td style="BORDER-RIGHT: black 0.5pt solid; PADDING-RIGHT: 7px; BORDER-TOP: medium none; PADDING-LEFT: 7px; BORDER-LEFT: medium none; BORDER-BOTTOM: black 0.5pt solid"&gt;&lt;/td&gt;&lt;td style="BORDER-RIGHT: black 0.5pt solid; PADDING-RIGHT: 7px; BORDER-TOP: black 0.5pt solid; PADDING-LEFT: 7px; BORDER-LEFT: medium none; BORDER-BOTTOM: black 0.5pt solid"&gt;&lt;p style="TEXT-ALIGN: center"&gt;Spatial#&lt;/p&gt;&lt;/td&gt;&lt;td style="BORDER-RIGHT: black 0.5pt solid; PADDING-RIGHT: 7px; BORDER-TOP: black 0.5pt solid; PADDING-LEFT: 7px; BORDER-LEFT: medium none; BORDER-BOTTOM: black 0.5pt solid"&gt;&lt;p style="TEXT-ALIGN: center"&gt;NetTopologySuite&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="BACKGROUND: #f2dbdb"&gt;&lt;td style="BORDER-RIGHT: black 0.5pt solid; PADDING-RIGHT: 7px; BORDER-TOP: medium none; PADDING-LEFT: 7px; BORDER-LEFT: black 0.5pt solid; BORDER-BOTTOM: black 0.5pt solid"&gt;&lt;p align="left"&gt;Discarded Lowest&lt;/p&gt;&lt;/td&gt;&lt;td style="BORDER-RIGHT: black 0.5pt solid; PADDING-RIGHT: 7px; BORDER-TOP: medium none; PADDING-LEFT: 7px; BORDER-LEFT: medium none; BORDER-BOTTOM: black 0.5pt solid"&gt;&lt;p style="TEXT-ALIGN: right"&gt;1.40s&lt;/p&gt;&lt;/td&gt;&lt;td style="BORDER-RIGHT: black 0.5pt solid; PADDING-RIGHT: 7px; BORDER-TOP: medium none; PADDING-LEFT: 7px; BORDER-LEFT: medium none; BORDER-BOTTOM: black 0.5pt solid"&gt;&lt;p style="TEXT-ALIGN: right"&gt;2.28s&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="BACKGROUND: #f2dbdb"&gt;&lt;td style="BORDER-RIGHT: black 0.5pt solid; PADDING-RIGHT: 7px; BORDER-TOP: medium none; PADDING-LEFT: 7px; BORDER-LEFT: black 0.5pt solid; BORDER-BOTTOM: black 0.5pt solid"&gt;&lt;p align="left"&gt;Discarded Highest&lt;/p&gt;&lt;/td&gt;&lt;td style="BORDER-RIGHT: black 0.5pt solid; PADDING-RIGHT: 7px; BORDER-TOP: medium none; PADDING-LEFT: 7px; BORDER-LEFT: medium none; BORDER-BOTTOM: black 0.5pt solid"&gt;&lt;p style="TEXT-ALIGN: right"&gt;1.48s&lt;/p&gt;&lt;/td&gt;&lt;td style="BORDER-RIGHT: black 0.5pt solid; PADDING-RIGHT: 7px; BORDER-TOP: medium none; PADDING-LEFT: 7px; BORDER-LEFT: medium none; BORDER-BOTTOM: black 0.5pt solid"&gt;&lt;p style="TEXT-ALIGN: right"&gt;2.45s&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="BORDER-RIGHT: black 0.5pt solid; PADDING-RIGHT: 7px; BORDER-TOP: medium none; PADDING-LEFT: 7px; BORDER-LEFT: black 0.5pt solid; BORDER-BOTTOM: black 0.5pt solid"&gt;&lt;p align="left"&gt;Considered Lowest&lt;/p&gt;&lt;/td&gt;&lt;td style="BORDER-RIGHT: black 0.5pt solid; PADDING-RIGHT: 7px; BORDER-TOP: medium none; PADDING-LEFT: 7px; BORDER-LEFT: medium none; BORDER-BOTTOM: black 0.5pt solid"&gt;&lt;p style="TEXT-ALIGN: right"&gt;1.40s&lt;/p&gt;&lt;/td&gt;&lt;td style="BORDER-RIGHT: black 0.5pt solid; PADDING-RIGHT: 7px; BORDER-TOP: medium none; PADDING-LEFT: 7px; BORDER-LEFT: medium none; BORDER-BOTTOM: black 0.5pt solid"&gt;&lt;p style="TEXT-ALIGN: right"&gt;2.30s&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="BORDER-RIGHT: black 0.5pt solid; PADDING-RIGHT: 7px; BORDER-TOP: medium none; PADDING-LEFT: 7px; BORDER-LEFT: black 0.5pt solid; BORDER-BOTTOM: black 0.5pt solid"&gt;&lt;p align="left"&gt;Considered Highest&lt;/p&gt;&lt;/td&gt;&lt;td style="BORDER-RIGHT: black 0.5pt solid; PADDING-RIGHT: 7px; BORDER-TOP: medium none; PADDING-LEFT: 7px; BORDER-LEFT: medium none; BORDER-BOTTOM: black 0.5pt solid"&gt;&lt;p style="TEXT-ALIGN: right"&gt;1.43s&lt;/p&gt;&lt;/td&gt;&lt;td style="BORDER-RIGHT: black 0.5pt solid; PADDING-RIGHT: 7px; BORDER-TOP: medium none; PADDING-LEFT: 7px; BORDER-LEFT: medium none; BORDER-BOTTOM: black 0.5pt solid"&gt;&lt;p style="TEXT-ALIGN: right"&gt;2.40s&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="BACKGROUND: #eaf1dd"&gt;&lt;td style="BORDER-RIGHT: black 0.5pt solid; PADDING-RIGHT: 7px; BORDER-TOP: medium none; PADDING-LEFT: 7px; BORDER-LEFT: black 0.5pt solid; BORDER-BOTTOM: black 0.5pt solid"&gt;&lt;p align="left"&gt;Average&lt;/p&gt;&lt;/td&gt;&lt;td style="BORDER-RIGHT: black 0.5pt solid; PADDING-RIGHT: 7px; BORDER-TOP: medium none; PADDING-LEFT: 7px; BORDER-LEFT: medium none; BORDER-BOTTOM: black 0.5pt solid"&gt;&lt;p style="TEXT-ALIGN: right"&gt;1.41s&lt;/p&gt;&lt;/td&gt;&lt;td style="BORDER-RIGHT: black 0.5pt solid; PADDING-RIGHT: 7px; BORDER-TOP: medium none; PADDING-LEFT: 7px; BORDER-LEFT: medium none; BORDER-BOTTOM: black 0.5pt solid"&gt;&lt;p style="TEXT-ALIGN: right"&gt;2.34s&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760720841939228560-1502440960780518140?l=wiggythoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wiggythoughts.blogspot.com/feeds/1502440960780518140/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760720841939228560&amp;postID=1502440960780518140' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/1502440960780518140'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/1502440960780518140'/><link rel='alternate' type='text/html' href='http://wiggythoughts.blogspot.com/2007/06/spatial-esri-shape-file-reader.html' title='Spatial# ESRI Shape File Reader'/><author><name>Pedro Gomes</name><uri>http://www.blogger.com/profile/00827412539290098837</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-2760720841939228560.post-8629046609370149280</id><published>2007-06-06T01:19:00.000-07:00</published><updated>2007-06-06T01:56:51.521-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gis'/><category scheme='http://www.blogger.com/atom/ns#' term='spatial#'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>SpatialSharp (Spatial#)</title><content type='html'>After some months of inactivity I’m reactivating the SpatialSharp project. It is now hosted by GoogleCode &lt;a href="http://code.google.com/p/spatialsharp/"&gt;here&lt;/a&gt; (the berlios project is going to be deleted).&lt;br /&gt;&lt;br /&gt;Why am I doing this ? I feel I have some experience in the GIS area, and I’m not totally satisfied with the currently available C# GIS projects.&lt;br /&gt;&lt;br /&gt;For start they are all base on the JTS, witch is a very good spatial engine implementation, but has one major implementation problem to witch I disagree.&lt;br /&gt;&lt;br /&gt;JTS stores geometry objects as an array of ICoordinate objects. This is has major drawbacks in memory consumption. I’ve been working in a large GIS application, and therefore I know that memory usage can be a problem, why?&lt;br /&gt;&lt;br /&gt;Well imagine you have a set of geometries that you must process for instance, remove gaps, overlaps, spikes, etc., in this case, the number of geometries you can load and work in memory is very important.&lt;br /&gt;In majority of the “real world” GIS application, you have a 2D geometry; in these cases you can represent each coordinate by 2 doubles fields. This approach consumes 16 bytes per coordinate, JTS uses ICoordinate object wich consume 28 bytes memory (3 doubles + 4 Byte for the object reference).&lt;br /&gt;In a small 200 coordinates 2D polygon you will end up with 3.1KB memory when using only the 2D double approach and 5.4KB when using the JTS ICoordinate approach.&lt;br /&gt;Now imagine that you must load something like 100000 polygons (trust me, it can be very common), for the doubles only approach, you will end up with 302MB only for the geometries, but if you use the JTS approach the output is 534MB (66% increase).&lt;br /&gt;Now keep in mind that in the real world, polygons normally have a lot more that 200 coordinates, and you can quickly conclude that the geometry storage approach is very important.&lt;br /&gt;&lt;br /&gt;Another point witch I dislike is the license; all most all the C# spatial engines are available under the GPL license. This situation makes usage of the library more limited, as it forces projects that use it to also be available under the GPL. And that’s why Spatial# is available under the LGPL license, witch allows it to be used also in closed projects.&lt;br /&gt;&lt;br /&gt;All things combined and I’m currently reviving the Spatial# project, the 1st goal, is to use the JTS, and port it to a C# also changing the geometry storage paradigm, using arrays of doubles, instead of arrays of coordinates.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760720841939228560-8629046609370149280?l=wiggythoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wiggythoughts.blogspot.com/feeds/8629046609370149280/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760720841939228560&amp;postID=8629046609370149280' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/8629046609370149280'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/8629046609370149280'/><link rel='alternate' type='text/html' href='http://wiggythoughts.blogspot.com/2007/06/spatialsharp-spatial.html' title='SpatialSharp (Spatial#)'/><author><name>Pedro Gomes</name><uri>http://www.blogger.com/profile/00827412539290098837</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>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2760720841939228560.post-7450289203317232078</id><published>2007-06-05T01:39:00.000-07:00</published><updated>2007-06-05T11:35:46.156-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>C# Helper Class Supporting Asynchronous Event Raise</title><content type='html'>&lt;p&gt;After reading &lt;a href="http://www.codeproject.com/csharp/thehelpertrinity.asp"&gt;this article&lt;/a&gt; in the Code Project site, I’ve decided to create my own event helper class. It is based on the one from the article, but I’ve introduced a few modifications.&lt;br /&gt;&lt;br /&gt;First, I didn’t like the use of delegates to accomplish the asynchronous raise of the event. I changed it to use the thread pool.&lt;br /&gt;&lt;br /&gt;I’ve also simplified and refactored the code a little bit. Adding an event to your class and a method to raise it is very simple now, and just a few lines&lt;/p&gt;&lt;br /&gt;&lt;div class="csharpcode"&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;event&lt;/span&gt; PropertyChangedEventHandler PropertyChanged;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;virtual&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; OnPropertyChanged(PropertyChangedEventArgs e) {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;  EventHelper.Raise(PropertyChanged, &lt;span class="kwrd"&gt;this&lt;/span&gt;, e);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;If you want you can download the code from here: &lt;a href="http://blogs.focuspoint-solutions.com/wiggythoughts/files/EventHelper.zip"&gt;EventHelper.zip&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760720841939228560-7450289203317232078?l=wiggythoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wiggythoughts.blogspot.com/feeds/7450289203317232078/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760720841939228560&amp;postID=7450289203317232078' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/7450289203317232078'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/7450289203317232078'/><link rel='alternate' type='text/html' href='http://wiggythoughts.blogspot.com/2007/06/c-helper-class-supporting-asynchronous.html' title='C# Helper Class Supporting Asynchronous Event Raise'/><author><name>Pedro Gomes</name><uri>http://www.blogger.com/profile/00827412539290098837</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-2760720841939228560.post-3170950130278083177</id><published>2007-05-26T01:24:00.000-07:00</published><updated>2007-05-26T01:46:32.054-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ssh'/><category scheme='http://www.blogger.com/atom/ns#' term='copssh'/><title type='text'>Connect to your home PC through a SSH Tunnel</title><content type='html'>&lt;p&gt;I’ve been willing to connect to my home PC through a SSH tunnel for some time now. Yesterday I finally set it all up.Here is a step by step guide, for the ones that want to do so. It really is easy and straightforward.&lt;/p&gt;&lt;p&gt;1. Get a working dynamic dns for your home pc (you may use &lt;a href="http://www.dyndns.com/"&gt;DynDns.com&lt;/a&gt;).&lt;/p&gt;&lt;p&gt;2. &lt;a href="http://www.itefix.no/phpws/index.php?module=pagemaster&amp;PAGE_user_op=view_page&amp;amp;PAGE_id=12"&gt;Download Open SSH&lt;/a&gt;. (note that CopSSH is a windows installer that sets up cygwin and OpenSSH server for windows)&lt;/p&gt;&lt;p&gt;3. Install CopSSH on your home PC. After that SSH Service is running but no user will be allowed to open an SSH session. You will need to activate one or more users. User activation can be done using the wizard provided by CopSSH (accessible on the start menu).&lt;/p&gt;&lt;p&gt;4. Restart SSH service (CopSSHD).&lt;/p&gt;&lt;p&gt;5. You may need to configure your PC and or Router firewall and NAT to allow incoming connections on the SSH port of your home PC (default is 22).&lt;/p&gt;&lt;p&gt;6. On the remote computer download PuTTY and PuTTYGen from &lt;a href="http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;7. Run PuTTY, enter you windows user and password. You've now created a SSH session between your remote PC and your Home PC.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;You may want to secure thing a little bit&lt;/strong&gt;. &lt;/p&gt;&lt;p&gt;1. open the file c:\Program Files\copSSH\etc\sshd_config (the Open SSH service configuration)&lt;/p&gt;&lt;p&gt;2. Add the following settings:&lt;br /&gt;AllowUsers [Put user names here]&lt;br /&gt;DenyUsers Administrator Guest Root &lt;p&gt;3. Uncomment and change the following settings:&lt;br /&gt;PasswordAuthentication no&lt;br /&gt;PermitEmptyPasswords no&lt;/p&gt;&lt;p&gt;4. Restart SSH service (CopSSHD)&lt;br /&gt;&lt;/p&gt;&lt;p&gt;If you try to connect now, you will notice that you can’t. This is because you just disabled the password authentication. Now a user must have a private/public key pair to establish an SSH session.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Generate SSH User Key&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;1. Run PuTTYGen and generate a new key. Save the private part (you will need it to open an SSH session)&lt;/p&gt;&lt;p&gt;2. Copy the public part into the file authorized_keys that exists in c:\Program Files\copSSH\home\USER NAME\.ssh of your home PC. You can remove the file content and add the text copied from PuTTYGen.&lt;/p&gt;&lt;p&gt;Now try to establish a new SSH session, setting the private key in PuTTY (go to the Auth tree node, under the SSH node).&lt;br /&gt;It should work. You have now a secured you’re SSH server in your home PC.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Tunnel Remote Desktop Connection&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;To finish you just need to create a SSH tunnel to connect to the Home PC remote desktop service.&lt;/p&gt;&lt;p&gt;1. Run PuTTY and under the SSH node tree click Tunnels.&lt;/p&gt;&lt;p&gt;2. Create a new SSH tunnel, add a source port (something like 3390) and for destination set the Home PC name and RDP port (MyPC:3389).&lt;/p&gt;&lt;p&gt;3. Now just establish the SSH session, open remote desktop and connect to localhost:3390&lt;/p&gt;&lt;p&gt;It’s done, your connected to your home pc using a SSH tunnel.&lt;/p&gt;&lt;p&gt;In some corporate environments you may be behind a firewall and need to use a HTTP proxy to connect to the internet. In these cases you should change you SSH Server port to 80 or 443 (default HTTP ports that normally are allowed through the firewall/proxy).  In PuTTY enter your proxy server connection information, and it should work.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760720841939228560-3170950130278083177?l=wiggythoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wiggythoughts.blogspot.com/feeds/3170950130278083177/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760720841939228560&amp;postID=3170950130278083177' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/3170950130278083177'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/3170950130278083177'/><link rel='alternate' type='text/html' href='http://wiggythoughts.blogspot.com/2007/05/connect-to-your-home-pc-through-ssh.html' title='Connect to your home PC through a SSH Tunnel'/><author><name>Pedro Gomes</name><uri>http://www.blogger.com/profile/00827412539290098837</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-2760720841939228560.post-6490553309617604994</id><published>2007-05-23T00:39:00.000-07:00</published><updated>2007-05-23T00:50:39.904-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='svg'/><category scheme='http://www.blogger.com/atom/ns#' term='silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='gis'/><category scheme='http://www.blogger.com/atom/ns#' term='xaml'/><category scheme='http://www.blogger.com/atom/ns#' term='microsoft'/><title type='text'>SVG GIS applications destined to disappearance</title><content type='html'>I’ve been developing, extending and maintaining one SVG based GIS application for the last 4 years. I’ve learned a lot in the last year’s and revived some of my math knowledge’s (geometry).&lt;br /&gt;&lt;br /&gt;Well... this post is about SVG and GIS and not me… let me just say, that 4 years ago SVG was a good promising technology supported by a W3C standard, and some big companies behind it (like Adobe and Corel).&lt;br /&gt;&lt;br /&gt;Adobe and Corel were providing a free SVG View plugin for both explorer and mozilla, and that was the only thing necessary to start viewing SVG enabled web sites.&lt;br /&gt;&lt;br /&gt;After analyzing some competitors in the mapping industry we had no doubt to go with the W3C supported standard and we used SVG, back then it was clearly the best option for anyone starting a web browser GIS application.&lt;br /&gt;&lt;br /&gt;In the last year's a few events occurred that are important and were major step back in pushing SVG into the web browser:&lt;br /&gt;&lt;br /&gt;1. The continuous delay for the new speciation version (1.2 is still not final…), Adobe witch in time had a version 6 of the SVG Viewer plugin available for download, pulled it out, binding it’s release to the final release of the 1.2 SVG specification.&lt;br /&gt;&lt;br /&gt;2. During the year 2005 Adobe acquired Macromedia, and therefore became the Macromedia Flash owner. Flash can somehow be seen as an SVG competitor although not so used in GIS applications.&lt;br /&gt;&lt;br /&gt;3. Internet Explorer 7 was released and not SVG support was included despite the rumors saying just the opposite.&lt;br /&gt;&lt;br /&gt;4. Since the Macromedia acquisition, it was clear that SVG viewer wasn’t a flag product for Adobe, and also that it was nonsense in its goal towards extending Flash usage. So it was not very surprising to know that the Adobe SVG viewer was being discontinued while acknowledging it will never be supported in Windows Vista.&lt;br /&gt;&lt;a href="http://www.adobe.com/svg/eol.html"&gt;So after January 1st of 2008 there’s no more SVG viewer&lt;/a&gt;, you can consult the Adobe End of Life FAQ &lt;a href="http://www.adobe.com/svg/pdfs/ASV_EOL_FAQ.pdf"&gt;here&lt;/a&gt;.&lt;br /&gt;After issuing the EOL statement and under pressure by the SVG community, Adobe have agreed to extend the viewer distribution indefinitely, but sit no new version will be developed.&lt;br /&gt;&lt;br /&gt;Here we are today, and we’ve no major company behind SVG (Corel also stopped their SVG viewer development). And there’s a new player in the market, Microsoft will support XAML in the browser.&lt;br /&gt;Converting from SVG to XAML is rather simple, and somehow the pass as proven, so chances are high that Microsoft will succeed, therefore probably SilverLight will be a winner.&lt;br /&gt;&lt;br /&gt;Gradually GIS applications based on SVG will start there way into SilverLight or Flash, probably Esri and Intergraph will start supporting one of those technologies, and a few hears from now probably the SVG usage in the browser will fade. More certainly SVG GIS applications are destined to disappearance.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I believe SVG may survive as a technology, later there is a push to take SVG to the mobile (cell phone/PDA market), and some Cell Phone companies have added SVG support in their devices.&lt;br /&gt;&lt;br /&gt;For me, we’ve scheduled the change of our mapping SVG GIS application to SilverLigth by the last quarter of this year.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760720841939228560-6490553309617604994?l=wiggythoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wiggythoughts.blogspot.com/feeds/6490553309617604994/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760720841939228560&amp;postID=6490553309617604994' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/6490553309617604994'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/6490553309617604994'/><link rel='alternate' type='text/html' href='http://wiggythoughts.blogspot.com/2007/05/svg-gis-applications-destined-to.html' title='SVG GIS applications destined to disappearance'/><author><name>Pedro Gomes</name><uri>http://www.blogger.com/profile/00827412539290098837</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-2760720841939228560.post-8941634209320460210</id><published>2007-05-22T00:35:00.000-07:00</published><updated>2007-05-22T12:41:13.463-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='or mapper'/><category scheme='http://www.blogger.com/atom/ns#' term='nullable types'/><title type='text'>Nullable Conversion</title><content type='html'>Handle conversion from values to Nullable ones can be sometimes confuse, specially if you need to do it in runtime without previous knowledge of the Nullable type generic argument.&lt;br /&gt;&lt;br /&gt;The following code just converts a given value to the underline value of the given Nullable type.&lt;br /&gt;&lt;br /&gt;I’m using it in may ORM tool to handle null values and it works ok.&lt;br /&gt;&lt;div class="csharpcode"&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;virtual&lt;/span&gt; &lt;span class="kwrd"&gt;object&lt;/span&gt; ConvertToNullable(Type nullableType, &lt;span class="kwrd"&gt;object&lt;/span&gt; &lt;span class="kwrd"&gt;value&lt;/span&gt;) {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;  &lt;span class="rem"&gt;// handle nullable values&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;  &lt;span class="kwrd"&gt;bool&lt;/span&gt; isGeneric = t.IsGenericType;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;  &lt;span class="kwrd"&gt;bool&lt;/span&gt; isNullable = isGeneric &amp;amp;&amp;amp; (t.GetGenericTypeDefinition() == &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(Nullable&amp;lt;&amp;gt;));&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;  &lt;span class="kwrd"&gt;if&lt;/span&gt; (isNullable) {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;    &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;value&lt;/span&gt; == &lt;span class="kwrd"&gt;null&lt;/span&gt;) {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;      &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;value&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;    }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;   &lt;span class="kwrd"&gt;return&lt;/span&gt; Convert.ChangeType(&lt;span class="kwrd"&gt;value&lt;/span&gt;, t.GetGenericArguments()[0]);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;  }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;}&lt;/pre&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/2760720841939228560-8941634209320460210?l=wiggythoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wiggythoughts.blogspot.com/feeds/8941634209320460210/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760720841939228560&amp;postID=8941634209320460210' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/8941634209320460210'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/8941634209320460210'/><link rel='alternate' type='text/html' href='http://wiggythoughts.blogspot.com/2007/05/nullable-conversion-handle-conversion.html' title='Nullable Conversion'/><author><name>Pedro Gomes</name><uri>http://www.blogger.com/profile/00827412539290098837</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-2760720841939228560.post-7440234258779336571</id><published>2007-05-19T00:07:00.001-07:00</published><updated>2007-05-22T13:00:59.341-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='neXus.BLOGS'/><title type='text'>This one is moving...</title><content type='html'>From today, this blog is now available also in the following url &lt;a href="http://blogs.focuspoint-solutions.com/wiggythoughts/"&gt;http://blogs.focuspoint-solutions.com/wiggythoughts/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It will still be available using the normal blogger url, but this is a temporary situation, as we're finishing our own blog software neXus.BLOGS.&lt;br /&gt;&lt;br /&gt;neXus.BLOGS is a C# blog engine, with the ability to store all it's stuff in plain XML files, therefore not requiring database usage (it can also use a database engine if available).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760720841939228560-7440234258779336571?l=wiggythoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wiggythoughts.blogspot.com/feeds/7440234258779336571/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760720841939228560&amp;postID=7440234258779336571' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/7440234258779336571'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/7440234258779336571'/><link rel='alternate' type='text/html' href='http://wiggythoughts.blogspot.com/2007/05/this-one-is-moving.html' title='This one is moving...'/><author><name>Pedro Gomes</name><uri>http://www.blogger.com/profile/00827412539290098837</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-2760720841939228560.post-2108514986070585430</id><published>2007-05-18T13:16:00.000-07:00</published><updated>2007-06-05T01:46:19.355-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='generics'/><category scheme='http://www.blogger.com/atom/ns#' term='.net 2.0'/><title type='text'>From IList to IList&lt;T&gt;</title><content type='html'>I'm working on a .Net application aged a few years now. As we integrate&lt;br /&gt;new functionalities and moved to .Net Version 2.0 and Generics, we've&lt;br /&gt;face problems while combining methods or return IList and IList&amp;lt;t&amp;gt; interfaces.&lt;br /&gt;&lt;br /&gt;IList&amp;lt;t&amp;gt; doesn't implement the IList interface; Witch makes sense because it is a type safe version of the IList interface.&lt;br /&gt;&lt;br /&gt;At least for some time we will need to live with both interfaces and use them simultaneously. I know we could just create a new List&amp;lt;t&amp;gt; and add the IList items to it, but that is not and option for performance reasons.&lt;br /&gt;To solve this problem, I came up with a ListAdpater that takes an IList instance and implements the IList&amp;lt;t&amp;gt; interface. The only restriction while using this adapter is that every item in the source IList must be castable to T.&lt;br /&gt;&lt;br /&gt;You can get it here &lt;a href="http://blogs.focuspoint-solutions.com/wiggythoughts/files/ListAdapter.cs.txt"&gt;ListAdapter.cs&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760720841939228560-2108514986070585430?l=wiggythoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wiggythoughts.blogspot.com/feeds/2108514986070585430/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760720841939228560&amp;postID=2108514986070585430' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/2108514986070585430'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/2108514986070585430'/><link rel='alternate' type='text/html' href='http://wiggythoughts.blogspot.com/2007/05/from-ilist-to-ilist.html' title='From IList to IList&amp;lt;T&amp;gt;'/><author><name>Pedro Gomes</name><uri>http://www.blogger.com/profile/00827412539290098837</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-2760720841939228560.post-3498439048249290216</id><published>2007-05-07T07:17:00.000-07:00</published><updated>2007-05-07T11:05:46.697-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='oledb'/><category scheme='http://www.blogger.com/atom/ns#' term='or mapper'/><category scheme='http://www.blogger.com/atom/ns#' term='microsoft access'/><category scheme='http://www.blogger.com/atom/ns#' term='odbc'/><category scheme='http://www.blogger.com/atom/ns#' term='data access'/><title type='text'>Parameterized Sub Query in Access</title><content type='html'>After googling the internet I found that the ODBC driver behaves as I expect and parameters are binded from left to right, regarding the query nested level.&lt;br /&gt;&lt;br /&gt;For now, I’ve opted to make a quick change and start using ODBC in favor of OLEDB, in my OR Mapper.&lt;br /&gt;&lt;br /&gt;I will be reading performance comparisons of accessing Microsoft Access using ODBC and OLEDB.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760720841939228560-3498439048249290216?l=wiggythoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wiggythoughts.blogspot.com/feeds/3498439048249290216/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760720841939228560&amp;postID=3498439048249290216' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/3498439048249290216'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/3498439048249290216'/><link rel='alternate' type='text/html' href='http://wiggythoughts.blogspot.com/2007/05/parameterized-sub-query-in-access.html' title='Parameterized Sub Query in Access'/><author><name>Pedro Gomes</name><uri>http://www.blogger.com/profile/00827412539290098837</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-2760720841939228560.post-4650191986615838638</id><published>2007-05-07T01:16:00.000-07:00</published><updated>2007-05-07T11:05:58.173-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='oledb'/><category scheme='http://www.blogger.com/atom/ns#' term='or mapper'/><category scheme='http://www.blogger.com/atom/ns#' term='microsoft access'/><category scheme='http://www.blogger.com/atom/ns#' term='data access'/><title type='text'>Sub Query and Access Parameters</title><content type='html'>&lt;p&gt;I’ve been trough hell trying to figure out the problem while running a query like this against an access database (using ADO.NET 2 and OLEDB).&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;INSERT INT T1(F1, F2, F3, F4)&lt;br /&gt;SELECT FA1, FA2, ?, ?&lt;br /&gt;FROM T2&lt;br /&gt;WHERE Id IN (SELECT Id FROM T3 WHERE Id = ?)&lt;br /&gt;&lt;br /&gt;The query was running ok with no errors, but now rows were inserted. I’ve spent a lot of time with this one. First I thought it was from the operations order as this insert is in a nested operation, I thought maybe the records we’re deleted before the insert.&lt;br /&gt;Than I thought it was related to transactions, deactivated them and got the same behavior. I even thought it was related to the statement length.&lt;br /&gt;&lt;br /&gt;A few hours later I found that the problem is with the parameters order. My OR Mapping tool just binds parameters from left to right, making the parameter for the nested query where clause, the 3rd in the list. And this (I know now) is wrong.&lt;br /&gt;&lt;br /&gt;It seams that Jet OLEDB binds parameters in a funny way, and some how nested query parameters come first (why don’t they support named parameters????). Why? Well it is related to the execution plan, because there is a sub query, it gets executed first, so the 1st parameter is pull out of the list.&lt;br /&gt;&lt;br /&gt;I’m in serious problems, as queries are generated automatically, I need to figure a way to change my OR Mapping tool (and only for access witch doesn’t support named parameters) so it will add parameters to the list in the correct order.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760720841939228560-4650191986615838638?l=wiggythoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wiggythoughts.blogspot.com/feeds/4650191986615838638/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760720841939228560&amp;postID=4650191986615838638' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/4650191986615838638'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/4650191986615838638'/><link rel='alternate' type='text/html' href='http://wiggythoughts.blogspot.com/2007/05/sub-query-and-access-parameters.html' title='Sub Query and Access Parameters'/><author><name>Pedro Gomes</name><uri>http://www.blogger.com/profile/00827412539290098837</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-2760720841939228560.post-2349854264059761579</id><published>2007-05-02T07:34:00.000-07:00</published><updated>2007-05-07T11:02:02.269-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Oracle SQL Developer</title><content type='html'>Just run into Oracle SQL Developer, a free tool for database development (it supports Oracle, mySQL, SQL Server and access).&lt;br /&gt;&lt;br /&gt;I’m using it for oracle and loving it.&lt;br /&gt;It’s fast, and simple witch is not very common for oracle tools. Also its built in java you will be able to use it in Windows, Linux, MacOS and other platforms supported by Java.&lt;br /&gt;&lt;br /&gt;You can get it from &lt;a href="http://www.oracle.com/technology/software/products/sql/index.html"&gt;here&lt;/a&gt;, give it a try, you won’t have to install a thing, just unzip the package and run it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760720841939228560-2349854264059761579?l=wiggythoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wiggythoughts.blogspot.com/feeds/2349854264059761579/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760720841939228560&amp;postID=2349854264059761579' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/2349854264059761579'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/2349854264059761579'/><link rel='alternate' type='text/html' href='http://wiggythoughts.blogspot.com/2007/05/oracle-sql-developer.html' title='Oracle SQL Developer'/><author><name>Pedro Gomes</name><uri>http://www.blogger.com/profile/00827412539290098837</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-2760720841939228560.post-701578752003304802</id><published>2007-04-30T00:14:00.000-07:00</published><updated>2007-05-07T11:01:48.623-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><title type='text'>Aiming a Fast System Restore</title><content type='html'>After almost 2 years, I’m reinstalling my system (still using Windows XP, waiting to buy a new desktop before jumping to Vista).&lt;br /&gt;&lt;br /&gt;Installing windows XP in my board is not simple as always there 2 devices that must be installed from a much hidden place in the board CD.&lt;br /&gt;&lt;br /&gt;Googling the net, found a really good tool, &lt;a href="http://www.runtime.org/dixml.htm"&gt;DriveImage Xml&lt;/a&gt;. It allows you to backup your disk and of course restore it.&lt;br /&gt;&lt;br /&gt;So I’ve created 3 partitions on my disk, like this:&lt;br /&gt;&lt;br /&gt;Partition 1&lt;br /&gt;OS (25 Gb).&lt;br /&gt;Stores operation System files and applications that used by me.&lt;br /&gt;&lt;br /&gt;Partition 2&lt;br /&gt;Swap &amp;amp; Temp (10 Gb)&lt;br /&gt;Stores windows swap file and temporary files (this one was created with the goal of reducing the fragmentation on the OS disk)&lt;br /&gt;&lt;br /&gt;Partition 3:&lt;br /&gt;Data (135 Gb)&lt;br /&gt;Stores user profiles and additional applications that wouldn’t need to be restored.&lt;br /&gt;Also serves as storage used when making my own home movies.&lt;br /&gt;&lt;br /&gt;Partition 4:&lt;br /&gt;Work (80 Gb)&lt;br /&gt;Stores virtual machines (I do my work in a virtual machine with windows xp).&lt;br /&gt;&lt;br /&gt;After everything done, I’ve created a Bart PE windows live CD and used DriveImage Xml to backup OS disk. Tried restore and worked like a charm.&lt;br /&gt;Hopefully the next time I need to restore my system I would be fast and easy.&lt;br /&gt;&lt;br /&gt;Links&lt;br /&gt;&lt;a href="http://www.runtime.org/dixml.htm"&gt;DriveImage XML home&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.habibbijan.com/?page_id=7"&gt;Windows “Ghost” Tutorial&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760720841939228560-701578752003304802?l=wiggythoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wiggythoughts.blogspot.com/feeds/701578752003304802/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760720841939228560&amp;postID=701578752003304802' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/701578752003304802'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/701578752003304802'/><link rel='alternate' type='text/html' href='http://wiggythoughts.blogspot.com/2007/04/aiming-fast-system-restore.html' title='Aiming a Fast System Restore'/><author><name>Pedro Gomes</name><uri>http://www.blogger.com/profile/00827412539290098837</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-2760720841939228560.post-6600063790318488021</id><published>2007-04-25T02:08:00.000-07:00</published><updated>2007-05-07T07:22:00.324-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='svg'/><category scheme='http://www.blogger.com/atom/ns#' term='silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='xaml'/><category scheme='http://www.blogger.com/atom/ns#' term='microsoft'/><title type='text'>Microsoft Silverlight</title><content type='html'>WPF/E is now Microsoft Silverlight... well at least this is a more commercial name for the tool.&lt;br /&gt;Why am I interested in Silverlight ? Well I’m using SVG and Adobe SVG Viewer for web mapping. A while ago Adobe has announced it will discontinue the support for their SVG Viewer, since then I pointed XAML and by consequence WPF/E (now Silverlight) as the next step.&lt;br /&gt;For now here are a few useful links for Silverlight:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/silverlight/"&gt;Official Site&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://on10.net/Blogs/tina/out-with-wpfe-in-with-microsoft-silverlight-this-has-just-been-announced"&gt;Tina Wood’s blog on MSDN Channel 10 interviewing Sean Alexander&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.silverlight.net/"&gt;Silverlight Community Site&lt;/a&gt; (after April 30)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://msdn2.microsoft.com/en-us/asp.net/bb187358.aspx"&gt;Silverlight Dev Center on MSDN&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760720841939228560-6600063790318488021?l=wiggythoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wiggythoughts.blogspot.com/feeds/6600063790318488021/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760720841939228560&amp;postID=6600063790318488021' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/6600063790318488021'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/6600063790318488021'/><link rel='alternate' type='text/html' href='http://wiggythoughts.blogspot.com/2007/04/wpfe-is-now-microsoft-silverlight.html' title='Microsoft Silverlight'/><author><name>Pedro Gomes</name><uri>http://www.blogger.com/profile/00827412539290098837</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-2760720841939228560.post-4860732547425619883</id><published>2007-04-25T01:18:00.000-07:00</published><updated>2007-05-07T11:01:30.005-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ribbon'/><category scheme='http://www.blogger.com/atom/ns#' term='windows forms'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>C# Ribbon Control</title><content type='html'>Recently I came across &lt;a href="http://www.codeproject.com/useritems/Ribbon_Panel.asp"&gt;this page&lt;/a&gt;. It is a rather impressive Ribbon control created in C#.&lt;br /&gt;I loved it the minute I saw it… then (as for relations)…. Love was transformed in to disappointment. While the result is impressive the code was very clumsy, I've posted a comment in the page saying just that.&lt;br /&gt;&lt;br /&gt;My complains :&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Object model is very confuse on unorganized.&lt;/li&gt;&lt;li&gt;The code is also very confuse.&lt;/li&gt;&lt;li&gt;But mainly it misses several disposes on Brushes, Pens, Paths and other objects.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Although disappointed I just felt the need to give it a try (as we all should do in relations) and started refactoring the code.&lt;br /&gt;At this moment I’m using my refactored version in project.&lt;br /&gt;I have no spare time, but as soon as possible I will publish an article (probably in CodeProject) with my version of the control.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760720841939228560-4860732547425619883?l=wiggythoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wiggythoughts.blogspot.com/feeds/4860732547425619883/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760720841939228560&amp;postID=4860732547425619883' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/4860732547425619883'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/4860732547425619883'/><link rel='alternate' type='text/html' href='http://wiggythoughts.blogspot.com/2007/04/recently-i-came-across-this-page.html' title='C# Ribbon Control'/><author><name>Pedro Gomes</name><uri>http://www.blogger.com/profile/00827412539290098837</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-2760720841939228560.post-7580108491751528344</id><published>2007-04-25T01:02:00.000-07:00</published><updated>2007-04-25T01:08:30.065-07:00</updated><title type='text'>One more blog!!! Why ???</title><content type='html'>As for Today I’m starting my blog. Yes my own blog… Does it makes sense… probably no… but I think I also have same to say…or maybe not…&lt;br /&gt;This is a technical blog form a tech guy… so… maybe It will be very boring for the majority of the internet reader… and just probably it will help a small minority that probably may face the same problems as me.&lt;br /&gt;I’m a senior .NET developer, currently working as freelance in a major GIS project for the Land Parcels Cadastre in Protugal (witch by the way is a very nice country).&lt;br /&gt;I’m also developing and maintaining some other projects.&lt;br /&gt;&lt;br /&gt;Well for the first post that no one is going to read…. I’m done.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2760720841939228560-7580108491751528344?l=wiggythoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wiggythoughts.blogspot.com/feeds/7580108491751528344/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2760720841939228560&amp;postID=7580108491751528344' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/7580108491751528344'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2760720841939228560/posts/default/7580108491751528344'/><link rel='alternate' type='text/html' href='http://wiggythoughts.blogspot.com/2007/04/one-more-blog-why.html' title='One more blog!!! Why ???'/><author><name>Pedro Gomes</name><uri>http://www.blogger.com/profile/00827412539290098837</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></feed>
