<?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-5492774</id><updated>2012-01-22T04:18:30.859-05:00</updated><category term='relevance'/><category term='sourcegear'/><category term='pols'/><category term='continuous integration'/><category term='typelibbuilder'/><category term='memory google'/><category term='web'/><category term='Outlook'/><category term='bugs'/><category term='development'/><category term='free'/><category term='dotnetnuke'/><category term='crystal'/><category term='alanstevens'/><category term='foxtabs'/><category term='hosting'/><category term='jiffle'/><category term='projects'/><category term='agility'/><category term='VFP'/><category term='camtasia'/><category term='software development'/><category term='sqlserver'/><category term='kenlevy'/><category term='carbonite'/><category term='foxshow'/><category term='Random thoughts'/><category term='tips'/><category term='vfp foxpro'/><category term='devcon'/><category term='sun'/><category term='mind-mapping'/><category term='imdb'/><category term='activation'/><category term='gdiplus'/><category term='craigboyd'/><category term='foxpro swfox'/><category term='facebook'/><category term='sample code'/><category term='LINQ'/><category term='foxfoward'/><category term='business'/><category term='scalability'/><category term='southwestfox'/><category term='refactoring'/><category term='fingerprintreader'/><category term='michael jackson'/><category term='mistakes'/><category term='foxpro development'/><category term='XML'/><category term='DotNet'/><category term='Sedna'/><category term='ideas'/><category term='vs 2008'/><category term='schemas'/><category term='tucow'/><category term='VFP SP2'/><category term='visual studio'/><category term='products'/><category term='swfox2007'/><category term='webdevelopment'/><category term='XMLSerialization'/><category term='FoxPro'/><category term='database design'/><category term='software'/><category term='xocommunications'/><category term='vfpstudio'/><category term='gdocs'/><category term='mindmanager'/><category term='dropbox'/><category term='marketing'/><category term='asp.net'/><category term='eric sink'/><category term='source gear'/><category term='sourcecontrol'/><category term='testing'/><category term='T-SQL'/><category term='softwaredevelopment'/><category term='codepages'/><category term='international development'/><category term='betas'/><category term='craig boyd'/><category term='codecast'/><category term='conferences'/><category term='vista'/><category term='google'/><category term='swfox'/><category term='pirillo'/><category term='wiki'/><category term='dll'/><category term='javascript'/><category term='charting'/><category term='apple'/><category term='ken levy'/><category term='evil mastermind'/><category term='tag'/><category term='my'/><category term='graphs'/><category term='flock'/><category term='conference'/><category term='application'/><category term='help'/><category term='browsers'/><category term='advantagedatabase server'/><category term='mvp'/><category term='translations'/><category term='VFPX'/><category term='developers'/><category term='screencasts'/><category term='assign'/><category term='planning'/><category term='moller'/><category term='windows'/><category term='guitars'/><category term='source control'/><category term='access'/><category term='podcasts'/><category term='codeanalyst'/><category term='productivity'/><category term='heroes'/><category term='jing'/><category term='imagecapture'/><category term='SP2'/><category term='naming'/><category term='usability'/><category term='scripts'/><category term='hardware'/><category term='Handy Language Features:'/><category term='linux'/><category term='ASPxGridView'/><category term='platforms'/><category term='southwest fox'/><category term='viral'/><category term='charts'/><category term='operating systems'/><category term='personal'/><category term='speaking'/><category term='vfp9'/><category term='politics'/><category term='windows7 beta'/><category term='COM'/><category term='concentric'/><category term='codeplex'/><category term='Xsd2code'/><category term='television'/><category term='DLLHELL'/><category term='vfpfoxpro vfpx'/><category term='themedcontrols'/><category term='foxcharts'/><category term='sql'/><category term='interfacedesign'/><category term='foxrockx'/><category term='search'/><category term='microsoft'/><category term='EPS'/><category term='visualfoxpro'/><category term='tiobe'/><category term='ithoughts'/><category term='prague'/><category term='conventions'/><category term='management'/><category term='DOS'/><title type='text'>Andrew MacNeill - AKSEL Solutions</title><subtitle type='html'>Solutions for Today; Ready for Tomorrow.

Andrew MacNeill's blog about Visual FoxPro, databases, development, and technologies that sprout around the FoxPro and related communities.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default?start-index=101&amp;max-results=100'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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>1451</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5492774.post-8647701814119967833</id><published>2011-12-10T04:22:00.001-05:00</published><updated>2011-12-10T04:57:40.614-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FoxPro'/><category scheme='http://www.blogger.com/atom/ns#' term='VFP'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='translations'/><title type='text'>But should you use Google Translate for Your Software?</title><content type='html'>Doug &lt;a href="http://doughennig.blogspot.com/2011/12/using-google-translate-from-vfp.html"&gt;wrote&lt;/a&gt; recently on using Google Translate to localize applications, giving step by step instructions on how to get translations automated from their online API.&lt;br /&gt;&lt;br /&gt;Rick Strahl had also&amp;nbsp;&lt;a href="http://www.west-wind.com/weblog/posts/2011/Aug/06/Translating-with-Google-Translate-without-API-and-C-Code"&gt;post&lt;/a&gt;ed about this earlier in November with ways to do this without needing the API.&lt;br /&gt;&lt;br /&gt;So we know it's possible - the question is : should you use it?&lt;br /&gt;&lt;br /&gt;Automated translations have come a long way from years ago when you had to use either specialized CDs or &lt;a href="http://babelfish.yahoo.com/"&gt;babel fish&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Still, the big challenge with localizing internally is ensuring your translations are accurate for its audience. Like Doug, I live in Canada where most government software must support our two official languages: English and French. Sounds easy, right? After all, both languages have been around for centuries - translation must be pretty straight forward. Not so much.&lt;br /&gt;&lt;br /&gt;Many moons ago, I worked for a company was delivering the same basic software to two separate government departments. The software needed translations for several terms, one of which was the word "Browse". We asked around, went to the official translation group within each department, and received.... four different translations, all of which could be used, but only one of which would make a different person happy.&lt;br /&gt;&lt;br /&gt;Also, consider how the terms are used. On a standard menu, we have File, Edit, Cut, Copy and Paste. A few interface guideline books I've read suggest that menu items should be treated as verbs but in the imperative sense, as though you are telling the computer to do something. Hey computer, "Save"! "Copy!", "Quit!" It makes sense.&lt;br /&gt;&lt;br /&gt;However, when translated to French, if I used the imperative, you might see terms like Sauvegardez! Copier! Quittez! (a sample of using imperatives can be seen &lt;a href="http://french.about.com/library/weekly/aa123099t.htm"&gt;here&lt;/a&gt;). &amp;nbsp;Using Babel Fish, Cut becomes Coupe ( as in "he cut the tape"). Google suggests Couper. But for the word Save, Google offers Enregistrer, whereas French software typically uses Sauvegarder.&lt;br /&gt;&lt;br /&gt;But, according to translators, in French, you rely on the standard verb. So the terms should appear as "Sauvegarder", "Copier", "Quitter". I'm not sure what the practice is in Germany or China or Mexico, but the problem likely recurs there.&lt;br /&gt;&lt;br /&gt;Heck, in 1995, when I was in Paris, while Canadian french software used the word "Aide" for Help, French applications there were simply using the ? to indicate the Help menu.&lt;br /&gt;&lt;br /&gt;This hasn't changed over time. I'm currently involved in a project where once again, one term comes up with at least 2 or three different possible valid translations.&lt;br /&gt;&lt;br /&gt;What's the right answer? If you rely on Google Translate too much, you'll find you run the risk of being Ford offering the "Pinto" in South America, or the &lt;a href="http://www.billcasselman.com/unpublished_works/bad_car_names.htm"&gt;LaCrosse&lt;/a&gt; in Quebec. Your best bet is to find someone who speaks the language natively to ensure your translations make sense.&lt;br /&gt;&lt;br /&gt;Of course, then you might find two people to help to do the translation and STILL end up with 5 possible translations for a single simple word.&lt;br /&gt;&lt;br /&gt;It's great that a company like Google (and Yahoo) offer translation sites we can all use. Thanks to the posts from&amp;nbsp;&lt;a href="http://doughennig.blogspot.com/2011/12/using-google-translate-from-vfp.html"&gt;Doug&lt;/a&gt; and &lt;a href="http://www.west-wind.com/weblog/posts/2011/Aug/06/Translating-with-Google-Translate-without-API-and-C-Code"&gt;Rick&lt;/a&gt;, FoxPro developers can easily take advantage of it through code. The Google translation API looks like it's making headway especially for menu style terms. But be sure to run it by some native speakers before releasing - it may save some embarrassment later on.&lt;br /&gt;&lt;br /&gt;I wonder if it would have been easier on that guy in the&amp;nbsp;&lt;a href="http://www.youtube.com/watch?v=VU6hmgTY76M"&gt;Geico&lt;/a&gt;&amp;nbsp;ad if he had simply looked up the guinea pig term for "row".&lt;br /&gt;&lt;br /&gt;&lt;a href="http://technorati.com/tag/FoxPro" rel="tag"&gt;FoxPro&lt;/a&gt; &lt;a href="http://technorati.com/tag/VFP" rel="tag"&gt;VFP&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-8647701814119967833?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/8647701814119967833/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=8647701814119967833' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/8647701814119967833'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/8647701814119967833'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2011/12/but-should-you-use-google-translate-for.html' title='But should you use Google Translate for Your Software?'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-7039754081497482108</id><published>2011-12-05T04:02:00.001-05:00</published><updated>2011-12-05T04:03:02.265-05:00</updated><title type='text'>SitePoint eBook Sale for Developers</title><content type='html'>Over on the MadFox list, Jim noted a great sale over at SitePoint:&lt;br /&gt;&lt;br /&gt;"&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px;"&gt;SitePoint has an interesting 24 day, digital download Christmas Sale at:&amp;nbsp;&lt;/span&gt;&lt;a href="http://www.sitepoint.com/sale/"&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span class="Apple-style-span" style="color: #0000cc;"&gt;http://www.sitepoint.com/sale/&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;wbr&gt;&lt;/wbr&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px;"&gt;Books are mostly available as PDF, .epub, and/or .mobi downloads.&amp;nbsp;&lt;/div&gt;&lt;div style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px;"&gt;You can purchase the daily bundle or individual books."&lt;/div&gt;&lt;div style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/div&gt;Check it out.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-7039754081497482108?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/7039754081497482108/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=7039754081497482108' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/7039754081497482108'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/7039754081497482108'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2011/12/sitepoint-ebook-sale-for-developers.html' title='SitePoint eBook Sale for Developers'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-1118900677398710370</id><published>2011-11-14T04:49:00.002-05:00</published><updated>2011-11-14T04:49:43.390-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VFP'/><category scheme='http://www.blogger.com/atom/ns#' term='LINQ'/><title type='text'>VFP Entity Framework 4 Provider</title><content type='html'>&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Tom Brothers pointed me to a new&amp;nbsp;&lt;a href="http://vfpefprovider.codeplex.com/"&gt;project&lt;/a&gt;&amp;nbsp;he's working on: &amp;nbsp;the successor to his LINQ for VFP work: an VFP entity framework 4.0 provider.&amp;nbsp;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;This means using the VFP OLEDB driver, you can easily access FoxPro data in VS 2010 Entity Framework solutions.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;The project is on&amp;nbsp;&lt;a href="http://vfpefprovider.codeplex.com/"&gt;Codeplex&lt;/a&gt;&amp;nbsp;but the post noted &lt;a href="http://www.randomdevnotes.com/2011/10/vfp-entity-framework-provider-v0-5/"&gt;here&lt;/a&gt; gives full details.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Great job, Tom!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-1118900677398710370?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.randomdevnotes.com/2011/10/vfp-entity-framework-provider-v0-5/' title='VFP Entity Framework 4 Provider'/><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/1118900677398710370/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=1118900677398710370' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/1118900677398710370'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/1118900677398710370'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2011/11/vfp-entity-framework-4-provider.html' title='VFP Entity Framework 4 Provider'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-6512659187452981231</id><published>2011-10-15T05:37:00.000-04:00</published><updated>2011-10-15T05:37:16.728-04:00</updated><title type='text'>Review: Version Control by Example</title><content type='html'>&lt;div&gt;It isn't surprising that most FoxPro developers think of one primary tool when version/source control is mentioned: Visual SourceSafe. After all, this was the Microsoft tool that was heavily promoted when version control integration was first promoted in VFP. (I recall &lt;a href="http://fox.wikis.com/wc.dll?Wiki~YAlanGriver"&gt;YAG&lt;/a&gt; and &lt;a href="http://fox.wikis.com/wc.dll?Wiki~FlashCreativeManagement"&gt;Flash &lt;/a&gt;introducing their Multi-User Project Manager for FoxPro which was my first introduction to how to let multiple developers work on the same project, absolutely needing some kind of version control)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But if you, like many other VFP developers, were geographically remote, you quickly discovered SourceGear's &lt;a href="http://sourcegear.com/sos/index.html"&gt;SourceOffSite&lt;/a&gt;, a SourceSafe client that made working remotely fast and easy. SourceGear's founder, &lt;a href="http://www.ericsink.com/"&gt;Eric Sink&lt;/a&gt;, has written on version control for years and SourceGear moved from assisting SourceSafe to &lt;a href="http://sourcegear.com/vaultpro/index.html"&gt;Vault&lt;/a&gt;, a SQL Server based alternative and additional tools, such as bug-tracking. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;VFP's integration of source control isn't perfect - most of it due to its use of the DBF/FPT format for MNX, VCX, SCX and FRX - and the existing &lt;a href="http://fox.wikis.com/wc.dll?Wiki~SccText"&gt;SCCTEXT &lt;/a&gt;has been improved in the past with &lt;a href="http://vfpx.codeplex.com/releases/view/12955"&gt;alternate SCCTEXT&lt;/a&gt; and &lt;a href="http://www.foxpert.com/downloads.htm"&gt;GenXML&lt;/a&gt;. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;More recently, however, he's written on open-source version control systems, and no surprise, SourceGear has written its own distributed version control system, Veracity (also open-source). His new book, "Version Control By Example", however, isn't just about Veracity - it's about making Version Control even more accessible than before.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;He takes the reader from the history of version control (v1 - SourceSafe , v2 - centralized version control, v3 - distributed version control) and then plunges into perhaps, one of the best examples of learning Source Control in recent memory. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Eric walks us through exactly the same development scenario, using &lt;a href="http://subversion.apache.org/"&gt;Subversion&lt;/a&gt;, Git, Mercurial and &lt;a href="http://www.sourcegear.com/veracity"&gt;Veracity &lt;/a&gt;as the version control tool. With Harry and Sally, two developers separated by an ocean and culture, we start with the creation of a software project and go all the way to its version 1.0 implementation, with the challenges of code conflicts, spelling changes, commenting and of course, the inevitable, "I'm going to work alone" mentality. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But the book also describes how different software (web, commercial, etc) implement version control and the internals of how each VCS handle some of the details. While Veracity is discussed, it isn't heavily promoted - this isn't your "here's why my product rocks" book - this is a discussion piece on the strengths and weaknesses of each tool.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Eric's writing style is fun and easy to read. With most developer books, readers pick and choose what chapters you read, and while you can do this with Version Control By Example, I read it cover to cover. You might think going through the same example four times would be boring - but Eric's minor changes make it a breeze (if you're looking for the many different ways Brits can say "happy" or "angry", this is just the sprig in the thicket!) Highlighting the differences in culture helps show the "real" development process.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;My favourite chapter is the Best Practices where there are gems that even experienced software developers may not consider:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1) &lt;a href="http://www.ericsink.com/vcbe/html/read_the_diffs.html"&gt;Read Diffs before getting latest versions.&lt;/a&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2) &lt;a href="http://www.ericsink.com/vcbe/html/read_the_diffs.html"&gt;Check Diffs before checking in&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;3) &lt;a href="http://www.ericsink.com/vcbe/html/dont_comment_out_code.html"&gt;Don't Comment Out Code&lt;/a&gt;. (throw it away! - as some developers know, I just hate unnecessary comments  comments!)&lt;/div&gt;&lt;div&gt;Version Control By Example is available free &lt;a href="http://www.ericsink.com/vcbe/html/index.html"&gt;online&lt;/a&gt;, for &lt;a href="http://www.amazon.com/Version-Control-Example-Eric-Sink/dp/0983507902/ref=pd_rhf_p_t_1"&gt;purchase&lt;/a&gt;, for download, for &lt;a href="http://www.ericsink.com/vcbe/vcbe.epub"&gt;ePub &lt;/a&gt;and more. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you're looking for a new version control system, &lt;b&gt;read it&lt;/b&gt;. If you've never heard of version control before (hello students!!), &lt;b&gt;read it&lt;/b&gt;. If you're looking at changing your version control system (some of my clients are still using VSS), read it. If you're looking for a great dev book,  read it.  I received a copy and after reading it, the best thing I could do, as I do with all the best developer books, is &lt;b&gt;share it&lt;/b&gt;. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://www.ericsink.com/vcbe/"&gt;Version Control by Example&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-6512659187452981231?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.ericsink.com/vcbe/' title='Review: Version Control by Example'/><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/6512659187452981231/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=6512659187452981231' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/6512659187452981231'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/6512659187452981231'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2011/10/review-version-control-by-example.html' title='Review: Version Control by Example'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-3152832105807192678</id><published>2011-09-21T13:24:00.000-04:00</published><updated>2011-09-21T13:24:54.094-04:00</updated><title type='text'>Steven Black Speaking at Southwest Fox 2011</title><content type='html'>&lt;div&gt;Yet another great reason to go to &lt;a href="http://www.swfox.net"&gt;Southwest Fox&lt;/a&gt; (coming next month) - Steve Black will be speaking.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As Doug says, Steve's sessions are always lively,  thought-provoking and entertaining. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;He's speaking on Techniques and Niche Marketing - two topics he certainly knows well. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Southwest still has about 70 openings left (25 of which are discounted)  so be sure to book now if you plan on going.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://doughennig.blogspot.com/2011/09/steven-black-speaking-at-southwest-fox.html"&gt;Doug Hennig: Steven Black Speaking at Southwest Fox 2011&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-3152832105807192678?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://doughennig.blogspot.com/2011/09/steven-black-speaking-at-southwest-fox.html' title='Steven Black Speaking at Southwest Fox 2011'/><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/3152832105807192678/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=3152832105807192678' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/3152832105807192678'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/3152832105807192678'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2011/09/steven-black-speaking-at-southwest-fox.html' title='Steven Black Speaking at Southwest Fox 2011'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-5652238305578089568</id><published>2011-09-05T06:45:00.000-04:00</published><updated>2011-09-05T06:45:56.828-04:00</updated><title type='text'>Glad we spent all that time on OLE DB</title><content type='html'>&lt;div&gt;&lt;a href="http://blogs.technet.com/b/dataplatforminsider/archive/2011/08/29/microsoft-aligning-with-odbc.aspx"&gt;Microsoft Aligning with ODBC - SQL Server Team Blog - Site Home - TechNet Blogs&lt;/a&gt;: &lt;/div&gt;&lt;br /&gt;As the SQL Team notes:&lt;div&gt;&lt;i&gt;"The next release of Microsoft SQL Server, Code Name “Denali,” will be the last release to support OLE DB. OLE DB will be supported for 7 years from launch, the life of SQL Server Code Name “Denali” support, to allow you a large window of opportunity for change before deprecation. We encourage you to adopt ODBC in any future version or new application development. &lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;Making this move to ODBC also drives more clarity for our C/C++ programmers who can now focus their efforts on one API."&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;They forgot to mention "and make all of their efforts over the past few years wasted on supporting a technology that we would eventually kill"&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Microsoft's promotion of OLE DB over ODBC is similar to their enthusiasm behind WPF and Silverlight.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;WPF's Browser implementation reminds me of the old ActiveX Document technology - it looks like a Browser but it downloads a WPF core to the client - technology that has its roots over 10 years ago.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When it comes to frustrating developers, Microsoft's actions in the past few years is fast becoming the gold standard. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When WPF was promoted as the upcoming technology, I asked a number of developers if new .Net programmers should skip learning WinForms and move right to that technology. "No" - I was told. Yet, with the exception of the code behind work, WPF is so different that WinForm developers face a steep learning curve - so much so that many keep on building these solutions.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;WPF leans into Silverlight, which is on as slippery a slope as OLE DB (in my opinion). WPF's saving grace is XAML, which hopefully Microsoft keeps around for 10 years,  3 years longer than OLEDB. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;One of the big pushing points for developers moving to VFP 9 was OLE DB, which fits into Visual Studio and .Net. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;What was the point?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Imagine what would have happened if those developer resources had been moved to other benefits from the FoxPro platform. Politics win, developers lose.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://technorati.com/tag/FoxPro" rel="tag"&gt;FoxPro&lt;/a&gt; &lt;a href="http://technorati.com/tag/VFP" rel="tag"&gt;VFP&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-5652238305578089568?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://blogs.technet.com/b/dataplatforminsider/archive/2011/08/29/microsoft-aligning-with-odbc.aspx' title='Glad we spent all that time on OLE DB'/><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/5652238305578089568/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=5652238305578089568' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/5652238305578089568'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/5652238305578089568'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2011/09/glad-we-spent-all-that-time-on-ole-db.html' title='Glad we spent all that time on OLE DB'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-359272804457030516</id><published>2011-08-29T09:44:00.000-04:00</published><updated>2011-08-29T09:44:00.991-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Random thoughts'/><title type='text'>On Modern Day Games</title><content type='html'>You see them advertised and they almost seem like a desperate attempt by companies like Parker Bros and Hasbro to recreate an era gone by: that of the family game night and the board game. &lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In some ways, they have returned. Note the popularity of Games with Friends on iPhone - but many of the games espoused are games that SHOULD rightfully still be popular because they are unpredictable. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;While everyone who has ever played Monopoly always has a favorite game piece and property, the way the game unfolds is almost always a game of chance. Like playing with a deck of cards, each game is unique.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Come forward (or back) to the 80s' and the introduction of Trivial Pursuit. While there are some diehards who would play TP using the board and the little pies, the game evolved into more of a "pull out a card and let's see what you know" type of game. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Moving further into the 90s, and you see more of these games. SongBurst (one of my favorites) tests your music ability based on songs from a particular era (50s - 80s - note this was BEFORE the Singing Bee TV show)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;The thing most of these games suffer from is "age". Not just the age of the players but rather when they came out.  Playing a game of  Trivial Pursuit Family Edition requires that the "kids" group be in their 30s now. A question like "how many planets are there" suffers from days gone by.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Heck, going back in time, my parents had a game of Shakespeare  where you had to complete the sonnets (try playing that with the kids today). &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Think of the fad a while back: the Murder Mystery sold in a box. You could only ever play the game once - after that, it was spoiled.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Some games have tried to recapture the glory of the game of chance but with some silliness: Pictionary, Cranium (which combined a bunch of games including Charades). One particular favorite is Scattergories - where you write down words based on a category. If the categories don't really fit or you're tired of the same basic answers, why not create your own? It's a game designed to be "improvised"&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This takes me to my main post. Many games these days have become computerized, offering DVDs of data or the like. So they all use some kind of storage device for their questions and answers. So my question is: are they using storage devices from the 80s?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Our daughter bought the game CatchPhrase, where you try to get the other player to say the word or phrase without saying it. Sounds like a classic game, right? And now that it's computerized, you know you aren't going to get the same questions repeated regularly. Heck, Trivial Pursuit would give you 1000 cards with 8 questions each and only if you played it every night for a year would you begin to remember them (and you know who they are, if you have ever played with them). &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Even with a 1GB memory stick and averaging a phrase with 100 letters in it, you should easily have over 10,000,000 phrases - while you may get a few repeats, simply because of random polling, it's highly unlikely you would get the same set of questions in one sitting. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;CatchPhrase has approximately 11 categories and phrases Everything from words like "Spill the beans" and "hot potato" to "Dick Cheney", "Weapons of mass destruction" ,"Hannah Montana" and "Top Chef". Yet, in the two times I've played the Food category, 90% of the phrases are the same. So maybe it's just Food, right? Nope - same thing with Everything. &lt;a href="http://en.wikipedia.org/wiki/Catch_Phrase_(game)"&gt;They&lt;/a&gt; say it contains 10,000 words.  That means 910 words per category.  So it doesn't really matter if they have a 1000 new words for the current generation.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You'll run out sooner or later.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Is a 1GB stick really that hard to put into a game like this?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;Better yet, can't they put a Wifi card in them and get updates online?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-359272804457030516?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/359272804457030516/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=359272804457030516' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/359272804457030516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/359272804457030516'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2011/08/on-modern-day-games.html' title='On Modern Day Games'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-9152565569343156238</id><published>2011-08-29T09:43:00.000-04:00</published><updated>2011-08-29T09:43:07.004-04:00</updated><title type='text'>Fun in the SQL Transaction Log</title><content type='html'>I've written about the SQL Transaction log &lt;a href="http://akselsoft.blogspot.com/2007_03_01_archive.html"&gt;before&lt;/a&gt; and since some of my clients don't have some of the great logging tools, I often find myself going back to the&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;select * from ::fn_dblog(NULL,NULL)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Recently, at one client, I've come across a bizarre problem that defies easy analysis. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The VFP application uses cursor adapters to talk to the SQL Server and in one of the processes, updates one table while adding a record to two other tables. In certain circumstances, the two new records were being added but the update of the other table would not. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;While I'm still tracking down what is actively going on, I wanted to note some of the interesting aspects of the SQL Log and pose some questions &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A great &lt;a href="http://www.sqlservercentral.com/Blogs/Hugo/default.aspx?PageIndex=6"&gt;post &lt;/a&gt;in SQLServerCentral broke down the various operation types but it wasn't clear on others:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-9152565569343156238?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.sans.org/reading_room/whitepapers/application/forensic-analysis-sql-server-2005-database-server_1906' title='Fun in the SQL Transaction Log'/><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/9152565569343156238/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=9152565569343156238' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/9152565569343156238'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/9152565569343156238'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2011/08/fun-in-sql-transaction-log.html' title='Fun in the SQL Transaction Log'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-1201111948762225407</id><published>2011-08-29T09:42:00.001-04:00</published><updated>2011-08-29T09:42:32.659-04:00</updated><title type='text'>LINQ to VFP</title><content type='html'>&lt;div&gt;When asked about the state of Visual FoxPro, I often point developers to the &lt;a href="http://vfpx.codeplex.com/"&gt;VFPX &lt;/a&gt;site on CodePlex. After all, that's where the majority of VFP source code is and where many members of the VFP community place the most of funkalicious work they do (Jim Nelson continues to amaze with his PEM Editor, which should likely be renamed IDE/X, because he's now covering far more than just Projects, Events and Methods.)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But there are OTHER places to find great VFP Code.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.foxite.com/"&gt;Foxite&lt;/a&gt; continues to get posts with very cool samples and there are other codeplex sites as well.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But recently, I was looking for ways to work with VFP Data in .Net and came across:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://linqtovfp.codeplex.com/"&gt;LINQ to VFP&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;Yep! Tom Brothers has built an iQueryable toolkit for FoxPro. Started in 2009, the latest version was updated on January 9th, 2011.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://technorati.com/tag/FoxPro" rel="tag"&gt;FoxPro&lt;/a&gt; &lt;a href="http://technorati.com/tag/VFP" rel="tag"&gt;VFP&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-1201111948762225407?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://linqtovfp.codeplex.com/' title='LINQ to VFP'/><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/1201111948762225407/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=1201111948762225407' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/1201111948762225407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/1201111948762225407'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2011/08/linq-to-vfp.html' title='LINQ to VFP'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-843430464968624331</id><published>2011-08-29T09:42:00.000-04:00</published><updated>2011-08-29T09:42:08.842-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Handy Language Features:'/><title type='text'>Multiple Class Implementations</title><content type='html'>I'm doing a variety of work in both C# and VB.Net these days (as well as VFP). &lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Every now and then, I come across helpful concepts in the languages that are likely obvious to most developers but may not be known by all of them. If I find something that is of particular interest, I'll put it under these types of posts.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Today, I had a class that implemented multiple interfaces. Both of these interfaces had a similar method: SetReadOnly. So you have two choices:&lt;/div&gt;&lt;div&gt;1. Create a new interface that this class can implement that has the SetReadOnly interface so I only have to implement the one&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2. Create two methods that implement that particular method.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Most people are used to VB.Net's handling for Select Case statements where you can put multiple conditions on one line:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Select &lt;/div&gt;&lt;div&gt;Case "A","B","C"&lt;/div&gt;&lt;div&gt;End Select&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;What I wasn't aware of was that you can use it for Implements as well.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When you add the "Implements xxxx", VS automatically adds the various functions that you have to implement. So in this case, I received TWO methods:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Public Function SetReadOnly() Implements Interface1.SetReadOnly&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;and then &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Public Function SetReadOnly1() Implements Interface2.SetReadOnly&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I asked around briefly if this was necessary. As it turns out, it's not. You can easily do:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Public Function SetReadOnly Implements Interface1.SetReadOnly, Interface2.SetReadonly&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;End Function&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Handy way of reducing code.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-843430464968624331?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/843430464968624331/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=843430464968624331' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/843430464968624331'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/843430464968624331'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2011/08/multiple-class-implementations.html' title='Multiple Class Implementations'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-3758821482855285696</id><published>2011-08-24T07:19:00.000-04:00</published><updated>2011-08-24T07:19:42.557-04:00</updated><title type='text'>Southwest Fox 2011 Giveaways</title><content type='html'>&lt;div&gt;Nothing like good products for attendees. Doug reports that &lt;a href="http://www.swfox.net/"&gt;Southwest Fox&lt;/a&gt; will have draws for three copies of DBi Technologies &lt;a href="http://www.dbi-tech.com/ProductPage_StudioControlsCOM.aspx"&gt;Studio Controls&lt;/a&gt; for COM.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As someone who has covered the dbiTech controls for many &lt;a href="http://www.aksel.com/whitepapers/ActiveXControls.htm"&gt;years&lt;/a&gt;, this is an awesome product offering.  The Appointment Scheduling alone is a great reason to have this in your toolbox but there's a lot more where that came from.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://doughennig.blogspot.com/2011/08/southwest-fox-2011-news.html"&gt;Doug Hennig: Southwest Fox 2011 News&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I wonder what other goodies are in store for attendees.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-3758821482855285696?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://doughennig.blogspot.com/2011/08/southwest-fox-2011-news.html' title='Southwest Fox 2011 Giveaways'/><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/3758821482855285696/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=3758821482855285696' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/3758821482855285696'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/3758821482855285696'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2011/08/southwest-fox-2011-giveaways.html' title='Southwest Fox 2011 Giveaways'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-2804228689868796516</id><published>2011-08-21T05:26:00.001-04:00</published><updated>2011-08-21T05:34:08.300-04:00</updated><title type='text'>UI Evolution vs Revolution (Part 1): Scroll Bars</title><content type='html'>&lt;div&gt;(this post started as a comment so I might come back to it - or I might just start a series on UI changes)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I read&lt;/div&gt;&lt;a href="http://www.pcmag.com/article2/0,2817,2389437,00.asp?kc=PCRSS03079TX1K0000585"&gt;Why Windows 8 Might Fail | John C. Dvorak | PCMag.com&lt;/a&gt; ,typical Dvorak, whom I've been reading for , ouch, just about my entire life in computers. That seems strange to write. But every article I read on Lion and Windows 8 seems to talk about this strange trend of removing scrollbars. (Comment starts now):&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Helvetica, Arial, Verdana, sans-serif; font-size: 13px;"&gt;The proof is scrollbars? Really?!?!? &lt;/span&gt;&lt;br /&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; line-height: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Helvetica, Arial, Verdana, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; line-height: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Helvetica, Arial, Verdana, sans-serif; font-size: 13px;"&gt;How many of you actually use scrollbars? I'm not talking about moving up and down through a page, I'm talking about using the scrollbar as a tool instead of just a means of identifying where you are on a page.&lt;/span&gt;&lt;br /&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; line-height: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Helvetica, Arial, Verdana, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; line-height: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Helvetica, Arial, Verdana, sans-serif; font-size: 13px;"&gt;If you're on a laptop, chances are you either a) use the keyboard or b) have gesture support which means you gesture "up" to move the page down.&lt;/span&gt;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; line-height: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Helvetica, Arial, Verdana, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; line-height: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Helvetica, Arial, Verdana, sans-serif; font-size: 13px;"&gt;If you're on a PC, I still say the above still counts. New users will be confused initially but they will get it. &lt;/span&gt;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; line-height: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Helvetica, Arial, Verdana, sans-serif; font-size: 13px;"&gt;If you're on a Mac, you're used to multi-gesture already.&lt;/span&gt;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; line-height: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Helvetica, Arial, Verdana, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; line-height: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; line-height: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Helvetica, Arial, Verdana, sans-serif; font-size: 13px;"&gt;Scroll-bars work as a tool to indicate where you are. They aren't gestures - get over it. Granted, if they changed the visual clue (the thumb being at the top of the page meaning they were at the bottom), then it's a big thing. But no one is talking about this. &lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; line-height: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Helvetica, Arial, Verdana, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; line-height: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Helvetica, Arial, Verdana, sans-serif; font-size: 13px;"&gt;If you believe in gestures, pulling something to the right makes the left move visible. Pulling something down shows the top of it. (try it). A scroll bar on a book would mean moving the thumb to the right would take you to the end. But with gestures, you would PULL the page to the left. &lt;/span&gt;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; line-height: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Helvetica, Arial, Verdana, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; line-height: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Helvetica, Arial, Verdana, sans-serif; font-size: 13px;"&gt;Getting rid of scrollbars makes sense only if you start using Up and Down arrows on the page to indicate there is more or less text.&lt;/span&gt;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; line-height: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Helvetica, Arial, Verdana, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; line-height: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Helvetica, Arial, Verdana, sans-serif; font-size: 13px;"&gt;But Letting the user choose how scrollbars work is about as idiotic as letting users reverse what mouse buttons do what. How annoying is it when you are used to using a Right mouse and then go to someone who uses a left mouse? We're not talking about moving to a different country and seeing the wheel on the different side of the car or reading right to left instead of left to right - we're talking about letting the user decide that the reverse method of doing something is the right way. Apple had this right years ago - put your mouse on whatever side you want but don't change how the mouse works.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; line-height: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Helvetica, Arial, Verdana, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; line-height: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Helvetica, Arial, Verdana, sans-serif; font-size: 13px;"&gt;The idea of an "evolutionary" interface is tough to build - because users all "evolve" at a different pace. That is why it's taken 10 years for people to start getting over XP. &lt;/span&gt;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; line-height: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Helvetica, Arial, Verdana, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; line-height: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Helvetica, Arial, Verdana, sans-serif; font-size: 13px;"&gt;Apple's approach has always been to revolutionize the interface and then slowly evolve certain aspects of it but then revolutionize it again. (System 1-7, Newton, OS/X, iPod, iPhone/iPad). Don't go to the "Apple steals what works" argument - this is their history. &lt;/span&gt;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; line-height: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Helvetica, Arial, Verdana, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; line-height: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Helvetica, Arial, Verdana, sans-serif; font-size: 13px;"&gt;Microsoft's biggest successful contribution to revolutions was Excel but I'm sure there are others. The Office Ribbon wasn't a revolution but it came close. How successful is it really? What Microsoft "revolution" do you like?&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Helvetica, Arial, Verdana, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Helvetica, Arial, Verdana, sans-serif; font-size: 13px;"&gt;[Update: Yes, I would say Kinect makes a pretty good case for interface revolution, especially in how it allows developers to make it better.]&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-2804228689868796516?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.pcmag.com/article2/0,2817,2389437,00.asp?kc=PCRSS03079TX1K0000585' title='UI Evolution vs Revolution (Part 1): Scroll Bars'/><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/2804228689868796516/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=2804228689868796516' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/2804228689868796516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/2804228689868796516'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2011/08/ui-evolution-vs-revolution-part-1.html' title='UI Evolution vs Revolution (Part 1): Scroll Bars'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-7763833523329198140</id><published>2011-06-16T09:56:00.000-04:00</published><updated>2011-06-16T09:56:33.703-04:00</updated><title type='text'>Developer's Code</title><content type='html'>&lt;a href="http://www.thedeveloperscode.com/"&gt;Lessons, advice, and unadulterated opinions on web development - The Developer&amp;#39;s Code&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Great document on a variety of lessons learned from development. My favorite (so far): #4 - The "Ivory Tower" Architect is a myth. &lt;br /&gt;&lt;br /&gt;Even if it was written by a young whippersnapper (KA WAI CHEUNG) at the age of 32. Someone should have suggested putting a year in the copyright, though. It was first posted around March of this year.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://technorati.com/tag/FoxPro" rel="tag"&gt;FoxPro&lt;/a&gt; &lt;a href="http://technorati.com/tag/VFP" rel="tag"&gt;VFP&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-7763833523329198140?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.thedeveloperscode.com/' title='Developer&apos;s Code'/><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/7763833523329198140/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=7763833523329198140' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/7763833523329198140'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/7763833523329198140'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2011/06/developers-code.html' title='Developer&apos;s Code'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-5350815910456647668</id><published>2011-06-01T04:56:00.000-04:00</published><updated>2011-06-01T04:56:00.698-04:00</updated><title type='text'>Southwest Fox 2011 Speakers and Sessions Announced</title><content type='html'>&lt;a href="http://doughennig.blogspot.com/2011/05/southwest-fox-2011-speakers-and.html"&gt;Doug Hennig&lt;/a&gt; made a post of this but SW Fox looks like it will be really blast this year!&lt;br /&gt;&lt;br /&gt;True to form, it's like a diving board for FoxPro developers to explore new software development techniques and technologies in all their glory.&lt;br /&gt;&lt;br /&gt;VFP Techniques sessions include Class Design, subqueries, event-binding, Windows 7, cursor adapters, legacy code, multi-threading.&lt;br /&gt;&lt;br /&gt;New Technologies: Thor, Lightswitch, Cloud Storage, GoogleFy, Mercurial , jQuery and Silverlight.&lt;br /&gt;&lt;br /&gt;As &lt;a href="http://kevinragsdale.net/post/2010/08/12/Two-Great-Reasons-To-Attend-Southwest-Fox-This-Year.aspx"&gt;many&lt;/a&gt; have posted before, Southwest Fox is a whole series of conferences in one: there's the "actual" conference, the pre-conference, the post-conference, the "practice run session" previews that you can see as speakers practice their talks and then the "networking" conference, where you can talk with other FoxPro developers about how they do what they do.&lt;br /&gt;&lt;br /&gt;But also exciting are the Pre and post &lt;a href="http://www.swfox.net/workshops.aspx"&gt;shows&lt;/a&gt;: MVC3, SmartPhone and FoxInCloud. The annual Web Connection conference is being held right before the show and then there's a SilverSwitch World Roadshow right after.&lt;br /&gt;&lt;br /&gt;Sounds like October 26-29th, FoxPro developers should look to vacation in Arizona --- Gilbert, Arizona to be exact.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://technorati.com/tag/FoxPro" rel="tag"&gt;FoxPro&lt;/a&gt; &lt;a href="http://technorati.com/tag/VFP" rel="tag"&gt;VFP&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-5350815910456647668?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://doughennig.blogspot.com/2011/05/southwest-fox-2011-speakers-and.html' title='Southwest Fox 2011 Speakers and Sessions Announced'/><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/5350815910456647668/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=5350815910456647668' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/5350815910456647668'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/5350815910456647668'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2011/06/southwest-fox-2011-speakers-and.html' title='Southwest Fox 2011 Speakers and Sessions Announced'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-724586113935182258</id><published>2011-05-08T05:35:00.000-04:00</published><updated>2011-05-08T05:35:32.004-04:00</updated><title type='text'>Why The New Guy Can’t Code - Really?!?!</title><content type='html'>&lt;div&gt;&lt;set sarcasm="" on=""&gt;&lt;/set&gt;&lt;/div&gt;&lt;div&gt;Thank heavens Jon Evans posted &lt;a href="http://techcrunch.com/2011/05/07/why-the-new-guy-cant-code/?utm_source=feedburner&amp;amp;utm_medium=feed&amp;amp;utm_campaign=Feed%3A+Techcrunch+%28TechCrunch%29"&gt;Why The New Guy Can’t Code&lt;/a&gt;, an explanation for all software development shops to read before hiring someone. This article explains that the evils of all poor hirings are:&lt;/div&gt;&lt;div&gt;a) Microsoft's fault&lt;/div&gt;&lt;div&gt;b) old systems&lt;/div&gt;&lt;div&gt;c) hungarian notation&lt;/div&gt;&lt;div&gt;d) not female&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It's not the fault of poor HR, a bad interview, or even the lack of the supervisor's ability to explain a problem - no, the above are the reasons that the new developer "can't seem to get up to speed", "shows basic ignorance", and produces work that "is so kludgey that it...must be rewritten"&lt;/div&gt;&lt;div&gt;&lt;set sarcasm="" off=""&gt;&lt;/set&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;OK, I'll agree with a few points:&lt;/div&gt;&lt;div&gt;1. The brain-teaser questions. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Sure, they're fun - HR loves them because they can remember them - but ultimately, they were designed to show how people think about problems and how people arrive at solutions. They aren't actually a bellweather, especially as most of them are posted online. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Can you imagine a MacGyver interview? "You're on a plane plunging to the ground, you have a paperclip and a coat-hanger and 10 people to save, how do you do it?"&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;How do you test knowledge? Yes, you ask them to solve a basic problem. Really though? The best interviews I've ever had or even given involved giving a real world scenario. "We're building such and such a system, how would you do it?" If you're what the company wants, you'll likely be describing the same system they are building. If you're good, you'll give some ideas that they may not have thought of (not that they would let on). If you're great, they'll simply walk out going " I have to hire this person". &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2. Old Systems.&lt;/div&gt;&lt;div&gt;Yes, we all get that the new systems provide features that no one had when growing up and learning systems. That doesn't mean those skills are not valuable. Maybe it's just me but I wonder how I would get along if everything changed and we lived in a world where electricity was &lt;a href="http://www.gutenberg.org/ebooks/1249"&gt;banned&lt;/a&gt; or forgotten.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I'm not saying that you have to know how to forge an steel but I remember years ago someone arguing for procedural programming over OOP and guess what? Today there are people who will argue for MVC or MVVM patterns or writing 1s and 0s over 0s. The fact is, learning programming is the &lt;a href="http://www.charlespetzold.com/code/"&gt;same &lt;/a&gt;- the tools make it easier, but they are still just tools. Learning &lt;a href="http://www.cc2e.com/"&gt;good programming techniques&lt;/a&gt; is the same, whether it be C+ or Python and Ruby.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;3. Hungarian notation.&lt;/div&gt;&lt;div&gt;OK, I know Jon didn't go after hungarian notation as a concept - he merely used it as an example of someone making tons of money from an idea implemented by Microsoft but still, is hungarian "the dumbest widely-promulated idea in the history of the field"? While I'm sure a**hole programmers like to think that code should be unreadable except by themselves, MOST developers recognize that code should be read-able. While a variable named CustomerPhoneNumber is obviously a string even though it's named Number; if your newest hire is from a foreign country, they may not know that SocialSecurityID should be a string but EmployeeID is a numeric field because of the way a system was designed. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Hungarian notation does solve a particular problem for any language. Is it perfect? No. Is it overused? Yes ; but then so is any naming convention that results in a variable named TableWasRetrievedByInvalidNumber (while a fabrication, naming variables descriptively have been taken way too far).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In retrospect, it's crazy to think that some people still have horses to travel, when there are cars or Segways. Despite the fact that roads were only built the size they are to accommodate them.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;4. Not Female&lt;/div&gt;&lt;div&gt;Not even going there. I'm sure there are female programmers that suck, even if Jon's never met one.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I don't know Jon Evans, a fellow Canadian, but he calls himself a software engineer yet his &lt;a href="http://rezendi.com/aboutauthor.htm"&gt;history&lt;/a&gt; shows very little software engineering. He graduated from Waterloo and spent most of his time writing novels. While I'm sure he's done some software development, most of it appears to be in order to scrape by while writing. I'm sure the post was written with the best of intentions..actually, I think it was written more to incite than to explain.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Maybe the real message got lost in the wording: "Don't interview anyone who hasn't accomplished anything." As he accurately states: there is no excuse for software developers who don't have "something" that they can point to and say "I did this, all by myself!"&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;That isn't something new, though. If you hired someone without seeing what they could do, for ANY field, except maybe theoretical physics, you likely shouldn't be hiring. I wouldn't hire a writer without asking them to write something. I wouldn't hire a tester without either a) seeing them test or b) know their testing work. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And this isn't just about the new guy - there are lots of "old" guys who have gotten to the point where they rest on their laurels and don't improve. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The  comments on this post are what make this article: &lt;/div&gt;&lt;div&gt;a) Pair program a recruit with your top engineer for 30 minutes. (hell, I'd say any engineer)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;b) train before you hire&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;c) hire them to produce&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If the purpose of the article was to generate conversation (and is there any other reason?), then it succeeded.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-724586113935182258?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://techcrunch.com/2011/05/07/why-the-new-guy-cant-code/?utm_source=feedburner&amp;utm_medium=feed&amp;utm_campaign=Feed%3A+Techcrunch+%28TechCrunch%29' title='Why The New Guy Can’t Code - Really?!?!'/><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/724586113935182258/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=724586113935182258' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/724586113935182258'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/724586113935182258'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2011/05/why-new-guy-cant-code-really.html' title='Why The New Guy Can’t Code - Really?!?!'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-57875171046993396</id><published>2011-04-19T09:06:00.001-04:00</published><updated>2011-05-08T06:59:02.097-04:00</updated><title type='text'>7 dirty consultant tricks (InfoWorld)</title><content type='html'>InfoWorld had a neat article a few days back called &lt;br /&gt;&lt;a href="http://www.infoworld.com/print/157165"&gt;7 dirty consultant tricks (and how to avoid them)&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;Those of us who are consultants should know that these are being done and should be pretty angry about it. Most of the practices listed here are the reasons why the right consultants (that would be us) don't get the jobs we bid on.&lt;br /&gt;&lt;br /&gt;Those who run consulting firms should know about these and know that they are the best way to stay in business.&lt;br /&gt;&lt;br /&gt;I wrote an response to this on my own web site more but thought I would share some of the immediate takeaways here:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1. &amp;nbsp;If you (as a client) aren't starting your project with a measurable result by a specific date, then you need to break your project INTO those results first. Otherwise, assemble an internal team and maybe ask for some guidance but keep the deliverables in mind at all times. If you don't, it becomes a money pit.&lt;br /&gt;&lt;br /&gt;2.&amp;nbsp;I often look at my work as a consultant as being similar to a good plumber: if you want me to fix a problem, I'll do it as quickly as possible so I can move onto the next problem. If you want me to re-design or identify possible improvements to your plumbing system, it will take longer but I'll do it right.&lt;br /&gt;&lt;br /&gt;3.&amp;nbsp;Best thing to do is MEET with the actual team who will be doing the work.&lt;br /&gt;&lt;br /&gt;4. When dealing with fixed prices,&lt;br /&gt;I always think it's in the best interest of the client to look at per-diems but with a cap. It allows the consultant their opportunity to shine through but also limits the company's exposure.&lt;br /&gt;We once had our floors done by a company who looked at the floor and said "about $1600 labour based on x/day". By the end of the project, it was over $3400 because they didn't account for it right. This was a per-diem project and I should have thought first to put a cap on it. At the end, they still tried to weasel out of finishing the work and left us with a half-ass job.&lt;br /&gt;&lt;br /&gt;It's an interesting article - typical of InfoWorld who often target consultants in their columns but it's also an opportunity for consultants to identify and address them head-on, especially when dealing with new clients (who may read InfoWorld).&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/5492774-57875171046993396?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.infoworld.com/print/157165' title='7 dirty consultant tricks (InfoWorld)'/><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/57875171046993396/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=57875171046993396' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/57875171046993396'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/57875171046993396'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2011/04/7-dirty-consultant-tricks-infoworld.html' title='7 dirty consultant tricks (InfoWorld)'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-2041636624468184162</id><published>2011-04-15T17:20:00.000-04:00</published><updated>2011-04-15T17:20:20.765-04:00</updated><title type='text'>WP7/IE9 Developer Bootcamp - Ottawa</title><content type='html'>&lt;div&gt;Something for the local Ottawa group...Microsoft Ottawa is doing a Developer Bootcamp on May 11th. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;While some things don't sound that exciting ("Enhancing Pinned Sites with IE 9"), the HTML 5 session does look pretty cool. Despite Hachamovitch's recent &lt;a href="http://www.computerworld.com/s/article/9215825/Browser_rivals_mock_Microsoft_s_native_HTML5_claims"&gt;statements&lt;/a&gt; of "native HTML5", IE9's improved support for web standards is a good thing all around. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I look forward to building web sites that every browser can support. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;That said, look to the &lt;a href="http://www.thefoxshow.com"&gt;FoxShow &lt;/a&gt;next week for an interesting interview with the &lt;a href="http://www.foxincloud.com"&gt;FoxInCloud&lt;/a&gt; guys.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032484141&amp;amp;Culture=en-CA"&gt;WP7/IE9 Developer Bootcamp - Ottawa&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://technorati.com/tag/FoxPro" rel="tag"&gt;FoxPro&lt;/a&gt; &lt;a href="http://technorati.com/tag/VFP" rel="tag"&gt;VFP&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-2041636624468184162?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032484141&amp;Culture=en-CA' title='WP7/IE9 Developer Bootcamp - Ottawa'/><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/2041636624468184162/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=2041636624468184162' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/2041636624468184162'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/2041636624468184162'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2011/04/wp7ie9-developer-bootcamp-ottawa.html' title='WP7/IE9 Developer Bootcamp - Ottawa'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-5533506462833933267</id><published>2011-03-26T05:21:00.002-04:00</published><updated>2011-05-08T07:20:41.160-04:00</updated><title type='text'>Reality of  Unit Testing (Humour)</title><content type='html'>&lt;div&gt;If you haven't seen it, Dilbert for 3/24 sums up the way some unit testing zealots like to approach unit testing.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.dilbert.com/dyn/str_strip/000000000/00000000/0000000/100000/10000/6000/600/116640/116640.strip.gif" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="99" src="http://www.dilbert.com/dyn/str_strip/000000000/00000000/0000000/100000/10000/6000/600/116640/116640.strip.gif" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://www.dilbert.com/strips/comic/2011-03-24/?Page=4"&gt;Dilbert comic strip for 03/24/2011 from the official Dilbert comic strips archive.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-5533506462833933267?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.dilbert.com/strips/comic/2011-03-24/?Page=4' title='Reality of  Unit Testing (Humour)'/><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/5533506462833933267/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=5533506462833933267' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/5533506462833933267'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/5533506462833933267'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2011/03/reality-of-unit-testing-humour.html' title='Reality of  Unit Testing (Humour)'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-5096973271468728469</id><published>2011-03-09T17:29:00.001-05:00</published><updated>2011-03-09T17:29:14.142-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='swfox'/><category scheme='http://www.blogger.com/atom/ns#' term='FoxPro'/><title type='text'>Southwest Fox 2011 Looking for Speakers</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Georgia, serif; font-size: 16px;"&gt;&lt;a href="http://doughennig.blogspot.com/2011/03/southwest-fox-2011-call-for-speakers.html"&gt;Doug Hennig: Southwest Fox 2011 Call For Speakers&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: Georgia, serif; font-size: 16px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Georgia, serif; font-size: 16px;"&gt;Southwest Fox is gearing up for the 2011 conference season by issuing an open call to speakers.&lt;/div&gt;&lt;div style="font-family: Georgia, serif; font-size: 16px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Georgia, serif; font-size: 16px;"&gt;Go to the&amp;nbsp;&lt;a href="http://www.swfox.net/callforspeakers.aspx"&gt;Speakers&amp;nbsp;&lt;/a&gt;page for details.&lt;/div&gt;&lt;div style="font-family: Georgia, serif; font-size: 16px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Georgia, serif; font-size: 16px;"&gt;As with last year, they are looking for a wide variety of topics from core VFP, extending VFP, new technologies and becoming better developers.&amp;nbsp;&lt;/div&gt;&lt;div style="font-family: Georgia, serif; font-size: 16px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Georgia, serif; font-size: 16px;"&gt;This year's SW Fox is&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-weight: bold; line-height: 24px;"&gt;October 26-29, 2011&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, serif; font-size: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-weight: bold; line-height: 24px;"&gt;SanTan Elegante Conference &amp;amp; Reception Center/Legado Hotel&lt;br /&gt;Gilbert, AZ&lt;/span&gt;&lt;/span&gt;&lt;div style="font-family: Georgia, serif; font-size: 16px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Georgia, serif; font-size: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', Trebuchet, Verdana, sans-serif; font-size: 13px;"&gt;Session proposals are due by March 28.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Georgia, serif; font-size: 16px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', Trebuchet, Verdana, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-5096973271468728469?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/5096973271468728469/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=5096973271468728469' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/5096973271468728469'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/5096973271468728469'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2011/03/southwest-fox-2011-looking-for-speakers.html' title='Southwest Fox 2011 Looking for Speakers'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-8879472583928246527</id><published>2011-03-03T08:25:00.000-05:00</published><updated>2011-03-03T08:25:06.673-05:00</updated><title type='text'>Note to Microsoft: Focus on Software, not tablets</title><content type='html'>&lt;div&gt;iPad 2 was announced yesterday and the business and technology world (and mainstream media who bends over backwards for Steve Jobs) stopped and gazed at the double rainbow that is Apple. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Foley had an interesting question : &lt;a href="http://www.zdnet.com/tb/1-94063?p=2&amp;amp;tag=mantle_skin;content"&gt;Discussion on: Does Apple's iPad 2 further dent Microsoft's iPad compete plans? | ZDNet&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I responded there but I thought I would take the opportunity to drill down a bit further.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;First, Microsoft should stop trying to be a hardware maker. Their expertise is in software - so they should attempt to provide the BEST applications available in the App Store, even out-doing Apple. Microsoft's forays into hardware with the exception of the xBox have been fairly laughable - not many people recommend their webcams or mice without offering just as good alternatives.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Imagine what would happen if Microsoft actually GAVE businesses a reason to buy iPads or other tablets?  Because Microsoft felt that their focus should be on the software - the BUSINESS software.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Where is the MS CRM iPAD client ? That could be Microsoft's killer intro into this marketplace. If they did it right, they could crush Salesforce. Oh, I know, CRM is a web-based product - but it has a terrible mobile interface.  Why? Because it thinks it is still in the Windows desktop world.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Apple rebuilt iWorks for the iPad to try and show it as a great "office" tool - Microsoft should take Office and show why Office is the king of Office tools. Excel defined the office spreadsheet - should Apple's Numbers define the mobile spreadsheet? &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Microsoft has to realize that the days of their owning the desktop hardware due to licensing is over. Projects like WinPhone 7, Kin and possibly moving to tablets should be treated for what they are - hobbies, much like the AppleTV was. Build the best software for the devices and people will use them (provided you don't kill them with licensing).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Microsoft's greatest strength (and profits) are in tools like Office, SharePoint and others. Their developers rock at this. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Jobs had it right in that Apple's strength is that they have always tried to be the cross-roads between Technology and the Liberal Arts. Microsoft has never been that - they make business software. Period. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So Microsoft should get their own developers  making the best damn business software for the platforms they want to support. If they don't want to support the devices that are becoming more popular, then it's a losing business and they should realize they are eroding their customer base. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Consider the Server Tools market, That's a battle with Linux and Unix  -  and while it's a tough one, it's one that Microsoft currently does arguably well. The majority of small to mid-sized businesses run on a Microsoft back end. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The desktop? I think even the biggest Linux proponents would just as soon say "take it" - the new battle is on the mobile devices. But the one thing we've seen is that what matters on these devices are the "apps". &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Want an instant way in here? Find a way to build "&lt;a href="http://www.microsoft.com/visualstudio/en-us/lightswitch"&gt;Lightswitch&lt;/a&gt;" apps for these next generation mobile devices ON the devices themselves.  (focus on getting that &lt;a href="http://itunes.apple.com/us/app/lightswitch/id356174204?mt=8"&gt;trademark&lt;/a&gt; from someone where you can bully them). Corporate developers would fall over themselves if they could build it - and think of how cool it would be to be able to "build" the application on the device itself. (as long as Apple or other device makers allow you to do this, of course - but there's the in).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If Microsoft wants to keep relevant, they should focus on their strengths, not their weaknesses. This being my last year as a Microsoft MVP, I really wish I had gone to the MVP summit to promote this attitude.  &lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;They have started a little bit - the latest &lt;a href="http://www.zdnet.com/blog/microsoft/microsoft-launches-contest-to-encourage-html5-content-creation-without-browser-plug-ins/8821"&gt;contest &lt;/a&gt;is to build great HTML5 applications. Great - we already know that Silverlight is not the end game for web-based applications. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And another thing, Microsoft - really?!? "App Store" is a generic term - much like "Windows"? &lt;a href="http://www.slashgear.com/apple-slaps-microsoft-over-app-store-trademark-suit-windows-is-just-as-generic-02136986/"&gt;Grow up&lt;/a&gt;. They beat you to it - you should have trademarked "Tablet" when you had the chance. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-8879472583928246527?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.zdnet.com/tb/1-94063?p=2&amp;tag=mantle_skin;content' title='Note to Microsoft: Focus on Software, not tablets'/><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/8879472583928246527/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=8879472583928246527' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/8879472583928246527'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/8879472583928246527'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2011/03/note-to-microsoft-focus-on-software-not.html' title='Note to Microsoft: Focus on Software, not tablets'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-2563335395178359445</id><published>2011-01-05T14:15:00.000-05:00</published><updated>2011-01-05T14:15:05.738-05:00</updated><title type='text'>Southwest Fox 2011 is on!</title><content type='html'>&lt;div&gt;Saw a tweet come through on SW Fox - the dates have been booked with Southwest Fox 2011 on from October 26th-29th with a post-con going through to the 30th.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://twitter.com/swfox/statuses/21990366966194176"&gt;Twitter / SWFox Conference: Southwest Fox 2011 is offi ...&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;It doesn't look like the main &lt;a href="http://www.swfox.net"&gt;SW Fox site &lt;/a&gt;has been updated yet but I'm sure it will be shortly.&lt;br /&gt;&lt;a href="http://technorati.com/tag/FoxPro" rel="tag"&gt;FoxPro&lt;/a&gt; &lt;a href="http://technorati.com/tag/VFP" rel="tag"&gt;VFP&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-2563335395178359445?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://twitter.com/swfox/statuses/21990366966194176' title='Southwest Fox 2011 is on!'/><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/2563335395178359445/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=2563335395178359445' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/2563335395178359445'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/2563335395178359445'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2011/01/southwest-fox-2011-is-on.html' title='Southwest Fox 2011 is on!'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-8512404043998886141</id><published>2011-01-05T10:50:00.001-05:00</published><updated>2011-01-05T10:51:25.862-05:00</updated><title type='text'>Visual FoxPro History at Microsoft</title><content type='html'>&lt;div&gt;Ken Levy has an interesting post up on his MashupX site since early last month. &lt;/div&gt;&lt;a href="http://mashupx.com/blog/2010/12/09/visual-foxpro-strategy-at-microsoft/"&gt;Ken Levy's Blog _ MashupX Visual FoxPro Strategy at Microsoft&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;The post goes into some fascinating details as to the history of Visual FoxPro at Microsoft. Most of it is well-known or obvious (making VFP.Net would break backward compatibility - which is what MS did with VB.Net as well)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I guess more details can be shared now - when VFP 9 was released, "&lt;span class="Apple-style-span" style="font-family: arial, helvetica, clean, sans-serif; font-size: 13px; line-height: 19px;"&gt;the amount of sales for all versions of VFP combined annually was less revenue than Microsoft sales of Visual Studio in only one day"&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial, helvetica, clean, sans-serif; font-size: small; line-height: 19px;"&gt;It would be interesting to know however if some of those companies who were out there working on a VFP-like language in .Net were "persuaded" to stop their efforts, as some have suggested in various forums.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, serif; font-size: 16px; line-height: normal;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, serif; font-size: 16px; line-height: normal;"&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;Well worth the read. The FoxPro community is what keeps VFP alive (thanks to VFPX and other initiatives) - and there were some members of that community inside of Microsoft at one point.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, serif; font-size: 16px; line-height: normal;"&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;/span&gt;As he notes at the end "&lt;span class="Apple-style-span" style="font-family: arial, helvetica, clean, sans-serif; font-size: 13px; line-height: 19px;"&gt;Only developers who have used FoxPro really appreciate it for what it was and still is."&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, serif; font-size: 16px; line-height: normal;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;a href="http://technorati.com/tag/FoxPro" rel="tag"&gt;FoxPro&lt;/a&gt; &lt;a href="http://technorati.com/tag/VFP" rel="tag"&gt;VFP&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-8512404043998886141?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://mashupx.com/blog/2010/12/09/visual-foxpro-strategy-at-microsoft/' title='Visual FoxPro History at Microsoft'/><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/8512404043998886141/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=8512404043998886141' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/8512404043998886141'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/8512404043998886141'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2011/01/visual-foxpro-history-at-microsoft.html' title='Visual FoxPro History at Microsoft'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-6127577349383511080</id><published>2010-12-31T09:45:00.000-05:00</published><updated>2010-12-31T09:45:23.455-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XMLSerialization'/><category scheme='http://www.blogger.com/atom/ns#' term='DotNet'/><category scheme='http://www.blogger.com/atom/ns#' term='XML'/><title type='text'>Joys of XML Serialization</title><content type='html'>Love it or hate it, XML is everywhere and for data and objects, it can be extremely useful.&lt;br /&gt;&lt;br /&gt;On one of my last projects, a colleague introduced me to the useful &lt;a href="http://www.blogger.com/xsd2code.codeplex.com/"&gt;XSD2Code &lt;/a&gt;project, which creates a .Net object from an XSD. This made it easy for him to build a structure that could be compiled into code to ensure everyone followed the same structure. This is extremely valuable if someone gives you an XSD as a format to write to and you want to populate it using an object.&lt;br /&gt;&lt;br /&gt;In a more recent project, we needed to share details from a component with another calling application via a web service. Enter XMLSerializer, the .Net equivalent of taking an object and dumping it into XML.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: x-small;"&gt;Dim s As XmlSerializer = New XmlSerializer(Object)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: x-small;"&gt;Dim w As New StringWriter()&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: x-small;"&gt;s.Serialize(w, Object)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: x-small;"&gt;return w.tostring&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Sounds great, right? It was for a short time, but as the object got bigger, it contained more collections and references to other objects.&amp;nbsp;Eventually, the Serialize method took up 100% of CPU Usage and never finished. Of course, we couldn't find the problem right off the bat so it caused lots of grief.&lt;br /&gt;&lt;br /&gt;(without going into too much detail showcasing my ignorance on all of the specifics, XMLSerializer uses reflection to identify all of the public properties of an object and then outputs them to an XML file - if the object has a lot of objects or collections within it, it can cause a huge drain on the whole process).&lt;br /&gt;&lt;br /&gt;Certain &lt;a href="http://stackoverflow.com/questions/709399/how-to-serialize-big-objects-in-net-outofmemory-exceptions"&gt;posts &lt;/a&gt;call to use the &lt;a href="http://www.dotnetspider.com/resources/20665-Serialize-Objects-using-BinaryFormatter.aspx"&gt;BinaryFormatter &lt;/a&gt;instead - which is impossible to read but when you de-serialize it, you get the objects out at the other end. &lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: x-small;"&gt;Dim formatter As New System.Runtime.Serialization.Formatters.Binary.BinaryFormatter()&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: x-small;"&gt;Dim ms As New MemoryStream()&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: x-small;"&gt;formatter.Serialize(ms, Me)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: x-small;"&gt;Dim sXML As String&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: x-small;"&gt;sXML = System.Convert.ToBase64String(ms.ToArray())&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;But this makes the string illegible to any non-.Net applications, of which there are many - especially if you plan on building publicly accessible web services.&lt;br /&gt;&lt;br /&gt;So I started to go through my initial object and blank out certain properties, so that the serialization would work.&lt;br /&gt;&lt;br /&gt;What I didn't realize is I could simply tell the Serializer to ignore certain attributes. Enter the XMLIgnore attribute.&lt;br /&gt;&lt;br /&gt;Instead of simply calling New XMLSerializer, I call a method that returns the Serializer but with certain attributes that tell it to ignore specific details.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: x-small;"&gt;Function GetSmartSerializer() as XMLSerializer&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: x-small;"&gt;Dim xOver As New XmlAttributeOverrides()&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: x-small;"&gt;Dim attrs As New XmlAttributes()&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: x-small;"&gt;attrs = New XmlAttributes()&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: x-small;"&gt;attrs.XmlIgnore = True&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: x-small;"&gt;xOver.Add(GetType(ObjectClass), "MyBigCollectionThatNoOneNeedsToSee", attrs)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: x-small;"&gt;Dim xSer As New XmlSerializer(GetType(PRAM_Data.Session), xOver)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: x-small;"&gt;Return xSer&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;With the code above, when the application calls&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: x-small;"&gt;Dim o as XMLSerializer = GetSmartSerializer()&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: x-small;"&gt;Dim w As New StringWriter()&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: x-small;"&gt;s.Serialize(w, Object)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: x-small;"&gt;return w.tostring&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It now excludes the property "MyBigCollectionThatNoOneNeedsToSee" from the XML.&lt;br /&gt;&lt;br /&gt;More details can be found here:&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlattributes.xmlignore.aspx"&gt;XmlAttributes.XmlIgnore Property (System.Xml.Serialization)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I'm curious though - has anyone else encountered this limitation of the XMLSerializer? What solution have you used?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-6127577349383511080?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlattributes.xmlignore.aspx' title='Joys of XML Serialization'/><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/6127577349383511080/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=6127577349383511080' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/6127577349383511080'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/6127577349383511080'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2010/12/joys-of-xml-serialization.html' title='Joys of XML Serialization'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-703726399626228573</id><published>2010-12-22T07:22:00.000-05:00</published><updated>2010-12-22T07:22:04.318-05:00</updated><title type='text'>Where are my features?</title><content type='html'>Here's an innovative way to show your customers where certain features are at in the development cycle.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://depot.freeagentcentral.com/"&gt;FreeAgent Depot — A furtive glance behind the wizard&amp;#39;s curtain&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;How well do you communicate with your clients about upcoming features?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-703726399626228573?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://depot.freeagentcentral.com/' title='Where are my features?'/><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/703726399626228573/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=703726399626228573' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/703726399626228573'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/703726399626228573'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2010/12/where-are-my-features.html' title='Where are my features?'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-8471921323739349629</id><published>2010-11-10T05:22:00.000-05:00</published><updated>2010-11-10T05:22:11.850-05:00</updated><title type='text'>Developer Blend: 5 Reasons to use Expression Blend for Prototyping</title><content type='html'>&lt;div&gt;I'm speaking today (November 10th) at TechDays Ottawa on using Expression Blend for prototyping and mock-ups. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;My notes can be seen here:&lt;/div&gt;&lt;a href="http://www.developerblend.com/2010/11/5-reasons-to-use-expression-blend-for.html"&gt;Developer Blend: 5 Reasons to use Expression Blend for Prototyping&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-8471921323739349629?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.developerblend.com/2010/11/5-reasons-to-use-expression-blend-for.html' title='Developer Blend: 5 Reasons to use Expression Blend for Prototyping'/><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/8471921323739349629/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=8471921323739349629' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/8471921323739349629'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/8471921323739349629'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2010/11/developer-blend-5-reasons-to-use.html' title='Developer Blend: 5 Reasons to use Expression Blend for Prototyping'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-2252462254156506658</id><published>2010-11-01T17:15:00.001-04:00</published><updated>2010-11-05T04:46:48.553-04:00</updated><title type='text'>HTML5 is Microsoft's cross-platform play</title><content type='html'>&lt;div&gt;This makes an interesting development. I wonder if MS is going to come out with some form of XAML-HTML5 converter to support the developers who have devoted significant resources to Silverlight on the web. Silverlight *is* Microsoft's tool for Windows Phone 7 development so that's not an entirely lost investment.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Personally, I love XAML and use it for client development. WPF is far superior to WinForms but the loss of Silverlight as a long-term "supported" web tool isn't going to sit well with many.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://www.zdnet.com/blog/microsoft/microsofts-muglia-reconfirms-html-is-microsofts-cross-platform-play/7854"&gt;Microsoft's Muglia reconfirms HTML is Microsoft's cross-platform play | ZDNet&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.techdays.ca/ottawa"&gt;TechDays Ottawa&lt;/a&gt; is coming up - it will be interesting to see how this announcement plays out at it. I'll be speaking on using Expression Blend and SketchFlow for prototyping but I certainly won't be focusing a lot on Silverlight as an application platform - WPF for clients is where it's at.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Update: &lt;a href="http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2010/11/01/silverlight-versus-html5-really.aspx"&gt;Here's &lt;/a&gt;&amp;nbsp;a good&amp;nbsp;article that compares MS' new strategy to the Apple HTML/Cocoa strategy.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://technorati.com/tag/FoxPro" rel="tag"&gt;FoxPro&lt;/a&gt; &lt;a href="http://technorati.com/tag/VFP" rel="tag"&gt;VFP&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-2252462254156506658?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.zdnet.com/blog/microsoft/microsofts-muglia-reconfirms-html-is-microsofts-cross-platform-play/7854' title='HTML5 is Microsoft&apos;s cross-platform play'/><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/2252462254156506658/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=2252462254156506658' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/2252462254156506658'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/2252462254156506658'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2010/11/html5-is-microsofts-cross-platform-play.html' title='HTML5 is Microsoft&apos;s cross-platform play'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-2155289027163553325</id><published>2010-10-15T17:02:00.000-04:00</published><updated>2010-10-15T17:02:43.975-04:00</updated><title type='text'>Not at SW Fox? Check out the live feed and the tweets</title><content type='html'>&lt;div&gt;If you are like me and didn't manage to get down to Southwest Fox, you can still follow what's going on.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;While it's sad that no one is live blogging, they are "tweeting".&lt;/div&gt;&lt;div&gt;Check the link here:&lt;/div&gt;&lt;a href="http://search.twitter.com/search?q=swfox"&gt;swfox - Twitter Search&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You can also watch the keynote on uStream &lt;a href="http://www.ustream.tv/channel/swfoxtv"&gt;here&lt;/a&gt;.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-2155289027163553325?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://search.twitter.com/search?q=swfox' title='Not at SW Fox? Check out the live feed and the tweets'/><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/2155289027163553325/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=2155289027163553325' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/2155289027163553325'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/2155289027163553325'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2010/10/not-at-sw-fox-check-out-live-feed-and.html' title='Not at SW Fox? Check out the live feed and the tweets'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-8875939387141807856</id><published>2010-09-04T13:20:00.000-04:00</published><updated>2010-09-04T13:20:47.853-04:00</updated><title type='text'>PEM Editor 6 Now Released!</title><content type='html'>Jim Nelson has just posted a new update to his super popular Property/Event/Method editor on &lt;a href="http://vfpx.codeplex.com/wikipage?title=PEM%20Editor&amp;amp;referringTitle=Home"&gt;VFPX&lt;/a&gt;.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There are way too many features to count on this - but you can be sure that &lt;a href="http://cathypountney.blogspot.com/"&gt;Cathy Pountney&lt;/a&gt; will be covering them in her SW Fox &lt;a href="http://swfox.net/sessions.aspx#PEM_Editor:_An_Absolute_MUST_HAVE_in_Your_Development_Toolkit"&gt;Session&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;That said, some super-useful features that make this not even just an editor but a whole IDE enhancer:&lt;/div&gt;&lt;div&gt;a) Go To Definition&lt;/div&gt;&lt;div&gt;b) Extract to Method - the very easy way to refactor highlighted code&lt;/div&gt;&lt;div&gt;c) BeautifyX&lt;/div&gt;&lt;div&gt;d) Object comparison&lt;/div&gt;&lt;div&gt;e) Design Time event handlers (auto-resizing for one)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you haven't tried it, there are some videos available but I'll also be doing some for an upcoming post.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Note: I spoke with Jim on a recent FoxShow &lt;a href="http://akselsoft.libsyn.com/index.php?post_id=620658"&gt;interview &lt;/a&gt;before this release came out.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; &lt;a href="http://vfpx.codeplex.com/wikipage?title=PEM%20Editor&amp;amp;referringTitle=Home"&gt;VFPX&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://technorati.com/tag/FoxPro" rel="tag"&gt;FoxPro&lt;/a&gt; &lt;a href="http://technorati.com/tag/VFP" rel="tag"&gt;VFP&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-8875939387141807856?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://vfpx.codeplex.com/wikipage?title=PEM%20Editor&amp;referringTitle=Home' title='PEM Editor 6 Now Released!'/><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/8875939387141807856/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=8875939387141807856' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/8875939387141807856'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/8875939387141807856'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2010/09/pem-editor-6-now-released.html' title='PEM Editor 6 Now Released!'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-8945260369089658114</id><published>2010-08-28T06:27:00.000-04:00</published><updated>2010-08-28T06:27:29.957-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='foxpro swfox'/><title type='text'>Another Reason to visit SW Fox: Software, Software, Software</title><content type='html'>Doug recently &lt;a href="http://doughennig.blogspot.com/2010/08/two-great-reasons-to-attend-southwest.html"&gt;linked &lt;/a&gt;to Kevin Ragsdale's &lt;a href="http://kevinragsdale.net/post/2010/08/12/Two-Great-Reasons-To-Attend-Southwest-Fox-This-Year.aspx"&gt;post &lt;/a&gt;about why people should attend Southwest Fox. If you've been listening to the &lt;a href="http://www.thefoxshow.com/"&gt;FoxShow&lt;/a&gt; recently, we've been interviewing speakers and there are more interviews to come in the next few weeks.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.aksel.com/"&gt;AKSEL &lt;/a&gt;is also proud to announce that we are offering two subscriptions to MSDN &lt;a href="http://www.microsoft.com/visualstudio/en-us/products/2010-editions/ultimate"&gt;Visual Studio 2010 Ultimate&lt;/a&gt; for attendees. If you don't already have MSDN, this is effectively your way of getting &lt;a href="http://www.microsoft.com/visualstudio/en-us/products#compareTable"&gt;every piece of business/developer related software&lt;/a&gt; from Microsoft.&lt;br /&gt;&lt;br /&gt;Rick, Doug and Tamar will be drawing for the lucky attendee at this year's conference - so you have to be there to win it.&lt;br /&gt;&lt;br /&gt;As a note, if you DO already have MSDN, Pay it forward and be sure to throw the subscription back into the hat for others who may not be getting it to get the chance to work with the latest development tools from Microsoft. Note: this subscription also includes great designer tools like Expression with Sketchflow which I &lt;a href="http://articles.sitepoint.com/article/rapid-prototyping-sketchflow"&gt;love &lt;/a&gt;for prototyping applications.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://technorati.com/tag/FoxPro" rel="tag"&gt;FoxPro&lt;/a&gt; &lt;a href="http://technorati.com/tag/VFP" rel="tag"&gt;VFP&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-8945260369089658114?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.swfox.net' title='Another Reason to visit SW Fox: Software, Software, Software'/><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/8945260369089658114/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=8945260369089658114' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/8945260369089658114'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/8945260369089658114'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2010/08/another-reason-to-visit-sw-fox-software.html' title='Another Reason to visit SW Fox: Software, Software, Software'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-112565920206598162</id><published>2010-08-18T08:16:00.000-04:00</published><updated>2010-08-18T08:16:37.258-04:00</updated><title type='text'>Simple But Useful VFP Tip: Remote Views with SQL Server varchar fields</title><content type='html'>&lt;i&gt;Note: This is a feature that's been in VFP for years - but I've often found that useful features often remain hidden until someone points them out. So I'm taking to finding my little VFP tips as I come across them and re-posting them here.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;I work in a variety of environments but one thing I always keep with me on my USB drive is VFP. Regardless of the data I have to work with, I always find that a task comes up that is infinitely easier in VFP. The funny thing is that other colleagues on a team who haven't been exposed to VFP are usually amazed at how quickly stuff can be done.&lt;br /&gt;&lt;br /&gt;Today, I was working with a SQL Server table and SSMS only lets you edit the first 200 rows on their own - otherwise you have to script it (or use another tool).&lt;br /&gt;&lt;br /&gt;For most of these systems, I typically create a VFP Database Container and then create remote views as necessary.&lt;br /&gt;&lt;br /&gt;Oftentimes, the problem is that when VFP comes across a varchar field that is longer than 254 characters, it immediately converts it into a memo field so I am left with something like this:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_-dNhuLbJ06Q/TGvLefvzDBI/AAAAAAAAAK0/zeeK-dseso4/s1600/Dictionary.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="83" src="http://4.bp.blogspot.com/_-dNhuLbJ06Q/TGvLefvzDBI/AAAAAAAAAK0/zeeK-dseso4/s320/Dictionary.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;This is annoying as the field I really need to modify is the DisplayText column or the Memo field and while I can open it, I would prefer to be lazy on this end.&lt;br /&gt;&lt;br /&gt;So in the View designer, highlight the desired field and choose Properties. Then change the Data Type of your output of choice. Since most of my text in this column will be less than 254 chars, I'm just making that change here.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_-dNhuLbJ06Q/TGvMqy8pgkI/AAAAAAAAAK4/roRBu36J0jc/s1600/DictionaryProps.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="183" src="http://2.bp.blogspot.com/_-dNhuLbJ06Q/TGvMqy8pgkI/AAAAAAAAAK4/roRBu36J0jc/s320/DictionaryProps.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Now, when I browse my remote table, I can see the contents of the field, make changes and they&amp;nbsp;propagate&amp;nbsp;right back to the SQL table.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_-dNhuLbJ06Q/TGvOyBIZDXI/AAAAAAAAAK8/AfTb5z4uIYQ/s1600/DictionaryAfter.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="218" src="http://3.bp.blogspot.com/_-dNhuLbJ06Q/TGvOyBIZDXI/AAAAAAAAAK8/AfTb5z4uIYQ/s320/DictionaryAfter.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Nice and simple.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://technorati.com/tag/FoxPro" rel="tag"&gt;FoxPro&lt;/a&gt; &lt;a href="http://technorati.com/tag/VFP" rel="tag"&gt;VFP&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-112565920206598162?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/112565920206598162/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=112565920206598162' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/112565920206598162'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/112565920206598162'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2010/08/simple-but-useful-vfp-tip-remote-views.html' title='Simple But Useful VFP Tip: Remote Views with SQL Server varchar fields'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_-dNhuLbJ06Q/TGvLefvzDBI/AAAAAAAAAK0/zeeK-dseso4/s72-c/Dictionary.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5492774.post-8576524104510520841</id><published>2010-08-04T05:18:00.000-04:00</published><updated>2010-08-04T05:18:24.330-04:00</updated><title type='text'>Turning on the Lightswitch</title><content type='html'>Microsoft announced a brand new tool for business users yesterday called "Lightswitch", which (according to the announcement) makes it easier to build business applications for the desktop or the cloud.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blogs.msdn.com/b/bethmassi/archive/2010/08/03/rapid-business-application-development-with-visual-studio-lightswitch.aspx"&gt;Beth Massi&lt;/a&gt; sounds super excited by it, describing it as a tool that makes it easier to build data-centric applications, something that FoxPro developers know a little about.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.zdnet.com/blog/microsoft/microsoft-kittyhawk-a-new-tool-to-help-non-programmers-build-net-business-apps/6853?utm_source=feedburner&amp;utm_medium=feed&amp;utm_campaign=Feed:+zdnet/microsoft+(ZDNet+All+About+Microsoft)"&gt;Mary Jo Foley&lt;/a&gt; discussed Lightswitch as a tool similar to FoxPro:&lt;br /&gt;" The idea, my sources say, is to bring the Fox/Access style of programming to .Net".&lt;br /&gt;&lt;br /&gt;I don't buy that or maybe more to the point, I wouldn't put FoxPro and Access in the same boat to begin with. &lt;br /&gt;&lt;br /&gt;This sounds more like an "Access" version of &lt;a href="http://office.microsoft.com/en-us/infopath/"&gt;InfoPath&lt;/a&gt; which lets you "build advanced forms for line of business applications". If you walk through the screen shots shown on Jason Zander's &lt;a href="http://blogs.msdn.com/b/jasonz/archive/2010/08/03/introducing-microsoft-visual-studio-lightswitch.aspx"&gt;intro &lt;/a&gt;page, it looks more like an application Setup Wizard or a "template-driven" application builder. &lt;br /&gt;&lt;br /&gt;I welcome all tools to make building applications easy for organizations - it may dilute what many call "programming" - but if it solves an immediate business need, great.&lt;br /&gt;&lt;br /&gt;However, remember all those efforts IT and centralized development shops have made to centralize development efforts, ensuring standards, etc? &lt;br /&gt;&lt;br /&gt;Unless those standards were Silverlight, WCF and Entity framework, you've just thrown another tool that IT will hate into the mix.&lt;br /&gt;&lt;br /&gt;From the intro page&lt;br /&gt;"LightSwitch applications themselves are robust and are built on top of .NET technologies including Entities and WCF, the same technologies you already choose from when you write your apps today.  Because the apps are built on top of .NET with VS you will be able to open your LightSwitch applications in the full version of Visual Studio and do advanced extensions."&lt;br /&gt;&lt;br /&gt;Those key .Net technologies are VB or C#. I haven't seen what the final application and source looks like but let's face it - Lightswitch is a template-driven application builder for Visual Studio. &lt;br /&gt;&lt;br /&gt;Some key points that make Lightswitch sound attractive:&lt;br /&gt; - any database (including SQL, Sharepoint and Azure) &lt;br /&gt; - can build desktop, WCF or browser-based applications&lt;br /&gt; - extensible templates&lt;br /&gt;&lt;br /&gt;Hank Fay jumped in with his &lt;a href="http://blog.prosysplus.com/2010/08/lightswitch-or-bait-and-switch.html"&gt;analysis &lt;/a&gt;almost immediately, calling it a Bait &amp; Switch, calling it an insult for domain-expert programmers:&lt;br /&gt;"I have consulted with, and worked for, non-professional programmers for 12 years now, and if anything, the programs they create are more complex, in terms of data needs and UI needs, than what professional developers create.  Oh, for sure, professional programmers can write complex algorithms, or wonderful feats of asynchronization communication over barriers of distance, protocol, and so forth.  But when it comes to the business-end of the horse, one has to know the domain to understand the complexity, and that’s where the domain experts shine."&lt;br /&gt;&lt;br /&gt;As someone who knows how important a good consultant is to moving an application along the right path, but I have also seen consultants or "experts" completely destroy a business opportunity, by either taking too long or not understanding the right concepts.&lt;br /&gt;&lt;br /&gt;My big concern here is that Microsoft has added once again to the number of tools a business can use to extend or build applications with. You need to track something, do you use:&lt;br /&gt; - Visual Studio (WinForms)&lt;br /&gt; - Visual Studio (ASP.Net)&lt;br /&gt; - SharePoint&lt;br /&gt; - Dynamics&lt;br /&gt; - Access&lt;br /&gt; - Infopath&lt;br /&gt; - LightSwitch&lt;br /&gt; - Visual Studio (Office Extensions)&lt;br /&gt; - Web Matrix&lt;br /&gt; - MVC&lt;br /&gt; - WPF/Silverlight&lt;br /&gt;&lt;br /&gt;I know that LightSwitch is an extension from Visual Studio but promoting it as a separate product can make this tricky to decide.&lt;br /&gt;&lt;br /&gt;Yes, each one has certain things that it does well - but remember when Microsoft's own teams had a rough time deciding between tools when it was just VS, Visual FoxPro and Access? Imagine what the discussion will sound like now.&lt;br /&gt;&lt;br /&gt;As many developers now focus on development patterns such as MVC (MVP, MVVM, etc) to build best-of-breed applications, Lightswitch removes that process. As I noted above, until we see the actual code created, it's hard to judge how successful it will be.&lt;br /&gt;&lt;br /&gt;I'm a big proponent for the right tool for the right job - but there isn't a lot of guidance as to where Lightswitch fits. That's going to be the big challenge.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-8576524104510520841?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/8576524104510520841/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=8576524104510520841' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/8576524104510520841'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/8576524104510520841'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2010/08/turning-on-lightswitch.html' title='Turning on the Lightswitch'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-3333631359413875185</id><published>2010-08-04T04:24:00.000-04:00</published><updated>2010-08-04T04:24:18.898-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='foxpro swfox'/><title type='text'>SW Fox 2010 Location Changes!</title><content type='html'>I received an email last night from Rick Schummer, announcing a fairly big change for Southwest Fox 2010 - it's no longer in Mesa, Arizona - it's in Gilbert. &lt;br /&gt;&lt;br /&gt;Previously made reservations at the Arizona Golf Resort have been cancelled - instead, the conference will be at the Legado Hotel and SanTan Elegante Conference and Reception Center in nearby Gilbert.&lt;br /&gt;&lt;br /&gt;The new &lt;a href="http://www.hotelsgilbertarizona.com/"&gt;location &lt;/a&gt;looks amazing. &lt;br /&gt;&lt;br /&gt;Use the code "SWFox" when registering.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.swfox.net"&gt;Southwest Fox&lt;/a&gt; is the annual gathering of FoxPro developers with great sessions on development tools, techniques and practices.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-3333631359413875185?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/3333631359413875185/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=3333631359413875185' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/3333631359413875185'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/3333631359413875185'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2010/08/sw-fox-2010-location-changes.html' title='SW Fox 2010 Location Changes!'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-706353558637763678</id><published>2010-07-20T04:45:00.004-04:00</published><updated>2010-07-20T04:49:32.406-04:00</updated><title type='text'>Google promotes travel by kayak</title><content type='html'>I was planning a trip and looked up some directions in Google. Unfortunately, Google Maps went the wrong way and figured I wanted to go to China.&lt;br /&gt;&lt;br /&gt;That wasn't a big problem until I read the directions.&lt;br /&gt;Check it out below:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_-dNhuLbJ06Q/TEVik3qyqHI/AAAAAAAAAKk/dCb4ki_SjHs/s1600/Kayak_across_the_Pacific.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 141px;" src="http://1.bp.blogspot.com/_-dNhuLbJ06Q/TEVik3qyqHI/AAAAAAAAAKk/dCb4ki_SjHs/s320/Kayak_across_the_Pacific.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5495907305833801842" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I had to double-check my settings. I was looking for car directions (not walking) but still, instead of flying or taking a cruise 2700 miles, Google thought I could travel best by kayak across the Pacific Ocean.&lt;br /&gt;&lt;br /&gt;Priceless.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-706353558637763678?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/706353558637763678/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=706353558637763678' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/706353558637763678'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/706353558637763678'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2010/07/google-promotes-travel-by-kayak.html' title='Google promotes travel by kayak'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_-dNhuLbJ06Q/TEVik3qyqHI/AAAAAAAAAKk/dCb4ki_SjHs/s72-c/Kayak_across_the_Pacific.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5492774.post-6890100718795147261</id><published>2010-06-26T07:49:00.000-04:00</published><updated>2010-06-26T07:49:05.238-04:00</updated><title type='text'>Ken Levy on Servoy in Europe</title><content type='html'>Sounds like Ken Levy is really getting big on Servoy and convincing VFP developers to look into it. Fresh after his Servoy &lt;a href="http://akselsoft.blogspot.com/2010/06/ken-levy-webinar-servoy-for-visual.html"&gt;webinar&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Details for a special seminar on July 5th in the Amersfoot, Netherlands are available &lt;a href="http://www.servoy.com/foxproseminar"&gt;here&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://weblogs.foxite.com/ericdendoop/archive/2010/06/24/12696.aspx"&gt;Eric den Doop : VFP Developers from Europe are invited at 5 july 2010 at the Servoy HQ in Amersfoort - Netherlands&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://technorati.com/tag/FoxPro" rel="tag"&gt;FoxPro&lt;/a&gt; &lt;a href="http://technorati.com/tag/VFP" rel="tag"&gt;VFP&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-6890100718795147261?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://weblogs.foxite.com/ericdendoop/archive/2010/06/24/12696.aspx' title='Ken Levy on Servoy in Europe'/><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/6890100718795147261/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=6890100718795147261' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/6890100718795147261'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/6890100718795147261'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2010/06/ken-levy-on-servoy-in-europe.html' title='Ken Levy on Servoy in Europe'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-7552385375286582304</id><published>2010-06-24T06:53:00.001-04:00</published><updated>2010-08-08T05:37:22.112-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mind-mapping'/><category scheme='http://www.blogger.com/atom/ns#' term='ithoughts'/><category scheme='http://www.blogger.com/atom/ns#' term='dropbox'/><title type='text'>Mindmapping with iThoughts, MindManager and Box.Net / DropBox</title><content type='html'>&lt;span style="font-style:italic;"&gt;I love it when I find an implementation of technology that has likely existed for a few years but works (almost) seamlessly the way I need it to. I may have missed it the first time out but it's still important to let people know how they might find it useful.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.ithoughts.co.uk/iThoughts/Welcome.html"&gt;iPhone Mindmapping with iThoughts&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I've &lt;a href="http://akselsoft.blogspot.com/2007/10/mind42-mindjet-should-get-worried.html"&gt;spoken &lt;/a&gt;about Mind-mapping and &lt;a href="http://akselsoft.blogspot.com/2007/05/managing-project-specifications-with.html"&gt;MindJet &lt;/a&gt;many times before.&lt;br /&gt;&lt;br /&gt;MindManager is a great tool but when I'm in a short client meeting, I don't always like to pull out my notebook. For the past year, I've been using iThoughts on my iPhone and really enjoying how well it integrates with MindManager, using its innovative "transfer" capability (it creates a web server on a Wifi connection and gives you a web page to upload and download files). &lt;br /&gt;&lt;br /&gt;MindJet's iPhone interface is remarkably similar to the iThoughts interface - almost to the point of it seeming like a direct copy or re-licensed version. &lt;br /&gt;&lt;br /&gt;However, when my iPhone was upgraded to iOS 4.0, it also upgraded all of my applications, including iThoughts to version 3.0. The refreshed interface is wonderful - including in-line editing and more.&lt;br /&gt;&lt;br /&gt;What impresses me the most is the integration with &lt;a href="http://www.box.net"&gt;Box.Net&lt;/a&gt;, which has been around for a while. I created a free account and uploaded some of my MindManager maps. I then opened my files in iThoughts on my iPhone (no conversion necessary), made changes and synchronized. The files are all updated. I could then make changes in MindManager and sync them directly over the web.&lt;br /&gt;&lt;br /&gt;The downside is that I can't synchronize a Windows folder with Box.Net (or if I can , please let me know how). &lt;a href="http://www.mesh.com/"&gt;Mesh &lt;/a&gt;does this via a desktop client. If I could do that, then the circle would be complete. I could modify my map on my notebook and it would sync transparently.&lt;br /&gt;&lt;br /&gt;There are other alternatives - I could use a web-based MindMapping tool (such as &lt;a href="http://mind42.com/"&gt;Mind42&lt;/a&gt;), but some of these use Flash (and thus don't work on the iPhone) or the web implementation just doesn't have all the features or are too slow. &lt;br /&gt;&lt;br /&gt;While web apps may be the future, but until they get to the point where they can match the features and functionality of the dedicated platform apps, we will need tools like box.net and others, and thankfully, they are there to fill that void.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update&lt;/b&gt;: although I had heard about it for a few years, I hadn't tried DropBox - a direct competitor to Box.net. While Box.net offers some more advanced features, for what I need, DropBox is the better solution. Thankfully, the latest version of iThoughts supports both. The real benefit of DropBox is that it *does* provide folder syncing (even though it is its "own" folder - My DropBox). &lt;br /&gt;&lt;br /&gt;The sync between DropBox and iThoughts is amazing. I updated a Map on my laptop and then sync'd one minute later on my iPhone. The changes were there. I then did the same on my Iphone - after syncing through iThoughts, the change was there on the laptop. No time lag whatsoever. That's perfect for what I need.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-7552385375286582304?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.ithoughts.co.uk/iThoughts/Welcome.html' title='Mindmapping with iThoughts, MindManager and Box.Net / DropBox'/><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/7552385375286582304/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=7552385375286582304' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/7552385375286582304'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/7552385375286582304'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2010/06/mindmapping-with-ithoughts-mindmanager.html' title='Mindmapping with iThoughts, MindManager and Box.Net / DropBox'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-5660139992270922643</id><published>2010-06-22T13:27:00.003-04:00</published><updated>2010-06-22T13:38:02.228-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='LINQ'/><title type='text'>LINQ, Reserved Names and .Net</title><content type='html'>Here's another good reason not to use reserved names.&lt;br /&gt;&lt;br /&gt;I'm working on a LINQ project with a series of tables that manage user roles. As a result, I have table names like Systems, Roles and Users. &lt;br /&gt;My trouble started when I would add the objects to the Designer, hit Save and then suddenly Visual Studio would say things like&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;"System.Data.Linq.Mapping.DatabaseAttribute is not defined"&lt;br /&gt;or &lt;br /&gt;"System.Nullable is not defined"&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;In short, stopping me dead in my tracks. Now that I look back, I don't know why I didn't see the reason earlier.&lt;br /&gt;&lt;br /&gt;When using the Object Relational Designer, Visual Studio wants to be smart and changes any words that are plural to singular so they make more sense when dealing with data.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;That way, your code looks like&lt;br /&gt;&lt;br /&gt;oUser = New User&lt;br /&gt;oUser.UserName = "John"&lt;br /&gt;&lt;br /&gt;instead of&lt;br /&gt;oUser = New Users&lt;br /&gt;etc&lt;br /&gt;&lt;br /&gt;This is really nice because it does make the code a little more legible except in this situation: &lt;br /&gt;&lt;br /&gt;Plural (singular)&lt;br /&gt;Users (User)&lt;br /&gt;Roles (Role)&lt;br /&gt;UserRoles (UserRole)&lt;br /&gt;Systems (System)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;See the gotcha? Visual Studio translated the "Systems" table into a "System" object which immediately negated all of the main namespaces in the project.&lt;br /&gt;&lt;br /&gt;The renaming feature for the objects in LINQ-to-SQL is great - but be warned, when you start getting errors like this, take a look at your source tables.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-5660139992270922643?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/5660139992270922643/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=5660139992270922643' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/5660139992270922643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/5660139992270922643'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2010/06/linq-reserved-names-and-net.html' title='LINQ, Reserved Names and .Net'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-6812805955527501758</id><published>2010-06-18T06:43:00.012-04:00</published><updated>2010-06-22T14:25:47.458-04:00</updated><title type='text'>Intense Development: Why We Need Passionate Programmers</title><content type='html'>At a conference a few years back, I formally met someone who I had been speaking with online for a few years. One of his comments was "wow, I didn't realize you were this intense". At the time, I was surprised as while enthusiastic about the conference, I didn't think I was being that noticeable. But I will admit - I am very intense or passionate about the things I do. I think that's very important to the developer and consulting world and far too often, it's missing.&lt;br /&gt;&lt;br /&gt;Programming is an analytical and (supposedly) fact-based process, which is why most programmers tend to be left-brained. This discernment is more&lt;a href="http://en.wikipedia.org/wiki/Lateralization_of_brain_function"&gt; myth-based&lt;/a&gt; (as logical sciences such as maths are handled by both) but more creative or emotional types are said to be "right-brainers".&lt;br /&gt;&lt;br /&gt;Today, when you need both programmers and designers rolled into one (or at least combined in a single project), this can get tricky. &lt;br /&gt;&lt;br /&gt;As a consultant, I deal with a number of clients. Some I have had the pleasure of working with for years, while others have been shorter-lived. However, I always try to find something in their work that excites me. Yes, I'm there as a "contractor", a repairman or mercenary of sorts - but without that excitement or commitment, why would I care about doing a good job? &lt;br /&gt;&lt;br /&gt;There are arguments for why you don't want too much enthusiasm. Being more pragmatic and analytical, you may tend NOT to make mistakes (ask any programmer after a late night session if they think their code is bug free). But you may also alienate the client or worse yourself. In programming, it's very easy to become overwhelmed with the possibilities for failure and paint yourself into a corner where all you deliver is the least-risky, least-powerful piece. That's not to say that it can't be usable but it may not deliver on expectation. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Sidebar:&lt;br /&gt;(there's a reason why Apple tends to either delay products or take away features - when they deliver something that they describe as powerful or impressive or "magical", they truly believe it themselves).&lt;br /&gt;&lt;br /&gt;If you haven't seen Steve Jobs' interview at D8, watch it. Forgetting all about the conversation about AT&amp;T, sex, Flash and Google, there's a very interesting part about what he found when he returned to Apple 12 years ago. To summarize, he found a lot of amazing and skilled developers and he asked them "why are you still here?". The common response was that they had "six-color blood", a term that throws back to the second Apple &lt;a href="http://creativebits.org/interview/interview_rob_janoff_designer_apple_logo"&gt;logo&lt;/a&gt;. Some might say that kind of passion is more of a tear-jerky look back at history, although we have certainly seen what Apple has done since then. &lt;br /&gt;&lt;br /&gt;End of Sidebar&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I would rather have a passionate programmer or consultant than anything else. When I first meet a consultant on a job, I ask what areas of work do they "love". When asked, I'm always pretty much a "data-head" - I love data and turning it into information. Others love pure coding; others refactoring, etc - why someone who loves one area would bother taking on the responsibility of another area distresses me - because it means that there is one less person who cares about the project.&lt;br /&gt;&lt;br /&gt;Even in a hard economy, such as this one, where people are struggling to find work, and perhaps even more importantly in such an economy, is passion necessary. You have to find a job, you have to get work - if you get it, at least be excited or passionate about it. If you don't want to do it, then get out of the way. Recently, I started at a client site with a colleague of mine. While I was consulting directly for myself, he was consulting through a parent company. While his other workload was hard, he immediately saw that he couldn't do a good job at the client site because he just wasn't interested in delivering the type of solution they wanted. He left the job within two weeks. The client may have lost money during those two weeks - but at least they weren't stuck with someone who didn't care about what they were delivering.&lt;br /&gt;&lt;br /&gt;Early in my career, I was at a company working with a team of about 4 or 5 other guys and while I was likely third in terms of being there, I was by no means the most computer-educated or technically knowledgeable. But we all had our areas that we had to work on, and there was one section that was taking longer than the others. The guy working on it had his masters in Computer engineering but just wasn't into it. He would stare at the screen and it just didn't make sense, like the Matrix falling down in front of him. What was a relatively simple task was not getting completed. At one point, I even said "I can't think for you". The project wasn't something that I had started but it was the job at hand - it had to get done and I was intent on getting it done. I was, coming back to my first story, "intense". &lt;br /&gt;&lt;br /&gt;I refuse to apologize for my intensity or passion on projects. I think it does a disservice to the client and to the project itself. Yes, it might be a small project in the grand scheme of things (and what isn't - unless you're really changing the world), but it's still *your* project or *your* client. If you don't care, get out of the way and let someone who does take that role.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-6812805955527501758?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/6812805955527501758/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=6812805955527501758' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/6812805955527501758'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/6812805955527501758'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2010/06/intense-development-why-we-need.html' title='Intense Development: Why We Need Passionate Programmers'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-1251848669002265094</id><published>2010-06-09T14:37:00.000-04:00</published><updated>2010-06-09T14:37:10.452-04:00</updated><title type='text'>Ken Levy Webinar: Servoy for Visual FoxPro Developers</title><content type='html'>For those who didn't receive the invite, Ken Levy is doing a session on how FoxPro developers can work with Servoy, a java-based development tool.&lt;br /&gt;&lt;br /&gt;You can register &lt;a href="https://www1.gotomeeting.com/register/807686848"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;There's also an intro screencast you can see &lt;a href="http://servoy.com/foxpro"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I looked at Servoy a few years back and it looked pretty cool for development. As Ken notes in his email "Servoy is a very community oriented product with passionate users reminding me of the enthusiastic FoxPro community. " Should make for an interesting demo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-1251848669002265094?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='https://mail.google.com/mail/?shva=1#inbox/1291deaf31a9977f' title='Ken Levy Webinar: Servoy for Visual FoxPro Developers'/><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/1251848669002265094/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=1251848669002265094' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/1251848669002265094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/1251848669002265094'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2010/06/ken-levy-webinar-servoy-for-visual.html' title='Ken Levy Webinar: Servoy for Visual FoxPro Developers'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-4989796627062608749</id><published>2010-06-09T07:26:00.001-04:00</published><updated>2010-06-09T07:36:41.087-04:00</updated><title type='text'>WPF: Bubbling Events from User Controls</title><content type='html'>While building a WPF application, I ran into a scenario that immediately called for a bubble event. While the basic concept behind it is pretty straight forward and there are a &lt;a href="http://blogs.msdn.com/b/dancre/archive/2006/03/04/543854.aspx"&gt;number &lt;/a&gt;of &lt;a href="http://serialseb.blogspot.com/2007/01/attached-events-by-example-adding.html"&gt;examples &lt;/a&gt;to &lt;a href="http://msdn.microsoft.com/en-us/library/ms771602(v=VS.90).aspx"&gt;show &lt;/a&gt;it, &lt;br /&gt;when I put it all into practice, it didn't work. I got it working and it's just a little tweak but hopefully no one will spend the time I did looking for it.&lt;br /&gt;&lt;br /&gt;Bubbled events do exactly as they sound: the event fires at a very low level and then continues up the application hierarchy waiting to be "handled". &lt;br /&gt;&lt;br /&gt;In a traditional application, you might have a method called cmdSave_Click which handles the Click event for the Save button.&lt;br /&gt;&lt;br /&gt;A bubbled event is more akin to button groups in VFP, where you may have four buttons and when one is clicked, the code to actually handle it is managed in the button group's method rather than the individual button click.&lt;br /&gt;&lt;br /&gt;Take that concept and expand on it further. A real-world example that I remember Steve Black once using is Help. When user hits F1, ideally the user gets help for the one object or dialog they are on. Failing that, they should get help for the basic page they are on, Failing that, they finally get help on an entire application. The Help bubbles until it is handled.&lt;br /&gt;&lt;br /&gt;Not a very technical description but hopefully it works for you. &lt;br /&gt;&lt;br /&gt;In WPF, they have &lt;a href="http://msdn.microsoft.com/en-us/library/ms742806.aspx"&gt;routed events&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/en-us/library/bb613550.aspx"&gt;attached &lt;/a&gt;events, which is when some other function or method handles another event. This is similar to a VFP BINDEVENT(), where you write a function to manage another object's event. The difference here is that you can actually create the event in the WPF component.&lt;br /&gt;&lt;br /&gt;So in my scenario, I've created a Navigation "pane" that appears on the left side of the application. When the user clicks an item on the Pane, the rest of the application reacts to it, going to a particular report or page, or whatever. This pane is actually a WPF user control. There are other components (like menus) that do the same thing so the logic to actually GO to another page is at the application level. In good form, of course, the Navigation pane doesn't know that, it simply knows that when the user clicks an item on it, it executes an event. &lt;br /&gt;&lt;br /&gt;The samples you sometimes see are based on code being directly in XAML (note: the "uc:" simply points to the user control's namespace) :&lt;br /&gt;&lt;br /&gt;(note for VFP users: the "Grid" referenced here is for the actual page layout - not the traditional data grid you may be used to)&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;Grid uc:UserControl.CustomEvent=&amp;quot;ApplicationHandlerCode&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;uc:UserControl&amp;gt;&amp;lt;/uc:UserControl&amp;gt;&lt;br /&gt;&amp;lt;/Grid&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;In the above code, the User control has defined an event named CustomEvent. When the user control's CustomEvent is fired (which may be from a button or another object in the user control), the statement in the Grid element tells it to execute the method ApplicationHandlerCode, which would reside in the main application (or the control where the Grid was placed).&lt;br /&gt;&lt;br /&gt;The code here is in VB - primarily because there are tons of C# examples and oh yeah, my client requires VB.&lt;br /&gt;&lt;br /&gt;So using my navigation pane as the example, my user control was defined as:&lt;br /&gt;&lt;code&gt;Class navPane&lt;br /&gt;    Public Shared ReadOnly NavigateEvent As  _&lt;br /&gt;        RoutedEvent = EventManager.RegisterRoutedEvent("CustomClick", RoutingStrategy.Bubble, GetType(RoutedEventHandler), GetType(navPane))&lt;br /&gt;&lt;br /&gt; Public Sub New()&lt;br /&gt;&lt;br /&gt;        ' This call is required by the Windows Form Designer.&lt;br /&gt;        InitializeComponent()&lt;br /&gt;&lt;br /&gt;        Me.Button1.AddHandler(Button.ClickEvent, New RoutedEventHandler(AddressOf Button1_Click))&lt;br /&gt;&lt;br /&gt;        &lt;br /&gt;    End Sub&lt;br /&gt;Public Custom Event CustomClick As RoutedEventHandler&lt;br /&gt;&lt;br /&gt;        AddHandler(ByVal value As RoutedEventHandler)&lt;br /&gt;            Me.AddHandler(NavigateEvent, value)&lt;br /&gt;        End AddHandler&lt;br /&gt;&lt;br /&gt;        RemoveHandler(ByVal value As RoutedEventHandler)&lt;br /&gt;            Me.RemoveHandler(NavigateEvent, value)&lt;br /&gt;        End RemoveHandler&lt;br /&gt;&lt;br /&gt;        RaiseEvent(ByVal sender As Object, ByVal e As RoutedEventArgs)&lt;br /&gt;&lt;br /&gt;            Dim newEventArgs As New RoutedEventArgs(navPane.NavigateEvent)&lt;br /&gt;            Me.RaiseEvent(newEventArgs)&lt;br /&gt;&lt;br /&gt;        End RaiseEvent&lt;br /&gt;    End Event&lt;br /&gt;&lt;br /&gt;    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)&lt;br /&gt;        RaiseEvent CustomClick(sender, e)&lt;br /&gt;    End Sub&lt;br /&gt;End Class&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The part in the RaiseEvent is the most crucial. When looking at other code &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.routedeventargs.aspx"&gt;samples&lt;/a&gt;, you will often see:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;RaiseEvent(ByVal sender As Object, ByVal e As RoutedEventArgs)&lt;br /&gt;            Me.RaiseEvent(e)&lt;br /&gt;End RaiseEvent&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;For user controls, this does &lt;span style="font-weight:bold;"&gt;NOT&lt;/span&gt; work. You have to explicitly create a new routedeventargs instance.&lt;br /&gt;&lt;br /&gt;       &lt;code&gt; RaiseEvent(ByVal sender As Object, ByVal e As RoutedEventArgs)&lt;br /&gt;&lt;br /&gt;            Dim newEventArgs As New RoutedEventArgs(navPane.NavigateEvent)&lt;br /&gt;            Me.RaiseEvent(newEventArgs)&lt;br /&gt;&lt;br /&gt;        End RaiseEvent&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Why is this? I'm not quite sure - it seems to me that the RaiseEvent should be able to take the passed arguments but it can't. Go figure.&lt;br /&gt;&lt;br /&gt;At any rate, in my main application, I then created my instance (dynamically) of the NavPanel and added my handler directly to it.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Dim pnlNav As New ControlLibrary.navPane&lt;br /&gt;&lt;br /&gt;pnlNav.AddHandler(pnlNav.NavigateEvent, New RoutedEventHandler(AddressOf GotoPage), True)&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Where GotoPage was my method that handled the events.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Private Sub GotoPage(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)&lt;br /&gt;        MsgBox("Running goto page")&lt;br /&gt;        Window1.txbTitle.Text = "Navigating"&lt;br /&gt;    End Sub&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;As can be seen from my msdn forum request &lt;br /&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/9ba780ce-e805-4315-aece-27e8fe406671?prof=required"&gt;Bubbled Event from User Control Library Not Firing&lt;/a&gt;, the problem wasn't obvious but the resolution works perfectly.&lt;br /&gt;&lt;br /&gt;Once again, the key to making it work was simply creating a new RoutedEventArgs and passing THAT. If I wanted to pass specific details, I would add those to my RoutedEventArgs.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Side Note&lt;/span&gt;&lt;br /&gt;Now, obviously most of this was done with code. Here's one &lt;a href="http://www.hardcodet.net/2009/05/trigger-wpf-animations-through-attached-events"&gt;example&lt;/a&gt; of doing something similar but using Storyboard events from Expression Blend and code. The secret behind this is that the description of the routed event is handled as a trigger:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;lt;UserControl.Triggers&amp;gt;&lt;br /&gt;  &amp;lt;EventTrigger RoutedEvent=&amp;quot;att:Monitor.Alarm&amp;quot;&amp;gt;&lt;br /&gt;   &amp;lt;BeginStoryboard Storyboard=&amp;quot;{StaticResource ShowWarning}&amp;quot;/&amp;gt;&lt;br /&gt;  &amp;lt;/EventTrigger&amp;gt;&lt;br /&gt; &amp;lt;/UserControl.Triggers&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;And this trigger runs a StoryBoard which does animation, all from within the XAML. Very cool stuff.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-4989796627062608749?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/4989796627062608749/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=4989796627062608749' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/4989796627062608749'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/4989796627062608749'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2010/06/wpf-bubbling-events-from-user-controls.html' title='WPF: Bubbling Events from User Controls'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-6912845549582804121</id><published>2010-06-02T07:06:00.001-04:00</published><updated>2010-06-02T07:08:14.497-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FoxPro'/><category scheme='http://www.blogger.com/atom/ns#' term='vfp foxpro'/><category scheme='http://www.blogger.com/atom/ns#' term='foxshow'/><category scheme='http://www.blogger.com/atom/ns#' term='vfpfoxpro vfpx'/><title type='text'>New FoxShow: Jim Nelson Interview</title><content type='html'>In the latest episode of the &lt;a href="http://www.thefoxshow.com"&gt;FoxShow&lt;/a&gt;, we feature an interview with Jim Nelson, who is the main project lead on the PEM Editor project at &lt;a href="http://vfpx.codeplex.com"&gt;VFPX&lt;/a&gt;, on his history with development and how he comes up with some of the ideas he's been putting into PEM Editor. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://technorati.com/tag/FoxPro" rel="tag"&gt;FoxPro&lt;/a&gt; &lt;a href="http://technorati.com/tag/VFP" rel="tag"&gt;VFP&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-6912845549582804121?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://akselsoft.libsyn.com/index.php?post_id=620658' title='New FoxShow: Jim Nelson Interview'/><link rel='enclosure' type='MP3' href='http://media.libsyn.com/media/akselsoft/FoxShow64.mp3' length='0'/><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/6912845549582804121/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=6912845549582804121' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/6912845549582804121'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/6912845549582804121'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2010/06/new-foxshow-jim-nelson-interview.html' title='New FoxShow: Jim Nelson Interview'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-3785783772652378436</id><published>2010-05-15T06:22:00.000-04:00</published><updated>2010-05-15T06:22:55.038-04:00</updated><title type='text'>Looking for Data: A cool framework class</title><content type='html'>As the article below notes, almost every application needs data searching. In Visual FoxPro, the first time out, many developers use a browse or a grid.&lt;br /&gt;&lt;br /&gt;Or a user enters a value into a text box and the code behind it might look like:&lt;br /&gt;&lt;br /&gt;IF SEEK(tcValue)&lt;br /&gt; DO FORM details&lt;br /&gt;ENDIF&lt;br /&gt;&lt;br /&gt;But from &lt;a href="http://www.foxite.com"&gt;Foxite &lt;/a&gt;and Jijo Pappachan, comes a very cool and easy to use Lookup class.&lt;br /&gt;&lt;br /&gt;The class handles both SQL and VFP backends with ease, allowing for smart optimization.&lt;br /&gt;&lt;br /&gt;Of course, if you're already using a framework, you may already have something like this - but this is something that should certainly be put into an updated FFC on &lt;a href="http://vfpx.codeplex.com"&gt;VFPX&lt;/a&gt;. If you've ever used the existing FoxPro Foundation Classes search tool, it's pretty limited.&lt;br /&gt;&lt;br /&gt;This one is definitely more in line with how applications are looking these days. &lt;br /&gt;&lt;br /&gt;The sample pages don't work quite right and it needs a few tweaks to handle large field names but it can be easily called manually.&lt;br /&gt;&lt;br /&gt;lo = NEWOBJECT("lookupdata","lookup")&lt;br /&gt;USE Contacts&lt;br /&gt;lo.SelectCmd="select fullname,ctitle,firstname from contacts"&lt;br /&gt;lo.ShowLookup()&lt;br /&gt;&lt;br /&gt;It attempts to put a tag name and since tag names have a limit to their field space, it may error out but otherwise it looks quite good.&lt;br /&gt;&lt;br /&gt;Check it out below:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://weblogs.foxite.com/jijo_pappachan/archive/2010/05/12/10881.aspx"&gt;jijo pappachan : DataLookup - A framework class&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-3785783772652378436?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://weblogs.foxite.com/jijo_pappachan/archive/2010/05/12/10881.aspx' title='Looking for Data: A cool framework class'/><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/3785783772652378436/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=3785783772652378436' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/3785783772652378436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/3785783772652378436'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2010/05/looking-for-data-cool-framework-class.html' title='Looking for Data: A cool framework class'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-4165095576177399058</id><published>2010-05-14T09:43:00.000-04:00</published><updated>2010-05-14T09:43:05.779-04:00</updated><title type='text'>New FoxShow: FoxPro and Silverlight</title><content type='html'>There's a new &lt;a href="http://akselsoft.libsyn.com/index.php?post_id=614815"&gt;FoxShow&lt;/a&gt; episode featuring an interview with Uwe Habermann about moving from Visual FoxPro into Silverlight. This is a preview of his upcoming &lt;a href="http://www.swfox.net"&gt;Southwest Fox&lt;/a&gt; session. You can download it directly or subscribe in iTunes.&lt;br /&gt;&lt;br /&gt;Enjoy!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://technorati.com/tag/FoxPro" rel="tag"&gt;FoxPro&lt;/a&gt; &lt;a href="http://technorati.com/tag/VFP" rel="tag"&gt;VFP&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-4165095576177399058?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://akselsoft.libsyn.com/index.php?post_id=614815' title='New FoxShow: FoxPro and Silverlight'/><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/4165095576177399058/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=4165095576177399058' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/4165095576177399058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/4165095576177399058'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2010/05/new-foxshow-foxpro-and-silverlight.html' title='New FoxShow: FoxPro and Silverlight'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-7637391910147722647</id><published>2010-05-07T05:03:00.004-04:00</published><updated>2010-05-07T05:23:08.981-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='foxpro development'/><category scheme='http://www.blogger.com/atom/ns#' term='vfpfoxpro vfpx'/><title type='text'>VFPX: New PEM Editor Beta Now Available</title><content type='html'>If you haven't downloaded the latest &lt;a href="http://vfpx.codeplex.com/wikipage?title=PEM%20Editor%206%20Beta&amp;referringTitle=Home"&gt;PEM Editor&lt;/a&gt; from &lt;a href="http://vfpx.codeplex.com"&gt;VFPX&lt;/a&gt;, you're definitely missing out.&lt;br /&gt;&lt;br /&gt;Instead of the traditional tiny dialog to add properties and methods, the new PEM Editor gives you literally everything at your fingertips. See here:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_-dNhuLbJ06Q/S-PYiQlRKUI/AAAAAAAAAKc/pNoBiiU780o/s1600/pemeditor.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 202px;" src="http://4.bp.blogspot.com/_-dNhuLbJ06Q/S-PYiQlRKUI/AAAAAAAAAKc/pNoBiiU780o/s320/pemeditor.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5468452455636347202" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;It's not just a good replacement for adding, it's also a fairly good replacement for the Property sheet as well. It's also starting to add features that VS developers have had in their IDE but VFP never got them.&lt;br /&gt;&lt;br /&gt;Some immediate highlights (not just from this release but overall):&lt;br /&gt;a) ability to mark properties as favorites globally (so any instance of those properties regardless of form becomes a favorite)&lt;br /&gt;b) Dockable and resizeable&lt;br /&gt;c) highlight inherited and custom code and properties with colors&lt;br /&gt;d) Go To Definition &lt;br /&gt;e) Extract to Method - kind of like instant refactoring&lt;br /&gt;&lt;br /&gt;Not only that but PEMEditor features the funky VFPX-Powered logo, which I think needs to become standard for all VFPX IDE controls.&lt;br /&gt;&lt;br /&gt;Great job!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://technorati.com/tag/FoxPro" rel="tag"&gt;FoxPro&lt;/a&gt; &lt;a href="http://technorati.com/tag/VFP" rel="tag"&gt;VFP&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-7637391910147722647?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/7637391910147722647/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=7637391910147722647' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/7637391910147722647'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/7637391910147722647'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2010/05/vfpx-new-pem-editor-beta-now-available.html' title='VFPX: New PEM Editor Beta Now Available'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_-dNhuLbJ06Q/S-PYiQlRKUI/AAAAAAAAAKc/pNoBiiU780o/s72-c/pemeditor.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5492774.post-2472077072004502751</id><published>2010-05-06T07:34:00.006-04:00</published><updated>2010-05-27T10:08:55.698-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='scripts'/><category scheme='http://www.blogger.com/atom/ns#' term='T-SQL'/><title type='text'>SQL Scripts: Record Counts</title><content type='html'>As I'm populating a sample set of data in a SQL Server project, I needed a quick way of identifying what tables I had missed.&lt;br /&gt;&lt;br /&gt;Here's what I came up with (but a much faster way is noted below using the sys tables).&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;--- Identifies zero record count tables&lt;br /&gt;declare @vtb varchar(200)&lt;br /&gt;declare @vsc varchar(200)&lt;br /&gt;&lt;br /&gt;declare x cursor for select table_schema,table_name from information_schema.tables&lt;br /&gt;open x&lt;br /&gt;fetch next from x into @vsc,@vtb&lt;br /&gt;declare @vcnt int&lt;br /&gt;print 'declare @vcnt int'&lt;br /&gt;while @@FETCH_STATUS = 0&lt;br /&gt;begin&lt;br /&gt; set @vcnt = 0&lt;br /&gt;print 'set @vcnt = 0'&lt;br /&gt;print 'select @vcnt=count(*) from ' + @vsc+'.['+@vtb + ']'&lt;br /&gt;print 'if @vcnt=0 print ''' + @vsc+'.'+@vtb + ''''&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;fetch next from x into @vsc,@vtb&lt;br /&gt;end&lt;br /&gt;close x&lt;br /&gt;deallocate x&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Note, that the script does support the schema tag but it does expect you to already be in the database (via USE).&lt;br /&gt;&lt;br /&gt;This generates the output into the message window where you can then take it and run it. &lt;br /&gt;&lt;br /&gt;You could also simply pipe it to a variable and then execute that variable.&lt;br /&gt;&lt;br /&gt;It's not fancy, but it does work so you may also find it of use.&lt;br /&gt;&lt;br /&gt;The other approach I've &lt;a href="http://www.sqlservercentral.com/scripts/Administration/61766/"&gt;seen &lt;/a&gt;used is one where you use the sys.indexes table.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;--Code modified from original posting on SQLServerCentral.Com&lt;br /&gt;--URL: http://www.sqlservercentral.com/scripts/Miscellaneous/30324/&lt;br /&gt;SELECT o.name AS "Table Name", i.rowcnt AS "Row Count"&lt;br /&gt;FROM sysobjects o, sysindexes i&lt;br /&gt;WHERE i.id = o.id&lt;br /&gt;AND indid IN(0,1)&lt;br /&gt;AND xtype = 'u' &lt;br /&gt;AND o.name &lt;&gt; 'sysdiagrams'&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;I have tried to stay away from the sysobjects table primarily since Microsoft doesn't advocate their use (although I can't find a posting about this), even though they are typically the fastest and easiest ways to get to real data.&lt;br /&gt;&lt;br /&gt;Update:&lt;br /&gt;Here's the similar script but using sp_spaceused to see how much space the actual tables are taking up.&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;declare @vtb varchar(200)&lt;br /&gt;declare @vsc varchar(200)&lt;br /&gt;&lt;br /&gt;declare x cursor for select table_schema,table_name from information_schema.tables&lt;br /&gt;open x&lt;br /&gt;fetch next from x into @vsc,@vtb&lt;br /&gt;declare @vcnt int&lt;br /&gt;print 'declare @vcnt int'&lt;br /&gt;while @@FETCH_STATUS = 0&lt;br /&gt;begin&lt;br /&gt;set @vcnt = 0&lt;br /&gt;select @vcnt = rowcnt FROM sysobjects o, sysindexes i&lt;br /&gt;WHERE i.id = o.id&lt;br /&gt;AND indid IN(0,1)&lt;br /&gt;AND xtype = 'u' &lt;br /&gt;AND o.name =@vtb&lt;br /&gt;if @vcnt&gt;50000&lt;br /&gt;begin&lt;br /&gt;print 'retrieving for ' + @vtb + ' rows: ' + convert(varchar(10),@vcnt)&lt;br /&gt;exec sp_spaceused @vtb&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;fetch next from x into @vsc,@vtb&lt;br /&gt;end&lt;br /&gt;close x&lt;br /&gt;deallocate x&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-2472077072004502751?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/2472077072004502751/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=2472077072004502751' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/2472077072004502751'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/2472077072004502751'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2010/05/sql-scripts-record-counts.html' title='SQL Scripts: Record Counts'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-6239414695316018198</id><published>2010-05-04T05:49:00.000-04:00</published><updated>2010-05-04T05:49:35.153-04:00</updated><title type='text'>From VFP to Silverlight (at SW Fox)</title><content type='html'>Looking at the &lt;a href="http://swfox.net/"&gt;Southwest Fox 2010&lt;/a&gt; workshops list, it looks like this year's conference will have a silver lining, thanks to Uwe Habermann and Venelina Jordanova (from the dFPUG). The day after SW Fox ends, they are presenting VFP to Silverlight, showing how VFP developers can use a VFP COM server for the business layer and Silverlight as the main UI.&lt;br /&gt;&lt;br /&gt;Maybe just an interesting is the note on what&lt;a href="http://www.visualextend.com/"&gt; Visual Extend&lt;/a&gt; will offer:&lt;br /&gt;"The next version of Visual Extend will come with a wizard that allows the migration of forms and reports from existing VFX and VFP applications to Silverlight."&lt;br /&gt;&lt;br /&gt;Another good reason to be heading to Mesa in October.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://technorati.com/tag/FoxPro" rel="tag"&gt;FoxPro&lt;/a&gt; &lt;a href="http://technorati.com/tag/VFP" rel="tag"&gt;VFP&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-6239414695316018198?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://swfox.net/' title='From VFP to Silverlight (at SW Fox)'/><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/6239414695316018198/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=6239414695316018198' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/6239414695316018198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/6239414695316018198'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2010/05/from-vfp-to-silverlight-at-sw-fox.html' title='From VFP to Silverlight (at SW Fox)'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-386576806132961748</id><published>2010-05-03T20:09:00.000-04:00</published><updated>2010-05-03T20:09:01.499-04:00</updated><title type='text'>Vote Now: Visual Studio Project and Solution Version Compatibility - .NETicated</title><content type='html'>As Steve notes on his big post:&lt;br /&gt;&lt;a href="http://www.platinumbay.com/blogs/dotneticated/archive/2010/05/01/visual-studio-project-and-solution-version-compatibility.aspx?utm_source=feedburner&amp;amp;utm_medium=feed&amp;amp;utm_campaign=Feed%3A+dotneticated+%28.NETicated%29"&gt;Visual Studio Project and Solution Version Compatibility - .NETicated&lt;/a&gt;, &lt;br /&gt;"Microsoft is saying though that they listen to Connect votes. Today Kathleen Dollard created a Connect item for this issue, and I encourage you to vote. It’s important. It matters. And Microsoft says they take action based on Connect votes."&lt;br /&gt;&lt;br /&gt;"And remember, by not voting, you’re telling Microsoft this is not an important issue."&lt;br /&gt;&lt;br /&gt;The link site is &lt;a href="https://connect.microsoft.com/VisualStudio/feedback/details/556267/projects-and-solutions-must-be-compatible-across-adjacent-releases"&gt;here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-386576806132961748?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.platinumbay.com/blogs/dotneticated/archive/2010/05/01/visual-studio-project-and-solution-version-compatibility.aspx?utm_source=feedburner&amp;utm_medium=feed&amp;utm_campaign=Feed%3A+dotneticated+%28.NETicated%29' title='Vote Now: Visual Studio Project and Solution Version Compatibility - .NETicated'/><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/386576806132961748/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=386576806132961748' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/386576806132961748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/386576806132961748'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2010/05/vote-now-visual-studio-project-and.html' title='Vote Now: Visual Studio Project and Solution Version Compatibility - .NETicated'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-4414521450174990882</id><published>2010-05-03T07:05:00.003-04:00</published><updated>2010-05-03T08:09:37.563-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='database design'/><category scheme='http://www.blogger.com/atom/ns#' term='schemas'/><category scheme='http://www.blogger.com/atom/ns#' term='conventions'/><title type='text'>SQL: To Schema or not to schema?</title><content type='html'>&lt;span style="font-style:italic;"&gt;To schema or not to schema - That is the question;&lt;br /&gt;Whether it is easier to find a table with a Schema.TableName ;&lt;br /&gt;Or to simply build one with a strong naming convention,&lt;br /&gt;and, by opposing schemas, force other developers to learn (and re-learn) &lt;br /&gt;No more, with schemas ; &lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It's an interesting dilemma - especially when designing a database for an organization who changes standards with almost every new development project. &lt;br /&gt;&lt;br /&gt;One recent project implemented schemas along with a naming convention so much that the schema name was repeated in the name of the table:&lt;br /&gt;&lt;br /&gt;SCHEMA.SCH_ClientName&lt;br /&gt;&lt;br /&gt;Definitely overkill. But then if I want to be able to separate out lookup tables from my other tables, having a LOOKUPS schema would appear to work, except that it creates the "extra typing" scenario as every table has to include the schema. &lt;br /&gt;&lt;br /&gt;There are a few alternatives:&lt;br /&gt;a) prefix tables with naming conventions that make their purpose obvious. luStates = a lookup table of states and tblStates for a table where the business purpose might be states.&lt;br /&gt;&lt;br /&gt;b) ignoring all and keeping it related to the business purpose. &lt;br /&gt;&lt;br /&gt;As with most development decisions, a lot of this can be subjective. Some developers even like to make it a &lt;a href="http://freeworld.thc.org/root/phun/unmaintain.html"&gt;challenge&lt;/a&gt;. But what every designer should keep in the back of their mind is this:&lt;br /&gt;&lt;br /&gt;Is this readable?&lt;br /&gt;&lt;br /&gt;Many developers I've spoken to come back to an older application and wonder what wonderful medications they were taking when they wrote a certain line of code (or they forget to remember it was their code to begin with). So the &lt;a href="http://www.askbjoernhansen.com/2009/08/05/did_i_write_that_code_right_naming_variables.html"&gt;readability &lt;/a&gt;and maintainability of the code and by extension, the design becomes super important.&lt;br /&gt;&lt;br /&gt;In a recent project, I've opted for a hybrid: the use of schemas for business purposes and the use of naming conventions for lookup tables, only. It makes it easier to identify the lookup tables in code but the schemas make the graphical depiction of the database cleaner.&lt;br /&gt;&lt;br /&gt;What approach do you prefer when building an application?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-4414521450174990882?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/4414521450174990882/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=4414521450174990882' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/4414521450174990882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/4414521450174990882'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2010/05/sql-to-schema-or-not-to-schema.html' title='SQL: To Schema or not to schema?'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-1379458041955214788</id><published>2010-05-03T06:43:00.004-04:00</published><updated>2010-05-09T07:01:38.040-04:00</updated><title type='text'>Opinion: RIP Slate, Courier - and what might be missing in the Microsoft tablet strategy</title><content type='html'>Last week, there was quite a blow to the entire Windows 7 tablet business. HP dropped the &lt;a href="http://techcrunch.com/2010/04/29/hewlett-packard-to-kill-windows-7-tablet-project/"&gt;Slate &lt;/a&gt;(less than a month after its &lt;a href="http://www.engadget.com/2010/04/05/hp-slate-to-cost-549-have-1-6ghz-atom-z530-5-hour-battery/"&gt;internal &lt;/a&gt;PR push) and then Microsoft formally &lt;a href="http://www.youtube.com/watch?v=pFQWc79TYcU"&gt;confirmed &lt;/a&gt;and &lt;a href="http://www.informationweek.com/blog/main/archives/2010/05/microsoft_couri.html"&gt;killed &lt;/a&gt;the Courier project, a potentially game-changing Windows-based tablet, or was it?&lt;br /&gt;&lt;br /&gt;The first thing that came to mind, unfortunately, was that while Windows 7 supports gesture-based input, it is more useful in a desktop environment (like the HP TouchSmart). I'm using Windows 7 and from a laptop and desktop, it completely rocks. I was in a business presentation two weeks ago and one of the Microsoft reps pulled out their tablet and used it quick effectively. But the Microsoft tablets (from &lt;a href="http://www.toshibadirect.com/td/b2c/laptops.to#1272882038969"&gt;Toshiba &lt;/a&gt;among others) have always been focused on the business end and putting your desktop applications into a pen-based environment. &lt;br /&gt;&lt;br /&gt;Today's tablets (or the basic hype around them), on the other hand, are more focused on consumer or "lifestyle" use. I've tried Chromium on a laptop and was left less than impressed. I'm still waiting to see a real "Android" tablet. But Android is based on a phone OS, much like the iPad. &lt;br /&gt;&lt;br /&gt;Based on the new reality of how tablets are being positioned, maybe Windows 7 on a tablet simply doesn't offer a truly new experience that tablet users are expecting. So why not build it on Windows Phone 7?&lt;br /&gt;&lt;br /&gt;That could be the right approach, right? But the Courier project was apparently &lt;a href="http://www.engadget.com/2010/03/05/microsofts-courier-digital-journal-exclusive-pictures-and-de/"&gt;based &lt;/a&gt;on that operating system. So why was it killed?&lt;br /&gt;&lt;br /&gt;Too small? At a reported 5x7 side, it could have been perceived as too much of a toy compared to the larger tablets but, I'm not sold on this. A tablet that could fold up? At 5x7, that makes it instantly carry-friendly but as a business device, maybe that's where it was failing. &lt;br /&gt;&lt;br /&gt;Whereas Apple has only ever tried to serve one master, itself (or the one known as Steve), Microsoft is always trying to serve two: business and consumer. Certain things are easily positioned: xBox is definitely not going to be a business-friendly device and SharePoint/Office 2010 are not going to be truly consumer-based products. &lt;br /&gt;&lt;br /&gt;But a tablet? That has to be both. From what I've seen on Windows Phone 7, it's definitely on that track, but killing what could be the first non-phone based use for it, might hurt it more than help.&lt;br /&gt;&lt;br /&gt;Apple has always taken a "we've just changed the world" approach with their products, not without reason. But their community (and the press by in large) accepts the first product as almost perfection, and then gets all excited by the next iteration of the product, which finally delivers on some of the promise. &lt;br /&gt;&lt;br /&gt;Microsoft's strength is in its re-iterative improvement. Guy Kawasaki once said, with Microsoft, quality is job 1.1 (he may have pulled that from another source, but it's definitely published in a number of his books). Funny - isn't that the argument agile uses to improve development processes? There is nothing wrong with a re-iterative approach. &lt;br /&gt;&lt;br /&gt;Apple seems to be accepting that it constantly needs to re-iterate its software now that millions of people are using it. Heck, through the iPhone app store, I have some apps that have received over 5 updates since I first installed them. Microsoft has done that for years. Now that consumers are finally getting used to it, they seem to be pulling back from it. &lt;br /&gt;&lt;br /&gt;I hope they killed the Courier project so they could re-use (or license) parts of it to have a killer tablet. There is a lot of research that goes on at MS that doesn't always make it into the public eye, then there is the research and technology that creates great applications. I hope this is one of the former; not the latter. Who knows? Maybe HTC is looking at building a Windows Phone 7 tablet. &lt;br /&gt;&lt;br /&gt;Yes - I'm aware of the &lt;a href="http://www.crunchgear.com/2010/04/12/the-wepad-gets-a-price-and-launch-date/"&gt;WePad &lt;/a&gt;(which will run Android) but it's not available until July..looks &lt;a href="http://www.youtube.com/watch?v=dMWHSnFMIdE"&gt;cool &lt;/a&gt;but we have to wait and see.&lt;br /&gt;Does anyone use the &lt;a href="http://www.alwaysinnovating.com/touchbook/"&gt;Touchbook&lt;/a&gt;? Granted, there's no multi-touch and it's a hybrid laptop. There's one review &lt;a href="http://www.phoronix.com/forums/showthread.php?t=22119"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-1379458041955214788?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/1379458041955214788/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=1379458041955214788' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/1379458041955214788'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/1379458041955214788'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2010/05/opinion-rip-slate-courier-and-what.html' title='Opinion: RIP Slate, Courier - and what might be missing in the Microsoft tablet strategy'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-5252867638451056089</id><published>2010-04-20T07:53:00.001-04:00</published><updated>2010-05-01T06:33:23.857-04:00</updated><title type='text'>Developer Viewpoint: Rapid Prototyping with SketchFlow</title><content type='html'>You can see my own direct review of SketchFlow &lt;a href="http://whitepapers.aksel.com/2010/05/prototyping-applications-with.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This article is a great introduction to SketchFlow, which is found in Microsoft's Expression Blend. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://articles.sitepoint.com/article/rapid-prototyping-sketchflow"&gt;Rapid Prototyping with SketchFlow&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Unlike developer "design" tools, SketchFlow is really great at focusing on the interface and how users will interact with the application. I'm not a graphics designer so I know pretty much right off the bat, my prototype may not have the prettiest graphics designs. However, with Expression Blend, I was able to make the UI look half-decent.&lt;br /&gt;&lt;br /&gt;It uses XAML files to show case the interface - this is extremely useful as I just grabbed some earlier work being done in Visual Studio and dropped it in - worked like a charm. I was then able to make changes to the XAML from a designer's perspective instead of a developer's.&lt;br /&gt;&lt;br /&gt;With the SketchFlow Map, you simply draw lines to create a flow between "pages" of your application or to integrate shared components. When you build your application, it provides a SketchFlow viewer with a navigation bar on the right. You can also add animations and direct content to create more interactive shots.&lt;br /&gt;&lt;br /&gt;Now to present it, you can do a manual presentation (F5) and walk users through it - but one of the killer features is the ability to "package" the flow and give clients an application that they can walk through on their own, see your annotations or add their own and then send you feedback directly.&lt;br /&gt;&lt;br /&gt;I'm a big fan of usability testing and while Sketchflow certainly is more on the prototyping side, it really does let you test concepts very easily.&lt;br /&gt;&lt;br /&gt;If you're happy with what you've done, you can actually re-use the XAML and components you've built.&lt;br /&gt;&lt;br /&gt;The Expression Blend evaluation period is 60 days - so it definitely gives you lots of time to work with it, even just for prototyping out concepts.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-5252867638451056089?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://articles.sitepoint.com/article/rapid-prototyping-sketchflow' title='Developer Viewpoint: Rapid Prototyping with SketchFlow'/><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/5252867638451056089/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=5252867638451056089' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/5252867638451056089'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/5252867638451056089'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2010/04/developer-viewpoint-rapid-prototyping.html' title='Developer Viewpoint: Rapid Prototyping with SketchFlow'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-7029964684176023162</id><published>2010-04-08T12:22:00.000-04:00</published><updated>2010-04-08T12:22:46.451-04:00</updated><title type='text'>VFP Stack Overflow: What's In A Name?</title><content type='html'>In the latest issue of FoxRockX, Ken Levy has an interesting op-ed piece called the &lt;a href="http://www.foxrockx.com/foxrockx/FR201003.htm"&gt;Visual FoxPro Stack Overflow&lt;/a&gt;. I'm not sure if the latest issue is a re-hash of the original which was posted last summer.&lt;br /&gt;&lt;br /&gt;It's a little like the similar page on the VFP Stack, nothing all of the possible VFP projects, including VFPX, VFP Studio, etc, etc. What would you call it? The community decided a few years back that VFPX was a better term than VFP.Next. Is that still the best term?&lt;br /&gt;&lt;br /&gt;Perhaps more interestingly in the piece, Ken noted that the FoxPro trademark was dropped by Microsoft years ago. As a result, FoxPro and VFP can be found through search engines without anything having to do with the VFP Development tool. This is where the whole concept of stack comes up. If you consider that LAMP is (Linux,Apache,MySQL,PHP), what would a better term for VFP be?&lt;br /&gt;&lt;br /&gt;The bigger issue here for me is that how do developers "get" Visual FoxPro, without MSDN, moving forward.&lt;br /&gt;&lt;br /&gt;If you consider the tools that are available, it might be possible to build a front-end IDE to VFP - similar to the (abandoned?) VFP Studio, that would simply run the VFP compile steps in the background. Just an idea but it certainly is doable.&lt;br /&gt;&lt;br /&gt;One challenge, of course, would be ActiveX controls but if you look at the work being done over at &lt;a href="http://vfpx.codeplex.com"&gt;VFPX&lt;/a&gt;, there are a lot of places where you don't necessarily need ActiveX. &lt;br /&gt;&lt;br /&gt;While a lot of the work I do now is in Visual Studio, I'm using VFP pretty much every day as one of my tools. Building a UI or executable for just specific pieces (such as the Data Explorer) might be another useful way of using it in a day to day environment.&lt;br /&gt;&lt;br /&gt;Are you actively using FoxPro on a daily basis? If so, chime in and get involved in the discussion.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-7029964684176023162?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.foxrockx.com/foxrockx/FR201003.htm' title='VFP Stack Overflow: What&apos;s In A Name?'/><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/7029964684176023162/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=7029964684176023162' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/7029964684176023162'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/7029964684176023162'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2010/04/vfp-stack-overflow-whats-in-name.html' title='VFP Stack Overflow: What&apos;s In A Name?'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-5019768626710817584</id><published>2010-03-27T06:10:00.005-04:00</published><updated>2010-03-27T06:29:41.328-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FoxPro'/><category scheme='http://www.blogger.com/atom/ns#' term='carbonite'/><title type='text'>Carbonite and PRG files: Problem and Workaround</title><content type='html'>I've been using &lt;a href="www.carbonite.com"&gt;Carbonite&lt;/a&gt; for online backup for a few years now. I did try &lt;a href="http://akselsoft.blogspot.com/2006/02/xdrive-needs-help-right-away.html"&gt;XDrive &lt;/a&gt;and I have earlier posts about how horrible it was.&lt;br /&gt;&lt;br /&gt;One thing I've always liked about it is the ability to pull back individual files almost like an incremental version update. The fact that the backup drives integrate perfectly with Windows Explorer is a definite plus.&lt;br /&gt;&lt;br /&gt;But when my laptop bit the dust recently (a &lt;12 month old Toshiba power jack issue), I was hoping to rely on it for the restoring my files onto my new laptop. While I did have the physical drive from the Toshiba, I wanted to test it out for a full restore.&lt;br /&gt;&lt;br /&gt;That's when I found a major problem. By default, Carbonite does not backup what it considers to be system files (EXE, DLL, COM, etc). It does backup VB, CS , ASPX files without a problem. But Carbonite considers a PRG file to be a system file. I'm not quite sure why - but it does. As a result, none of my PRG files were backed up.&lt;br /&gt;&lt;br /&gt;As a FoxPro developer, this is tantamount to disaster. I would restore all my files and while the VFP screens and class libraries were all present - I couldn't run any of my code because it was missing a PRG file.&lt;br /&gt;&lt;br /&gt;I contacted Carbonite about &lt;a href="http://www.carbonite.com.au/faqs/backing-up-your-files/"&gt;this&lt;/a&gt; and the first response was "sorry, we don't back up system files". What is interesting is that this &lt;a href="http://www.tomkirkham.com/node/109"&gt;post &lt;/a&gt;lists off the files that Carbonite considers system files.&lt;br /&gt;&lt;br /&gt;That list is at the end of this post.&lt;br /&gt;&lt;br /&gt;But there is a workaround. &lt;br /&gt;&lt;br /&gt;If you highlight a PRG file and right-click, you can choose Properties. Click on the Carbonite tab and check the option to Backup Files of this type.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_-dNhuLbJ06Q/S63bZhuXzjI/AAAAAAAAAKM/LiVO-8d2gXw/s1600/Carbonite_PRG_Backup.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 268px; height: 320px;" src="http://1.bp.blogspot.com/_-dNhuLbJ06Q/S63bZhuXzjI/AAAAAAAAAKM/LiVO-8d2gXw/s320/Carbonite_PRG_Backup.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5453255955411619378" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This solves the problem. So now, all of your PRG files will be backed up.&lt;br /&gt;&lt;br /&gt;But what system file ends in PRG?&lt;br /&gt;&lt;br /&gt;For reference, here is a list of all the file extensions that Carbonite will not backup in alphabetical order:&lt;br /&gt;&lt;br /&gt;.$$$&lt;br /&gt;.$db&lt;br /&gt;.113&lt;br /&gt;.BSC&lt;br /&gt;.IDB&lt;br /&gt;.ILK&lt;br /&gt;.NCB&lt;br /&gt;.OBJ&lt;br /&gt;.PCH&lt;br /&gt;.PDB&lt;br /&gt;.SBR&lt;br /&gt;.abf&lt;br /&gt;.abk&lt;br /&gt;.afm&lt;br /&gt;.ani&lt;br /&gt;.ann&lt;br /&gt;.bac&lt;br /&gt;.bak&lt;br /&gt;.bck&lt;br /&gt;.bcm&lt;br /&gt;.bdb&lt;br /&gt;.bdf&lt;br /&gt;.bkf&lt;br /&gt;.bkp&lt;br /&gt;.bmk&lt;br /&gt;.cab&lt;br /&gt;.cf1&lt;br /&gt;.chm&lt;br /&gt;.chq&lt;br /&gt;.chw&lt;br /&gt;.cnt&lt;br /&gt;.com&lt;br /&gt;.cpl&lt;br /&gt;.cpl&lt;br /&gt;.cur&lt;br /&gt;.dev&lt;br /&gt;.dfont&lt;br /&gt;.dll&lt;br /&gt;.dmp&lt;br /&gt;.drv&lt;br /&gt;.drv&lt;br /&gt;.dvd&lt;br /&gt;.eot&lt;br /&gt;.evt&lt;br /&gt;.exe&lt;br /&gt;.ffa&lt;br /&gt;.ffl&lt;br /&gt;.ffo&lt;br /&gt;.ffx&lt;br /&gt;.fnt&lt;br /&gt;.fon&lt;br /&gt;.ftg&lt;br /&gt;.fts&lt;br /&gt;.fxp&lt;br /&gt;.gid&lt;br /&gt;.grp&lt;br /&gt;.hlp&lt;br /&gt;.hxi&lt;br /&gt;.hxq&lt;br /&gt;.hxr&lt;br /&gt;.hxs&lt;br /&gt;.ico&lt;br /&gt;.idx&lt;br /&gt;.img&lt;br /&gt;.inf&lt;br /&gt;.ini&lt;br /&gt;.ins&lt;br /&gt;.ipf&lt;br /&gt;.iso&lt;br /&gt;.isp&lt;br /&gt;.its&lt;br /&gt;.jar&lt;br /&gt;.jse&lt;br /&gt;.kbd&lt;br /&gt;.kext&lt;br /&gt;.key&lt;br /&gt;.lex&lt;br /&gt;.lib&lt;br /&gt;.lnk&lt;br /&gt;.log&lt;br /&gt;.lwfn&lt;br /&gt;.msc&lt;br /&gt;.msi&lt;br /&gt;.msm&lt;br /&gt;.msp&lt;br /&gt;.mst&lt;br /&gt;.nt&lt;br /&gt;.obs&lt;br /&gt;.ocx&lt;br /&gt;.old&lt;br /&gt;.ost&lt;br /&gt;.otf&lt;br /&gt;.otf&lt;br /&gt;.pf&lt;br /&gt;.pfa&lt;br /&gt;.pfb&lt;br /&gt;.pfm&lt;br /&gt;.plist&lt;br /&gt;.pnf&lt;br /&gt;.pol&lt;br /&gt;.pref&lt;br /&gt;.prf&lt;br /&gt;.prg&lt;br /&gt;.prn&lt;br /&gt;.pwl&lt;br /&gt;.rdb&lt;br /&gt;.reg&lt;br /&gt;.reg&lt;br /&gt;.rll&lt;br /&gt;.rox&lt;br /&gt;.scf&lt;br /&gt;.scr&lt;br /&gt;.sdb&lt;br /&gt;.shb&lt;br /&gt;.suit&lt;br /&gt;.swf&lt;br /&gt;.swp&lt;br /&gt;.sys&lt;br /&gt;.sys&lt;br /&gt;.theme&lt;br /&gt;.tmp&lt;br /&gt;.tms&lt;br /&gt;.ttc&lt;br /&gt;.ttf&lt;br /&gt;.ttf&lt;br /&gt;.v2i&lt;br /&gt;.vbe&lt;br /&gt;.vga&lt;br /&gt;.vgd&lt;br /&gt;.vhd&lt;br /&gt;.vmc&lt;br /&gt;.vmdk&lt;br /&gt;.vmsd&lt;br /&gt;.vmsn&lt;br /&gt;.vmx&lt;br /&gt;.vxd&lt;br /&gt;.vxd&lt;br /&gt;.win&lt;br /&gt;.wpk&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://technorati.com/tag/FoxPro" rel="tag"&gt;FoxPro&lt;/a&gt; &lt;a href="http://technorati.com/tag/VFP" rel="tag"&gt;VFP&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-5019768626710817584?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/5019768626710817584/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=5019768626710817584' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/5019768626710817584'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/5019768626710817584'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2010/03/carbonite-and-prg-files-problem-and.html' title='Carbonite and PRG files: Problem and Workaround'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_-dNhuLbJ06Q/S63bZhuXzjI/AAAAAAAAAKM/LiVO-8d2gXw/s72-c/Carbonite_PRG_Backup.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5492774.post-7791208537075388502</id><published>2010-03-03T21:27:00.000-05:00</published><updated>2010-03-03T21:27:07.105-05:00</updated><title type='text'>And Then There Are The Pickles...</title><content type='html'>A little bit of fall-out from eTecnologia's apparent abandonment of the VFP.Net project.&lt;br /&gt;&lt;br /&gt;VFPX could suffer from the same fate except that those involved are already supporting it as an open-source project. &lt;br /&gt;&lt;br /&gt;There are lots of ways of working with VFP in .Net and in any language. I use VFP pretty much every day and it's not part of the client's arsenal - but it turns around the work I need done - be it prototypes, sample data input and more...it's faster and better than the alternatives. But it is simply one tool in the toolbox - like the screwdriver that seems to fix almost every problem - there are always times to use others.&lt;br /&gt;&lt;br /&gt;I'll post a little more on my own experiences but Hank's post here is very telling. We've heard about VFP Studio and also now about VFP.Net - in both of these cases, it might have been better to open source the two.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blog.prosysplus.com/2010/03/and-then-there-are-pickles.html"&gt;ProSysPlus Blog: And Then There Are The Pickles&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-7791208537075388502?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://blog.prosysplus.com/2010/03/and-then-there-are-pickles.html' title='And Then There Are The Pickles...'/><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/7791208537075388502/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=7791208537075388502' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/7791208537075388502'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/7791208537075388502'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2010/03/and-then-there-are-pickles.html' title='And Then There Are The Pickles...'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-2208711785868347493</id><published>2010-01-04T07:42:00.003-05:00</published><updated>2010-01-04T09:08:55.479-05:00</updated><title type='text'>Disrupting the Business Application Market Place</title><content type='html'>This will likely be the year that Apple unveils a tablet-based PC. Nothing innovative in that - Microsoft has had Tablet XP and Vista for years and Scoble used to &lt;a href="http://scoble.weblogs.com/2003/11/11.html"&gt;schill &lt;/a&gt;those as well. &lt;br /&gt;&lt;br /&gt;My thoughts on the consumer aspect can be found &lt;a href="http://amacneill.blogspot.com/2010/01/thoughts-on-apple-tablet-disruption.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;There is a bigger issue that developers need to pay attention to.&lt;br /&gt;&lt;br /&gt;Since the tablet will use a similar form factor (as reported right now) as an iPhone/iPod Touch, the tablet will likely support existing iPhone apps. So unless "full screen tablet apps" cost more than regular apps, Apple will need to change the entire pricing model for existing tablet style applications. When someone built an application for the Windows XP Tablet, it would be priced just like an existing Windows based application, so about $200-300. &lt;a href="https://secure.mindjet.com/WebApp/catalog/catalog.aspx?lang=en&amp;host=clear"&gt;MindManager&lt;/a&gt;, for example, cost $395. The &lt;a href="http://blog.mindjet.com/2009/09/mindjets-iphone-app-is-now-available"&gt;iPhone &lt;/a&gt;version costs $7.99. &lt;br /&gt;&lt;br /&gt;It will have to hit a lot of users to match the original price. &lt;br /&gt;&lt;br /&gt;Apple revolutionized music pricing with iTunes and even though the tablet may change the print or publishing industry (which Apple already did back in 1986), how it affects regular apps could become critical. &lt;br /&gt;&lt;br /&gt;There are some &lt;a href="http://www.techcrunch.com/2010/01/04/nsfw-apple-tablet-kindle-and-furbies-oh-my/"&gt;arguments &lt;/a&gt;that if the tablet is focused on the print industry, then the disruption has already happened with Amazon's Kindle but the tablet isn't supposed to be "just" an e-reader, if one at all.&lt;br /&gt;&lt;br /&gt;Apple certainly doesn't mind being disruptive - in fact, it's built its reputation on it. There are also some benefits in creating different pricing models. Changing the tablet/publishing pricing model would effectively show that a tablet isn't the same as a regular PC and therefore it should be priced differently. It might also force developers to focus on making application features specific to a physical form factor instead of the current "throw it all in" approach.&lt;br /&gt;&lt;br /&gt;But the iPhone has also changed how people perceive apps. Why pay $200 for a GPS when you get the same results with Google on your iPhone? Why pay for traffic subscription services when you get it for free with the INRIX app? &lt;br /&gt;&lt;br /&gt;How and when this perception moves into the business application world could cause some major disruption.&lt;br /&gt;&lt;br /&gt;Should you build applications based on unique features that integrate with others? Or try to put it all in yourself? In my experience, most businesses want everything integrated and the best way to get that is usually from a single source. But that may change, especially with a device that isn't just a phone but a possible business changer.&lt;br /&gt;&lt;br /&gt;Has the Surface disrupted the industry yet? No, but Microsoft is &lt;a href="http://www.gizmag.com/consumer-version-of-microsoft-surface-pc-flagged/8886/"&gt;reportedly&lt;/a&gt; working on more of a &lt;a href="http://gizmodo.com/5365299/courier-first-details-of-microsofts-secret-tablet"&gt;consumer &lt;/a&gt;or smaller version. But how would a "single-location" multi-touch PC compete against a portable version? I don't think it can.&lt;br /&gt;&lt;br /&gt;I also don't buy the whole "Internet Net-book thing". Internet applications have come a huge way in the past few years - and the fact that you can skin your regular web sites to look like iPhone apps is useful too, but I believe that the form factor of the tablet will also bring about at least one "killer" feature, one that is not easily reproducible on the web of today (tomorrow is another day). The current alpha version of Chromium isn't there...yet.&lt;br /&gt;&lt;br /&gt;I'm excited about what these changes will mean in 2010 and beyond but just as intrigued about what happens when these changes hit the business application development space.&lt;br /&gt;&lt;br /&gt;As a developer, the next time you look at your application, instead of trying to make it run on as many platforms at once, try to envision a specialized version for a given form or input factor. &lt;br /&gt;&lt;br /&gt;What would you change to make your application run on:&lt;br /&gt;&lt;br /&gt;a) an iPhone or SmartPhone&lt;br /&gt;b) a touch-based desktop computer&lt;br /&gt;c) an audio-only implementation&lt;br /&gt;d) a web-only version&lt;br /&gt;e) a flat 10 screen multi-touch&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-2208711785868347493?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/2208711785868347493/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=2208711785868347493' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/2208711785868347493'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/2208711785868347493'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2010/01/disrupting-business-application-market.html' title='Disrupting the Business Application Market Place'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-3903014080395741624</id><published>2009-12-31T09:04:00.001-05:00</published><updated>2009-12-31T09:05:53.827-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='codeplex'/><category scheme='http://www.blogger.com/atom/ns#' term='asp.net'/><category scheme='http://www.blogger.com/atom/ns#' term='Xsd2code'/><title type='text'>Xsd2Code - better than XSD</title><content type='html'>I've been working on a few ASP.Net projects and one of the key aspects of this project is creating some usable XSD schemas that are then translated into objects.&lt;br /&gt;&lt;br /&gt;At first, I started using the regular xsd.exe that creates a class (in either VB or C#) from a schema with the simple statement.&lt;br /&gt;&lt;br /&gt;xsd "myfile.xsd" /l:CS /o:"C:\MyOutput\" /c&lt;br /&gt;&lt;br /&gt;But I always wanted to have this directly within Visual Studio. I'm sure there's another way (so please let me know) but then I found&lt;br /&gt;&lt;a href="http://xsd2code.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=22222#ReleaseFiles"&gt;Xsd2Code .net class generator3.0&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;It does the same thing that XSD does but also lets you create add Serialize and DeSerialize options, making it easier to convert a basic XML file into an object.&lt;br /&gt;&lt;br /&gt;var o = FormInstance.Deserialize(xml);&lt;br /&gt;&lt;br /&gt;The best part is that it's a Visual Studio plug-in (from &lt;a href="http://www.codeplex.com"&gt;Codeplex&lt;/a&gt; of course), so you can right-click on an XSD file and have it generate the necessary code. By default, the Serialization methods aren't included - but it's an option right from the generate dialog, shown here.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_-dNhuLbJ06Q/Szyvme4UqoI/AAAAAAAAAKE/FFfMW2HczJU/s1600-h/xsd2code.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 229px; height: 320px;" src="http://4.bp.blogspot.com/_-dNhuLbJ06Q/Szyvme4UqoI/AAAAAAAAAKE/FFfMW2HczJU/s320/xsd2code.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5421401127106423426" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Anyone know of other tools for this purpose?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-3903014080395741624?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://xsd2code.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=22222#ReleaseFiles' title='Xsd2Code - better than XSD'/><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/3903014080395741624/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=3903014080395741624' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/3903014080395741624'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/3903014080395741624'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2009/12/xsd2code-better-than-xsd.html' title='Xsd2Code - better than XSD'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_-dNhuLbJ06Q/Szyvme4UqoI/AAAAAAAAAKE/FFfMW2HczJU/s72-c/xsd2code.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5492774.post-5513396694163520078</id><published>2009-12-30T06:51:00.000-05:00</published><updated>2009-12-30T06:51:25.470-05:00</updated><title type='text'>Jun Tangunan's Nicely Designed Controls</title><content type='html'>Just because a lot of cool stuff exists in &lt;a href="http://vfpx.codeplex.com"&gt;VFPX&lt;/a&gt; doesn't mean there are other sources for inspired design.&lt;a href="http://weblogs.foxite.com/sandstorm36"&gt;Jun Tangunan&lt;/a&gt; has been showcasing a number of his creations on his Foxite site.&lt;br /&gt;&lt;br /&gt;Following Craig Boyd's lead to create "good-looking" applications, Jun's collection currently includes:&lt;br /&gt;&lt;br /&gt;- An awesome looking &lt;a href="http://weblogs.foxite.com/sandstorm36/archive/2009/12/15/9725.aspx"&gt;button class&lt;/a&gt;&lt;br /&gt;- A custom &lt;a href="http://weblogs.foxite.com/sandstorm36/archive/2009/12/15/9724.aspx"&gt;TitleBar&lt;/a&gt; class&lt;br /&gt;- A &lt;a href="http://weblogs.foxite.com/sandstorm36/archive/2009/11/30/9513.aspx"&gt;switchbox class&lt;/a&gt;&lt;br /&gt;- A&lt;a href="http://weblogs.foxite.com/sandstorm36/archive/2009/12/05/9575.aspx"&gt; calendar sidebar class&lt;/a&gt;&lt;br /&gt;- A non-ActiveX based &lt;a href="http://weblogs.foxite.com/sandstorm36/archive/2009/12/07/9597.aspx"&gt;Date Picker&lt;/a&gt;&lt;br /&gt;&lt;a href="http://weblogs.foxite.com/sandstorm36/archive/2009/12/15/9725.aspx"&gt;Jun Tangunan : Presenting SSButton Class&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I just wish Jun would put his goodies into VFPX so they can be packaged at some point. &lt;br /&gt;&lt;br /&gt;Great work!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://technorati.com/tag/FoxPro" rel="tag"&gt;FoxPro&lt;/a&gt; &lt;a href="http://technorati.com/tag/VFP" rel="tag"&gt;VFP&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-5513396694163520078?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://weblogs.foxite.com/sandstorm36/archive/2009/12/15/9725.aspx' title='Jun Tangunan&apos;s Nicely Designed Controls'/><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/5513396694163520078/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=5513396694163520078' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/5513396694163520078'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/5513396694163520078'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2009/12/jun-tangunans-nicely-designed-controls.html' title='Jun Tangunan&apos;s Nicely Designed Controls'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-4148267701132835179</id><published>2009-12-17T09:00:00.001-05:00</published><updated>2009-12-17T09:55:23.976-05:00</updated><title type='text'>One Great Resume</title><content type='html'>VisualCV is a great service for consultants and just about anyone who is looking at building the next generation of resumes. But they also have a great sense of humour. Take a look at this &lt;a href="http://www.visualcv.com/santaclaus"&gt;CV&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-4148267701132835179?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.visualcv.com/santaclaus' title='One Great Resume'/><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/4148267701132835179/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=4148267701132835179' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/4148267701132835179'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/4148267701132835179'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2009/12/one-great-resume.html' title='One Great Resume'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-5698983475758941354</id><published>2009-11-26T07:59:00.000-05:00</published><updated>2009-11-26T07:59:34.595-05:00</updated><title type='text'>Tip: Add your application in Control Panel</title><content type='html'>Here's another Foxite goodie:  &lt;a href="http://weblogs.foxite.com/jijo_pappachan/archive/2009/11/26/9464.aspx"&gt;Add your application in Control Panel&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Of course, this works for any application, not just VFP apps - but if you've ever wondered about how to easily add your application to the Windows control panel, here you go.&lt;br /&gt;&lt;br /&gt;I ran it with Windows 7 and it added it with only 3 security warnings.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://technorati.com/tag/FoxPro" rel="tag"&gt;FoxPro&lt;/a&gt; &lt;a href="http://technorati.com/tag/VFP" rel="tag"&gt;VFP&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-5698983475758941354?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://weblogs.foxite.com/jijo_pappachan/archive/2009/11/26/9464.aspx' title='Tip: Add your application in Control Panel'/><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/5698983475758941354/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=5698983475758941354' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/5698983475758941354'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/5698983475758941354'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2009/11/tip-add-your-application-in-control.html' title='Tip: Add your application in Control Panel'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-2740637914454870509</id><published>2009-11-11T06:18:00.000-05:00</published><updated>2009-11-11T06:18:23.470-05:00</updated><title type='text'>Tom's Planner | Online Project Planning</title><content type='html'>I first read about this tool over on &lt;a href="http://www.techcrunch.com/2009/11/10/meet-toms-planner-a-dead-simple-project-management-and-planning-system/"&gt;TechCrunch &lt;/a&gt;and noted it down. I just tried it and have to say "wow".&lt;br /&gt;&lt;br /&gt;Project Management can be hard but this tool makes communicating it super easy. Even better, the project manager can &lt;a href="http://tomsplanner.com/shared/vfpxsampleschedule/"&gt;publish &lt;/a&gt;it online (with password protection for easier review)&lt;br /&gt;&lt;br /&gt;It's certainly not as powerful as MS Project but many times too much time is spent filling in details that are never used when the most important part of handling a project is communicating where it's at. &lt;br /&gt;&lt;br /&gt;Project files are stored on your own computer so you still have control over them but you can publish it, export it as a Project file or even just as an image.&lt;br /&gt;&lt;br /&gt;The file format is simply a text file with details (this might be the beginning of a nice open standard project format) &lt;br /&gt;&lt;br /&gt;This is a great online tool to do just that.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-2740637914454870509?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://tomsplanner.com/' title='Tom&apos;s Planner | Online Project Planning'/><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/2740637914454870509/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=2740637914454870509' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/2740637914454870509'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/2740637914454870509'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2009/11/toms-planner-online-project-planning.html' title='Tom&apos;s Planner | Online Project Planning'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-3032213619341313294</id><published>2009-11-11T06:01:00.002-05:00</published><updated>2009-11-11T06:03:43.368-05:00</updated><title type='text'>Thank You</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://beta.images.theglobeandmail.com/archive/00327/remembrance_day__327281gm-a.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 360px; height: 202px;" src="http://beta.images.theglobeandmail.com/archive/00327/remembrance_day__327281gm-a.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;On every day, we are thankful for our freedom. Thank You. To all of the veterans, of every nation, everywhere, who have given us that freedom.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-3032213619341313294?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/3032213619341313294/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=3032213619341313294' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/3032213619341313294'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/3032213619341313294'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2009/11/thank-you.html' title='Thank You'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-2680187176147302015</id><published>2009-11-01T06:57:00.008-05:00</published><updated>2009-11-01T09:39:44.056-05:00</updated><title type='text'>Windows 7 - review for developers</title><content type='html'>(note: the title refers to a review for developers - this is not about how to develop specifically for Windows 7 but rather a review of Windows 7 from the point of a developer and how its changes may affect you.)&lt;br /&gt;&lt;br /&gt;Ars Technica does a very detailed review of &lt;a href="http://arstechnica.com/microsoft/reviews/2009/10/windows-7-the-review.ars/5"&gt;Windows 7&lt;/a&gt;, going through key features and also the left-over bits of Vista. I'm using Windows 7 and find when I move over to XP or even Windows 2003, I really miss many features and so definitely recommend upgrading but let's go through the details on the review.&lt;br /&gt;&lt;br /&gt;I've been using Windows 7 on and off now in beta and in its public form for over a year. While I never could wrap my head and get totally into Vista (I typically used Windows 2003 as a workstation - but I had to install and remove it for Trish twice), my first impressions of Windows 7 were very positive. The way Microsoft has "fixed" UAC for security is HUGE and while I still get a few "Are you sure you want to" dialogs, it's far less frequent than in Vista and one of the main reasons, in my mind, for developers (and users) to upgrade.&lt;br /&gt;&lt;br /&gt;For an end user, the review is good but software developers should really take note, as it delves into the new &lt;a href="http://msdn.microsoft.com/en-us/library/aa511258.aspx"&gt;user interface guidelines&lt;/a&gt; (also available in &lt;a href="http://download.microsoft.com/download/e/1/9/e191fd8c-bce8-4dba-a9d5-2d4e3f3ec1d3/ux%20guide.pdf"&gt;PDF&lt;/a&gt;) and even points out how &lt;a href="http://static.arstechnica.com/windows-7-review/sloppy-ie-explorer.png"&gt;inconsistent &lt;/a&gt;some Windows 7 pieces can be.&lt;br /&gt;&lt;br /&gt;One feature I love about Windows 7 is the new Snipping tool. Developers with Snag-It will scoff at its limited feature but it does make it much easier for grabbing screen shots for regular users, instead of the old Ctrl+Print screen. I use &lt;a href="http://jingproject.com/"&gt;Jing &lt;/a&gt;a fair bit on non-Snag it machines and it has stopped working occasionally in Windows 7, making the tool that much more useful.&lt;br /&gt;&lt;br /&gt;But let me address some of the review points head on:&lt;br /&gt;&lt;br /&gt;Ars actually slams the Windows 7 UI on several points, many of which I agree with. It's very bizarre to switch between the new UI in the control panel and find that some elements conform to the new user interface whereas others go back to the old Windows-XP style dialogs. Hey, you can't redesign everything - but just it feels wrong, as though even a little change would have been more welcome.&lt;br /&gt;&lt;br /&gt;Some quick examples can be easily seen in the Control Panel. The Power options look new and fresh:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_-dNhuLbJ06Q/Su15Iv1uQyI/AAAAAAAAAJw/wTP_OPWWD98/s1600-h/Power+Settings.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 138px;" src="http://4.bp.blogspot.com/_-dNhuLbJ06Q/Su15Iv1uQyI/AAAAAAAAAJw/wTP_OPWWD98/s200/Power+Settings.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5399104719474803490" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;While the system Properties looks like Windows XP:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_-dNhuLbJ06Q/Su15PMxPnuI/AAAAAAAAAJ4/z5RG-RI2UZE/s1600-h/system+properties.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 182px; height: 200px;" src="http://3.bp.blogspot.com/_-dNhuLbJ06Q/Su15PMxPnuI/AAAAAAAAAJ4/z5RG-RI2UZE/s200/system+properties.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5399104830319861474" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;So far, I see three different UI approaches going on : the new look (like the Power Settings), the old XP properties and then the hybrid MMC look, found in the Device Manager, etc. As I go through different aspects of the Windows 7 control panel for the first time, you never really know which one you're going to get. Granted, there are definite problems with the new approach for complex dialogs but even the basic experience just feels "confusing".&lt;br /&gt;&lt;br /&gt;As Those who have read some of my Advisor articles know, I do enjoy the &lt;a href="http://msdn.microsoft.com/en-us/library/ms997506.aspx"&gt;inductive approach&lt;/a&gt; to user interfaces (while &lt;a href="http://www.marktaw.com/design/WhyIdontliketheInductiveu.html"&gt;others &lt;/a&gt;don't) so it's maddening to me that Microsoft is still going between the three choices. There are pros and cons to each - but choose one already. &lt;br /&gt;&lt;br /&gt;But as a developer, I understand this. I'm converting over a legacy FoxPro app that started as a DOS app and I'm moving over the key pieces into a more current interface based on the functions users use. Sure, while VFP 9 can run backward-compatible so a DOS-based UI can be used, the switching between a new interface and the older one definitely shows inconsistencies in an application. (I'll post on this later as it's definitely an experience).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;The new Taskbar&lt;/span&gt;&lt;br /&gt;I first lamented the loss of the Quick Launch (you can still reactivate it if you really miss it) - but I'm finding between the Jump List and the ability to pin on demand, it's a very welcome replacement. The comment on Ars where "number of applications offering this level of integration is currently low" is really related to the right-click functionality. Any application that supports document opening from the Explorer immediately supports the Recent functionality, including Visual FoxPro. Of course, if you're constantly opening VCX and SCX files, it may not really help. I've been running Ubuntu on another machine and the Taskbar concept is fairly similar between the two, making it easier to switch back and forth.&lt;br /&gt;&lt;br /&gt;What I'm finding very useful about the new task bar is the awareness of what apps I'm really using. I use &lt;a href="http://wakoopa.com/"&gt;Wakoopa &lt;/a&gt;to track what applications I use on a variety of machines but on my primary workstation, it has helped cement my regular tasks to the point where I don't use &lt;a href="www.bayden.com/SlickRun/"&gt;SlickRun &lt;/a&gt;half as much as I used to.&lt;br /&gt;&lt;br /&gt;The Start menu itself also makes it easier to find those recent files. I don't have FoxIt Reader pinned to my task bar, even though I use it frequently for reading, but the ability to immediately see what I've recently opened is definitely welcomed.&lt;br /&gt;&lt;br /&gt;That said, the other part of the new start menu, the Start Menu search, is still as unusable on my machine as under Vista. I know many people rave about how nice it is to find applications but on my laptop (a Toshiba Satellite L300 with 4 GB RAM), searching for a simple word like "Feed" or "Hand" takes an initial 3 seconds simply to get any results. I find other areas of the Windows Explorer UI just as sluggish. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Document Libraries&lt;/span&gt;&lt;br /&gt;Windows 7 introduces the concept of Libraries which is a huge improvement over My Documents. Rather than forcing users to put files into My Documents, Libraries let you specify which folders you want to use for Documents, Video, Music, Pictures, etc. &lt;br /&gt;So immediately, I add my own "Projects" folder to My Documents and ensure it is indexed so I can find them fairly quickly. You can also add network drives so it isn't just limited to your machine. &lt;br /&gt;&lt;br /&gt;One thing to be aware of is that thumbnails seem to be gone and some of the previews don't show. The &lt;a href="http://blogs.msdn.com/rextang/archive/2009/08/27/9886672.aspx"&gt;secret &lt;/a&gt;is that the default option under Advanced for viewing is "Always Show Images, not thumbnails" - who thought of that?&lt;br /&gt;&lt;br /&gt;Search? What search. &lt;br /&gt;The Windows 7 and Vista search suffer from the "Google" UI approach - a single box where you have to know what the modifiers are to make it useful (datemodified, size). I recall a &lt;a href="http://blogs.msdn.com/yag/archive/2007/02/27/web-2-0-generation-y-and-a-new-blog.aspx"&gt;post &lt;/a&gt;by yag, where he commented on how new interns follow that concept, just put a single search box and have it search everything. This sounds great in concept but in a real application where users are comfortable putting information into fields (like Date Started or Customer Name and Part Name), users almost always wanted the traditional search where you put details into what you wanted to search for. That's a generational difference for sure, but having to know the modifiers, yuck. I see some experienced computer users who still type text into the search box and then instead of just hitting enter, move their mouse over to the Search button to initiate the search. &lt;br /&gt;&lt;br /&gt;A list of default search modifiers (or filters, as Microsoft calls them) is available &lt;a href="http://www.microsoft.com/windows/products/winfamily/desktopsearch/technicalresources/advquery.mspx"&gt;here&lt;/a&gt;. They also work with Windows Desktop search in XP and Vista.&lt;br /&gt;&lt;br /&gt;Developer hint: you can create your own filter handler tags - see the MSDN article &lt;a href="http://msdn.microsoft.com/en-us/library/dd940428(VS.85).aspx"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;One issue I have with the Windows Library concept may be specific to my machine (but others might be experiencing it) is a lag that seems to occur when searching or loading a simple folder. Sometimes the folder automatically refreshes (like XP) when I drop a new file into it, but other times I have to hit F5 to refresh it. I suspect the problem is related to when in an actual folder vs. a "library", which is akin to a virtual folder. &lt;br /&gt;&lt;br /&gt;Devices&lt;br /&gt;Ars Technica goes through the Devices page in details but one thing that I have observed is that it is *imperative* that you upgrade your drivers, especially if you are using things like SD Cards that are built into your computer. Sometimes, perfectly good SD cards don't show up or refresh until after I either a) restart or b) reload the driver. &lt;br /&gt;&lt;br /&gt;Ars goes through more of the details for under the hood enhancements and some of the built-in applications. I think everyone will immediately notice the changes to Paint (making it more Office 2007-like) and others - but many of the changes are things that I don't use much anymore. I switched from a Windows Smartphone to an iPhone so the Mobile sync doesn't really apply that much and most of my Mail (now handled through Live Essentials) is done through gMail. One weird change was that Movie Maker is now part of Live Essentials instead of the operating systems. The main reasoning behind that is the development life cycle. There can be improvements rolled out to that product that are separate from the OS updates. It also elevates the Live brand a bit more but is Movie Maker really a tool that belongs in a "web-based" suite like Live? I haven't worked with it that much in the new versions but it doesn't quite make sense in that regard. &lt;br /&gt;&lt;br /&gt;Multi-touch needs to wait for more devices and as we've seen, some of the Vista enhancements like &lt;a href="http://en.wikipedia.org/wiki/Windows_SideShow"&gt;Sideshow&lt;/a&gt; have never taken off. Multi-touch shows a lot of promise, though, as its implementations are being felt across the entire industry.&lt;br /&gt;&lt;br /&gt;At the end, Ars reverts back to the old comment that Windows 7 is really "Windows Vista SP2", even so far as &lt;a href="http://arstechnica.com/microsoft/news/2008/10/final-release-of-windows-7-to-have-kernel-version-6-1.ars"&gt;version &lt;/a&gt;#s go. I think it's the other way around. I think Windows Vista was more like a badly released beta and that Windows 7 is what they should have released in the first place. Considering that gMail was in beta just until &lt;a href="http://gmailblog.blogspot.com/2009/07/gmail-leaves-beta-launches-back-to-beta.html"&gt;recently&lt;/a&gt;, I don't think that's a far stretch.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://technorati.com/tag/FoxPro" rel="tag"&gt;FoxPro&lt;/a&gt; &lt;a href="http://technorati.com/tag/VFP" rel="tag"&gt;VFP&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-2680187176147302015?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://arstechnica.com/microsoft/reviews/2009/10/windows-7-the-review.ars/5' title='Windows 7 - review for developers'/><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/2680187176147302015/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=2680187176147302015' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/2680187176147302015'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/2680187176147302015'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2009/11/windows-7-review-for-developers.html' title='Windows 7 - review for developers'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_-dNhuLbJ06Q/Su15Iv1uQyI/AAAAAAAAAJw/wTP_OPWWD98/s72-c/Power+Settings.PNG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5492774.post-3964621219145285399</id><published>2009-10-28T10:31:00.000-04:00</published><updated>2009-10-28T10:31:24.162-04:00</updated><title type='text'>New Hentzenwerke Visual FoxPro Book</title><content type='html'>Jim Booth has released an update to the popular "Effective Techniques for Application Development with Visual FoxPro" book from Hentzenwerke. &lt;br /&gt;&lt;br /&gt;Published by Rainer Becker (and dFPUG c/o ISYS GmbH)  and Whil Hentzen in both English and German, the eBook covers Visual FoxPro pretty much from soup to nuts but as Jim notes, " Although there is a lot of Visual FoxPro specific information in the book, there are also discussions that transcend any particular development tool or language."&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.hentzenwerke.com/catalog/efftech2.htm"&gt;Hentzenwerke Moving from Windows to Linux&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-3964621219145285399?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.hentzenwerke.com/catalog/efftech2.htm' title='New Hentzenwerke Visual FoxPro Book'/><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/3964621219145285399/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=3964621219145285399' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/3964621219145285399'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/3964621219145285399'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2009/10/new-hentzenwerke-visual-foxpro-book.html' title='New Hentzenwerke Visual FoxPro Book'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-2015406671149499816</id><published>2009-10-17T06:25:00.000-04:00</published><updated>2009-10-17T06:25:14.650-04:00</updated><title type='text'>SWFox Conference on Twitter</title><content type='html'>For those who aren't attending &lt;a href="http://www.swfox.net"&gt;SW Fox&lt;/a&gt;, they're doing a great job keeping people up with &lt;a href="http://www.ustream.tv/channel/swfoxtv"&gt;live streaming&lt;/a&gt; as well as call-outs to twitters - for example, Eric's &lt;a href="http://saltydogllc.com/?p=97"&gt;first day wrap-up&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;But as well, &lt;a href="http://weblogs.foxite.com/joel_leach/default.aspx"&gt;Joel Leach&lt;/a&gt; over on Foxite is also posting his &lt;a href="http://weblogs.foxite.com/joel_leach/archive/2009/10/13/9123.aspx"&gt;thoughts &lt;/a&gt;bout it, including individual sessions, like &lt;a href="http://weblogs.foxite.com/joel_leach/archive/2009/10/15/9134.aspx"&gt;Dealing with Legacy code&lt;/a&gt; by&lt;a href="http://netcave.org/"&gt; Alan Stevens&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://twitter.com/swfox"&gt;SWFox Conference (swfox) on Twitter&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://technorati.com/tag/FoxPro" rel="tag"&gt;FoxPro&lt;/a&gt; &lt;a href="http://technorati.com/tag/VFP" rel="tag"&gt;VFP&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-2015406671149499816?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://twitter.com/swfox' title='SWFox Conference on Twitter'/><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/2015406671149499816/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=2015406671149499816' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/2015406671149499816'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/2015406671149499816'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2009/10/swfox-conference-on-twitter.html' title='SWFox Conference on Twitter'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-7213071185435071049</id><published>2009-10-15T06:07:00.001-04:00</published><updated>2009-10-15T06:42:36.126-04:00</updated><title type='text'>What Is Your Best Experience?</title><content type='html'>Amazing how a post on one topic really touches on so many others. Anil Dash posts about&lt;a href="http://dashes.com/anil/2009/10/communications-and-perception.html"&gt;Communications and Perception&lt;/a&gt;, defending his role as a marketer and communicator. The one line that hits home is "By starting to place importance on experiences and appreciation instead of objects and consumption, we become more sustainable as a society while also becoming more creative as a culture."&lt;br /&gt;&lt;br /&gt;Just last night, Trish and I were talking about music and concerts we've attended and certainly the best concerts we've seen were the ones that delivered the best overall experience instead of just the big artist (that's why seeing a Beatles cover band in the Cavern ranks right up there).&lt;br /&gt;&lt;br /&gt;The best place by far to have an experience is in person - and one of those places, this year, for FoxPro developers, is &lt;a href="http://www.swfox.net"&gt;Southwest Fox&lt;/a&gt;, starting today. Instead of just building a product, the opportunity to see how others are using it, and experiencing it, is invaluable. Attendees of any conference always talk about the value of the networking vs the value of the sessions. Get out and talk around. And then share them with the world, via blogs, tweets or just talking with developers back at home. &lt;br /&gt;&lt;br /&gt;This isn't a "touchy-feely" post - certainly there is absolutely a need for objects and consumption. But the real value should be in their experience and appreciation. Your product will make you feel better knowing how other people are experiencing it.&lt;br /&gt;&lt;br /&gt;That experience will also make your product and your development better.&lt;br /&gt;&lt;br /&gt;(disclaimer: I say this as I stay packed away in my office, sharing my experiences over forums, blogs and other items.)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://technorati.com/tag/FoxPro" rel="tag"&gt;FoxPro&lt;/a&gt; &lt;a href="http://technorati.com/tag/VFP" rel="tag"&gt;VFP&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-7213071185435071049?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://dashes.com/anil/2009/10/communications-and-perception.html' title='What Is Your Best Experience?'/><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/7213071185435071049/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=7213071185435071049' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/7213071185435071049'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/7213071185435071049'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2009/10/what-is-your-best-experience.html' title='What Is Your Best Experience?'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-361909585043298804</id><published>2009-10-14T05:52:00.000-04:00</published><updated>2009-10-14T05:52:11.825-04:00</updated><title type='text'>Visionpace: Liar, liar, pants on fire!</title><content type='html'>Dave Aring has a great post on commenting that isn't specific to VFP but in any development environment. He takes on the Scrum and Agile belief that "all comments are lies".&lt;br /&gt;&lt;br /&gt;I will readily say it - last year at &lt;a href="http://www.swfox.net"&gt;SWFox&lt;/a&gt;, I made the suggestion that you really don't need to comment your code (at least to a certain extent) if you are using Source code control. After all, when you change something, you check it in, explaining why you did it. (in addition, it was a diatribe against comment headers in code - don't make me read the top of a program to figure out what you did in line 4931)&lt;br /&gt;&lt;br /&gt;After reading Dave's post, obviously trying to figure out WHY someone did something by reading through the change log might be a little tough - so you may want to comment it a little. I like Art's point : "it's good to comment *why* something was done (as opposed to commenting *what* something does)"&lt;br /&gt;&lt;br /&gt;The problem isn't that all comments are lies or that comments don't prove value, it's that when the code changes, the original comments aren't revised! (that is the one reason why Dave does note as the problem).&lt;br /&gt;&lt;br /&gt;It's a great read: &lt;br /&gt;&lt;a href="http://blog.visionpace.com/2009/09/liar-liar-pants-on-fire.html"&gt;Visionpace: Liar, liar, pants on fire!&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now, as Dave said&lt;br /&gt;"If you have made it this far, you are just not getting enough billable hours in. ", back to billable hours.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-361909585043298804?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://blog.visionpace.com/2009/09/liar-liar-pants-on-fire.html' title='Visionpace: Liar, liar, pants on fire!'/><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/361909585043298804/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=361909585043298804' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/361909585043298804'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/361909585043298804'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2009/10/visionpace-liar-liar-pants-on-fire.html' title='Visionpace: Liar, liar, pants on fire!'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-8661886460654056057</id><published>2009-10-08T06:58:00.001-04:00</published><updated>2009-10-14T11:33:00.669-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='foxpro swfox'/><title type='text'>What You Should be Doing Next Week:: Blogging Southwest Fox 2009</title><content type='html'>I was going to title this "What are you doing next week" but unfortunately, I can't make &lt;a href="http://www.swfox.net"&gt;SW Fox&lt;/a&gt; this year.&lt;br /&gt;&lt;br /&gt;But the session list totally rocks. From basic VFP topics to how to use VFP with SourceGear's &lt;a href="http://www.sourcegear.com/vault/"&gt;Vault &lt;/a&gt;and &lt;a href="http://subversion.tigris.org/"&gt;Subversion &lt;/a&gt;and a cool keynote from Sara Ford, I'm really going to miss the learning and networking opportunities.&lt;br /&gt;&lt;br /&gt;So here's hoping those lucky attendees will share the love and live-blog some of the great sessions, or better yet, &lt;a href="http://www.ustream.tv/channel/swfoxtv"&gt;U-Stream them&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Here's hoping....&lt;br /&gt;&lt;a href="http://doughennig.blogspot.com/2009/10/southwest-fox-2009-is-next-week.html"&gt;Doug Hennig: Southwest Fox 2009 is Next Week!&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Update: Eric Selje - Salty Dog Solutions - will be blogging &lt;a href="http://saltydogllc.com/?cat=10"&gt;here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-8661886460654056057?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://doughennig.blogspot.com/2009/10/southwest-fox-2009-is-next-week.html' title='What You Should be Doing Next Week:: Blogging Southwest Fox 2009'/><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/8661886460654056057/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=8661886460654056057' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/8661886460654056057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/8661886460654056057'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2009/10/what-you-should-be-doing-next-week.html' title='What You Should be Doing Next Week:: Blogging Southwest Fox 2009'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-8381588020790237174</id><published>2009-09-24T07:10:00.000-04:00</published><updated>2009-09-24T07:10:03.474-04:00</updated><title type='text'>Adam Barr on Leveraging Your Weakness</title><content type='html'>Adam has a great post about how managers can take what many perceive as a weakness and turn it into a strength. &lt;br /&gt;&lt;br /&gt;His point is that if you consider a weakess is likely that the user is overdoing something, "which means that the person actually possesses a strength that they are just overdoing. Take away the overdoing and presto, what's left is a strength."&lt;br /&gt;&lt;br /&gt;It only goes so far certainly - we are talking about personality traits (what quality is a developer who writes buggy code overdoing?). &lt;br /&gt;&lt;br /&gt;I'm not so sure what the long term effects of promoting a weakness might be, but it is an interesting idea. &lt;br /&gt;&lt;br /&gt;Do you have a weakness that you can "flip" into a strength?&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.proudlyserving.com/archives/2009/09/leverage_your_w.html"&gt;Proudly Serving My Corporate Masters: Leverage Your Weakness&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://technorati.com/tag/FoxPro" rel="tag"&gt;FoxPro&lt;/a&gt; &lt;a href="http://technorati.com/tag/VFP" rel="tag"&gt;VFP&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-8381588020790237174?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.proudlyserving.com/archives/2009/09/leverage_your_w.html' title='Adam Barr on Leveraging Your Weakness'/><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/8381588020790237174/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=8381588020790237174' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/8381588020790237174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/8381588020790237174'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2009/09/adam-barr-on-leveraging-your-weakness.html' title='Adam Barr on Leveraging Your Weakness'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-404491333864972154</id><published>2009-09-16T05:53:00.001-04:00</published><updated>2009-09-16T05:54:00.639-04:00</updated><title type='text'>Social Media and Recruiting: ways to go?</title><content type='html'>This is a great 4 minute review of how social networking is changing the world...Some of the stats are pretty incredible to think about.&lt;br /&gt;&lt;br /&gt;I've been off Twitter and FB for a while now but using LinkedIn and VisualCV when looking for contract work. What was interesting was that one of the recruiters I was talking to was starting to get into the habit of using LinkedIn for searching for people.&lt;br /&gt;&lt;br /&gt;I'm sure in the US and other areas, this has pretty much already happened for recruiters months and years ago. What's different here though, is that these are federal government recruiters - one demographic that has not really embraced social media (at least in Canada).&lt;br /&gt;&lt;br /&gt;At any rate, very interesting and well-done presentation.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blogs.sun.com/lskrocki/entry/still_think_corporate_participation_in"&gt;Still think corporate participation in Social Media is optional? - Skrocki&amp;#39;s Blog&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="500" height="340"&gt;&lt;param name="movie" value="http://www.youtube.com/v/sIFYPQjYhv8&amp;hl=en&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/sIFYPQjYhv8&amp;hl=en&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-404491333864972154?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://blogs.sun.com/lskrocki/entry/still_think_corporate_participation_in' title='Social Media and Recruiting: ways to go?'/><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/404491333864972154/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=404491333864972154' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/404491333864972154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/404491333864972154'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2009/09/social-media-and-recruiting-ways-to-go.html' title='Social Media and Recruiting: ways to go?'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-1647427781019539771</id><published>2009-09-13T17:40:00.000-04:00</published><updated>2009-09-13T17:40:16.340-04:00</updated><title type='text'>Be aware of Gmail Scam</title><content type='html'>I use gMail and just received an email asking for information regarding account currency.&lt;br /&gt;&lt;br /&gt;This is a major scam. Although this is being reported, immediate Google searches aren't turning up anything.&lt;br /&gt;&lt;br /&gt;The emails are sent from verifyscess@googledesk.com and is cc'ing a "Gmail Team" address at accessaccount10@gmail.com.&lt;br /&gt;&lt;br /&gt;Do NOT be fooled - this is most definitely a scam.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://hubpages.com/hub/Gmail-Scam"&gt;Gmail Scam Warning Code:VX2G99AAJ&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-1647427781019539771?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://hubpages.com/hub/Gmail-Scam' title='Be aware of Gmail Scam'/><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/1647427781019539771/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=1647427781019539771' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/1647427781019539771'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/1647427781019539771'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2009/09/be-aware-of-gmail-scam.html' title='Be aware of Gmail Scam'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-9109379194625622503</id><published>2009-09-02T08:35:00.000-04:00</published><updated>2009-09-02T08:35:32.002-04:00</updated><title type='text'>Peter discusses using ARG Command Bars</title><content type='html'>FoxPro developer Peter Hart has started a blog to showcase his learnings when working with the Arg Command Bars library.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.arg.kirov.ru/products/cmdbars/index.aspx"&gt;CommandBars &lt;/a&gt;is a fantastic library for FoxPro developers that replicates the Office command menus beautifully. Peter shows how it goes even further now with support for the Office 2007 interface.&lt;br /&gt;&lt;br /&gt;Great place to learn how to use his tool even further from my &lt;a href="http://www.aksel.com/screencasts/commandbars.html"&gt;earlier videos&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://arg-software.intabrokers.com/blog/"&gt;ARG-Software (Command Bars Library blog of a FoxPro developer)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://technorati.com/tag/FoxPro" rel="tag"&gt;FoxPro&lt;/a&gt; &lt;a href="http://technorati.com/tag/VFP" rel="tag"&gt;VFP&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-9109379194625622503?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://arg-software.intabrokers.com/blog/' title='Peter discusses using ARG Command Bars'/><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/9109379194625622503/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=9109379194625622503' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/9109379194625622503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/9109379194625622503'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2009/09/peter-discusses-using-arg-command-bars.html' title='Peter discusses using ARG Command Bars'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-9048242526507047321</id><published>2009-08-22T08:08:00.000-04:00</published><updated>2009-08-22T08:08:33.227-04:00</updated><title type='text'>Craig's DevLink - I like it when you agree with me</title><content type='html'>Craig has some great reviews of the recent DevLinks days in his area but this post caught my eye:&lt;br /&gt;&lt;a href="http://www.craigberntson.com/blog/2009/08/devlink-day-2.asp"&gt;DevBlog: DevLink Day 2&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Why? Two reasons:&lt;br /&gt;1) This comment:&lt;br /&gt;"Concepts such as what kinds of comments and how many are important. It turns out that most comments in code aren't needed. If you write self-documenting code, even fewer are needed."&lt;br /&gt;&lt;br /&gt;Those who attended my sessions at last year's &lt;a href="http://www.swfox.net"&gt;SWFox&lt;/a&gt; heard me state this numerous times in my session on Code Analyst - even to the point where it appeared I was suggesting getting rid of comments entirely. &lt;br /&gt;&lt;br /&gt;In a recent project, though, it became even clearer - I only needed comments to bookmark where I may need to do future work. &lt;br /&gt;&lt;br /&gt;Self-documenting code is essential to maintainable code - and while having methods like GetPubishingAcronymForABookTitle goes into overkill of how to name a method, naming your methods right is important regardless of the language.&lt;br /&gt;&lt;br /&gt;On the other side of the coin, one of the tools used in a recent project was a .Net documentation tool (&lt;a href="http://www.innovasys.com/products/dx2008/overview.aspx"&gt;Document X&lt;/a&gt;) that puts the documentation right into the .Net code as comments. While certainly useful for making documentation part of the stored source, it cluttered function headers with lots of comments. &lt;br /&gt;&lt;br /&gt;The second reason?&lt;br /&gt;&lt;br /&gt;" In the car were Rod Paddock and John V. Peterson, who I have known for a very long time."&lt;br /&gt;I can only imagine...getting together with old friends is always fun...getting together with opinionated older friends is even better.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://technorati.com/tag/FoxPro" rel="tag"&gt;FoxPro&lt;/a&gt; &lt;a href="http://technorati.com/tag/VFP" rel="tag"&gt;VFP&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-9048242526507047321?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.craigberntson.com/blog/2009/08/devlink-day-2.asp' title='Craig&apos;s DevLink - I like it when you agree with me'/><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/9048242526507047321/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=9048242526507047321' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/9048242526507047321'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/9048242526507047321'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2009/08/craigs-devlink-i-like-it-when-you-agree.html' title='Craig&apos;s DevLink - I like it when you agree with me'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-1812486737114083015</id><published>2009-07-30T16:53:00.003-04:00</published><updated>2009-07-30T17:16:27.037-04:00</updated><title type='text'>So long Newsgator (for me, at least)</title><content type='html'>Change is never easy.&lt;br /&gt;&lt;br /&gt;I've been using Newsgator for several years now (even bought it when it was a commercial user tool) and have loved seeing it move from an upstart newsreader (congrats Greg!) to a great enterprise tool.&lt;br /&gt;&lt;br /&gt;When Google Reader came along, I still continued to use Newsgator mostly for the great Newsgator Go (or mobile) version. I loved being able to read feeds on my phone without having to go online every time. &lt;br /&gt;&lt;br /&gt;Sadly today, in my inbox, I received word that they are no longer going to support these tools for consumer use after August 31st.&lt;br /&gt;&lt;br /&gt;Now I have to move all of the great clips (another great feature of Newsgator) to another reader. I don't mind Google Reader but I will really miss not having it on my Windows mobile device. That said, it may convince me to look at other phones now that one of my main reasons for staying away from the iPhone and others was NewsGator Go. &lt;br /&gt;&lt;br /&gt;To their credit, Newsgator is providing some great transition tips &lt;a href="http://blogs.newsgator.com/daily/?mtcCampaign=-1&amp;mtcEmail=17127947"&gt;encouraging users to move to Google&lt;/a&gt;. It's a win-win for Google Reader, certainly but I will definitely miss Newsgator as my consumer reader.&lt;br /&gt;&lt;br /&gt;Good luck in the future, Newsgator - you were a wonderful tool and exactly what I was looking for, when I needed it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-1812486737114083015?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/1812486737114083015/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=1812486737114083015' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/1812486737114083015'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/1812486737114083015'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2009/07/so-long-newsgator.html' title='So long Newsgator (for me, at least)'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-187610260643978230</id><published>2009-07-15T05:54:00.000-04:00</published><updated>2009-07-15T05:54:21.471-04:00</updated><title type='text'>dev{shaped} » Fun Developers book</title><content type='html'>&lt;a href="http://devshaped.com/book"&gt;dev{shaped} » Book&lt;/a&gt; has compiled a list of various developer-oriented posts (and comics) and put them into a creative commons book called Developers, developers, developers. It covers specific development topics (like continuous integration and language wars) to career advice (remaining valuable) and up and coming concepts. Plus it has a handful of very funny comics.&lt;br /&gt;&lt;br /&gt;Sure, you can read a lot of these posts online - but now you can either a)buy it or b) download it in PDF.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-187610260643978230?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://devshaped.com/book' title='dev{shaped} » Fun Developers book'/><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/187610260643978230/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=187610260643978230' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/187610260643978230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/187610260643978230'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2009/07/devshaped-fun-developers-book.html' title='dev{shaped} » Fun Developers book'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-2857962958657340397</id><published>2009-07-08T09:14:00.003-04:00</published><updated>2009-07-08T09:26:46.892-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FoxPro'/><category scheme='http://www.blogger.com/atom/ns#' term='VFP'/><category scheme='http://www.blogger.com/atom/ns#' term='vfpfoxpro vfpx'/><title type='text'>PEM Editor Video Series for VFP</title><content type='html'>If you haven't tried out the VFPX PEM Editor, you may want to check out Jordan's video series &lt;a href="http://jordanmachine.com/PEM_Editor_Videos.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The PEM Editor replaces the Properties Window, Edit Property/Method, New Property, and New Method, and Document View tools in Visual FoxPro. Sound like a lot?&lt;br /&gt;&lt;br /&gt;There are 8 videos in all, totaling less than an hour of your viewing time. &lt;br /&gt;&lt;br /&gt;It's this type of tool, along with the &lt;a href="http://akselsoft.blogspot.com/2009/04/vfpx-showcase-control-renamer.html"&gt;Control Renamer&lt;/a&gt;, FoxTabs, Tabbing Navigation, among others, that shows the need for an installer for VFP that includes these great tools that improve the VFP IDE experience.&lt;br /&gt;&lt;br /&gt;It's something that has been brought up numerous times before, in VFPX discussions as well as at last year's &lt;a href="http://www.swfox.net"&gt;Southwest Fox&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;Consider a single installer that runs automatically after a VFP installation (or on its own) that installs and sets up:&lt;br /&gt; - PEM Editor&lt;br /&gt; - Control Renamer&lt;br /&gt; - FoxTabs&lt;br /&gt; - Tabbing Navigation&lt;br /&gt; - Automated Build&lt;br /&gt; - the updated Sedna and FFC controls&lt;br /&gt; - Alternate SCCText (if desired)&lt;br /&gt; - Code Analyst&lt;br /&gt;&lt;br /&gt;(the above are all tools that improve the IDE)&lt;br /&gt;And then creates a separate Samples folder for the other samples such as:&lt;br /&gt; - GDIPlusX&lt;br /&gt; - FoxCharts&lt;br /&gt; - ThemedControls&lt;br /&gt; - Tab Menu&lt;br /&gt; - Desktop Alerts&lt;br /&gt; - and more&lt;br /&gt;&lt;br /&gt;Developers are always using new tools and expecting the most from their IDEs - many of the tools in VFPX provide a major improvement in productivity for VFP developers, be they building new applications or maintaining legacy applications.&lt;br /&gt;&lt;br /&gt;If you haven't taken advantage of these tools, check out the &lt;a href="http://jordanmachine.com/PEM_Editor_Videos.html"&gt;video series&lt;/a&gt; for the PEM Editor just to get a glimpse of what you're missing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-2857962958657340397?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://jordanmachine.com/PEM_Editor_Videos.html' title='PEM Editor Video Series for VFP'/><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/2857962958657340397/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=2857962958657340397' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/2857962958657340397'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/2857962958657340397'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2009/07/pem-editor-video-series-for-vfp.html' title='PEM Editor Video Series for VFP'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-7216440988619233410</id><published>2009-06-30T05:33:00.003-04:00</published><updated>2009-07-06T05:23:46.168-04:00</updated><title type='text'>Southwest Fox Registration Saver Deadline Coming Up</title><content type='html'>&lt;a href="http://www.swfox.net"&gt;Southwest Fox&lt;/a&gt;, the fantastic US FoxPro developers conference, has a special deal for registration with $125 off the regular $745 price. &lt;br /&gt;&lt;br /&gt;Note: The deadline has been extended to July 7th, 2009 so sign up today.&lt;br /&gt;&lt;br /&gt;The conference line-up looks amazing this year, just as in past years. One of the tracks that really seems to be fleshing out is the Technology Track, with sessions on Virtual PC, SourceGear Vault, Subversion and more. &lt;br /&gt;&lt;br /&gt;Southwest Fox definitely has it all: great speakers, great sessions, great networking - a great experience for developers.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://technorati.com/tag/FoxPro" rel="tag"&gt;FoxPro&lt;/a&gt; &lt;a href="http://technorati.com/tag/VFP" rel="tag"&gt;VFP&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-7216440988619233410?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.swfox.net' title='Southwest Fox Registration Saver Deadline Coming Up'/><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/7216440988619233410/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=7216440988619233410' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/7216440988619233410'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/7216440988619233410'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2009/06/southwest-fox-registration-saver.html' title='Southwest Fox Registration Saver Deadline Coming Up'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-7698838036336498295</id><published>2009-06-27T07:23:00.003-04:00</published><updated>2009-06-27T07:36:21.966-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='michael jackson'/><title type='text'>Death of a legend</title><content type='html'>While I don't usually use this site for personal thoughts, I do want to take a moment to recognize the death of Michael Jackson, a true legend in pop culture and someone who affected the entire world with his music in a positive way.&lt;br /&gt;&lt;br /&gt;While his lifestyle was crushing and troubling, his legacy lives on through his music and his impact on the video generation. Like his music or not, he invented pop culture as it exists today (through video, music and celebrity). I think most of the world today has some memory of him, as I know I do. &lt;br /&gt;&lt;br /&gt;Just a thought - his planned comeback tour should continue on - with other musicians (Justin, Usher, Smokey, Paul, his brothers to name a few) taking part in those 50 concert shows, paying tribute to him. The money could go towards the obvious litigation that will be coming. &lt;br /&gt;&lt;br /&gt;As the Righteous Brothers sang, "if there's a rock'n'roll heaven," then Michael has just joined one hell of a band.&lt;br /&gt;&lt;br /&gt;He will be missed but his music lives on. Rest in peace, Michael Jackson.&lt;br /&gt;&lt;br /&gt;Anyways, back to our regularly scheduled development posts.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://technorati.com/tag/FoxPro" rel="tag"&gt;FoxPro&lt;/a&gt; &lt;a href="http://technorati.com/tag/VFP" rel="tag"&gt;VFP&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-7698838036336498295?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/7698838036336498295/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=7698838036336498295' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/7698838036336498295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/7698838036336498295'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2009/06/death-of-legend.html' title='Death of a legend'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-5522114976460875454</id><published>2009-06-17T10:33:00.002-04:00</published><updated>2009-06-17T10:57:03.099-04:00</updated><title type='text'>Test Driven SQL Projects</title><content type='html'>SQL Server Central just posted part 2 of an interesting &lt;a href="http://www.sqlservercentral.com/articles/Database+Design/66845/"&gt;article &lt;/a&gt;on applying the techniques of test-driven development to a SQL project. The author, &lt;a href="https://mvp.support.microsoft.com/profile=0FF358E7-AD41-46F0-B910-6A4EA2545ADE"&gt;Andy Leonard&lt;/a&gt;, goes from describing basic tests for setting up your databases to writing tests for inserting and updating data. &lt;br /&gt;&lt;br /&gt;It's good stuff for a variety of reasons. He noted in the &lt;a href="http://www.sqlservercentral.com/articles/Testing/66553/"&gt;first &lt;/a&gt;article that some of the techniques are simply good coding practices (drop and recreate) but by writing them up as test scripts as well as within the SQL itself makes the entire piece part of a regression test and can resolve lots of further problems. He also points out that unit tests mean different things to different people so ensure your definition is the same as others on your team.&lt;br /&gt;&lt;br /&gt;I'll be the first to admit that I'm not following the full pattern of writing individual tests out for each of my tables (the firing squad can resume shortly) - but the overall approach that Andy describes is solid and depending on how you code, you might find you are already doing a lot of what he describes. &lt;br /&gt;&lt;br /&gt;"What’s really cool about all this is the fact that it’s re-executable. You can run the same script against a new instance of SQL Server where WeatherData has never been deployed, or you can run it where only version 1.0 has been deployed. I like that a lot."&lt;br /&gt;&lt;br /&gt;Much of it is obvious to most db developers (before creating a stored proc, check its existence, ensure you have the right database selected, etc) - but there's still a lot of dirty code out there in the while. I *love* re-executable SQL - on my current project, I'm seeing a lot of code that is made to run once, just to clean something up. I keep on sending it back to the developers noting that when we do an interim release, we need to be able to re-run the code as often as it takes until it's ready. &lt;br /&gt;&lt;br /&gt;Definitely worth the read.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://technorati.com/tag/FoxPro" rel="tag"&gt;FoxPro&lt;/a&gt; &lt;a href="http://technorati.com/tag/VFP" rel="tag"&gt;VFP&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-5522114976460875454?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/5522114976460875454/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=5522114976460875454' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/5522114976460875454'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/5522114976460875454'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2009/06/test-driven-sql-projects.html' title='Test Driven SQL Projects'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-6738918776878895217</id><published>2009-06-03T19:13:00.004-04:00</published><updated>2009-06-03T19:37:27.543-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='operating systems'/><category scheme='http://www.blogger.com/atom/ns#' term='VFP'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>Linux ready for the desktop? Show me productivity first.</title><content type='html'>ZDNet has an &lt;a href="http://news.zdnet.com/2100-9595_22-308528.html"&gt;article &lt;/a&gt;titled Linux Ready for the Desktop.&lt;br /&gt;&lt;br /&gt;While I do enjoy Ubuntu quite a bit (at least on one desktop) and I would never doubt the usefulness of Linux on a wide variety of machines, my concerns over open source systems have become more widespread with issues about &lt;a href="http://news.cnet.com/8301-13505_3-10208294-16.html"&gt;forks&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Linux is certainly a different scenario than MySQL but consider this - mySQL has been considered a viable alternative for commercial RDBMS' for how long? It's been around since 1994 but has only really become a force to reckon with in the past 10 years. &lt;br /&gt;&lt;br /&gt;Certain incarnations of Linux are certainly ready for the desktop (OpenOffice is arguably a good alternative to MS Office - &lt;a href="http://blogs.zdnet.com/Ou/?p=120"&gt;bloat &lt;/a&gt;and all)  - but then so are an entirely cloud or web-based OSes. &lt;br /&gt;&lt;br /&gt;My #1 concern with any OS that I'm going to place on my desktop is "does it make me more productive?" (an offshoot of that would be "does it make any of my clients more productive?") &lt;br /&gt;&lt;br /&gt;I'm a firm believer that people will pay for things that make them more productive. I believe Vista has shown that people are NOT willing to pay for upgrades that don't. The security argument doesn't completely wash with me because too many people gun for Microsoft since it is the leader - no OS is impervious to attack (except the one that isn't connected to anything). &lt;br /&gt;&lt;br /&gt;Now I've been playing with the Windows 7 beta and so far, it isn't bad - but it still annoys me a bit more than Windows XP but far less than Vista. I've been living in a Visual Studio 2008 project with &lt;a href="http://www.devexpress.com"&gt;third party &lt;/a&gt;controls and while some of the results are nice, I still rely on &lt;a href="http://vfpx.codeplex.com"&gt;Visual FoxPro&lt;/a&gt; to do a great deal of the background work. &lt;br /&gt;&lt;br /&gt;On the same project, I work with SQL 2005 but I also have SQL 2008 on my office machines - I can safely say SQL 2008 is far better than SQL 2005 in making me more productive. Yet I still use VFP to write automated SQL scripts - it's simply better at text handling than any other tool.&lt;br /&gt;&lt;br /&gt;Some people love the Windows Explorer - others find alternatives. The only real way any new operating system is going to make it is by making people more &lt;span style="font-weight:bold;"&gt;productive&lt;/span&gt;, not by a little but by a lot. &lt;br /&gt;&lt;br /&gt;The iPhone isn't a great phone - but it does open up the entire world of smart phones to consumers in a way that Windows Mobile simply hasn't. Both phones have features that the others don't - but cell phones are a consumer product - they rely not just on impression and productivity but also "coolness".&lt;br /&gt;&lt;br /&gt;Desktop operating systems do not rely on the coolness factor - they are there to get a job done. I don't want an operating system that simply replaces another - I want one that makes me &lt;a href="http://www.google.ca/search?rlz=1C1GGLS_enCA316CA316&amp;sourceid=chrome&amp;ie=UTF-8&amp;q=do+more+with+less"&gt;do more with less&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; &lt;a href="http://technorati.com/tag/FoxPro" rel="tag"&gt;FoxPro&lt;/a&gt; &lt;a href="http://technorati.com/tag/VFP" rel="tag"&gt;VFP&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-6738918776878895217?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/6738918776878895217/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=6738918776878895217' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/6738918776878895217'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/6738918776878895217'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2009/06/linux-ready-for-desktop-show-me.html' title='Linux ready for the desktop? Show me productivity first.'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-5560379543740614112</id><published>2009-06-01T11:25:00.001-04:00</published><updated>2009-06-01T11:25:51.727-04:00</updated><title type='text'>Refactoring T-SQL</title><content type='html'>While much has been said about the benefits of refactoring application code (see &lt;a href="http://vfpx.codeplex.com/Wiki/View.aspx?title=Code%20Analyst"&gt;VFPX Code Analyst&lt;/a&gt;), I typically haven't seen a lot of noise about refactoring T-SQL and stored procedure code. &lt;br /&gt;&lt;br /&gt;The refactoring features found in SQL Manager tend to be more about refactoring your database design but not about the actual content of the SPs.&lt;br /&gt;&lt;br /&gt;It's important to note that if you tend to rely on large stored procedures, then many of the same rules of refactoring apply:&lt;br /&gt;&lt;br /&gt;1. Keep it short and sweet.&lt;br /&gt;2. Make it readable.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So when dealing with a particularly unruly stored proc (over 1000 lines), I was quite happy to find Red Gate's &lt;a href="http://www.red-gate.com/products/SQL_Refactor/index.htm"&gt;SQL Refactor&lt;/a&gt; (here's a &lt;a href="http://www.simple-talk.com/sql/sql-tools/faster-database-development-with-sql-refactor/"&gt;post &lt;/a&gt;from the lead developer).&lt;br /&gt;&lt;br /&gt;Some of the features are pretty basic (renaming variables, etc) but the one of great interest was the Encapsulate as a new Stored Proc. &lt;br /&gt;&lt;br /&gt;As with a number of tools that are add-ons to other components, its overall usefulness might seem limited if you are building your stored procs either using testing patterns or have good code review sessions - but if you're inheriting or just watching one procedure get too big, it's definitely useful.&lt;br /&gt;&lt;br /&gt;What about your SQL applications? How big do you let your stored procedures get?&lt;br /&gt;What tools do you use?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-5560379543740614112?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/5560379543740614112/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=5560379543740614112' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/5560379543740614112'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/5560379543740614112'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2009/06/refactoring-t-sql.html' title='Refactoring T-SQL'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-2478078041788411501</id><published>2009-05-20T10:00:00.002-04:00</published><updated>2009-05-20T10:02:10.771-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FoxPro'/><category scheme='http://www.blogger.com/atom/ns#' term='VFP'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><title type='text'>Dealing with Font Sizes</title><content type='html'>Andy Kramek offers some great samples of identifying how long a string can be in a particular font. This is something that every UI designer needs to consider when dealing with screen design.&lt;br /&gt;&lt;br /&gt;While many VFP developers will use FONTMETRIC and TXTWIDTH, Andy has wrapped it all into a fairly easy function to call.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Check it out &lt;a href="http://weblogs.foxite.com/andykramek/archive/2009/05/18/8455.aspx"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://technorati.com/tag/FoxPro" rel="tag"&gt;FoxPro&lt;/a&gt; &lt;a href="http://technorati.com/tag/VFP" rel="tag"&gt;VFP&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-2478078041788411501?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/2478078041788411501/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=2478078041788411501' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/2478078041788411501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/2478078041788411501'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2009/05/dealing-with-font-sizes.html' title='Dealing with Font Sizes'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-2121880024571970486</id><published>2009-04-15T09:27:00.004-04:00</published><updated>2009-04-15T09:37:23.538-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='VFP'/><title type='text'>SQL: Does a Field Exist?</title><content type='html'>In the FoxPro world, checking to see if a field exists can be done a number of ways:&lt;br /&gt;&lt;br /&gt;=AFIELDS(la)&lt;br /&gt;IF ASCAN(la,"FIELDNAME")&gt;0&lt;br /&gt;&lt;br /&gt;ENDIF&lt;br /&gt;&lt;br /&gt;or &lt;br /&gt;&lt;br /&gt;IF TYPE("FIELDNAME") = "U"&lt;br /&gt;&lt;br /&gt;(I'm sure there are lots of other ways especially if you're already working with a data dictionary tool)&lt;br /&gt;&lt;br /&gt;In T-SQL, there is no real equivalent however, you can do the same by using the INFORMATION_SCHEMA table.&lt;br /&gt;&lt;br /&gt;While there is no shortage of sites on the web that will show you similar code (like this &lt;a href="http://doc.ddart.net/mssql/sql70/ia-iz_28.htm"&gt;one&lt;/a&gt;), I wanted to post it here for any VFP devs who may be switching between DBFs and SQL.&lt;br /&gt;&lt;br /&gt;IF NOT EXISTS( SELECT * FROM INFORMATION_SCHEMA.COLUMNS &lt;br /&gt; WHERE INFORMATION_SCHEMA.COLUMNS.TABLE_NAME = 'MyTable'&lt;br /&gt; AND COLUMN_NAME='MyColumn')&lt;br /&gt;ALTER TABLE myTable ADD MyColumn decimal(10,2) NULL&lt;br /&gt;&lt;br /&gt;Of course, this assumes that the table already exists but you can use similar approaches for tables as well. &lt;br /&gt;&lt;br /&gt;IF NOT EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES&lt;br /&gt;        WHERE TABLE_NAME = 'myTable')&lt;br /&gt;CREATE TABLE .....&lt;br /&gt;&lt;br /&gt;if NOT EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS&lt;br /&gt;        WHERE TABLE_NAME = 'CFG_Fees'&lt;br /&gt; AND COLUMN_NAME='minmFee')&lt;br /&gt;ALTER TABLE .....&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://technorati.com/tag/FoxPro" rel="tag"&gt;FoxPro&lt;/a&gt; &lt;a href="http://technorati.com/tag/VFP" rel="tag"&gt;VFP&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-2121880024571970486?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/2121880024571970486/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=2121880024571970486' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/2121880024571970486'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/2121880024571970486'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2009/04/sql-does-field-exist.html' title='SQL: Does a Field Exist?'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5492774.post-1433698376958432105</id><published>2009-04-05T12:33:00.005-04:00</published><updated>2009-04-14T16:20:46.667-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VFP'/><category scheme='http://www.blogger.com/atom/ns#' term='VFPX'/><category scheme='http://www.blogger.com/atom/ns#' term='vfpfoxpro vfpx'/><title type='text'>VFPx Showcase: Control Renamer</title><content type='html'>When speaking about VFPx at last year's Southwest Fox conference, it became evident that there aren't a lot of avenues for finding out how to use various pieces of VFPx. So as part of the &lt;a href="http://www.thefoxshow.com"&gt;FoxShow&lt;/a&gt;, I'm creating videos designed to showcase VFPx components, starting with the Control Renamer.&lt;br /&gt;&lt;br /&gt;If you have ever wanted to rename a control in a class or form but were hesitant because of missing other code references, the Control Renamer is definitely a tool you want to try. &lt;br /&gt;&lt;br /&gt;Now, there are lots of areas where new options can be added into this tool - but they are primarily "extras" like setting color settings or some logging. &lt;br /&gt;&lt;br /&gt;Check it out below!&lt;br /&gt;&lt;br /&gt;&lt;enclosure url="http://media.libsyn.com/media/akselsoft/ControlRenamer.swf" length="5146773" type="application/octet-stream" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" id="ControlRenamer" height="640" width="480" ALIGN=""&gt;&lt;br /&gt;&lt;br /&gt; &lt;PARAM NAME=movie VALUE="http://media.libsyn.com/media/akselsoft/ControlRenamer.swf"&gt; &lt;PARAM NAME=quality VALUE=high&gt;  &lt;PARAM NAME=wmode VALUE=transparent&gt; &lt;EMBED  src="http://media.libsyn.com/media/akselsoft/ControlRenamer.swf" quality=high wmode=transparent  height="640" width="480" bgcolor=#FFFFFF NAME="ControlRenamer" ALIGN="" TYPE="application/x-shockwave-flash"  PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer"&gt;&lt;/EMBED&gt;&lt;br /&gt;&lt;br /&gt;&lt;/OBJECT&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://technorati.com/tag/FoxPro" rel="tag"&gt;FoxPro&lt;/a&gt; &lt;a href="http://technorati.com/tag/VFP" rel="tag"&gt;VFP&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-1433698376958432105?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/1433698376958432105/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=1433698376958432105' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/1433698376958432105'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/1433698376958432105'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2009/04/vfpx-showcase-control-renamer.html' title='VFPx Showcase: Control Renamer'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-9021256507411911081</id><published>2009-04-02T17:07:00.002-04:00</published><updated>2009-04-02T17:11:31.116-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vfp foxpro'/><title type='text'>New VFP 9 SP2 Hotfixes: Report Designer Bug Fixed</title><content type='html'>Rick Schummer just noted &lt;a href="http://rickschummer.com/blog/2009/04/vfp-9-sp2-hotfix-released.html"&gt;this&lt;/a&gt; on his blog  but it bears repeating.&lt;br /&gt;&lt;br /&gt;A bug that Cathy Pountney had reported with the VFP 9 SP2 Report Designer has been fixed and is available for download, combined with 2 other hotfixes.&lt;br /&gt;&lt;br /&gt;As Rick points out:&lt;br /&gt;"Hopefully this is just the third in a string of hotfixes we will see from Microsoft as they support the product we all love. Today is a very good day. This is one small step for VFP, one giant leap for VFP developers. "&lt;br /&gt;&lt;br /&gt;Download it &lt;a href="http://code.msdn.microsoft.com/KB968409/Release/ProjectReleases.aspx?ReleaseId=2445"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://technorati.com/tag/FoxPro" rel="tag"&gt;FoxPro&lt;/a&gt; &lt;a href="http://technorati.com/tag/VFP" rel="tag"&gt;VFP&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-9021256507411911081?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/9021256507411911081/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=9021256507411911081' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/9021256507411911081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/9021256507411911081'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2009/04/new-vfp-9-sp2-hotfixes-report-designer.html' title='New VFP 9 SP2 Hotfixes: Report Designer Bug Fixed'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-3608017782830757447</id><published>2009-01-11T09:27:00.005-05:00</published><updated>2009-01-11T10:03:04.077-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows7 beta'/><title type='text'>Windows 7: First Early Impressions on VPC</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_-dNhuLbJ06Q/SWoG1V9bTNI/AAAAAAAAAE8/04S4sxeIJS0/s1600-h/Win7Install2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 265px;" src="http://1.bp.blogspot.com/_-dNhuLbJ06Q/SWoG1V9bTNI/AAAAAAAAAE8/04S4sxeIJS0/s320/Win7Install2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5290048225797688530" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;First off, let me say I do HAVE Vista on my laptop and find it very annoying compared to Windows XP. ( I wanted to state that after Kevin Hoctor's &lt;a href="http://twitter.com/kevinhoctor/status/1110966705"&gt;comment&lt;/a&gt; on twitter.)&lt;br /&gt;&lt;br /&gt;Vista has moved XP into a more secure environment but along with it came UAC, which to this day &lt;a href="http://news.cnet.com/Microsoft-Vista-feature-designed-to-annoy-users/2100-1016_3-6237191.html"&gt;annoys &lt;/a&gt;me and makes me feel like I have to do three steps when I only used to have to do one in XP. &lt;br /&gt;&lt;br /&gt;So before committing myself to running a beta product that is supposedly &lt;a href="http://blogs.zdnet.com/hardware/?p=3236"&gt;faster &lt;/a&gt;than its predecessors, I put it onto a Virtual PC. &lt;br /&gt;&lt;br /&gt;Certain UI elements (like the Taskbar Properties) have been cleaned up for which I'm thankful. I still DON'T like the new Start menu - I don't think it's taken me away from &lt;a href="http://www.bayden.com/SlickRun/"&gt;SlickRun&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I did get some BSODs when installing the Virtual Machine Add-ons ( I couldn't give it as feedback using MS connect - although part of the program, it wouldn't say I was part of it).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_-dNhuLbJ06Q/SWoH8usrbjI/AAAAAAAAAFE/g3NLL5jHzZA/s1600-h/Win7Crash.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 263px;" src="http://2.bp.blogspot.com/_-dNhuLbJ06Q/SWoH8usrbjI/AAAAAAAAAFE/g3NLL5jHzZA/s320/Win7Crash.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5290049452209040946" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Still, I installed &lt;a href="http://www.foxfirereporting.com"&gt;Foxfire&lt;/a&gt;! ( a VFP app) on it (and while I had to Run As Administrator to get it to work), it worked fine.&lt;br /&gt;&lt;br /&gt;I noticed &lt;a href="http://www.twitter.com/asaunders"&gt;Alec Saunder&lt;/a&gt;'s twitterss was nothing some performance degradation but the jury's still out and it IS still a beta. I was comforted by John Koziol's comments on a &lt;a href="http://akselsoft.libsyn.com/index.php?post_id=420061"&gt;FoxShow&lt;/a&gt;, suggesting that with Windows 7, they have gotten rid of a lot of the excess baggage that Vista had with it.&lt;br /&gt;&lt;br /&gt;So welcome Windows 7 - so far I'm happy to don my I'm a PC hat to try it out.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_-dNhuLbJ06Q/SWoJJWgQj7I/AAAAAAAAAFM/Poajz-jMfGk/s1600-h/IMG_0135.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 240px; height: 320px;" src="http://2.bp.blogspot.com/_-dNhuLbJ06Q/SWoJJWgQj7I/AAAAAAAAAFM/Poajz-jMfGk/s320/IMG_0135.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5290050768564424626" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://technorati.com/tag/FoxPro" rel="tag"&gt;FoxPro&lt;/a&gt; &lt;a href="http://technorati.com/tag/VFP" rel="tag"&gt;VFP&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-3608017782830757447?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/3608017782830757447/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=3608017782830757447' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/3608017782830757447'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/3608017782830757447'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2009/01/windows-7-first-early-impressions-on.html' title='Windows 7: First Early Impressions on VPC'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_-dNhuLbJ06Q/SWoG1V9bTNI/AAAAAAAAAE8/04S4sxeIJS0/s72-c/Win7Install2.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5492774.post-1485705464540625229</id><published>2009-01-05T08:28:00.005-05:00</published><updated>2009-01-05T11:05:47.832-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VFP'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><title type='text'>A New Year...A New Month...A New Technology...</title><content type='html'>I have (first correction - thanks Matt!) been pulling together links for a larger "start of the year" post and decided to scale it back and try something a bit different. The various sites that AKSEL manages will be going through a "re-branding" exercise in the near future but one of my goals this year is to follow Chris Brogan's &lt;a href="http://www.chrisbrogan.com/your-3-goals-for-2009/"&gt;Three Words&lt;/a&gt; idea (Freedom. Consistency. Communication - I'm still deciding...) as well as working in some of Mark Riffey's &lt;a href="http://www.chrisbrogan.com/your-3-goals-for-2009/"&gt;ideas &lt;/a&gt;into my weekly schedule.&lt;br /&gt;&lt;br /&gt;Rod Paddock &lt;a href="http://codebetter.com/blogs/rodpaddock/archive/2009/01/04/what-s-in-a-job-title.aspx"&gt;asked &lt;/a&gt;"What's in a title" - and pointed out that one thing developers can do to become better developers is to adopt more agile practices - and he lists several practices and his experience with them.&lt;br /&gt;&lt;br /&gt;That's a great goal for developers but what about "database developers"? There are lots of developers out there but almost every role needs to be qualified further: web developer, application developer, database developer. Are there other qualifications that are needed? &lt;br /&gt;&lt;br /&gt;A regular Windows application developer likely doesn't need to know about CSS - but a web developer better know CSS. Does a database developer have to know the &lt;a href="http://blog.todmeansfox.com/?s=denormilization"&gt;normal forms&lt;/a&gt;? Or maybe how to &lt;a href="http://weblogs.foxite.com/andykramek/archive/2008/11/23/7368.aspx"&gt;design &lt;/a&gt;a &lt;a href="http://weblogs.foxite.com/andykramek/archive/2008/12/14/7429.aspx"&gt;database &lt;/a&gt;properly? &lt;br /&gt;&lt;br /&gt;How do you qualify that? Because there are always exceptions to each rule.&lt;br /&gt;&lt;br /&gt;One of the ways I'm starting this year is by taking a new technology each month and really exposing myself to it (insert joke here). What's my guideline? I'm not completely sure but my first technology (MVC) is something that is actually fairly broad - popularized with &lt;a href="http://rubyonrails.org/"&gt;Ruby on Rails&lt;/a&gt;, "foxified" with &lt;a href="http://fox.wikis.com/wc.dll?Wiki~FoxTrails"&gt;FoxTrails &lt;/a&gt;and DotNetted with &lt;a href="http://www.asp.net/mvc/"&gt;ASP MVC&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;How do *you* plan to become a better developer?&lt;br /&gt;&lt;br /&gt;&lt;a href="http://technorati.com/tag/FoxPro" rel="tag"&gt;FoxPro&lt;/a&gt; &lt;a href="http://technorati.com/tag/VFP" rel="tag"&gt;VFP&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-1485705464540625229?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/1485705464540625229/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=1485705464540625229' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/1485705464540625229'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/1485705464540625229'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2009/01/new-yeara-new-montha-new-technology.html' title='A New Year...A New Month...A New Technology...'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-1724779593411415664</id><published>2009-01-05T07:03:00.003-05:00</published><updated>2009-01-05T17:09:21.851-05:00</updated><title type='text'>Farewell Friend</title><content type='html'>Late last night, sad news traveled around the FoxPro community about the passing of Ceil Silver. While she had been battling cancer for quite some time, one would never know it from her constant enthusiasm. She was a great colleague and a good friend. She will be missed.&lt;br /&gt;&lt;br /&gt;If you are so inclined, the charity of choice (according to her daughter, Rachel) would be the &lt;a href="http://ci.med.nyu.edu/outreach/how-help"&gt;NYU Cancer Center&lt;/a&gt; where she was being treated.  &lt;br /&gt;&lt;br /&gt;Her daughter has updated her blog &lt;a href="http://theceiljournal.blogspot.com/2009/01/post-from-rachel-carla.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://weblogs.foxite.com/andykramek/archive/2009/01/05/7508.aspx"&gt;Andy Kramek's post&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-1724779593411415664?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/1724779593411415664/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=1724779593411415664' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/1724779593411415664'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/1724779593411415664'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2009/01/farewell-friend.html' title='Farewell Friend'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-1785263129303671207</id><published>2008-12-29T06:50:00.002-05:00</published><updated>2008-12-29T07:15:08.189-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EPS'/><category scheme='http://www.blogger.com/atom/ns#' term='vfpfoxpro vfpx'/><category scheme='http://www.blogger.com/atom/ns#' term='codecast'/><title type='text'>CodeCast - Late Night Show for DotNet Developers</title><content type='html'>Congrats to Markus and Ken on starting &lt;a href="http://www.code-magazine.com/codecast/"&gt;CodeCast&lt;/a&gt; podcast. Not sure how well it's going to be considered a "late night show" - I've only ever listened to it during the day but it is good to hear short tidbits from all. Ken spoke about CodeCast back at &lt;a href="http://akselsoft.libsyn.com/index.php?post_id=397775"&gt;SWFox&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;A treat from their Dec 10th episode - &lt;a href="http://research.microsoft.com/en-us/projects/pex/"&gt;Pex&lt;/a&gt; - a tool to automatically create unit tests. From the MS research site: Pex (Program EXploration) is a white-box test generation tool. Given a hand-written parameterized unit test, Pex analyzes the code to determine relevant test inputs fully automatically. The result is a traditional unit test suite with high code coverage. In addition, Pex suggests to the programmer how to fix bugs. &lt;br /&gt;&lt;br /&gt;Hmmm...this might be a useful VFPX project in conjunction with &lt;a href="http://www.foxunit.org/"&gt;FoxUnit&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I especially love how they start and mix each episode with a little "I'm listening to CodeCast" - reminded me of the old &lt;a href="http://www.thefoxshow.com"&gt;FoxShow &lt;/a&gt;intros (before my HD died).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-1785263129303671207?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.code-magazine.com/codecast/' title='CodeCast - Late Night Show for DotNet Developers'/><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/1785263129303671207/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=1785263129303671207' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/1785263129303671207'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/1785263129303671207'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2008/12/codecast-late-night-show-for-dotnet.html' title='CodeCast - Late Night Show for DotNet Developers'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-5336568725058809979</id><published>2008-12-10T04:20:00.004-05:00</published><updated>2008-12-10T04:52:42.970-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='visual studio'/><category scheme='http://www.blogger.com/atom/ns#' term='application'/><category scheme='http://www.blogger.com/atom/ns#' term='usability'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><title type='text'>Usability: Learning New Environments</title><content type='html'>I realized how quiet I've been here and while I have a number of posts waiting in draft, I've been so busy it's been impossible to complete them. But I did want to post this after I dealt with it yesterday.&lt;br /&gt;&lt;br /&gt;I've been on an ASP.Net contract now for about 3 months which is an experience all unto itself - non MVC, non standard ASP.Net app using the DevExpress components. Since this is someone else's application "framework" and I'm simply a hired hand to help finish it off, I find I'm using parts of Visual Studio that I've never really thought of and/or used that often. &lt;br /&gt;&lt;br /&gt;I'm not referring to actual development pieces like Datasets or class designers but the more basic elements of any IDE. It drives me nuts when things don't use the same short-cut keys that I'm used to, and while we can always change them to suit our moods, that's not the way I usually like to go. We live in a Windows world and so are used to certain things: F1= Help, Ctrl+C Copy, Ctrl+V = Paste (?!?!), Ctrl+F = Find, etc.&lt;br /&gt;&lt;br /&gt;In Visual Studio, I've had several "where is that command" moments and come back going "why did they put that there?" I'm sure there's a good reason that the option to comment code is hidden 2 levels in the Edit menu (under Advanced) but I can't think of one, especially when an option like Create Guid is right on the Tools menu. &lt;br /&gt;&lt;br /&gt;Does anyone create Guids more often than block comment?&lt;br /&gt;&lt;br /&gt;My "duh" moment yesterday came when I was looking to find all references to a particular variable so I could figure out where a particular value was being set. I hit Ctrl+F and go to the QuickFind.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://content.screencast.com/users/Akselsoft/folders/Jing/media/8ba7e53b-9935-47fd-9696-2f4a884e3672/QuickFind.png" alt="quickfind"&gt;&lt;br /&gt;&lt;br /&gt;Rather than cycle through it all, there must be an easier way - (something like Code references in VFP) - I choose Find Options - nothing there. I must be getting lazy because I immediately &lt;a href="http://twitter.com/akselsoft/status/1047458581"&gt;twittered&lt;/a&gt; it right before I found it under Find In Files. &lt;br /&gt;&lt;br /&gt;Is that option really hidden away? Not quite, you can access it from the QuickFind drop-menu or by hitting Ctrl+Shift+F but it wasn't in my face right there.&lt;br /&gt;&lt;br /&gt;But maybe more to the point, applications always seem to find ways of putting in more options and hiding them under menu options. Does Find and Replace really need its own sub-menu when you could likely put all of the choices in one dialog?&lt;br /&gt;&lt;br /&gt;I'm all for keeping the basic menus shorter but the menu design choices that were made in Visual Studio just don't seem to make sense. I didn't feel too bad when some of the tweets I got back were about how buried some of the options were, which is what inspired the post. (don't even get me started on SQL Server 2005's menus or usability - I'm so happy I've switched to 2008 which is much better, although still not perfect)&lt;br /&gt;&lt;br /&gt;When you design an application, to whom do you talk to ensure the experience is the best one possible for your users? If features that resolve the problem are priority #1, then shouldn't usability to find those features be priority #2?&lt;br /&gt;&lt;br /&gt;So on that end, all of this to say, I built a little poll about what you do in development environments ASIDE from coding and designing.&lt;br /&gt;&lt;br /&gt;&lt;A href="http://meltech.freepolls.com/cgi-bin/polls/036/poll_center.htm" TARGET=_blank&gt;&lt;br /&gt;&lt;!--Begin Poll Link Text--&gt;&lt;br /&gt;What do you do in development environments?&lt;br /&gt;&lt;!--End Poll Link Text--&gt;&lt;br /&gt;&lt;/A&gt;&lt;br /&gt;&lt;br /&gt;I could be completely wrong on this - and have no doubt, many VS developers are shaking their heads going "what an idiot" - but no doubt, that was after they went through many of the same "where is this..." moments.&lt;br /&gt;&lt;br /&gt;This isn't just a developer issue either - so it's useful to take the question "how do people discover this feature" and apply it to your own application design as well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-5336568725058809979?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/5336568725058809979/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=5336568725058809979' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/5336568725058809979'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/5336568725058809979'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2008/12/usability-learning-new-environments.html' title='Usability: Learning New Environments'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-1505593927684089570</id><published>2008-11-23T07:42:00.001-05:00</published><updated>2008-11-23T07:42:31.825-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hardware'/><title type='text'>Hardware choices</title><content type='html'>I'm in a quandry (and not because I haven't posted in a while - I have a number of posts in draft form that need to come).&lt;br /&gt;&lt;br /&gt;I'm looking at new machines but I'm unsure. Do I invest in a better server to handle better VMs and possibly Hyper-V and then simply RDP into it when needed or do I look at a laptop for more VPCs?&lt;br /&gt;&lt;br /&gt;Ideally it would be both - but economics these days limit the potential. Server hasn't been upgraded for 4 years (Dell SC400) but neither really has the laptop (Dell5150)&lt;br /&gt;&lt;br /&gt;Platform doesn't matter these days. Thoughts?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-1505593927684089570?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/1505593927684089570/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=1505593927684089570' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/1505593927684089570'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/1505593927684089570'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2008/11/hardware-choices.html' title='Hardware choices'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5492774.post-2752489233886194184</id><published>2008-11-01T17:06:00.000-04:00</published><updated>2008-11-01T17:07:04.317-04:00</updated><title type='text'>DevExpress Controls: Creating Characters Counters for Memo / Text boxes</title><content type='html'>I had to do this for a client so I thought I would share it. It uses the DevExpress ASPxGridView and Editor controls in an ASP.Net solution.&lt;br /&gt; &lt;p&gt;Here's some code to create a character counter for your text/memo boxes.&amp;nbsp; It's fairly common with regular javascript but it can be tricky with custom controls.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;I used KeyUp because TextChanged only fires when you LEAVE the control.&lt;/p&gt; &lt;p&gt;Also note the use of GetText() to get the content. I struggled (stupidly!) with this trying to use the javascript text property.&amp;nbsp; The ASPxEditor javascript controls have their own javascript methods. GetText and SetText. (if you want to get scared, look at the amount of javascript that is generated when using an ASPxGridView control on a form)&lt;br /&gt;&lt;/p&gt; &lt;p&gt;&amp;lt;dxe:ASPxMemo ID="txtInfo" runat="server" Width="100%" Height="76px"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ClientSideEvents KeyUp="function(s,e){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var ele = s.GetText();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lblInfo.SetText(ele.length + '/4000 characters left');}" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/dxe:ASPxMemo&amp;gt;&lt;br /&gt;&amp;lt;dxe:ASPxLabel ID="ASPxLabel1"&amp;nbsp; ClientInstanceName="lblInfo"&amp;nbsp; runat="server" Text="(maximum 4000 chars)"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/dxe:ASPxLabel&amp;gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;Hope you find it useful. Here' s a link to my forum post.&lt;br /&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt;                             &lt;a href="http://community.devexpress.com/forums/p/70533/240288.aspx#240288"&gt;HowTo: JavaScript Character Counters for Memo / Text boxes - Developer Express Inc.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-2752489233886194184?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://community.devexpress.com/forums/p/70533/240288.aspx#240288' title='DevExpress Controls: Creating Characters Counters for Memo / Text boxes'/><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/2752489233886194184/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=2752489233886194184' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/2752489233886194184'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/2752489233886194184'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2008/11/devexpress-controls-creating-characters.html' title='DevExpress Controls: Creating Characters Counters for Memo / Text boxes'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-97342029168838522</id><published>2008-10-26T08:57:00.003-04:00</published><updated>2008-10-27T05:52:28.817-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASPxGridView'/><title type='text'>Super Useful Tips on Using DevExpress ASPxGridView</title><content type='html'>I've been using &lt;a href="http://www.devexpress.com"&gt;DevExpress&lt;/a&gt;'s ASPxGridView on a fairly big ASP.Net project for the past few months. When I started using it, I was really frustrated. The documentation was written more like a class reference guide and the tutorials were fairly basic in nature.&lt;br /&gt;&lt;br /&gt;The real MEAT of the controls didn't seem to be there - all this great potential but where?&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://community.devexpress.com"&gt;Community &lt;/a&gt;forums was a great place to look for details but as with many communities, it's hard to find all the answers.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Hopefully, this post will help identify some of the areas where developers may be having some problems:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Fixing Edit Forms&lt;/span&gt;&lt;br /&gt;1. Edit Form Column Layouts&lt;br /&gt;The ASPxGridView lets you do direct "form" editing but when you first do it, the boxes usually go two per line. To resolve this, add &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;SettingsEditing EditFormColumnCount="1" /&amp;gt;&lt;br /&gt;right under the grid definition.&lt;br /&gt;&lt;br /&gt;2. Changing Edit Captions&lt;br /&gt;You have a column that is titled Years but in the edit form, you want it to say "Years working for company". Within the column definition, add&lt;br /&gt;&amp;lt;dxwgv:GridViewDataTextColumn FieldName="Years" Caption="Years"/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;EditFormSettings Caption="Years working for the company " /&amp;gt;&lt;br /&gt;&amp;lt;/dxwgv:GridViewDataTextColumn&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Grouping Grids&lt;/span&gt;&lt;br /&gt;The ASPxGridView lets you group the grids automatically.&lt;br /&gt;&lt;br /&gt;1) Call grid.ExpandAll( ) right after the DataBind (or the Page_Load) to automatically open the groups (by default, they are closed)&lt;br /&gt;&lt;br /&gt;2) The Group header starts by showing the name of the Group a colon and then the name. In the Grid definition, add" &lt;br /&gt;Settings-GroupFormat="{1} {2}"&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Commands&lt;/span&gt;&lt;br /&gt;One thing I didn't like about the Grid View was that it would add New/Edit/Delete buttons on each row. Why show New on each one? I originally put a hyperlink on the top of the grid but instead, I've started to use the HeaderTemplate option instead.&lt;br /&gt;&lt;br /&gt;Here's my initial Column set:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Columns&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;dxwgv:GridViewCommandColumn VisibleIndex="0"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;NewButton Text="New" Visible="false"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/NewButton&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;EditButton Text="Edit" Visible="true"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/EditButton&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;DeleteButton Text="Delete" Visible="true"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/DeleteButton&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;HeaderTemplate&amp;gt;&amp;lt;dxe:ASPxHyperLink ID="lblNew" runat=server Text="New" Font-Underline=true Cursor=pointer&amp;gt;&amp;lt;ClientSideEvents Click="function(s,e){officers.AddNewRow();}" /&amp;gt;&amp;lt;/dxe:ASPxHyperLink&amp;gt;&amp;lt;/HeaderTemplate&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/dxwgv:GridViewCommandColumn&amp;gt;&lt;br /&gt;&lt;br /&gt;The end result looks like &lt;a href="http://screencast.com/t/HThiwlrOLaM"&gt;this&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Grid Form Validation&lt;/span&gt;&lt;br /&gt;You can easily make a field mandatory in a grid by setting the IsRequired property to true. But there are two gotchas with this. By default, this puts a little exclamation mark by the field when you hit the Update button. The ErrorText property is then put into the tooltip. &lt;br /&gt;&lt;br /&gt;Set the ErrorDisplayMode property to Text instead of the default which is ImagewithTooltip.&lt;br /&gt;&lt;br /&gt;Another way to better manage this process is to put the validation settings directly into the code instead of the property settings.&lt;br /&gt;&lt;br /&gt;loCol = grid.Columns(0)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; With locol.PropertiesTextEdit.ValidationSettings&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .RegularExpression.ValidationExpression = regexp&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .ErrorDisplayMode = DevExpress.Web.ASPxEditors.ErrorDisplayMode.Text&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .RegularExpression.ErrorText = msg&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .RequiredField.IsRequired = True&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End With&lt;br /&gt;&lt;br /&gt;The above code also shows one of the other cool tips - instead of trying to validate the text after, by setting the ValidationExpression property, the input can be immediately validated via Regular Expression.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Column Widths&lt;/span&gt;&lt;br /&gt;By default, the ASPxGridView will resize the widths based on the content. Some of our users found this disorienting when they edited the grid - because it would constantly change. Solution? Explicitly set the widths of each column. &lt;br /&gt;&lt;br /&gt;I'm sure there are a lot more and some of the above are likely pretty obvious but I wish I had known about them when I first got started. I'll be adding to this post (or creating new ones) as I move forward.&lt;br /&gt;&lt;br /&gt;The other cool part about devExpress is that a number of their developers are on &lt;a href="http://www.twitter.com"&gt;Twitter&lt;/a&gt;, making it easier to find them and get help.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-97342029168838522?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/97342029168838522/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=97342029168838522' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/97342029168838522'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/97342029168838522'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2008/10/super-useful-tips-on-using-devexpress.html' title='Super Useful Tips on Using DevExpress ASPxGridView'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-362544087254737013</id><published>2008-10-26T07:20:00.001-04:00</published><updated>2008-10-26T07:20:08.702-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='typelibbuilder'/><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='vs 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='fingerprintreader'/><title type='text'>New Rule: Don't develop with Fingerprint Reader!</title><content type='html'>Who would have thought developers fingers could cause crashes?&lt;br /&gt;&lt;br /&gt;I was working with my VS 2008 ASP.Net application and added some javascript to my default.aspx page when I started to get TypeLibBuilder crashes. WTF? Maybe it was my code --- maybe there was something going on in VS 2008 that I was missing. I shrugged and continued - because after all, when you get weird Windows crashes and you're working on a project, you do the obvious: restart your machine, pray to the Seattle gods and continue on your way.&lt;br /&gt;&lt;br /&gt;Then I searched for it - &lt;br /&gt;&lt;br /&gt;&lt;a href="http://geekswithblogs.net/evjen/archive/2008/09/14/125166.aspx"&gt;Big Problem Solved - No More TypeLibBuilder.exe Crashes!&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;Whoa! Killed DpAgent.exe in my Task Manager and no more errors.&lt;br /&gt;&lt;br /&gt;Apparently my new MS Fingerprint Reader doesn't like JavaScript! Who knew?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-362544087254737013?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/362544087254737013/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=362544087254737013' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/362544087254737013'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/362544087254737013'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2008/10/new-rule-don-develop-with-fingerprint.html' title='New Rule: Don&amp;#39;t develop with Fingerprint Reader!'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-7624600195766836033</id><published>2008-10-25T09:30:00.001-04:00</published><updated>2008-10-25T09:30:41.806-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='swfox'/><category scheme='http://www.blogger.com/atom/ns#' term='FoxPro'/><category scheme='http://www.blogger.com/atom/ns#' term='VFP'/><category scheme='http://www.blogger.com/atom/ns#' term='VFPX'/><category scheme='http://www.blogger.com/atom/ns#' term='codeanalyst'/><category scheme='http://www.blogger.com/atom/ns#' term='refactoring'/><title type='text'>FoxShow #59: Profiling and Refactoring</title><content type='html'>The latest episode of &lt;a href="http://akselsoft.libsyn.com/index.php?post_id=396265"&gt;The FoxShow&lt;/a&gt; features one of my sessions from Southwest Fox 2008: Profiling and Refactoring, a discussion on how to refactor and how the &lt;a href="http://www.codeplex.com/vfpx"&gt;VFPX &lt;/a&gt;Code Analyst can help.&lt;br /&gt;&lt;br /&gt;This session was given twice : this was the second time around. It was a good discussion including a back and forth on the benefit of comments. I, of course, took the controversial position that all comments should be banned from code except when they explain WHY something was done.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-7624600195766836033?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/7624600195766836033/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=7624600195766836033' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/7624600195766836033'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/7624600195766836033'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2008/10/foxshow-59-profiling-and-refactoring.html' title='FoxShow #59: Profiling and Refactoring'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-408194708405151442</id><published>2008-10-23T07:33:00.001-04:00</published><updated>2008-10-23T07:36:21.004-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='swfox'/><category scheme='http://www.blogger.com/atom/ns#' term='FoxPro'/><category scheme='http://www.blogger.com/atom/ns#' term='VFP'/><category scheme='http://www.blogger.com/atom/ns#' term='ken levy'/><category scheme='http://www.blogger.com/atom/ns#' term='craig boyd'/><category scheme='http://www.blogger.com/atom/ns#' term='foxshow'/><title type='text'>The Fox Index</title><content type='html'>Here's a fun little piece from Southwest Fox 2008 where Ken Levy floats the idea of the Fox Index, a great use of those remaining copies of Visual FoxPro and then of course, Craig Boyd takes it one step further.&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="350"&gt; &lt;param name="movie" value="http://www.youtube.com/v/dnsJscRaM80"&gt; &lt;/param&gt; &lt;embed src="http://www.youtube.com/v/dnsJscRaM80" type="application/x-shockwave-flash" width="425" height="350"&gt; &lt;/embed&gt; &lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://technorati.com/tag/FoxPro" rel="tag"&gt;FoxPro&lt;/a&gt; &lt;a href="http://technorati.com/tag/VFP" rel="tag"&gt;VFP&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-408194708405151442?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/408194708405151442/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=408194708405151442' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/408194708405151442'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/408194708405151442'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2008/10/fox-index.html' title='The Fox Index'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-214458803628237799</id><published>2008-10-23T06:50:00.005-04:00</published><updated>2008-10-23T06:57:18.761-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FoxPro'/><category scheme='http://www.blogger.com/atom/ns#' term='agility'/><category scheme='http://www.blogger.com/atom/ns#' term='foxshow'/><title type='text'>FoxShow Extra: Morning discussion with Alan Stevens on Agility</title><content type='html'>One of the great things about Southwest Fox was the open discussions that were had almost every minute. Thankfully, some discussions and "discussers" let them be recorded.&lt;br /&gt;&lt;br /&gt;Here's a &lt;a href="http://akselsoft.libsyn.com/index.php?post_id=395604"&gt;discussion&lt;/a&gt; Alan Stevens and I had one morning about his sessions on Agility and Ignorance as well as XML handling - a little FoxShow extra. It's short (about 16 minutes) but fun.&lt;br /&gt;&lt;br /&gt;Enjoy!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://technorati.com/tag/FoxPro" rel="tag"&gt;FoxPro&lt;/a&gt; &lt;a href="http://technorati.com/tag/VFP" rel="tag"&gt;VFP&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-214458803628237799?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://akselsoft.libsyn.com/index.php?post_id=395604' title='FoxShow Extra: Morning discussion with Alan Stevens on Agility'/><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/214458803628237799/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=214458803628237799' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/214458803628237799'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/214458803628237799'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2008/10/foxshow-extra-morning-discussion-with.html' title='FoxShow Extra: Morning discussion with Alan Stevens on Agility'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-4166543856178542551</id><published>2008-10-21T16:24:00.002-04:00</published><updated>2008-10-21T16:29:41.011-04:00</updated><title type='text'>Looking for VFP work?</title><content type='html'>If you're in the market for working full-time for a vertical market (transportation industry) company with a product family written in VFP 9 with lots of add-on modules (http://www.mtihorizon.com), and a migration path to SQL Server, drop me a line at amacneill @ meltech.com. &lt;br /&gt;&lt;br /&gt;Will: communicate with customers regarding support problems, develop new solutions based on client needs, enhance product in both VFP and web environments&lt;br /&gt;&lt;br /&gt;Requirements: VFP 9 experience, enthusiasm, good OOP background, DBF/SQL&lt;br /&gt;Nice to have: C#, web development, EDI experience, mobile communication, transportation industry&lt;br /&gt;&lt;br /&gt;Location: anywhere but need to be available during the regular day (EDT) - we do lots of remote stuff (thank you &lt;a href="www.sourcegear.com"&gt;SourceOffSite&lt;/a&gt;!)&lt;br /&gt;&lt;br /&gt;If interested, drop me a line at amacneill @ meltech.com. &lt;br /&gt;&lt;a href="http://technorati.com/tag/FoxPro" rel="tag"&gt;FoxPro&lt;/a&gt; &lt;a href="http://technorati.com/tag/VFP" rel="tag"&gt;VFP&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-4166543856178542551?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/4166543856178542551/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=4166543856178542551' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/4166543856178542551'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/4166543856178542551'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2008/10/looking-for-vfp-work.html' title='Looking for VFP work?'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-2041855768768999132</id><published>2008-10-20T07:35:00.002-04:00</published><updated>2008-10-20T07:37:16.830-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='swfox'/><category scheme='http://www.blogger.com/atom/ns#' term='guitars'/><category scheme='http://www.blogger.com/atom/ns#' term='FoxPro'/><category scheme='http://www.blogger.com/atom/ns#' term='craigboyd'/><category scheme='http://www.blogger.com/atom/ns#' term='VFP'/><category scheme='http://www.blogger.com/atom/ns#' term='alanstevens'/><title type='text'>A Little Performance Art...</title><content type='html'>A little performance art piece from Southwest Fox...(if it says unavailable, it's still being processed)&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="350"&gt; &lt;param name="movie" value="http://www.youtube.com/v/beBi2avvmho"&gt; &lt;/param&gt; &lt;embed src="http://www.youtube.com/v/beBi2avvmho" type="application/x-shockwave-flash" width="425" height="350"&gt; &lt;/embed&gt; &lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://technorati.com/tag/FoxPro" rel="tag"&gt;FoxPro&lt;/a&gt; &lt;a href="http://technorati.com/tag/VFP" rel="tag"&gt;VFP&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-2041855768768999132?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.youtube.com/v/beBi2avvmho' title='A Little Performance Art...'/><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/2041855768768999132/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=2041855768768999132' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/2041855768768999132'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/2041855768768999132'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2008/10/little-performance-art.html' title='A Little Performance Art...'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-4573426165405557338</id><published>2008-10-18T09:39:00.001-04:00</published><updated>2008-10-18T09:39:09.963-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='swfox'/><category scheme='http://www.blogger.com/atom/ns#' term='VFP'/><category scheme='http://www.blogger.com/atom/ns#' term='sourcegear'/><category scheme='http://www.blogger.com/atom/ns#' term='evil mastermind'/><category scheme='http://www.blogger.com/atom/ns#' term='source control'/><title type='text'>SWFox: Evil Mastermind Wins Again!</title><content type='html'>One of the great sponsor giveaways at Southwest Fox was a 5-user license of SourceGear's Fortress. I've used Vault and Fortress but still stick with Source OffSite as our main development is handled through SourceSafe. Both work great with VFP. But the best part was in the conference bag: Evil Mastermind 2nd Exciting Issue!&lt;br /&gt;&lt;br /&gt;Best quotes:&lt;br /&gt;"You're a sales guy...if anyone understands evil, it's a sales guy"&lt;br /&gt;&lt;br /&gt;"I want...I want...I want....and I want 5000 t-shirts!"&lt;br /&gt;&lt;br /&gt;"We've got lots of masterminds using our products...I'm sure at least some of them are a little bit evil...I guess"&lt;br /&gt;&lt;br /&gt;Kudos to Eric and the SourceGear team for another fun issue and great job, Southwest Fox team (was that you, Rick?) at getting the great swag!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.sourcegear.com/fortress/index.html"&gt;SourceGear | Fortress&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-4573426165405557338?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/4573426165405557338/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=4573426165405557338' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/4573426165405557338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/4573426165405557338'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2008/10/swfox-evil-mastermind-wins-again.html' title='SWFox: Evil Mastermind Wins Again!'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-5400629780915215235</id><published>2008-10-18T09:32:00.001-04:00</published><updated>2008-10-18T09:32:58.174-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='swfox'/><category scheme='http://www.blogger.com/atom/ns#' term='FoxPro'/><category scheme='http://www.blogger.com/atom/ns#' term='VFPX'/><title type='text'>SW Fox: Why NOT Show your own apps?</title><content type='html'>One of the sessions that I didn't get to attend last night was the "Show us your apps". I think that session would have been really interesting.&lt;br /&gt;&lt;br /&gt;Many of the attendees I spoke to were fairly shy about their own FoxPro applications. They would talk about it (as it is their "baby" so to speak) but when asked about specific features that they should show, they seemed to shy away.&lt;br /&gt;&lt;br /&gt;That's unfortunate - because I don't think I've ever seen a single FoxPro app (with the possible exception of some purely framework-based apps) that hasn't included a unique feature or hook.&lt;br /&gt;&lt;br /&gt;That's one of the reasons I'm particularly excited about Cathy Pountney's session about customization vertical market apps.&amp;nbsp; Only problem is that it's on right when I've got to get ready to leave. I think I'll have to corner her separately for a quick interview.&lt;br /&gt;&lt;br /&gt;But back to my point, one my client apps is an application that was ported from DOS and brought kicking and screaming up to Windows and now finally over to SQL. It has TONS of Bad features (filtered grids, etc). BUT...it also includes some great features: built-in alerts, custom business rule validation. &lt;br /&gt;&lt;br /&gt;So when asked to show my apps, I wouldn't show the bad stuff (well, I might to show that it exists everywhere) but the really cool stuff.&lt;br /&gt;&lt;br /&gt;Everyone's got some kind of cool in their applications somewhere...why not show it?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-5400629780915215235?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/5400629780915215235/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=5400629780915215235' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/5400629780915215235'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/5400629780915215235'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2008/10/sw-fox-why-not-show-your-own-apps.html' title='SW Fox: Why NOT Show your own apps?'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-1679722687067976228</id><published>2008-10-18T09:27:00.001-04:00</published><updated>2008-10-18T09:27:15.337-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='swfox'/><category scheme='http://www.blogger.com/atom/ns#' term='FoxPro'/><category scheme='http://www.blogger.com/atom/ns#' term='VFPX'/><category scheme='http://www.blogger.com/atom/ns#' term='southwestfox'/><title type='text'>The FoxShow #58: the VFPX Meeting</title><content type='html'>At Southwest Fox last night , we had a VFPX Meeting (that was also screencast over uStream). &lt;br /&gt;&lt;br /&gt;The meeting went on for just under 2 hours but a lot of great ideas were thrown about, including ways for others to get involved, without having to code (something that many seemed to like).&lt;br /&gt;&lt;br /&gt;I recorded it all for the FoxShow and while the audio may be iffy at times, it's a great listen!&lt;br /&gt;&lt;br /&gt;Enjoy!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://akselsoft.libsyn.com/index.php?post_id=393498"&gt;The FoxShow&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-1679722687067976228?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/1679722687067976228/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=1679722687067976228' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/1679722687067976228'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/1679722687067976228'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2008/10/foxshow-58-vfpx-meeting.html' title='The FoxShow #58: the VFPX Meeting'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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-5492774.post-8710038339890702812</id><published>2008-10-18T09:08:00.001-04:00</published><updated>2008-10-18T09:08:38.913-04:00</updated><title type='text'>Tweets from Southwest Fox 2008</title><content type='html'>While you won't necessarily see every post from Southwest Fox until maybe a few days after the show, you can keep up with it on Twitter.&lt;br /&gt;&lt;br /&gt;Here's the hash tag and the search link: &lt;a href="http://search.twitter.com/search?max_id=965045479&amp;amp;page=4&amp;amp;q=%23swfox"&gt;#swfox - Twitter Search&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;A really great conference with lots of fun stuff going on around here and the first real conf day (aside from pre-cons) is just over.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Prepping for sessions, I only got to see one session which was Alan Steven's Agility. I'm going to put my notes up in a blogpost but I actually took my notes using Mindjet's MindManager and thought it would be cool to take them and also post them &lt;a href="http://www.aksel.com/AlanStevensAgility/index.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;(this is a sample of out of the box MindManager exports)&lt;br /&gt;&lt;br /&gt;More to come...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5492774-8710038339890702812?l=akselsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akselsoft.blogspot.com/feeds/8710038339890702812/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5492774&amp;postID=8710038339890702812' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/8710038339890702812'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5492774/posts/default/8710038339890702812'/><link rel='alternate' type='text/html' href='http://akselsoft.blogspot.com/2008/10/tweets-from-southwest-fox-2008.html' title='Tweets from Southwest Fox 2008'/><author><name>Andrew MacNeill</name><uri>http://www.blogger.com/profile/03888444225785506598</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>
