<?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-961885452063004235</id><updated>2012-02-09T22:19:22.759-08:00</updated><category term='once upon a time'/><category term='ruby'/><category term='Uganda trip'/><category term='classics'/><category term='C++/CLI'/><category term='technology'/><category term='jQuery'/><category term='tools'/><category term='SQL'/><category term='web-development'/><category term='personal'/><category term='news'/><category term='php/mysql'/><category term='C'/><category term='apple'/><category term='programming'/><category term='.Net'/><category term='i love cake'/><category term='Java'/><category term='gaming'/><category term='MS Sucks'/><category term='alive'/><category term='C#'/><category term='C++'/><category term='delphi_android'/><category term='blackberry'/><category term='Zoe'/><category term='opensource'/><category term='Mono'/><category term='fun'/><category term='non-programming'/><category term='JavaScript'/><category term='VS.Net 2008'/><title type='text'>Lennie De Villiers Blog</title><subtitle type='html'>A blog about software development with Java, C#, C++, PHP etc.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default?start-index=101&amp;max-results=100'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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>116</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-961885452063004235.post-238066629971794284</id><published>2011-06-21T06:51:00.001-07:00</published><updated>2011-06-21T06:57:25.224-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='delphi_android'/><title type='text'>Delphi for Android Future</title><content type='html'>Firstly am going to be very secretive to the future of my Delphi for Android tool since others can and did steel my ideas... Profit from my idea! :-(&lt;br /&gt;&lt;br /&gt;There will b a brand new version of Delphi for Android but more than that am not going to say or say when it will become available.&lt;br /&gt;&lt;br /&gt;From now on I will not publish more detail about this and the other ideas/tools that am working on.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-238066629971794284?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/238066629971794284/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=238066629971794284' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/238066629971794284'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/238066629971794284'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2011/06/delphi-for-android-future.html' title='Delphi for Android Future'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-961885452063004235.post-8568009579048539040</id><published>2011-05-19T02:00:00.000-07:00</published><updated>2011-05-19T02:05:58.164-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='delphi_android'/><title type='text'>Delphi For Android: Warning: You need to manually copy the Android framework library before compile.</title><content type='html'>After you run the Delphi for Android compiler you will get the following error on the command line:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Warning: You need to manually copy the Android framework library before compile.&lt;br /&gt;&lt;span style="font-style:italic;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The compiler integrate and call Java code, you need to copy &lt;a href="http://code.google.com/p/delphidroid/source/browse/#svn%2Ftrunk%2FDelphiDroid%2FFramework%2FAndroid"&gt;Android.java&lt;/a&gt; (soon to be called DAndroid.jar) to the /libs folder of your Android generated project.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;To give you an update:&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Am working very hard on the new compiler, toolset, components etc... Hopefully will have something ready soon.&lt;br /&gt;Unfortunately this is a part-time project so my time is limited.&lt;br /&gt;&lt;br /&gt;Focus on:&lt;br /&gt;&lt;br /&gt;- New compiler written in Delphi itself (not C#).&lt;br /&gt;- Components/libraries support for the Android SDK.&lt;br /&gt;- Documentation an samples.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-8568009579048539040?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/8568009579048539040/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=8568009579048539040' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/8568009579048539040'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/8568009579048539040'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2011/05/delphi-for-android-warning-you-need-to.html' title='Delphi For Android: Warning: You need to manually copy the Android framework library before compile.'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-961885452063004235.post-9200139775945544915</id><published>2011-04-04T01:26:00.000-07:00</published><updated>2011-04-04T01:27:28.354-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='delphi_android'/><title type='text'>Delphi For Android: Post To Mailing Lists</title><content type='html'>If you got any questions, problems etc please rather post your questions to one of the mailing lists at:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/delphidroid/wiki/Mailinglists"&gt;http://code.google.com/p/delphidroid/wiki/Mailinglists&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Else its difficult to reply if you post to this blog.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-9200139775945544915?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/9200139775945544915/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=9200139775945544915' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/9200139775945544915'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/9200139775945544915'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2011/04/delphi-for-android-post-to-mailing.html' title='Delphi For Android: Post To Mailing Lists'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-1986516034035632028</id><published>2011-03-04T00:59:00.001-08:00</published><updated>2011-03-04T01:04:44.222-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='delphi_android'/><title type='text'>Delphi For Android: Invalid Android SDK Directory</title><content type='html'>When you run the compiler "dccdroid.exe" and get the following error:&lt;br /&gt;&lt;br /&gt;"Invalid Android SDK directory, please make sure that the 'AndroidSDKDirectory' application config points to a valid Android SDK location."&lt;br /&gt;&lt;br /&gt;There are a few things you need to check:&lt;br /&gt;&lt;br /&gt;1. Update the "DCCDroid.exe.config" file:&lt;br /&gt;&lt;br /&gt;&lt;add key="AndroidSDKDirectory" value="C:\Lennie\Android\android-sdk_r04-windows\android-sdk-windows"/&gt;&lt;br /&gt;&lt;br /&gt;Change this to point to location of your Android SDK directory.&lt;br /&gt;&lt;br /&gt;2. Make sure that "adb.exe" can be found in that directory e.g on my location machine:&lt;br /&gt;&lt;br /&gt;C:\Lennie\Android\android-sdk_r04-windows\android-sdk-window\adb.exe&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-1986516034035632028?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/1986516034035632028/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=1986516034035632028' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/1986516034035632028'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/1986516034035632028'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2011/03/delphi-for-android-invalid-android-sdk.html' title='Delphi For Android: Invalid Android SDK Directory'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-961885452063004235.post-2725113684687320522</id><published>2011-02-09T22:46:00.000-08:00</published><updated>2011-02-09T22:50:30.144-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='delphi_android'/><title type='text'>Delphi For Android v0.4.1 Patch Release</title><content type='html'>Fix bug where AndroidSDKDirectory can point directly to your Android tools directory.&lt;br /&gt;&lt;a href="http://code.google.com/p/delphidroid/"&gt;Download it now&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-2725113684687320522?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/2725113684687320522/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=2725113684687320522' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/2725113684687320522'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/2725113684687320522'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2011/02/delphi-for-android-v041-patch-release.html' title='Delphi For Android v0.4.1 Patch Release'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-3541975538226751889</id><published>2011-02-07T23:19:00.001-08:00</published><updated>2011-02-07T23:21:43.810-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='delphi_android'/><title type='text'>Delphi For Android v0.4 Release</title><content type='html'>Delphi For Android version 0.4 is ready for &lt;a href="http://code.google.com/p/delphidroid/"&gt;download&lt;/a&gt;.&lt;br /&gt;In this version I've created binaries for Delphi 6.0.&lt;br /&gt;&lt;br /&gt;When is the next release? &lt;br /&gt;&lt;br /&gt;The next version of the compiler is written in Delphi and target &lt;a href="http://www.phonegap.com"&gt;PhoneGap&lt;/a&gt;... It will be released when its ready, goal is to have it by end of Feb 2011.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-3541975538226751889?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/3541975538226751889/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=3541975538226751889' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/3541975538226751889'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/3541975538226751889'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2011/02/delphi-for-android-v04.html' title='Delphi For Android v0.4 Release'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-404466802017243991</id><published>2010-12-29T10:09:00.000-08:00</published><updated>2010-12-29T10:38:20.039-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='delphi_android'/><title type='text'>Delphi for Android v0.3 Tutorial</title><content type='html'>&lt;meta charset="utf-8"&gt;Delphi Prism support iPhone and Android application development using &lt;a href="http://www.monotouch.net/"&gt;Monotouch&lt;/a&gt; and &lt;a href="http://www.monodroid.net/"&gt;MonoDroid&lt;/a&gt; where the goal of Delphi for Android ("Delphi Droid" for short) is to allow any developer that has Delphi 5 onwards to write Android applications. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This is a short tutorial on how to get started with Delphi Droid compiler version 0.3 as it currently is.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"&gt;Note: The compiler isn't complete, there is still ALOT of work to be done. If you wish to help with the development, please &lt;a href="mailto: lenniedg@gmail.com"&gt;contact me &lt;/a&gt;to contribute.&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Requirements:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;The Android SDK together with the Java SDK and Ant. Ant get used to compile the Android application since DelphiDroid generate a standard Android project (similar to how you do it using Eclipse)&lt;/li&gt;&lt;li&gt;Download DelphiDroid_v0.3.zip from the &lt;a href="http://code.google.com/p/delphidroid/"&gt;Google Code page&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Off course you need Delphi 5.0 or later.&lt;/li&gt;&lt;li&gt;.Net framework 3.5 run-time&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;What is in the ZIP:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Within the ZIP file you will find the following directories:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;bin&lt;/b&gt;: There is where the compiler etc are located. You can set this as your SYTEM VARIABLE to call from command line.&lt;/li&gt;&lt;li&gt;&lt;b&gt;DelphiDroid/DCCDroid&lt;/b&gt;: C# source code of the compile. This can be compiled using MS Visual Studio.Net 2008.&lt;/li&gt;&lt;li&gt;&lt;b&gt;DelphiDroid/Framework&lt;/b&gt;: The "Delphi For Android" package that all Delphi applications require.&lt;/li&gt;&lt;li&gt;&lt;b&gt;DelphiDTest&lt;/b&gt;: The Delphi example as in Sneak Preview 2 video.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Test&lt;/b&gt;: The actual Android projected generated by the compiler from the DelphiDTest example.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Setup Android SDK etc:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I'm not going to explain how to setup the Android SDK, I assume you already have knowledge on how to install the SDK, set it up etc.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;meta charset="utf-8"&gt;&lt;b&gt;Setup the compiler:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Within the bin folder you will find DCCDroid.exe.config file, open this using a plain text editor like Notepad:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;!--?xml version="1.0" encoding="utf-8" ?--&gt;&lt;/div&gt;&lt;div&gt;&lt;configuration&gt;&lt;/configuration&gt;&lt;/div&gt;&lt;div&gt;  &lt;appsettings&gt;&lt;/appsettings&gt;&lt;/div&gt;&lt;div&gt;    &lt;add key="AndroidSDKDirectory" value="C:\Lennie\Android\android-sdk_r04-windows\android-sdk-windows"&gt;&lt;/add&gt;&lt;/div&gt;&lt;div&gt;    &lt;add key="DelphiBinFolder" value="C:\Program Files\Borland\BDS\4.0\Bin"&gt;&lt;/add&gt;&lt;/div&gt;&lt;div&gt;  &lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Change the AndroidSDKDirectory to the location where you installed the Android SDK.&lt;/li&gt;&lt;li&gt;Change DelphiBinFolder to the location of the Delphi BIN folder that contains the Delphi compiler etc.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Run the sample program:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Open DelphiDTest and make sure it compile and run successfully in Delphi.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Run the compiler with no parameters:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Open the MS DOS Command prompt and run:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;DCCDroid.exe&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The output:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;div&gt;Delphi For Android 0.0.0.3 Dev Build&lt;/div&gt;&lt;div&gt;Copyright © 2010 by Lennie De Villiers&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Invalid arguments, the following arguments are required: &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Project Name - Name of the project&lt;/div&gt;&lt;div&gt;Activity Name - Name of the activity&lt;/div&gt;&lt;div&gt;Package Name - Java package name&lt;/div&gt;&lt;div&gt;Input Source Path - Delphi source directory path&lt;/div&gt;&lt;div&gt;Android Output Path - Android output directory path&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So this is very basic command line parameters, i don't need to explain how they work.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You can open compile.bat file under the bin folder for an example:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;dccdroid.exe DelphiAndroid DelphiAndroid com.test c:\Demo\DelphiDTest c:\Demo\Test&lt;/div&gt;&lt;div&gt;copy C:\Demo\bin\Android.Framework\*.* C:\Demo\Test\src\com\Test&lt;/div&gt;&lt;div&gt;cd c:\Demo\Test&lt;/div&gt;&lt;div&gt;ant debug&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This will compile the example program (assuming the location like c:\Demo) , copy the Android libraries and compile the program.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When all is done you can run the run.bat file:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;cd c:\Demo\Test\bin&lt;/div&gt;&lt;div&gt;adb shell rm /data/app/com.test.apk&lt;/div&gt;&lt;div&gt;adb -s emulator-5554 install DelphiAndroid-debug.apk&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This will install the sample on the Android emulator.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;You can look at compile.bat and run.bat to write your own compile/run scripts.&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;What is done:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Just like I said before, there is still ALOT of work to be done. Currently only the following components are supported:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;TEdit&lt;/div&gt;&lt;div&gt;TLabel&lt;/div&gt;&lt;div&gt;TButton&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;References:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;meta charset="utf-8"&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; "&gt;Official Website: &lt;a rel="nofollow"&gt;&lt;/a&gt;&lt;a href="http://www.delphiforandroid.com/" rel="nofollow" style="color: rgb(0, 0, 204); "&gt;http:\\www.delphiforandroid.com&lt;/a&gt;&lt;br /&gt;Twitter: &lt;a href="http://twitter.com/delphi_android" rel="nofollow" style="color: rgb(0, 0, 204); "&gt;&lt;/a&gt;&lt;a href="http://twitter.com/delphi_android" rel="nofollow" style="color: rgb(0, 0, 204); "&gt;http://twitter.com/delphi_android&lt;/a&gt;&lt;br /&gt;Blog: &lt;a href="http://lenniedevilliers.blogspot.com/" rel="nofollow" style="color: rgb(0, 0, 204); "&gt;&lt;/a&gt;&lt;a href="http://lenniedevilliers.blogspot.com/" rel="nofollow" style="color: rgb(0, 0, 204); "&gt;http://lenniedevilliers.blogspot.com/&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Mailing Lists:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;meta charset="utf-8"&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; "&gt;&lt;p style="max-width: 65em; "&gt;Users:&lt;/p&gt;&lt;p style="max-width: 65em; "&gt;&lt;a href="http://groups.google.com/group/delphi-for-android-users" rel="nofollow" style="color: rgb(0, 0, 204); "&gt;http://groups.google.com/group/delphi-for-android-users&lt;/a&gt;&lt;/p&gt;&lt;p style="max-width: 65em; "&gt;General users.&lt;/p&gt;&lt;p style="max-width: 65em; "&gt;Developers:&lt;/p&gt;&lt;p style="max-width: 65em; "&gt;&lt;a href="http://groups.google.com/group/delphi-for-android-developers" rel="nofollow" style="color: rgb(0, 0, 204); "&gt;http://groups.google.com/group/delphi-for-android-developers&lt;/a&gt;&lt;/p&gt;&lt;p style="max-width: 65em; "&gt;&lt;b&gt;Donations:&lt;/b&gt;&lt;/p&gt;&lt;p style="max-width: 65em; "&gt;If you can't donate your time but wish to don't some money to help with the development, then please &lt;a href="mailto: lenniedg@gmail.com"&gt;contact me&lt;/a&gt;.&lt;/p&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/961885452063004235-404466802017243991?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/404466802017243991/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=404466802017243991' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/404466802017243991'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/404466802017243991'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2010/12/delphi-for-android-v03-tutorial.html' title='Delphi for Android v0.3 Tutorial'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-961885452063004235.post-2788917177969298577</id><published>2010-12-14T01:55:00.000-08:00</published><updated>2010-12-14T01:56:47.099-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='delphi_android'/><title type='text'>Delphi For Android Future</title><content type='html'>Now what has Lennie been doing all the time? Am busy working on a new version of the compiler that got a couple of surprises in it... So stay tuned until next year in January 2011 when I will release the first version of the new compiler :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-2788917177969298577?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/2788917177969298577/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=2788917177969298577' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/2788917177969298577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/2788917177969298577'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2010/12/delphi-for-android-future.html' title='Delphi For Android Future'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-8712705871275492171</id><published>2010-10-29T11:53:00.000-07:00</published><updated>2010-10-29T11:56:52.944-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='delphi_android'/><title type='text'>DelphiDroid Compiler, Why C#?</title><content type='html'>Why have I written the DelphiDroid compiler in C#?&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;C# is the language that I use the most for 90% of all development.... 5% Java and the other 5% in other languages like PHP or Delphi etc. So yes its the language that I got the most experience in currently.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The compiler is also base upon the work I did for the C# For Blackberry toolset (This tool allow you to use C# to code for Blackberry mobile devices).&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/961885452063004235-8712705871275492171?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/8712705871275492171/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=8712705871275492171' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/8712705871275492171'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/8712705871275492171'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2010/10/delphidroid-compiler-why-c.html' title='DelphiDroid Compiler, Why C#?'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-4823966677964026768</id><published>2010-10-16T07:12:00.000-07:00</published><updated>2010-10-16T07:39:49.760-07:00</updated><title type='text'>Delphi For Android Going Open Source</title><content type='html'>After a lot of consideration, research etc I've decided to release DelphiDroid (Delphi for Android) as open source. The project is now available for download from the &lt;a href="http://code.google.com/p/delphidroid"&gt;Google Code project page&lt;/a&gt; over sub-version.&lt;br /&gt;&lt;br /&gt;Over the next couple of days I will release:&lt;br /&gt;&lt;br /&gt;- Guide to how the tool works&lt;br /&gt;- A Road Map&lt;br /&gt;- Contribution Guide&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Is it ready for production use yet?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;No not at all, there are still ALOT of work to be done before its ready for use to write a full application with.&lt;br /&gt;&lt;br /&gt;Please subscribe to the development mailing list or contact me if you wish to help.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;How are you planning to make money?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;By offering my services as a software developer and accept donations etc.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Mailing Lists&lt;/span&gt;&lt;br /&gt;&lt;p&gt;Users: &lt;/p&gt;&lt;p&gt;&lt;a href="http://groups.google.com/group/delphi-for-android-users" rel="nofollow"&gt;http://groups.google.com/group/delphi-for-android-users&lt;/a&gt; &lt;/p&gt;&lt;p&gt;General users. &lt;/p&gt;&lt;p&gt;Developers: &lt;/p&gt;&lt;p&gt;&lt;a href="http://groups.google.com/group/delphi-for-android-developers" rel="nofollow"&gt;http://groups.google.com/group/delphi-for-android-developers&lt;/a&gt; &lt;/p&gt;&lt;p&gt;If your a developer.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-4823966677964026768?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/4823966677964026768/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=4823966677964026768' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/4823966677964026768'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/4823966677964026768'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2010/10/delphi-for-android-going-open-source.html' title='Delphi For Android Going Open Source'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-3470542089401201469</id><published>2010-10-10T00:15:00.001-07:00</published><updated>2010-10-10T00:56:03.391-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='delphi_android'/><title type='text'>Delphi For Android Progress &amp; Component Poll</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Currently focusing on:&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Project planning for the next Sprints until first Beta version and first release version 1.0&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Indicate Application Icon and other assets&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Write Android specific components like TDroidButton (extend TButton), TDroidLabel (extends TLabel) etc that only have Android specific properties/methods/events.&lt;/li&gt;&lt;li&gt;Library support: You can write your own libraries, this will help extending the tool (will blog more about this later)&lt;/li&gt;&lt;li&gt;Audio and video support&lt;/li&gt;&lt;li&gt;Images components&lt;/li&gt;&lt;li&gt;Activity library to manage the activity events etc&lt;/li&gt;&lt;li&gt;Sample applications&lt;/li&gt;&lt;/ol&gt;All above is still part of the Activity, later tasks add support for Android Services, Intents, Broadcast Receivers, Content Providers, Widgets etc.&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;Other notes:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;C++ Builder support will be added much later and isn't part of this release version 1.0.&lt;br /&gt;Lazarus/Delphi Prism support much later.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Twitter Poll: &lt;/span&gt;&lt;span id="p_question"&gt;&lt;span style="font-weight: bold;"&gt;Create your own Delphi-&gt;Android components?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Please fill in the &lt;a href="http://twtpoll.com/sy0wg5"&gt;poll here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I use polls to get feedback on what direction to take in the tool.... Sometimes to make a design decisions is difficult and for that I ask feedback.&lt;br /&gt;&lt;br /&gt;Currently all components like TButton etc will have Android specific version that only have Android properties/events.&lt;br /&gt;&lt;br /&gt;Only myself can write additional components.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-3470542089401201469?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/3470542089401201469/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=3470542089401201469' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/3470542089401201469'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/3470542089401201469'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2010/10/delphi-for-android-progress-component.html' title='Delphi For Android Progress &amp; Component Poll'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-3373428406607458090</id><published>2010-09-13T06:41:00.000-07:00</published><updated>2010-09-13T06:44:43.526-07:00</updated><title type='text'>Delphi For Android: Run Under Mono 2.4</title><content type='html'>The Delphi for Android tool (DCCDroid.exe) run under Mono 2.4 and later.&lt;br /&gt;I haven't tested on a Linux/Mac OS X machine since we don't support Lazarus and Delphi Prism.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;More questions time:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Lazarus and Delphi Prism support.&lt;br /&gt;Lazarus support will take while to implement and test on Linux (even if DCCDroid.exe run on Mono) also Delphi Prism use a total different form design (WPF). For now I've decided that its better to focus on pure Delphi support and later on think about Lazarus/Delphi Prism.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-3373428406607458090?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/3373428406607458090/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=3373428406607458090' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/3373428406607458090'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/3373428406607458090'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2010/09/delphi-for-android-run-under-mono-24.html' title='Delphi For Android: Run Under Mono 2.4'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-7388455436357095860</id><published>2010-09-10T09:45:00.000-07:00</published><updated>2010-09-10T09:54:09.584-07:00</updated><title type='text'>Delphi For Android - Lazarus (Free Pascal) Support</title><content type='html'>DCCDroid doesn't work with &lt;a href="http://www.lazarus.freepascal.org/"&gt;Lazarus (Free Pascal) IDE&lt;/a&gt; because it reads the form layout to know where to place the controls on an absolute layout position as well as getting the control properties (like text, width/height etc).&lt;br /&gt;&lt;br /&gt;Lazarus use a different file format (*.lfm) where Delphi use the DFM file layout.&lt;br /&gt;&lt;br /&gt;Another question I received:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;How does the tool work internally?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now that is a top secret inside trade secret! Just to say that it does compile to a native application (not a web application) using the Android SDK. You don't need to deploy any special run time etc. Underneath it use the Android tool chain.&lt;br /&gt;&lt;br /&gt;The inner details am not going to share.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-7388455436357095860?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/7388455436357095860/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=7388455436357095860' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/7388455436357095860'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/7388455436357095860'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2010/09/delphi-for-android-lazarus-free-pascal.html' title='Delphi For Android - Lazarus (Free Pascal) Support'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-3805572009130869865</id><published>2010-09-09T08:01:00.000-07:00</published><updated>2010-09-09T08:52:03.867-07:00</updated><title type='text'>Delphi For Android Sneak Preview 2</title><content type='html'>In this preview:&lt;br /&gt;&lt;br /&gt;- Running in Delphi 2006.&lt;br /&gt;- TEdit and TLabel control together with event on TLabel&lt;br /&gt;- Control properties, you don't need to write anything special just to get or set the value from a control... Just use the property like you always have!&lt;br /&gt;- Actually show you the compiler and what the compile.bat and run.bat files do.&lt;br /&gt;&lt;br /&gt;I will try to post a sneak preview at least every month but that depends upon the current Sprint size since each month I set myself a set of goals to archive.&lt;br /&gt;&lt;br /&gt;For questions, comments, suggestions please contact me: &lt;a href="mailto:lenniedg@gmail.com"&gt;lenniedg@gmail.com&lt;/a&gt;&lt;br /&gt;Twitter: &lt;a href="http://twitter.com/delphi_android"&gt;http://twitter.com/delphi_android&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/ykFQV-cIWMU?hl=en&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/ykFQV-cIWMU?hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;What's Next?&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;- Samples, include all the examples in the package.&lt;br /&gt;- Additional controls&lt;br /&gt;- Additional work on the core tool framework / libraries&lt;br /&gt;- Library support: Allow you to write your own library.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Frequently Asked Questions (FAQ)&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;What versions of Delphi are supported?&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Currently it runs in Delphi 7, 2006 and 2010. Haven't tested with the new Delphi EX yet. Delphi Prism not at all.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Is there Kylix support?&lt;br /&gt;&lt;br /&gt;&lt;em&gt;No, and no plans at the moment since Kylix is seen as a dead product.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Is there Lazarus (Free Pascal) support?&lt;br /&gt;&lt;br /&gt;&lt;em&gt;No but it should work with Lazarus. I will give it a try.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;When will it become available?&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Can't say for now since there is sooo much work still left. There will be a beta version but licensing, cost etc unknown at this stage.&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;/em&gt;&lt;br /&gt;C++ Builder support?&lt;br /&gt;&lt;br /&gt;&lt;em&gt;See poll below.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;In what language is it written in? Delphi?&lt;br /&gt;&lt;br /&gt;&lt;em&gt;It's written in C# targeting .NET framework 3.5. The library "Delphi for Android" that you use in Delphi is the only part written in Delphi.&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;/em&gt;&lt;br /&gt;Does it run on an actual phone?&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Yes it does, I tested it on my HTC Desire.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;What target of Android is supported?&lt;br /&gt;&lt;br /&gt;&lt;em&gt;The tool for now default to Android 2.1 but you will be able to indicate the target. Minimum target I guess will be 1.6&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Other platforms - iPhone? Symbian? Samsung Wave?&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Not now sorry... Am only 1 guy you know :)&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Anyone using this yet in a real world application?&lt;br /&gt;&lt;br /&gt;&lt;em&gt;I'm giving demos, getting comments and alot of suggestions but for now the tool isn't at a stage yet to be avialable to write a full real world application. For one, you can't sign your application yet for public release.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Poll&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;I got some suggestions on adding support for C++ Builder.... I'm not going to jump to add support now since that will side track the original project plans etc that will extend delivery since am sure everyone want a working copy to play with soon! For now please &lt;a href="http://lenniedevilliers.blogspot.com/2010/09/delphi-for-android-target-poll.html"&gt;fill in the poll&lt;/a&gt; and let me know.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Donation&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;As a contractor a donation would be nice since that will help me to spend more time (time = money as a contractor) to work on it.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;form method="post" name="_xclick" action="https://www.paypal.com/cgi-bin/webscr"&gt;&lt;br /&gt;&lt;input value="_xclick" type="hidden" name="cmd"&gt;&lt;br /&gt;&lt;input value="karpal276@gmail.com" type="hidden" name="business"&gt;&lt;br /&gt;&lt;input value="Lennie - Delphi For Android" type="hidden" name="item_name"&gt;&lt;br /&gt;&lt;input value="USD" type="hidden" name="currency_code"&gt;&lt;br /&gt;&lt;input value="25.00" type="hidden" name="amount"&gt;&lt;br /&gt;&lt;input border="0" alt="Make payments with PayPal - it's fast, free and secure!" src="http://www.paypal.com/en_US/i/btn/btn_donate_LG.gif" type="image" name="submit"&gt;&lt;br /&gt;&lt;/form&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-3805572009130869865?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/3805572009130869865/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=3805572009130869865' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/3805572009130869865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/3805572009130869865'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2010/09/delphi-for-android-sneak-preview-2.html' title='Delphi For Android Sneak Preview 2'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-4131676659423912083</id><published>2010-09-09T01:46:00.000-07:00</published><updated>2010-09-09T01:48:26.565-07:00</updated><title type='text'>Delphi For Android Target Poll</title><content type='html'>After receiving alot of questions if Delphi For Android will target C++ Builder as well I decided to put this poll up to help me see where I should take it... If I should spend the time now or later.&lt;br /&gt;&lt;br /&gt;&lt;iframe height="600" src="http://polldaddy.com/s/C05440B0B771A01D?iframe=1" frameborder="0" width="100%"&gt;&lt;a href="http://polldaddy.com/s/C05440B0B771A01D"&gt;View Survey&lt;/a&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-4131676659423912083?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/4131676659423912083/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=4131676659423912083' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/4131676659423912083'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/4131676659423912083'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2010/09/delphi-for-android-target-poll.html' title='Delphi For Android Target Poll'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-1971730172858094472</id><published>2010-09-04T04:07:00.000-07:00</published><updated>2010-09-04T06:19:57.135-07:00</updated><title type='text'>Delphi For Android - Sneak Preview</title><content type='html'>I love programming in Delphi, it was the first Windows development tool that I used after coming from QBASIC and Turbo Pascal 7.0 on MS-DOS (with my old 386SX machine, 2.1GB HD, 6MB RAM).&lt;br /&gt;&lt;br /&gt;This is a sneak preview on what I've been working on for the last 2 months... This tool allow you to write Android mobile phone applications using Delphi.&lt;br /&gt;&lt;br /&gt;In the first Youtube video I show how you can place a button (TButton) and then call a Android library method to display a message, run the compiler from the command line (its called "dccdroid.exe") and run within the Android emulator.&lt;br /&gt;&lt;br /&gt;Tool has been tested with Delphi 6.0, 7.0, 2005, 2006 and 2010.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;So how does it work?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The tool is written in C# with Visual Studio.Net 2008&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;. It reads the Delphi form layout (dfm) and then create the XML layout file (main.xml), it then port the Pascal code over to a middle layer that is in Java.  Note that it doesn't do 100% conversion to Java but part of the project is in Java.&lt;br /&gt;&lt;br /&gt;The full Android (Java) solution get created.&lt;br /&gt;You don't access the Android API directly but by using libraries.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;When will it become available?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Can't say for now since am only working on this part time at night and over weekends. It will be a commercial product for sure.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;What is my progress?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I'm currently working on the tool's core that allow me to easily add additional controls (TEdit and TLabel I already implemented) together with there properties, events etc. Also to be able to write your own libraries to use the Android API.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Video - Sneak preview 1:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Here I place 2x buttons (TButton) on the Form and write OnClick event handlers for both to display a pop up message.&lt;br /&gt;&lt;br /&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/geh4J8sKUXE?hl=en&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/geh4J8sKUXE?hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Running on the phone:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To confirm that it actually do run on your phone and not just in the Android emulator, use this Q-code to download and run the sample on your phone.&lt;br /&gt;&lt;br /&gt;Also to tease you more I've included the &lt;a href="http://www.lenniedevilliers.net/DelphiDroidSample01.zip"&gt;source code&lt;/a&gt; for both Delphi and the generated code (in Test folder).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;NOTE: I DON'T TAKE ANY RESPONSIBILITY FOR THE LOST OF LIVE, DAMAGE ETC TO YOUR PHONE BUT ON THAT NOTE YOU CAN TRUST ME SINCE THIS IS A VALID DOWNLOAD THAT WILL NOT KILL YOU OR CONTAIN A VIRUS.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_fubI2pbuiRk/TII1J9s94uI/AAAAAAAAACA/IfEQwAPhK68/s1600/delphiandroidsample01.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 312px; height: 312px;" src="http://1.bp.blogspot.com/_fubI2pbuiRk/TII1J9s94uI/AAAAAAAAACA/IfEQwAPhK68/s320/delphiandroidsample01.png" alt="" id="BLOGGER_PHOTO_ID_5513027339153171170" border="0" /&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;Donation:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;As a contractor a donation would be nice since that will help me to spend more time (time = money as a contractor) to work on it.&lt;br /&gt;&lt;br /&gt;&lt;form name="_xclick" action="https://www.paypal.com/cgi-bin/webscr" method="post"&gt;&lt;br /&gt;&lt;input name="cmd" value="_xclick" type="hidden"&gt;&lt;br /&gt;&lt;input name="business" value="karpal276@gmail.com" type="hidden"&gt;&lt;br /&gt;&lt;input name="item_name" value="Lennie - Delphi For Android" type="hidden"&gt;&lt;br /&gt;&lt;input name="currency_code" value="USD" type="hidden"&gt;&lt;br /&gt;&lt;input name="amount" value="25.00" type="hidden"&gt;&lt;br /&gt;&lt;input src="http://www.paypal.com/en_US/i/btn/btn_donate_LG.gif" name="submit" alt="Make payments with PayPal - it's fast, free and secure!" type="image" border="0"&gt;&lt;br /&gt;&lt;/form&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-1971730172858094472?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/1971730172858094472/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=1971730172858094472' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/1971730172858094472'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/1971730172858094472'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2010/09/delphi-for-android-sneak-preview.html' title='Delphi For Android - Sneak Preview'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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/_fubI2pbuiRk/TII1J9s94uI/AAAAAAAAACA/IfEQwAPhK68/s72-c/delphiandroidsample01.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-961885452063004235.post-1995457994216567987</id><published>2010-06-28T03:43:00.001-07:00</published><updated>2010-06-28T03:47:09.660-07:00</updated><title type='text'>My Babies...</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_fubI2pbuiRk/TCh9D4-TIiI/AAAAAAAAABw/PJZ7Sq1qB4A/s1600/my+babies.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_fubI2pbuiRk/TCh9D4-TIiI/AAAAAAAAABw/PJZ7Sq1qB4A/s320/my+babies.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5487773651737715234" /&gt;&lt;/a&gt;&lt;br /&gt;Franky that is our new boy dogie and Zoe our little girl... cuddling on the couch! &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/961885452063004235-1995457994216567987?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/1995457994216567987/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=1995457994216567987' title='19 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/1995457994216567987'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/1995457994216567987'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2010/06/my-babies.html' title='My Babies...'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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/_fubI2pbuiRk/TCh9D4-TIiI/AAAAAAAAABw/PJZ7Sq1qB4A/s72-c/my+babies.jpg' height='72' width='72'/><thr:total>19</thr:total></entry><entry><id>tag:blogger.com,1999:blog-961885452063004235.post-6985248165905553110</id><published>2010-06-23T05:27:00.000-07:00</published><updated>2010-06-23T07:30:31.801-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>For The Love Of C++ Part 2</title><content type='html'>For the last year I've been programming in C++ on a personal top secret project. &lt;div&gt;I'm using Visual C++ 2010 with the new C++ 0x language features. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;C++ is difficult mostly because it needs to b backward compatible with C but it is also powerful. For me I tend to learn everything and sometimes I say to myself "Nope I will not do it that way" Or "Nope, that is dangerous! Never do that".  off course all this comes from experience or reading blogs etc to gain knowledge from others that do have the experience.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For example, many times I read "don't do multiple inheritance" and many reasons why... I tried it myself and yes it does hurt.  So yes you see why blogs say that.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;On that note its always good for you to try something yourself to learn the advantages/disadvantages etc.... remember that programming isn't just about reading about it but actually doing it... get a project to work on being your own personal project, a project at work or join an open source project.&lt;span class="Apple-tab-span" style="white-space:pre"&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/961885452063004235-6985248165905553110?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/6985248165905553110/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=6985248165905553110' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/6985248165905553110'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/6985248165905553110'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2010/06/for-love-of-c-part-2.html' title='For The Love Of C++ Part 2'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-7817264526462956175</id><published>2010-04-12T07:22:00.000-07:00</published><updated>2010-04-12T07:33:26.364-07:00</updated><title type='text'>Slow Death Of The iPhone Platform</title><content type='html'>Yes your heard right, the iPhone platform is going to die a very slow painful death all thanks to its own maker: Apple&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Picture an entrepreneur that got an idea for a new fantastic mobile application, off course that person want to target all mobile platforms to archive the greater market place: Android, Symbian (J2ME/C++ whatever the tool), Blackberry, Windows Mobile/Phone 7 and the iPhone.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So the person might get individual quotes for each platform but because the iPhone is such a close environment the developers that can target that platform will off course charge much more for development so because development for all the other platforms are reasonable they might decide that its then not worth targeting the iPhone... Note that even if they do accept the quote there are still all the issues where Apple reject applications to the AppStore sometimes for every stupid bizarre reasons. &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/961885452063004235-7817264526462956175?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/7817264526462956175/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=7817264526462956175' title='15 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/7817264526462956175'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/7817264526462956175'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2010/04/slow-death-of-iphone-platform.html' title='Slow Death Of The iPhone Platform'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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>15</thr:total></entry><entry><id>tag:blogger.com,1999:blog-961885452063004235.post-1950251252269849566</id><published>2010-04-10T02:43:00.000-07:00</published><updated>2010-04-10T02:49:23.578-07:00</updated><title type='text'>iPhone Development Just Got Harder</title><content type='html'>When I look into buying a new phone this year I look at a lot of things (does it have a camera, are there apps available , does it have a nice data plan, does it have 3G and Wifi etc) but as a developer I mostly want to code for it... That is why my current phone is a Windows Mobile device since I can easily use MS Visual Studio.Net with C# without having any other cost. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The iPhone is a great device (like the new iPhone 4G will b even better)  but its hard to code for it, a big disadvantage.... You need to buy a Mac, learn Objective C or some other tool (like MonoTouch etc), pay the USD $99.00 per year (that isn't actually very bad if you got the money) &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;With the release of the new terms and conditions for the iPhone OS 4.0, Apple disallow applications not written in C / C++ or rather Objective C.... Development just got harder!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I just want Apple and everyone to remember, for us developers and companies its about USERS/CUSTOMERS... If we can't develop applications easily because a platform is closed down then its the USERS/CUSTOMERS that will suffer since they will not get the kind of applications that they want. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;THE USER / CUSTOMER MUST B MORE IMPORTANT, ALWAY!!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I hope this will change for Apple else I will go for another platform like Android where I can actually use a tool like Java to code or go for Windows Phone 7 where you can use MS Visual Studio.Net 2010.&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/961885452063004235-1950251252269849566?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/1950251252269849566/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=1950251252269849566' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/1950251252269849566'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/1950251252269849566'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2010/04/iphone-development-just-got-harder.html' title='iPhone Development Just Got Harder'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-3265183291747996799</id><published>2010-03-19T04:14:00.000-07:00</published><updated>2010-03-19T04:24:49.127-07:00</updated><title type='text'>MWEB Uncapped ADSL Launch Overview</title><content type='html'>&lt;div&gt;For more than a decade South African internet users wasn't happy with the pricing and level of services for ADSL... ADSL is expensive, you use to buy per GB and monitor your usage all the time to make sure that you don't go over... You don't download anything or like me way back ask a friend from the UK to download software for me then post it on a DVD.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We are jealous with America where there is uncapped ADSL at a very low price, uncapped ADSL on a smart phone (like iPhone 3G) &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;Yesterday, 18 March 2010 MWEB surprise (or shocked) the ISP market by &lt;a href="http://www.mweb.co.za/adsl"&gt;offering uncapped ADSL service&lt;/a&gt; at a very reasonable price. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I phoned the call center (not going thru any other channels as an MWEB employee)  and signup within minutes for 4Mbps uncapped ADSL at R539.00 per month.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The speed is fast, being at other providers before, MWEB service is REAL and reliable.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Please visit there website for more information on the different packages available like 384Kbps uncapped ADSL for R219.00 per month.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Note that you also get a free 2GB mailbox, 300 free Wifi minutes that can be used at Mugg &amp;amp; Bean or airports.  Other value added service also included like Faxmail.&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/961885452063004235-3265183291747996799?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/3265183291747996799/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=3265183291747996799' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/3265183291747996799'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/3265183291747996799'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2010/03/mweb-uncapped-adsl-launch-overview.html' title='MWEB Uncapped ADSL Launch Overview'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-3101303414860163212</id><published>2010-03-13T03:28:00.001-08:00</published><updated>2010-03-13T03:30:10.181-08:00</updated><title type='text'>Increase Your Existing Language Skills First</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; "&gt;This topic is programming related but let me first start with a small story, I am originally Afrikaans but I married a wonderful lady  who is English. I could always learn a new language like German / Spanish but I need to improve my existing language skills first, to be able to speak/read/write English... My wife corrects me a lot on this if I say&lt;br /&gt;something wrong... it's a learning process!&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; "&gt;&lt;br /&gt;The same applies to a programming language, you can learn 100 programming languages but are you productive in them? The languages that I use the most is:&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; "&gt;C#&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; "&gt;VB.Net&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; "&gt;Java&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; "&gt;C++&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; "&gt;PHP&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; "&gt;and I am still learning new language features etc daily. Some developers are stuck programming in only one language like Java and will never look at another language like C# via different reasons, I agree that you should know more than one language but being productive in them is another story.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; "&gt;&lt;br /&gt;Another reason for learning a language is the current market demand, currently in South Africa mainly C# and Java jobs are available, sometimes PHP jobs or other tools (Flash etc) if your looking for example to get a job as a COBOL developer then you will struggle.  You need to see what the demand is else you will not get a job.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; "&gt;So going forward look at your existing langauge skills and see how you can improve, do you know how to write a design pattern in your language? Do you know how to use generics in C# or are you just used to doing a "List&lt;t&gt;"? What about other generic features? So my point is, rather learn something new, something that will make you more productive something that you haven't looked at before (maybe how to write annotations in Java? or C# Reflection?)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; "&gt;It gives you a lot of advantages, you're then a more productive developer in the given language and able to find mistakes easily etc.&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/961885452063004235-3101303414860163212?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/3101303414860163212/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=3101303414860163212' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/3101303414860163212'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/3101303414860163212'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2010/03/increase-your-existing-language-skills.html' title='Increase Your Existing Language Skills First'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-1187528920340320711</id><published>2010-03-10T23:59:00.000-08:00</published><updated>2010-03-11T03:42:23.993-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>C++ Blogs Worth Reading/Bookmarking</title><content type='html'>Here is my list:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://herbsutter.wordpress.com/"&gt;http://herbsutter.wordpress.com&lt;/a&gt;/&lt;br /&gt;&lt;a href="http://www.drdobbs.com/blog/cppblog/"&gt;http://www.drdobbs.com/blog/cppblog/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.artima.com/cppsource"&gt;http://www.artima.com/cppsource&lt;/a&gt;&lt;br /&gt;&lt;a href="http://googletesting.blogspot.com/"&gt;http://googletesting.blogspot.com/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://blog.think-async.com/"&gt;http://blog.think-async.com/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://dobbscodetalk.com/index.php?option=com_myblog&amp;amp;blogger=andrewk&amp;amp;Itemid=29"&gt;http://dobbscodetalk.com/index.php?option=com_myblog&amp;amp;blogger=andrewk&amp;amp;Itemid=29&lt;/a&gt;&lt;br /&gt;&lt;a href="http://en.wikibooks.org/wiki/More_C++_Idioms"&gt;http://en.wikibooks.org/wiki/More_C++_Idioms&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.reddit.com/r/cpp"&gt;http://www.reddit.com/r/cpp&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.parashift.com/c++-faq-lite/"&gt;http://www.parashift.com/c++-faq-lite/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cpp-next.com/"&gt;http://cpp-next.com/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://blogs.msdn.com/oldnewthing/"&gt;http://blogs.msdn.com/oldnewthing/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://learningcppisfun.blogspot.com/"&gt;http://learningcppisfun.blogspot.com/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://attractivechaos.wordpress.com/"&gt;http://attractivechaos.wordpress.com/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.gotw.ca/gotw/"&gt;http://www.gotw.ca/gotw/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.devx.com/cplus/Door/7042"&gt;http://www.devx.com/cplus/Door/7042&lt;/a&gt;&lt;br /&gt;&lt;a href="http://pocoproject.org/blog/"&gt;http://pocoproject.org/blog/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://kenanlee.blogspot.com/search/label/C/C%2B%2B"&gt;http://kenanlee.blogspot.com/search/label/C/C%2B%2B&lt;/a&gt;&lt;br /&gt;&lt;a href="http://embracingcpp.blogspot.com/"&gt;http://embracingcpp.blogspot.com/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://pizer.wordpress.com/"&gt;http://pizer.wordpress.com/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cplusplus-soup.com/"&gt;http://cplusplus-soup.com/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.gregcons.com/KateBlog/CategoryView.aspx?category=C%2B%2B"&gt;http://www.gregcons.com/KateBlog/CategoryView.aspx?category=C%2B%2B&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cpptruths.blogspot.com/"&gt;http://cpptruths.blogspot.com/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://turboc.blogspot.com"&gt;http://turboc.blogspot.com&lt;/a&gt;/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-1187528920340320711?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/1187528920340320711/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=1187528920340320711' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/1187528920340320711'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/1187528920340320711'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2010/03/c-blogs-worth-readingbookmarking.html' title='C++ Blogs Worth Reading/Bookmarking'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-961885452063004235.post-7175546718728721348</id><published>2010-02-23T01:49:00.000-08:00</published><updated>2010-02-23T01:55:34.118-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Java Quiz: Array Initialization Answer</title><content type='html'>Its a difficult answer if you come from a Pascal (Delphi), C or C++ back ground where you had to initialize the array first with default values like 0 before using.&lt;br /&gt;&lt;br /&gt;Java automatically initialize all elements in an array to default values, object references become null and primitive integers become 0.&lt;br /&gt;&lt;br /&gt;This is in my SCJP exam studies, tricky since I come from a Pascal and C++ back ground.&lt;br /&gt;&lt;br /&gt;In C/C++ you get some random data (whatever is in memory at that pointer address). So for them you need to initialize the array before use.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-7175546718728721348?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/7175546718728721348/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=7175546718728721348' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/7175546718728721348'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/7175546718728721348'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2010/02/java-quiz-array-initialization-answer.html' title='Java Quiz: Array Initialization Answer'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-6113784606351938046</id><published>2010-02-22T04:22:00.000-08:00</published><updated>2010-02-22T04:45:23.031-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Java Quiz: Array Initialization</title><content type='html'>Is the following correct? What will the output be?&lt;div&gt;And PS: Try to figure it out before actually running the code :-)&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;public class BirthDays &lt;/div&gt;&lt;div&gt;{&lt;/div&gt;&lt;div&gt;   static int [] year = new int[100];&lt;/div&gt;&lt;div&gt;  public static void main(String [] args) &lt;/div&gt;&lt;div&gt;  {&lt;/div&gt;&lt;div&gt;     for(int i=0;i&lt;100;i++)&lt;/div&gt;&lt;div&gt;      System.out.println("year[" + i + "] = " + year[i]);&lt;/div&gt;&lt;div&gt;  }&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Please give your answer in the comments.&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/961885452063004235-6113784606351938046?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/6113784606351938046/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=6113784606351938046' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/6113784606351938046'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/6113784606351938046'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2010/02/java-quiz-array-initialization.html' title='Java Quiz: Array Initialization'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-7377800763735574651</id><published>2010-02-11T22:37:00.000-08:00</published><updated>2010-02-11T22:47:06.858-08:00</updated><title type='text'>Microsoft vs Apple War Continue: The iPad</title><content type='html'>After reading an &lt;a href="http://www.neowin.net/news/bill-gates-remains-unimpressed-by-the-ipad"&gt;artical &lt;/a&gt;about Bill Gates being unimpressed with the iPad, I see that the whole Microsoft is against anything that comes from Apple - the iPhone for example, they all focus only on there Windows Mobile phones (which got there own problems - more about that in later blog) , no iPod only there Zune device.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The war between Microsoft and Apple (or let me rather say Bill Gates and Steve Jobs) started in the 1980s, all the geeks know the story but let me repeat... Microsoft was doing DOS for IBM and Apple there Apple II etc machines (before the Mac) so it was Apple vs IBM,  Apple then released the Mac - first operating system that got a graphics user interface (GUI) - they stole this idea from the Smalltalk system... Microsoft then wrote software (spreadsheets etc) for the Mac, later on Microsoft released Windows and that stole the market. So yeah, Steve jobs wasn't happy with Microsoft (Bill Gates) for steeling there GUI OS idea even if they stole it from the Smalltalk system... actually if you look at this story both of them are wrong.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Over years there was no love between them... Currently for example you need a Mac to write software for the iPhone/iPod Touch/iPad (known forth as the i-Devices) can't do it on a MS Windows machine.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Personally I see this as wrong... We are customers,  we don't care about fights, bad feelings etc that companies got against each other... This if for example why Steve Jobs is wrong - his feelings is always in the way of his business judgement... customers are asking for Flash support on the i-Devices but no his got a thing against Adobe.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Give us what we ask for! Give us what we want! If you give us what we ask for / want without all this other crap (that is the only way of expressing it) then your product will grow and you will become more successful then the company X that you got a thing against.&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/961885452063004235-7377800763735574651?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/7377800763735574651/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=7377800763735574651' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/7377800763735574651'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/7377800763735574651'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2010/02/microsoft-vs-apple-war-continue-ipad.html' title='Microsoft vs Apple War Continue: The iPad'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-3035104496211663533</id><published>2010-02-07T00:33:00.000-08:00</published><updated>2010-02-07T00:42:04.388-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blackberry'/><title type='text'>Blackberry True Push Email</title><content type='html'>With push email you get email delivered immediately on your phone just like an SMS, most phones say that they support push email but its not actually true push email... just like MS Outlook where all that they do is to check your mailbox every x minutes (like 5/10 minutes) so every time it does a simple send &amp;amp; receive. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The Blackberry support true push email using BIS (Blackberry Internet Services) you can setup email accounts (like your Gmail account) and it get pushed to your Blackberry - there is a lot of detail on how this works but I will not explain it here.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As in previous blog entry you can pay R59 per month (30 days) from your Vodacom airtime which give you unlimited internet access on your Blackberry meaning that you don't pay R2 per 1 MB for internet (3G/GPRS/EDGE) - push email, Facebook and browsing is free. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There are limits, you can't for example download huge emails, emails got a limit size as well etc. I suggest you check with your service provider (Vodacom, MTN) onthese limitations.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Also at work my phone is always on silent, the Blackberry got it nice where if there's a email a little red light flickers - very nice visible notification.&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/961885452063004235-3035104496211663533?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/3035104496211663533/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=3035104496211663533' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/3035104496211663533'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/3035104496211663533'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2010/02/blackberry-true-push-email.html' title='Blackberry True Push Email'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-3684630889081767278</id><published>2010-02-04T02:05:00.000-08:00</published><updated>2010-02-04T02:14:59.060-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blackberry'/><title type='text'>My Blackberry Experience</title><content type='html'>Over last weekend I bought myself the Blackberry Curve 8520 smartphone, I always wanted to have a Blackberry since I heard its very good especially with email taken that I spend a lot of time on emails. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I didn't got the device on a contract but as a prepaid package, so I bought it cash together with a Vodacom prepaid SIM card. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;With Vodacom you can signup for the Blackberry Internet Service by using your airtime, R59 for 30 days (subtracted from your airtime) gives you unlimited Internet access e.g. browsing, Facebook, Twitter and push email.  Note that Skype (VOIP) or any form of streaming will cost you extra since that isn't part of the unlimited Internet package.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For push email you just register your email addresses on the Vodacom portal and get pure push email (I will blog about push email in the future). &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For Facebook a little blue envelope will appear if someone sent you a message etc. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The Blackberry Curve uses GPRS/EDGE and Wifi unfortunately no 3G support but for me that is fine since I'm mostly in a office where there is Wifi and yes I'm one of those that don't use my phone while driving.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For me the most to get used to was the little keyboard, I came from my Samsung Omnia i900 and iPod Touch that got touch screens and all of a sudden need to get used to the little keyboard. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If your a developer, please fill in my poll: &lt;span class="Apple-style-span" style="font-family: Helvetica, Arial, sans-serif; font-size: 14px; color: rgb(51, 51, 51); line-height: 16px; "&gt;&lt;a href="http://shop-till-you-drop.co.za/poll.html"&gt;Do u want C#/VB.Net for Blackberry?&lt;/a&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/961885452063004235-3684630889081767278?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/3684630889081767278/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=3684630889081767278' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/3684630889081767278'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/3684630889081767278'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2010/02/my-blackberry-experience.html' title='My Blackberry Experience'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-47975538801197933</id><published>2010-01-27T23:40:00.000-08:00</published><updated>2010-01-28T00:04:25.620-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='apple'/><title type='text'>Apple's Unveils The iPad</title><content type='html'>&lt;div&gt;At a special event last night 20:00 South Africa time,  Apple's CEO Steve Jobs unveiled the new iPad. I couldn't watch it online since unfortunately Apple didn't broadcast it but I did listen to an audio feed together with some photos from &lt;a href="http://www.blogger.com/www.engadget.com/"&gt;Engadget&lt;/a&gt;, &lt;a href="http://www.blogger.com/live.gizmodo.com/"&gt;Live Gizmodo&lt;/a&gt; all from my iPod Touch (on Wifi) while in bed with a stomach bug. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The iPad got multi-touch, very big screen, fast processor, comes in Wifi only, Wifi/3G models etc. For all the details you can read the references below - I'm not going to repeat here.  For me it got some advantages / disadvantages:&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Advantages:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Bigger then the iPhone/iPod Touch so browser is nicer&lt;/li&gt;&lt;li&gt;Comes in Wifi/3G models.. if you don't want to wait for the 3G model you can buy the Wifi only model and use a tool like MyFi that broadcast a Wifi signal from 3G (3G -&gt; Wifi).&lt;/li&gt;&lt;li&gt;Very fast processor, most of the reviews are happy about how fast it is.&lt;/li&gt;&lt;li&gt;iWork: Office like package (try to compare it with MS Office) for word processing, spreadsheets etc. USD $9.99 from the AppStore.&lt;/li&gt;&lt;li&gt;AppStore: Buy all existing applications developed for the iPhone from the AppStore and run it on the iPad without modifications.&lt;/li&gt;&lt;li&gt;New SDK: New SDK for development of iPad applications&lt;/li&gt;&lt;li&gt;Games: Very good graphics, I love playing games on my iPod Touch / wife's iPhone.&lt;/li&gt;&lt;li&gt;Keyboard: A physical keyboard that you can connect to the iPad if your not keen on using the on screen keyboard (like me: I dislike typing on the iPhone/iPod Touch).&lt;/li&gt;&lt;li&gt;iBooks: New online store where you can buy e-books and read them the iPad.&lt;/li&gt;&lt;li&gt;Price: At USD $499.00 (about R3,773.09 base upon the current exchange rate) for the Wifi only model the pricing is very good. &lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Disadvantages: &lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Its not a PC, you still would require a Mac OS device to write applications for the iPad.&lt;/li&gt;&lt;li&gt;No multi-windows, only one application can run at a time... Just like the iPhone / iPod Touch.&lt;/li&gt;&lt;li&gt;Base upon new iPhone OS so got the same disadvantages&lt;/li&gt;&lt;li&gt;No GPRS - Not everywhere in South Africa there is Wifi or 3G.&lt;/li&gt;&lt;li&gt;No webcam build-in or microphone... doesn't see how applications like Skype/Fring will work if you want to do VOIP.&lt;/li&gt;&lt;li&gt;Wait: We're going to wait months before its available in South Africa.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;So for me: I will not buy one, its got all the same stuff that the iPhone got already and you can phone with the iPhone (and use Skype/Fring), it got 3G and GPRS. I would like to see iBooks and the keyboard for the iPhone but that is something that I can live without.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;b&gt;References:&lt;/b&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://events.apple.com.edgesuite.net/1001q3f8hhr/event/index.html"&gt;Apple Special Event Jan 2010 - Watch Online&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://ipod.about.com/od/beforeyoubuy/a/ipad-model-price-comparison.htm"&gt;iPad Models&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Do a search on &lt;a href="http://www.youtube.com/"&gt;YouTube&lt;/a&gt; there are a lot of videos or a &lt;a href="http://www.google.com/"&gt;Google&lt;/a&gt; search for a lot of content online&lt;/li&gt;&lt;/ul&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/961885452063004235-47975538801197933?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/47975538801197933/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=47975538801197933' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/47975538801197933'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/47975538801197933'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2010/01/apples-unveils-ipad.html' title='Apple&apos;s Unveils The iPad'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-4468818768869787686</id><published>2010-01-12T22:12:00.000-08:00</published><updated>2010-01-12T22:24:35.195-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='once upon a time'/><title type='text'>Happy New Year 2010 &amp; My QBASIC Story</title><content type='html'>&lt;i&gt;Happy New Year 2010 (that is Twenty-Ten :-)&lt;/i&gt;&lt;div&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;I hope this year is full of joy, fun in your live. I'm having a full year with alot of work and my Java Certification exam in June 2010.&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I reguarly visit &lt;a href="http://www.reddit.com"&gt;reddit &lt;/a&gt;to see what is new in the programming world... I notice that there is a &lt;a href="http://en.wikipedia.org/wiki/QBasic"&gt;QBASIC &lt;/a&gt;interpreter written in &lt;a href="http://en.wikipedia.org/wiki/JavaScript"&gt;JavaScript&lt;/a&gt; available &lt;a href="http://stevehanov.ca/blog/index.php?id=92"&gt;online&lt;/a&gt;. By default it runs the Nibbles game (an old classic snake game). &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;QBasic was the first programming language that I used at the age of 14.. (I'm 28 now) when I was young, inexperience and programming was fun (yes it currently is still fun!) - writing my own dictionary, book library, help me with homework (especially maths) that is where my love for programming started that later became my career (another story how that started).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;My dad bought me a old 386 SX, 40 MHz, 2MB RAM, 1.2 GB hard drive that ran MS DOS 6.22 with MS Windows 3.1.  I learnt BASIC since it was the only books avialable in the schools library, taught you the old GW-BASIC in a cartoon style... GW-BASIC had line numbers etc where with QBasic it was the first version that didn't hand line numbers, had a proper IDE (no syntax highlighting or code completion yet), proper debugging in the form of breakpoints etc. In the language there was GOTO and GOSUB but mostly for back-ward compatibility with GW-BASIC where you get proper SUBs and FUNCTIONs in QBasic.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Later on I moved over to Library Basic so that I can compile my applications and not give my source away (yes even at that age I was very protective of my source code!)&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/961885452063004235-4468818768869787686?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/4468818768869787686/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=4468818768869787686' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/4468818768869787686'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/4468818768869787686'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2010/01/happy-new-year-2010-my-qbasic-story.html' title='Happy New Year 2010 &amp; My QBASIC Story'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-1349034803040889279</id><published>2009-12-12T01:15:00.000-08:00</published><updated>2009-12-14T03:15:07.005-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>Weekly Source Code: C#  DateTime Developer Pitfall</title><content type='html'>&lt;i&gt;Base upon my previous blog post that every language has some pitfalls I had a production issue and saw one of the pitfalls that C# have with the DateTime class which is part of the .Net framework.&lt;/i&gt;&lt;div&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;I renamed this title since its more a pitfall of the developer not understanding the proper use of the DateTime class. The all point is that your telling the constructor to create a date,  you don't tell it to work with increments.&lt;br /&gt;&lt;/i&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In the next code you want to get the 1ste date of the following month:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;DateTime currentDate = new DateTime(2009, 11, 05);&lt;/div&gt;&lt;div&gt;DateTime nextDate = new DateTime(currentDate.Year, currentDate.AddMonths(1).Month, 1);&lt;/div&gt;&lt;div&gt;Console.WriteLine("nextDate: " + nextDate.ToString("dd/MM/yyyy"));&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So the answer is 01/12/2009 which is correct but what if you do the following:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;DateTime currentDate = new DateTime(2009, 12, 05);&lt;/div&gt;&lt;div&gt;DateTime nextDate = new DateTime(currentDate.Year, currentDate.AddMonths(1).Month, 1);&lt;/div&gt;&lt;div&gt;Console.WriteLine("nextDate: " + nextDate.ToString("dd/MM/yyyy"));&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Code is exactly the same, I just change the month to December since you want to get the day for the 1ste of Jan 2010 but the end result is: 01/01/2009. Ouch!!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Yes the DateTime object doesn't increment the year (2009 -&gt; 2010).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To fix:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;DateTime currentDate = new DateTime(2009, 12, 05);&lt;/div&gt;&lt;div&gt;DateTime nextDate = new DateTime(currentDate.Year, currentDate.Month, 1);&lt;/div&gt;&lt;div&gt;nextDate = nextDate.AddMonths(1);&lt;/div&gt;&lt;div&gt;Console.WriteLine("nextDate: " + nextDate.ToString("dd/MM/yyyy"));&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You see that you can't increment in a DateTime.&lt;/div&gt;&lt;/div&gt;&lt;/div&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/961885452063004235-1349034803040889279?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/1349034803040889279/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=1349034803040889279' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/1349034803040889279'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/1349034803040889279'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2009/12/weekly-source-code-c-datetime-pitfall.html' title='Weekly Source Code: C#  DateTime Developer Pitfall'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-5737684736531317707</id><published>2009-12-04T02:22:00.003-08:00</published><updated>2009-12-04T02:22:59.802-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>For The Love Of C++</title><content type='html'>&lt;div&gt;Alot of programmers that use more modern programming langauges (C#, VB.Net, Java, Python, Delphi etc) dish C++ by saying what bad language it is, how its the worse thing ever created etc.. But they don't know it (have you ever code any C++? have you ever even see any C++ code?) Don't dish something that you don't know... &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Languages like C#/Java is very abstract, they hide things from a programmer like memory management that get managed by a garbage collector etc Where in C++ memory management get done by yourself via pointers (yes pointers are very difficult!) C++ have pitfalls, very bad once aswell yes but they can be privented by putting rules in place, use 3rd party libraries like Boost that support smart pointers for memory management (for this artical am not going to explain what smart pointers are) have code reviews etc. A programmer can write crap in any language, in C++ its just more easy for this you need serious programmers that take there job seriously that are willing to learn the C++ pitfalls and how to deal with them, are willing to read books like Effective C++.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;C++ is powerful it teach you how to come close to understanding how the machine works, you learn new things / new ways of doing things all the time... its fun! Think abit beyond... The OS that you use (MS Window/Linux), your mouse driver, your Webcam, your iPod, your iPhone, your IM program like Skype etc are all written in C++ or some dialect of it (like Objective C)... the C# / VB.Net etc geeks can also stop moaning since do you guys know? the compiler for your language is written in C / C++.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So why does C++ have so many pitfalls? &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To start, every language has some form of pitfalls... am studying for my Java Programmer Sun Certification and let me tell you, even Java got alot of pitfalls. C# aswell! So don't think C++ is the only language that you can write crap in, you can write crap in any language and any language can make you scream from frustration when you struggle with some weird issue that is actually a language pitfall.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;C++ have alot of pitfalls, full books are written for them like Effective C++ (btw you also get Effective Java) get see the reason why we need to go back into history... (time Machine please!)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;C++ was called "C for Classes" where Bjarne Stroustrup want to add object oriented programming (OOP) features to the powerful C programming language from his experience coding in Smalltalk, Simula etc. (interesting artical &lt;a href="http://www.research.att.com/~bs/hopl2.pdf"&gt;here&lt;/a&gt;) it was criptic way of adding classes but it worked and soon the name was given "C++" along with more languages features added over time... like meta programming, generics in the form of templates, run-time libaries like STL etc To keep C++ standard a standard committee formed, standards are there for a reason since it protect us my dear fellow programmers from one compiler vendor adding some language feature that isn't part of a standard meaning that when you ever wanted to move your code over to that compiler you will have issues - might not be at compile time but at run-time damaging your customer. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When adding a new langauge feature you add more complexity ontop of more complexity and you must keep backward compatiability! Why backward compatiability? Example: Python 3x isn't compatiable with Python 2x so how many developers ported there code over? Answer: Almost none, reason being that a programmer just don't have the time or resources to do a port, you can't tell the your boss/management to wait for a year for you to rewrite all the software (that can be millions lines of code) since business must go on... new products release, new customers, new features in the application etc. In the ISP world its a good example. So for C++ every new feature needs to be compatiable in different context together with other language features... its a difficult process, committee's fight about things for years... the new C++ 0x standard has been going on for over a decade now. So "0x" since you don't know when it will be release, it can be in 2020! that is why C++ has some many pitfalls and is so complex because of 30 years of history... languages like C# will go the same route or are already going the same route. The C++ standard committee just can't do what the Python guys did by "cleaning up C++" since millions of lines of code all over the world will break. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So to end this story... this the truth ladies + gentelman, don't dish something that you don't know the history about or ever even used before.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&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/961885452063004235-5737684736531317707?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/5737684736531317707/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=5737684736531317707' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/5737684736531317707'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/5737684736531317707'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2009/12/for-love-of-c.html' title='For The Love Of C++'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-774524800833171784</id><published>2009-11-11T23:27:00.001-08:00</published><updated>2009-11-12T00:34:35.841-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>About SCJP Sun Certified Programmer For Java Exam</title><content type='html'>Questions from colleagues and readers of my blog, here is more information about the SCJP exam.&lt;br /&gt;&lt;br /&gt;The SCJP exam is a theoretical exam with very tricky questions, it test your knowledge of the Java programming language which is the foundation of all future certifications like Java Developer, J2ME etc.&lt;br /&gt;&lt;br /&gt;To study for the exam I suggest buying the &lt;span class="detailprodname"&gt;&lt;a href="http://www.loot.co.za/shop/main.jsp?page=detail&amp;amp;id=4355209082928"&gt;SCJP Sun Certified Programmer For Java 6 Study Guide&lt;/a&gt; (R409.00) book and spend about a year studying, do mock exams etc until your sure you can pass the exam - its very difficult!&lt;br /&gt;&lt;br /&gt;For help you can visit &lt;a href="http://www.blogger.com/www.javaranch.com"&gt;JavaRanch&lt;/a&gt;&lt;br /&gt;Which is a website started by the authors of the SCJP book.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Phone Prometric Testing Centre on&lt;b&gt; 0800 99 11 20&lt;/b&gt; two weeks in advance, before writing the exams to book. Pricing can be checked with them.&lt;br /&gt;&lt;br /&gt;&lt;span class="detailprodname"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-774524800833171784?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/774524800833171784/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=774524800833171784' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/774524800833171784'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/774524800833171784'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2009/11/about-scjp-sun-certified-programmer-for.html' title='About SCJP Sun Certified Programmer For Java Exam'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-6314556525653547670</id><published>2009-11-06T05:05:00.001-08:00</published><updated>2009-11-06T05:08:20.016-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VS.Net 2008'/><title type='text'>Increase Visual Studio.Net 2008 Memory</title><content type='html'>For work I use Visual Studio.Net 2008 along with a lot of plugins like SQLPrompt etc also Team Foundation Server (TFS). Lately I've been getting out of memory exceptions when I try to checkin my code, after some searching I found that Visual Studio.Net only use max 2GB of RAM memory where my laptop has over 4GB of memory.&lt;br /&gt;&lt;br /&gt;I found &lt;a href="http://stevenharman.net/blog/archive/2008/04/29/hacking-visual-studio-to-use-more-than-2gigabytes-of-memory.aspx"&gt;an article&lt;/a&gt; that explain how to hack Visual Studio.Net to increase its memory usage.&lt;br /&gt;&lt;br /&gt;After trying it out it seams that its working! Hope someone else will find it helpful.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-6314556525653547670?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/6314556525653547670/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=6314556525653547670' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/6314556525653547670'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/6314556525653547670'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2009/11/increase-visual-studionet-2008-memory.html' title='Increase Visual Studio.Net 2008 Memory'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-4177462402156374746</id><published>2009-10-26T01:28:00.001-07:00</published><updated>2009-10-26T01:37:32.569-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.Net'/><title type='text'>How Visual Studio.Net Upgrade Your Solution</title><content type='html'>&lt;span style="font-weight: bold; font-style: italic;"&gt;Weekly source code for this week will be published a bit later&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;When opening an VS.Net 2005 solution in VS.Net 2008 to which version will the upgrade wizard try to upgrade your solution too? Answer: .Net framework 3.5&lt;br /&gt;&lt;br /&gt;The upgrade wizard will always try to upgrade to the current .Net framework for that version of VS.Net for example:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;VS.Net 2005: .Net Framework 2.0&lt;/li&gt;&lt;li&gt;VS.Net 2008: .Net Framework 3.5&lt;/li&gt;&lt;li&gt;VS.Net 2010: .Net Framework 4.0&lt;/li&gt;&lt;/ul&gt;You will be asked the question if you wish to upgrade but you can always say "No". If you say no then the solution will stay in the old version using the multi-target feature.  if you wish to later upgrade (like making use of the new LINQ features in .Net framework 3.5) you can do so under the properties of the project.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-4177462402156374746?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/4177462402156374746/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=4177462402156374746' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/4177462402156374746'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/4177462402156374746'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2009/10/how-visual-studionet-upgrade-your.html' title='How Visual Studio.Net Upgrade Your Solution'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-2187538698810322420</id><published>2009-10-22T00:30:00.000-07:00</published><updated>2009-10-22T00:37:20.684-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>Follow-Up: Make Web Service Configurable</title><content type='html'>Base upon the comments of a reader on my&lt;a href="http://lenniedevilliers.blogspot.com/2009/10/weekly-source-code-make-web-service.html"&gt; last weekly source code&lt;/a&gt; posting is that there is an additional 2x ways to set the URL location of a Web Service:&lt;br /&gt;&lt;br /&gt;string newUrl = "http://server/path/to.asmx";&lt;br /&gt;MyService service = new  MyService();&lt;br /&gt;service.Url = newUrl;&lt;br /&gt;&lt;br /&gt;Or in new C# 3.0 you can use &lt;a href="http://msdn.microsoft.com/en-us/library/bb397680.aspx"&gt;object initializers&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;string newUrl = "http://server/path/to.asmx";&lt;br /&gt;MyService service = new  MyService {Url = newUrl};&lt;br /&gt;&lt;br /&gt;I still prefer using a constructor.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-2187538698810322420?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/2187538698810322420/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=2187538698810322420' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/2187538698810322420'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/2187538698810322420'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2009/10/follow-up-make-web-service-configurable.html' title='Follow-Up: Make Web Service Configurable'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-7263425441650585448</id><published>2009-10-21T02:26:00.000-07:00</published><updated>2009-10-21T02:32:09.127-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Zoe'/><title type='text'>"Daddies" Girl Zoe</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_fubI2pbuiRk/St7VCUIQgcI/AAAAAAAAABk/FzahfeAmsvI/s1600-h/my+girl+3.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_fubI2pbuiRk/St7VCUIQgcI/AAAAAAAAABk/FzahfeAmsvI/s320/my+girl+3.jpg" alt="" id="BLOGGER_PHOTO_ID_5394983639376232898" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_fubI2pbuiRk/St7U1it51NI/AAAAAAAAABc/irSgeCDO53w/s1600-h/my+girl+2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_fubI2pbuiRk/St7U1it51NI/AAAAAAAAABc/irSgeCDO53w/s320/my+girl+2.jpg" alt="" id="BLOGGER_PHOTO_ID_5394983419953927378" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_fubI2pbuiRk/St7UURSOhXI/AAAAAAAAABM/D9U0lZxIFBw/s1600-h/my+girl.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 240px; height: 320px;" src="http://4.bp.blogspot.com/_fubI2pbuiRk/St7UURSOhXI/AAAAAAAAABM/D9U0lZxIFBw/s320/my+girl.jpg" alt="" id="BLOGGER_PHOTO_ID_5394982848338756978" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-7263425441650585448?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/7263425441650585448/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=7263425441650585448' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/7263425441650585448'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/7263425441650585448'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2009/10/daddies-girl-zoe.html' title='&quot;Daddies&quot; Girl Zoe'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_fubI2pbuiRk/St7VCUIQgcI/AAAAAAAAABk/FzahfeAmsvI/s72-c/my+girl+3.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-961885452063004235.post-2961765125910389763</id><published>2009-10-20T12:43:00.000-07:00</published><updated>2009-10-20T13:06:12.183-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>Weekly Source Code: Make Web Service Configurable</title><content type='html'>&lt;span style="font-weight: bold; font-style: italic;"&gt;Sorry for the delay, been crazy at work.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In Visual Studio.Net you call web services like the old style ASP.Net web service (not new WCF) by adding a reference to the project using Add Web Reference option. In the pop up dialog you point it to the web service URL, Visual Studio.Net will then generate the required C#/VB.Net stub classes.&lt;br /&gt;&lt;br /&gt;But its not to say that the web service will be at the same URL location expecially if you move between development - &gt; QA -&gt; production environments. How do you make the web service URL configurable?&lt;br /&gt;&lt;br /&gt;The web service stub class Reference.cs (for C#) or Reference.vb (for VB.Net) has a URL property, you can always set this property in your code but its a nice way to rather do it when you call the constructor e.g.:&lt;br /&gt;&lt;br /&gt;MyService service = new MyService(webserviceUrl);&lt;br /&gt;&lt;br /&gt;You do this by adding the following constructor to the MyService class:&lt;br /&gt;&lt;br /&gt;MyService(String theUrl)&lt;br /&gt;{&lt;br /&gt; Url = theUrl;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;The downside (before Visual Studio.Net 2008) is that if you update the web reference (after adding an additional web method to the web service etc) the code get regenerated meaning your code will break and you will have to add the constructor again.&lt;br /&gt;&lt;br /&gt;Fortunately Visual Studio.Net 2008 introduce &lt;a href="http://msdn.microsoft.com/en-us/library/wa80x488%28VS.80%29.aspx"&gt;partial classes&lt;/a&gt; which allow splitting definition of a class across multiple files.&lt;br /&gt;&lt;br /&gt;The Reference.cs / Reference.vb class also is a partial class so you can add an additional partial class with the same name and same namespace:&lt;br /&gt;&lt;br /&gt;public partial class MyService&lt;br /&gt;{&lt;br /&gt; MyService(String theUrl)&lt;br /&gt; {&lt;br /&gt;   Url = theUrl;&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Now you can update the web service reference without worrying about such problems.&lt;br /&gt;&lt;br /&gt;So what is partial classes? Yes they allow you to split the definition of a class across multiple source files but why? In this sample it show that its for code generation mainly since you normally generate code then add your own additions (like a constructor in this case) but if you re-generate your custom code is lost. Partial classes (and later on I will introduce partial methods) resolve this problem. Why did MS add it? Look at LINQ to SQL which also generate code, now you can add custom logic like validation with partial methods without ever worrying that re-generation will break your logic.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-2961765125910389763?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/2961765125910389763/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=2961765125910389763' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/2961765125910389763'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/2961765125910389763'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2009/10/weekly-source-code-make-web-service.html' title='Weekly Source Code: Make Web Service Configurable'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-3608741598425291068</id><published>2009-08-31T00:56:00.000-07:00</published><updated>2009-08-31T00:57:34.316-07:00</updated><title type='text'>Back From Holiday</title><content type='html'>Back from 3 weeks holiday :-(&lt;br /&gt;Ready to work...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-3608741598425291068?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/3608741598425291068/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=3608741598425291068' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/3608741598425291068'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/3608741598425291068'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2009/08/back-from-holiday.html' title='Back From Holiday'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-4267614482645437645</id><published>2009-07-22T13:45:00.000-07:00</published><updated>2009-07-22T13:48:25.278-07:00</updated><title type='text'>Java Programmer Certification, Back to MWEB and Going On Holiday</title><content type='html'>Hi :-)&lt;br /&gt;&lt;br /&gt;A lot happened the last couple of weeks, mainly just busy with work.&lt;br /&gt;I'm studying for my Java Programmer Certification (SCJP) base on JDK 6, on 1 August 2009 I'm also going back to MWEB at N1 city to work has a Java/C# developer. Still employed by &lt;a href="http://www.soliditech.com"&gt;Soliditech&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;From 9 August 2009 my beautiful wife and I are going on a &lt;a href="http://www.sa-venues.com/visit/enjonaturefarm/"&gt;3 week holiday&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;So I'm off to chat after my holiday with more interesting topics.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-4267614482645437645?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/4267614482645437645/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=4267614482645437645' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/4267614482645437645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/4267614482645437645'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2009/07/java-programmer-certification-back-to.html' title='Java Programmer Certification, Back to MWEB and Going On Holiday'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-5307086577916540933</id><published>2009-06-25T02:51:00.000-07:00</published><updated>2009-06-25T03:03:25.093-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Weekly Source Code: LINQ for Java Part 2</title><content type='html'>I hope everybody had a nice week, even if the winter is upon us - freezing cold with rain etc. Time to get the blankets / heaters out.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lenniedevilliers.blogspot.com/2009/06/weekly-source-code-linq-for-java.html"&gt;Last week&lt;/a&gt; I introduced JoSQL, this week I continue to show a sample JoSQL query... we start off with a keep it simple (KISS) sample with some points to remember.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Sample Query:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The goal of this JoSQL query is to get a list of contracts that all have a given product:&lt;br /&gt;&lt;br /&gt;List&lt;contract&gt; contracts = .... // here we get a list of contracts&lt;br /&gt;&lt;br /&gt;Query q = new Query();&lt;br /&gt;q.parse("select * from com.sales.Contract where productId =  :p");&lt;br /&gt;q.setVariable("p", 5);&lt;br /&gt;QueryResults qr = q.execute(contracts);&lt;br /&gt;List&lt;contract&gt; contractResult = qr.getResults ();&lt;br /&gt;&lt;ol&gt;&lt;li&gt;All JoSQL classes are kept in the org.josql package, Eclipse IDE will import these nicely for you.&lt;/li&gt;&lt;li&gt;We start by creating a Query object instance this is where our query starts.&lt;/li&gt;&lt;li&gt;q.parse will check your query for any issues,  an exception will occure if the query is incorrect. Note that we need to provide the full package location of our Contract class else JoSQL wouldn't find the class. This can cause a problem if you refactor your code, like move the Contract class to a different package location but don't update the JoSQL query.&lt;/li&gt;&lt;li&gt;The following line we set the :p variable using setVariable method.&lt;/li&gt;&lt;li&gt;We then execute the query and put the results into qr which is an instance of QueryResults.&lt;/li&gt;&lt;li&gt;contractResult will contain the result.&lt;/li&gt;&lt;/ol&gt;JoSQL uses reflection so "productId" in the query is a getter method like "getProductId()" on the Contract class.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-5307086577916540933?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/5307086577916540933/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=5307086577916540933' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/5307086577916540933'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/5307086577916540933'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2009/06/weekly-source-code-linq-for-java-part-2.html' title='Weekly Source Code: LINQ for Java Part 2'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-7883744924527761695</id><published>2009-06-19T02:54:00.000-07:00</published><updated>2009-06-19T03:06:43.040-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Weekly Source Code: LINQ for Java</title><content type='html'>Its been a long couple of weeks due to my current work load, working average 12 hours+ per day isn't fun. So I finally got some free time over a lunch break to continue with my weekly source code.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.soliditech.com/"&gt;At work&lt;/a&gt;  Java is our main programming language but its not so advance like C# (not to start a language war here!) one of them are LINQ but LINQ is also available in Java!&lt;br /&gt;&lt;h3 class="heading-1"&gt;&lt;br /&gt;&lt;/h3&gt;&lt;h3 class="heading-1"&gt;What Is LINQ?&lt;/h3&gt;&lt;p class="paragraph"&gt;Language Integrated Query (LINQ) was added to C# 3.0 / VB.Net 9.0 in MS Visual Studio.Net 2008. Its a query language part of the underline language for easy query of information like a database, online resources like a webservice or in our case collections (list, arrays, hashmaps etc). Different LINQ providers existing for collections, databases, Amazon, Facebook, Twitter, LDAP etc. Visit &lt;a href="http://en.wikipedia.org/wiki/Language_Integrated_Query"&gt;Wikipedia&lt;/a&gt; for more about LINQ.&lt;/p&gt;&lt;h3 class="heading-1"&gt;Let's Meet: JoSQL&lt;/h3&gt; &lt;p class="paragraph"&gt;&lt;a href="http://josql.sourceforge.net/"&gt;JoSQL&lt;/a&gt; is LINQ for Java that allow you to easily query collections (lists, arrays etc) using a SQL line syntax.&lt;/p&gt;&lt;h3 class="heading-1"&gt;References&lt;/h3&gt; &lt;ul class="minus"&gt;&lt;li&gt;&lt;a href="http://josql.sourceforge.net/"&gt;JoSQL Home Page&lt;/a&gt;&lt;span class="nobr"&gt;&lt;a href="http://josql.sourceforge.net/"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://josql.sourceforge.net/manual/introduction.html"&gt;JoSQL User's Manual&lt;/a&gt;&lt;span class="nobr"&gt;&lt;a href="http://josql.sourceforge.net/manual/introduction.html"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3 class="heading-1"&gt;Disadvantages:&lt;/h3&gt; &lt;ul class="minus"&gt;&lt;li&gt;No compile time checking since the LINQ code will only be evaluated when query.parse() method get called at run-time.&lt;/li&gt;&lt;li&gt;You need to indicate the full package + class name in your query&lt;/li&gt;&lt;li&gt;If you wish to use "NOT IN" or "IN" in the WHERE clause then you need to override the toString() method of the class since it needs to know which field to use to do the comparison with.&lt;/li&gt;&lt;/ul&gt;&lt;p class="paragraph"&gt;&lt;/p&gt;&lt;p class="paragraph"&gt;I will write more JoSQL samples in the next weekly source code. Also my solution to the toString() problem.&lt;/p&gt;&lt;p class="paragraph"&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-7883744924527761695?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/7883744924527761695/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=7883744924527761695' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/7883744924527761695'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/7883744924527761695'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2009/06/weekly-source-code-linq-for-java.html' title='Weekly Source Code: LINQ for Java'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-2512466550106672739</id><published>2009-05-12T00:44:00.000-07:00</published><updated>2009-05-12T00:46:08.821-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='alive'/><title type='text'>I'm Still Alive...</title><content type='html'>I haven't blogged for awhile but yes I'm still alive... just been very hectic with work and studying for my Java certification.&lt;br /&gt;&lt;br /&gt;You can always &lt;a href="http://www.twitter.com/lenniedv"&gt;follow me&lt;/a&gt; on Twitter to see what I'm up too.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-2512466550106672739?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/2512466550106672739/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=2512466550106672739' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/2512466550106672739'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/2512466550106672739'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2009/05/im-still-alive.html' title='I&apos;m Still Alive...'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-8833329234334301857</id><published>2009-04-30T00:26:00.000-07:00</published><updated>2009-04-30T00:28:30.144-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fun'/><title type='text'>Looking For A Chess Partner</title><content type='html'>I love playing chess its a smart interesting game, I'm looking for a chess partner to play email chess against using &lt;a href="http://www.chessrally.com/"&gt;Chess Rally&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;If your interested &lt;a href="mailto:lenniedg@gmail.com?subject=Chess%20Partner"&gt;send me an email&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-8833329234334301857?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/8833329234334301857/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=8833329234334301857' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/8833329234334301857'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/8833329234334301857'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2009/04/looking-for-chess-partner.html' title='Looking For A Chess Partner'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-4992594481798238335</id><published>2009-04-24T01:34:00.000-07:00</published><updated>2009-04-24T01:58:30.086-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><title type='text'>JavaScript Isn't So Weak</title><content type='html'>Alot of developers think that JavaScript isn't a powerful programming language to be used for professional development.  &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Yes JavaScript have some weak points (just like every other programming language) But if you look around you will find websites like &lt;a href="http://www.nihilogic.dk/"&gt;this one&lt;/a&gt; where it show how powerful JavaScript is for writting online games.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;JavaScript is even popular for creating ritch Web 2.0 applications that include technology like AJAX etc. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So the lesson to learn is to never judge before you actual used it... Like you can never judge C if you never wrote a line of code in it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;There will be no weekly source code this week.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-4992594481798238335?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/4992594481798238335/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=4992594481798238335' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/4992594481798238335'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/4992594481798238335'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2009/04/javascript-isnt-so-weak.html' title='JavaScript Isn&apos;t So Weak'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-7860180619453685448</id><published>2009-04-15T12:35:00.001-07:00</published><updated>2009-04-15T12:45:14.001-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><title type='text'>Weekly Source Code: JavaScript.... Big Reason Why It Sucks</title><content type='html'>Today in the Web 2.0 world you do alot of &lt;a href="http://en.wikipedia.org/wiki/JavaScript"&gt;JavaScript &lt;/a&gt;coding being DHTML, all the set of frameworks (jQuery etc) or do AJAX. The biggest thing that all JavaScript coders (even the pros) moan about isn't how difficult it is to test/debug JavaScript (tools like Firebug or JavaScript support in MS Visual Studio.Net 2008 IE make this very easy) but the dreadful word: "browser compatibility".... Yes Internet Explorer (IE) vs Firefox etc. All the things that make you want to scream / run away crying!&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Its such a pain for me, since I use Google Chrome as my main default browser so everything just works but then later I found that it doesn't work in IE because of some browser compatibility issue or a weird way that IE handle some JavaScript.... The main problem here is that the browser companies (Microsoft, Mozilla etc) doesn't come together and work on a solid JavaScript standard. Ladies &amp;amp; gents, that is the reason why we've language standards!! There is a promise that the next version of JavaScript will be standard accross all browsers but thats only "promises".&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For example:&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;var name = "Lennie";&lt;br /&gt;&lt;/div&gt;&lt;div&gt;alert(name[0]);&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;where you want the first characters e.g. "L" but in IE (IE is always the bad child it seams...) it returns "undefined" :-(&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So you need to write it:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;var name = "Lennie";&lt;/div&gt;&lt;div&gt;alert(name.charAt(0));&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;this works fine in all browsers.&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So something to consider when your coding in JavaScript again.&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/961885452063004235-7860180619453685448?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/7860180619453685448/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=7860180619453685448' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/7860180619453685448'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/7860180619453685448'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2009/04/weekly-source-code-javascript-big.html' title='Weekly Source Code: JavaScript.... Big Reason Why It Sucks'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-4194417468518713233</id><published>2009-04-08T05:03:00.000-07:00</published><updated>2009-04-08T05:16:10.601-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='php/mysql'/><title type='text'>Weekly Source Code: PHP Say When Its The Easter Date</title><content type='html'>Today its Wednesday, 8 April 2009 in a couple of days on Sunday its &lt;a href="http://en.wikipedia.org/wiki/Easter"&gt;Easter &lt;/a&gt;when  we eat a lot of chocolate eggs and spend time with family.&lt;br /&gt;&lt;br /&gt;Because Easter  is always on a Sunday the date differs each year. By surprise I found that PHP  has a &lt;a href="http://www.php.net/easter_date"&gt;easter_date&lt;/a&gt; function that returns the easter sunday date given a year or  if no year parameter provided for the current year.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.vcc.co.za/lennie/this_easter.php"&gt;Current Year&lt;/a&gt; [&lt;a href="http://www.vcc.co.za/lennie/this_easter.txt"&gt;Code&lt;/a&gt;]&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.vcc.co.za/lennie/1981_easter.php"&gt;Year 1981&lt;/a&gt; [&lt;a href="http://www.vcc.co.za/lennie/1981_easter.txt"&gt;Code&lt;/a&gt;]&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Nice if you want to run a special event on your website or offer free choclates on Easter (if you do please &lt;a href="mailto:lenniedg@gmail.com?subject=Free%20Easter%20Eggs%20For%20You"&gt;let me know&lt;/a&gt;!).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Happy Easter!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-4194417468518713233?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/4194417468518713233/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=4194417468518713233' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/4194417468518713233'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/4194417468518713233'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2009/04/weekly-source-code-php-say-when-its.html' title='Weekly Source Code: PHP Say When Its The Easter Date'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-2835780501206057220</id><published>2009-04-07T00:12:00.000-07:00</published><updated>2009-04-07T01:56:08.496-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C'/><category scheme='http://www.blogger.com/atom/ns#' term='news'/><title type='text'>C Programming Quick Tips</title><content type='html'>David Bolton from &lt;a href="http://cplus.about.com/"&gt;C/C++, C# About.com&lt;/a&gt; created a &lt;a href="http://cplus.about.com/od/howtodothingsin1/a/c_tips.htm"&gt;C Programming Quick Tips&lt;/a&gt; page, very good if you want to see some nice C tips or post your own.&lt;br /&gt;&lt;br /&gt;We went to Worcester to visit my parents over the weekend... was a very nice weekend beside the bad traffic because everybody is going to the &lt;a href="http://www.kknk.co.za"&gt;KKNK&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-2835780501206057220?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/2835780501206057220/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=2835780501206057220' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/2835780501206057220'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/2835780501206057220'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2009/04/c-programming-quick-tips.html' title='C Programming Quick Tips'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-1835339391421707040</id><published>2009-03-28T12:42:00.000-07:00</published><updated>2009-03-28T12:48:22.800-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='php/mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='jQuery'/><title type='text'>Weekly Source Code: No SPAM Email Link In PHP</title><content type='html'>This is a conversion of &lt;a href="http://lenniedevilliers.blogspot.com/2008/11/weekly-source-code-no-spam-email-link.html"&gt;my original&lt;/a&gt; .Net No SPAM email trick where an email address get retreived via an AJAX call.&lt;br /&gt;&lt;br /&gt;This sample uses PHP 5 OOP with the &lt;a href="http://www.jquery.com/"&gt;JQuery&lt;/a&gt; library written using &lt;a href="http://netbeans.org/"&gt;Netbeans 6.5 IDE&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.beds.co.za/development/lennie/PHPNoSPAMDemo_20090328.zip"&gt;Get it here.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-1835339391421707040?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/1835339391421707040/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=1835339391421707040' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/1835339391421707040'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/1835339391421707040'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2009/03/weekly-source-code-no-spam-email-link.html' title='Weekly Source Code: No SPAM Email Link In PHP'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-1797102822646968829</id><published>2009-03-23T13:39:00.000-07:00</published><updated>2009-03-23T13:47:13.242-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>Weekly Source Code: The Art Of Debugging In MS Visual Studio.Net</title><content type='html'>Bruno Terkaly wrote 11 lessons (more to come) on the art of debugging in MS Visual Studio.Net 2008. Very interesting and a must read to catch some tips! Did you know that MS Visual Studio.Net can debug Javascript? :-)&lt;br /&gt;&lt;br /&gt;Visit &lt;a href="http://blogs.msdn.com/brunoterkaly/"&gt;his blog&lt;/a&gt; for the 11 lessons or &lt;a href="http://coolthingoftheday.blogspot.com/2009/02/art-of-debugging-developers-best-friend.html"&gt;this list&lt;/a&gt; that list the first 10 lessons.&lt;br /&gt;&lt;br /&gt;Have fun!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-1797102822646968829?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/1797102822646968829/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=1797102822646968829' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/1797102822646968829'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/1797102822646968829'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2009/03/weekly-source-code-art-of-debugging-in.html' title='Weekly Source Code: The Art Of Debugging In MS Visual Studio.Net'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-693071718059755984</id><published>2009-03-14T13:28:00.000-07:00</published><updated>2009-03-14T13:44:44.041-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><title type='text'>Weekly Source Code: Ruby Setting Utility Class</title><content type='html'>Its a general task to store application settings so I wrote my ow&lt;span style="text-decoration: underline;"&gt;n&lt;/span&gt; for the &lt;a href="http://www.ruby-lang.org/en/"&gt;Ruby programming language&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;How to use:&lt;br /&gt;&lt;br /&gt;Save the SettingUtil.rb file so that your application code can find it.&lt;br /&gt;&lt;br /&gt;Add:&lt;br /&gt;&lt;br /&gt;require 'SettingsUtil'&lt;br /&gt;include SettingUtil&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Save Example:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;require 'SettingsUtil'&lt;br /&gt;include SettingUtil&lt;br /&gt;&lt;br /&gt;setting = Settings.new  # create the settings object&lt;br /&gt;setting.values = {"jabber_notifyme" =&gt; "true", "jabber_jid" =&gt; "lenniedg@gmail.com", "jabber_password" =&gt; "", "jabber_to" =&gt; "lenniedg@gmail.com"}&lt;br /&gt;setting.save&lt;br /&gt;puts setting.jabber_to&lt;br /&gt;&lt;br /&gt;to save you need to set the values accessor which is a hashset then call the save method.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Load Example:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;require 'SettingsUtil'&lt;br /&gt;include SettingUtil&lt;br /&gt;&lt;br /&gt;setting = Settings.new&lt;br /&gt;puts setting.values["jabber_to"]&lt;br /&gt;&lt;br /&gt;when creating a new object of Settings (remember its in the SettingUtil module) it will load the previous saved settings else you can just call load method directly.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Note:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;There are 2x ways to get the settings value:&lt;br /&gt;&lt;br /&gt;puts setting.jabber_to&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;OR&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;puts setting.values["jabber_to"]&lt;br /&gt;&lt;br /&gt;in both cases it reads the setting of "jabber_to" from the values hashset.&lt;br /&gt;&lt;br /&gt;If it can't find the setting the first option will return "none" by default where the second option will return a nil reference.&lt;br /&gt;&lt;br /&gt;By default it save settings into a settings.config file, you might want to change that if you wish.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The source:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;#&lt;br /&gt;# Store application settings&lt;br /&gt;# Settings get marchalled to a file and then loaded, you can refer to settings&lt;br /&gt;# by getting them from the values accessor directly or calling a method&lt;br /&gt;#&lt;br /&gt;# Author: Lennie De Villiers&lt;br /&gt;# Created: 12/03/2009&lt;br /&gt;&lt;br /&gt;module SettingUtil&lt;br /&gt;  SettingsFileName = "settings.conf" # constant with the file name&lt;br /&gt;  attr_accessor :values&lt;br /&gt;  class Settings&lt;br /&gt;    def initialize()&lt;br /&gt;      values = {}&lt;br /&gt;      load()&lt;br /&gt;    end&lt;br /&gt;&lt;br /&gt;    def load()&lt;br /&gt;      if File.exists?(SettingsFileName)&lt;br /&gt;        f = open(SettingsFileName)&lt;br /&gt;        temp = Marshal.load(f)&lt;br /&gt;        self.values = temp.values&lt;br /&gt;      end&lt;br /&gt;    end&lt;br /&gt;&lt;br /&gt;    def save()&lt;br /&gt;      open(SettingsFileName, "w") { |f| Marshal.dump(self, f) }&lt;br /&gt;    end&lt;br /&gt;&lt;br /&gt;    def method_missing(method_name, *args)&lt;br /&gt;      if values != nil &amp;amp;&amp;amp; values.key?(method_name.to_s)&lt;br /&gt;      return values[method_name.to_s]&lt;br /&gt;      else&lt;br /&gt;        return "none"&lt;br /&gt;      end&lt;br /&gt;    end&lt;br /&gt;  end&lt;br /&gt;end&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-693071718059755984?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/693071718059755984/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=693071718059755984' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/693071718059755984'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/693071718059755984'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2009/03/weekly-source-code-ruby-setting-utility.html' title='Weekly Source Code: Ruby Setting Utility Class'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-3563697004389707851</id><published>2009-03-10T03:49:00.001-07:00</published><updated>2009-03-10T04:01:37.081-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><title type='text'>Weekly Source Code: Twitter IM Notification</title><content type='html'>&lt;a href="http://www.twitter.com/"&gt;Twitter&lt;/a&gt; has become a very populare social website where you tell the world what your doing in 140 characters.&lt;br /&gt;&lt;br /&gt;You can always &lt;a href="http://www.twitter.com/lenniedv"&gt;follow me on Twitter&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Since I've started to teach myself the &lt;a href="http://www.ruby-lang.org/en/"&gt;Ruby&lt;/a&gt; dynamic programming language you can use &lt;a href="http://www.vcc.co.za/lennie/TwitterIMNotify_share.txt"&gt;this Ruby script&lt;/a&gt; to send yourself notification to Google Talk when a friend post a message to Twitter.&lt;br /&gt;&lt;br /&gt;Steps:&lt;br /&gt;&lt;br /&gt;1) &lt;a href="http://www.ruby-lang.org/en/"&gt;Download Ruby&lt;/a&gt;&lt;br /&gt;2) Install Ruby and setup a path to C:\Ruby\bin&lt;br /&gt;3) Install the twitter gem: gem install twitter&lt;br /&gt;4) Install the Jabber gem: gem install xmpp4r&lt;br /&gt;5) Update the script by adding your Twitter username and password, Google Talk username (like lenniedg@gmail.com), password and notification address (like lenniedg@gmail.com)&lt;br /&gt;6) run the script: ruby TwitterIMNotify_share.rb&lt;br /&gt;&lt;br /&gt;I love Ruby! :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-3563697004389707851?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/3563697004389707851/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=3563697004389707851' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/3563697004389707851'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/3563697004389707851'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2009/03/weekly-source-code-twitter-im.html' title='Weekly Source Code: Twitter IM Notification'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-360076993700882504</id><published>2009-03-06T00:32:00.000-08:00</published><updated>2009-03-06T00:34:34.569-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fun'/><title type='text'>Write a Share Trading Bot Challenge</title><content type='html'>Programming can also be fun :-)&lt;br /&gt;&lt;br /&gt;David Bolton from &lt;a href="http://cplus.about.com"&gt;C/C++/C# About.com&lt;/a&gt; started a challenge where you must write a bot in C, C++ or C# where the bot must do share trading.&lt;br /&gt;&lt;br /&gt;Visit the &lt;a href="http://cplus.about.com/od/programmingchallenges/a/onchallenge2.htm"&gt;challenge webpage&lt;/a&gt; for more information.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-360076993700882504?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/360076993700882504/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=360076993700882504' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/360076993700882504'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/360076993700882504'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2009/03/write-share-trading-bot-challenge.html' title='Write a Share Trading Bot Challenge'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-8353696387347196793</id><published>2009-03-05T01:17:00.000-08:00</published><updated>2009-03-05T01:20:37.759-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='php/mysql'/><title type='text'>Weekly Source Code: PHP - Email Address Images</title><content type='html'>Sorry ladies &amp;amp; gents that there wasn't a weekly source code last week, &lt;a href="http://www.soliditech.com"&gt;work&lt;/a&gt; was crazy.&lt;br /&gt;&lt;br /&gt;On &lt;a href="http://www.beds.co.za"&gt;beds.co.za&lt;/a&gt; which is one of the websites I'm working on, you &lt;a href="http://www.beds.co.za/viewentitydetail.php?entityId=53&amp;amp;mainPicture=main"&gt;will notice&lt;/a&gt; that the email address for an accommodation is actually an image and that there is in the HTML no "mailto:" tag. This is one way to prevent spammers from grabbing your email address from a website by converting the email address to an image and then use my &lt;a href="http://lenniedevilliers.blogspot.com/2008/11/weekly-source-code-no-spam-email-link.html"&gt;No SPAM email&lt;/a&gt; link functionality (that I must still port over from .Net to PHP)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.vcc.co.za/lennie/php_createimage.txt"&gt;Here's the code that create the image&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;the email address get stored in $emailAddressEntity, for example "lenniedg@gmail.com"&lt;br /&gt;@imagecreate is the PHP method that create the image.&lt;br /&gt;&lt;br /&gt;After this you can &lt;a href="http://www.vcc.co.za/lennie/php_createimage_refer.txt"&gt;refer to the image&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Resources:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.php.net/imagecreate"&gt;@imagecreate&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-8353696387347196793?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/8353696387347196793/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=8353696387347196793' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/8353696387347196793'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/8353696387347196793'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2009/03/weekly-source-code-php-email-address.html' title='Weekly Source Code: PHP - Email Address Images'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-9197006268216897106</id><published>2009-02-14T02:16:00.000-08:00</published><updated>2009-02-14T05:34:50.285-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='php/mysql'/><title type='text'>Weekly Source Code: Create A Table With Hyperlinks In PHP</title><content type='html'>A friend is busy with a website and asked me how to create a table with hyperlinks using PHP/mySQL so in this Weekly Source Code edition I will explain just how.&lt;br /&gt;&lt;br /&gt;First you need to connect to the database, for this you use the &lt;a href="http://www.php.net/manual/en/function.mysql-connect.php"&gt;mysql_connect method&lt;/a&gt;, then you run your select SQL query and ouput the result in HTML.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.vcc.co.za/lennie/php_table_sample.txt"&gt;See the sample code.&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;If you wish to open the result in a popup window then call a Javascript function from the anchor tag's onclick event, in the Javascript function you can open a window with window.open().&lt;br /&gt;&lt;br /&gt;Please Note:&lt;br /&gt;&lt;br /&gt;- I pass the record id to the updateuser.php page, this is so that the page know which user I wish to update.&lt;br /&gt;&lt;br /&gt;- I refer to the record in the row via its field name, you can also refer via its record position in the result for example: $row[1] refer to "Firstname" field.&lt;br /&gt;&lt;br /&gt;- This will display all the records in the table, you can add some paging to the table to only display like 10 records at a time.&lt;br /&gt;&lt;br /&gt;- For basic PHP you output HTML this way where your PHP and HTML code get mixed, its generally a good idea to use a template framework like &lt;a href="http://www.smarty.net/"&gt;Smarty&lt;/a&gt; where application code is seperated from the presentation.&lt;br /&gt;&lt;br /&gt;References:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.php.net/manual/en/ref.mysql.php"&gt;PHP mySQL Functions&lt;/a&gt;&lt;a href="http://www.php.net/manual/en/"&gt;&lt;br /&gt;PHP Manual&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-9197006268216897106?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/9197006268216897106/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=9197006268216897106' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/9197006268216897106'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/9197006268216897106'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2009/02/weekly-source-code-create-table-with.html' title='Weekly Source Code: Create A Table With Hyperlinks In PHP'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-1989026692855344746</id><published>2009-02-13T04:14:00.000-08:00</published><updated>2009-02-13T04:23:54.967-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='classics'/><title type='text'>Altair 8080 - Bill Gate's Altair BASIC</title><content type='html'>The Altair was the first computer released to the public in January 1975 (&lt;a href="http://www.altair32.com/Altair32history.htm"&gt;check here for history&lt;/a&gt;) by MITS, it was a very ugly machine that could only be coded in machine/assembly language by flipping switches.  Basically saying: "Real Programmer's Don't Need Keyboards!"&lt;br /&gt;&lt;br /&gt;Bill Gates &amp;amp; Paul Allen wrote &lt;a href="http://en.wikipedia.org/wiki/Altair_BASIC"&gt;Altair BASIC&lt;/a&gt; which was Microsoft's first product.&lt;br /&gt;&lt;br /&gt;I downloaded the &lt;a href="http://www.altair32.com/Altair32code.htm"&gt;Altair emulator&lt;/a&gt; and stuggled to get it working but after awhile I finally got it working coding my first "Hello World!" in Altair BASIC!! This is so good to use the first computer and popular programming language.&lt;br /&gt;&lt;br /&gt;How to use:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Run the Altair emulator.&lt;/li&gt;&lt;li&gt;Load the disk with the Altair BASIC image.&lt;/li&gt;&lt;li&gt;Toggle (that is on e.g. binary 1) all keys from A15 - A8, A7 to A0 must be down.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Toggle &lt;span class="postbody"&gt;EXAMINE&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="postbody"&gt;Toggle down A15 - A8&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="postbody"&gt;Toggle RUN&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="postbody"&gt;A console window will open with the Altair BASIC running.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span class="postbody"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-1989026692855344746?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/1989026692855344746/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=1989026692855344746' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/1989026692855344746'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/1989026692855344746'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2009/02/altair-8080-bill-gates-altair-basic.html' title='Altair 8080 - Bill Gate&apos;s Altair BASIC'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-4595604514203550251</id><published>2009-02-12T00:43:00.000-08:00</published><updated>2009-02-12T00:44:15.966-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web-development'/><title type='text'>10 Useful Cheat-Sheets for Web Developers</title><content type='html'>Something you will find useful:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://shalinjain.com/index.php/2009/02/12/10-useful-cheat-sheets-for-web-developers/"&gt;10 Useful Cheat-Sheets for Web Developers&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-4595604514203550251?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/4595604514203550251/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=4595604514203550251' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/4595604514203550251'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/4595604514203550251'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2009/02/10-useful-cheat-sheets-for-web.html' title='10 Useful Cheat-Sheets for Web Developers'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-70878710508880874</id><published>2009-02-11T01:07:00.000-08:00</published><updated>2009-02-11T01:10:26.897-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='i love cake'/><title type='text'>Lucky Man: Weekly Cake</title><content type='html'>I'm a very lucky man! My wife is on a cake course so each week she must bake a cake.... so I'm lucky since it mean I'm going to get cake on a weekly basis :-)&lt;br /&gt;&lt;br /&gt;Life is good to me!&lt;br /&gt;&lt;br /&gt;See photo of the cake she came home with last night. Yummy!!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_fubI2pbuiRk/SZKV1VcDsJI/AAAAAAAAAAM/UjbZuBG19YQ/s1600-h/cake+photo.jpeg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 221px; height: 166px;" src="http://1.bp.blogspot.com/_fubI2pbuiRk/SZKV1VcDsJI/AAAAAAAAAAM/UjbZuBG19YQ/s320/cake+photo.jpeg" alt="" id="BLOGGER_PHOTO_ID_5301464454888927378" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-70878710508880874?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/70878710508880874/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=70878710508880874' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/70878710508880874'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/70878710508880874'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2009/02/lucky-man-weekly-cake.html' title='Lucky Man: Weekly Cake'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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/_fubI2pbuiRk/SZKV1VcDsJI/AAAAAAAAAAM/UjbZuBG19YQ/s72-c/cake+photo.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-961885452063004235.post-7225292957379576878</id><published>2009-02-10T01:45:00.000-08:00</published><updated>2009-02-10T01:49:58.438-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.Net'/><title type='text'>Weekly Source Code: Create A GUID In .Net</title><content type='html'>A &lt;a href="http://en.wikipedia.org/wiki/Globally_Unique_Identifier"&gt;GUID&lt;/a&gt; is a unique identifier that you can use as a reference since its always unique.&lt;br /&gt;&lt;br /&gt;If you need a GUID without writting any code, then visit &lt;a href="http://www.get-a-guid.com/"&gt;Get-A-GUID.com&lt;/a&gt; &lt;span&gt;which will generate a GUID for you everytime you refresh the webpage.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;The code below create a GUID in C# and then display it to the console window:&lt;br /&gt;&lt;br /&gt;class Program&lt;br /&gt;{&lt;br /&gt;       static void Main(string[] args)&lt;br /&gt;       {&lt;br /&gt;           System.Guid id = System.Guid.NewGuid();&lt;br /&gt;           Console.WriteLine(id);&lt;br /&gt;           Console.ReadLine();&lt;br /&gt;       }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;You can also store a GUID to a  database, more about that in a future post  :-)&lt;br /&gt;&lt;br /&gt;PS: Been hectic at work, will write more later.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-7225292957379576878?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/7225292957379576878/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=7225292957379576878' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/7225292957379576878'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/7225292957379576878'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2009/02/weekly-source-code-create-guid-in-net.html' title='Weekly Source Code: Create A GUID In .Net'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-4811814647026862296</id><published>2009-02-06T00:00:00.000-08:00</published><updated>2009-02-06T00:20:06.915-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='non-programming'/><title type='text'>Using God's Name</title><content type='html'>Something that has been making me really angry lately, so I just want to make an efford and talk about it.&lt;br /&gt;&lt;br /&gt;Lately I've been hearing on the TV, in the IT world (as a programmer I'm part of the IT world) etc that people use God's name in swearing etc.&lt;br /&gt;&lt;br /&gt;For example:&lt;br /&gt;&lt;br /&gt;- When something good / bad happens then: "Oh My God!!" rather than just "Oh Shit!!!" or "Oh Fuck!!" I would rather use "Oh Shit!!" or "Oh Fuck!!" or some other swear word if you really want to use a swear word.&lt;br /&gt;&lt;br /&gt;- Bill Gates (or some other rich IT guy) have "more money than God!!". Well God don't need money since everything He say happens. We need money...  it anyway make us corrupt etc (what is currently happening in the economy is a good example of that)&lt;br /&gt;&lt;br /&gt;- "A visit from God!!". Well depend upon your faith God is actually with you already or is coming. God wouldn't be interested to come ask you what is the latest programming thing you did - His more interested in your life/soul/well being etc. Not if you made another million dollars or wrote another cool application etc.&lt;br /&gt;&lt;br /&gt;So to end.... to use God's name is not good... remember that there are people in this world that don't like it, even if you don't beleive in God that is your choice etc and myself (and we as children of God) shouldn't judge you by it but then please be considerate and not do this.&lt;br /&gt;&lt;br /&gt;It all comes down to being considerate to someone else's beleive etc.... in goverment / by law they call it "human rights" but in plain English its called: "being a good human being" or just "doing the right thing".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-4811814647026862296?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/4811814647026862296/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=4811814647026862296' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/4811814647026862296'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/4811814647026862296'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2009/02/using-gods-name.html' title='Using God&apos;s Name'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-5411705790012563092</id><published>2009-02-02T00:17:00.001-08:00</published><updated>2009-02-02T00:54:52.427-08:00</updated><title type='text'>Weekly Source Code: Default Controlling Access - Be Careful!</title><content type='html'>I've a general rule where I never assume defaults in a language, I always assign an initial value to a variable for example... assuming defaults caused alot of problems for me in the past expecially in languages like C or C++ where defaults can actually "hurt" you. Each language also has a diffirent default behaviour that you will see below with Java vs C#.&lt;br /&gt;&lt;br /&gt;One of the rules is to always provide the control access level modifier in OOP languages like Java and C# (the 2x languages that I use alot).&lt;br /&gt;&lt;br /&gt;For example:&lt;br /&gt;&lt;br /&gt;According to the Java tutorial on &lt;a href="http://java.sun.com/docs/books/tutorial/java/javaOO/accesscontrol.html"&gt;Controlling Access to Members of a Class&lt;/a&gt; when you don't provide an access level modifier it assumes the class and package level access only. Class access is fine since you do want a member variable to be avialable in its containing class but package level access is where it can hurt you, for example:&lt;br /&gt;&lt;br /&gt;package com.echosystem.core;&lt;br /&gt;&lt;br /&gt;public class SystemCall&lt;br /&gt;{&lt;br /&gt;int status = 0;&lt;br /&gt;// rest of the class continue&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;here if you've other classes in the com.echosystem.core package those classes can directly access the status member variable above so you're not following OOP rules where encaptulation is important - not to go into too much detail but encaptulation is good! Also if you've another class in another package location you will notice that you can't access this status member variable.&lt;br /&gt;&lt;br /&gt;Its important in this case to write the above code as:&lt;br /&gt;&lt;br /&gt;public class SystemCall&lt;br /&gt;{&lt;br /&gt;private int status = 0;&lt;br /&gt;&lt;br /&gt;public int getStatus()&lt;br /&gt;{&lt;br /&gt;return status;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void setStatus(int inStatus)&lt;br /&gt;{&lt;br /&gt;status = inStatus;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// rest of the class continue&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Here you see that the status member variable is private (make it encaptulated into the class) and you control access to it using a getter and setter methods.&lt;br /&gt;&lt;br /&gt;C# will continue in the next weekly source code - I do need to give you time to think about this hey! :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-5411705790012563092?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/5411705790012563092/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=5411705790012563092' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/5411705790012563092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/5411705790012563092'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2009/02/weekly-source-code-default-controlling.html' title='Weekly Source Code: Default Controlling Access - Be Careful!'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-7076084961949869450</id><published>2009-01-29T23:27:00.001-08:00</published><updated>2009-01-29T23:29:45.142-08:00</updated><title type='text'>Blog Layout Template Change</title><content type='html'>I changed the layout of my blog to a white background, this is because some readers found it difficult to read the blog.&lt;br /&gt;&lt;br /&gt;Hope the new template is okay :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-7076084961949869450?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/7076084961949869450/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=7076084961949869450' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/7076084961949869450'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/7076084961949869450'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2009/01/blog-layout-template-change.html' title='Blog Layout Template Change'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-6499482147908114452</id><published>2009-01-27T22:39:00.000-08:00</published><updated>2009-01-27T23:00:06.858-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>Weekly Source Code: Strings Are Immutable</title><content type='html'>Happy New Year 2009! :)&lt;br /&gt;&lt;br /&gt;The String type that is actually a class in both Java and C# are immutable meaning that once you create it, it can't get changed and manipulating it will create a new string object.&lt;br /&gt;&lt;br /&gt;This is import for when you want to populate a string in a loop (like a for loop) since everytime it will create a new string that have a performance impact on your code.&lt;br /&gt;&lt;br /&gt;For example:&lt;br /&gt;&lt;br /&gt;String val = null;&lt;br /&gt;for (int i = 0; i &lt; 100; i++)&lt;br /&gt;{&lt;br /&gt;  val += i;&lt;br /&gt;  val += ", ";&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;The code above will create a new string object everytime for 100 times, you might not see or notice the impact but it does have a performance impact (test it if you wish).&lt;br /&gt;&lt;br /&gt;Its better to use a string builder/buffer class and then append the string values to it since the object is only created once.&lt;br /&gt;&lt;br /&gt;For example:&lt;br /&gt;&lt;br /&gt;StringBuilder val = new StringBuilder();&lt;br /&gt;for (int i = 0; i &lt; 100; i++)&lt;br /&gt;{&lt;br /&gt;    val.Append(i);&lt;br /&gt;     val.Append(",");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;The above C# code use the string builder without performance impact.&lt;br /&gt;&lt;br /&gt;Note that in C# its called the &lt;a href="http://msdn.microsoft.com/en-us/library/system.text.stringbuilder.aspx"&gt;StringBuilder&lt;/a&gt; class where in Java its the &lt;a href="http://java.sun.com/javase/6/docs/api/java/lang/StringBuffer.html"&gt;StringBuffer&lt;/a&gt; class both is similar in functionality.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-6499482147908114452?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/6499482147908114452/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=6499482147908114452' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/6499482147908114452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/6499482147908114452'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2009/01/weekly-source-code-strings-are.html' title='Weekly Source Code: Strings Are Immutable'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-1554988179526366874</id><published>2009-01-25T23:39:00.000-08:00</published><updated>2009-01-25T23:46:23.279-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Uganda trip'/><title type='text'>Back From Uganda</title><content type='html'>Ladies &amp;amp; Gents!&lt;br /&gt;&lt;br /&gt;I had a good trip to Uganda and is back to work today :) I was off-sick for a week since I had malaria that damaged my liver but the malaria is gone now.&lt;br /&gt;&lt;br /&gt;I will post some photos and a story soon.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-1554988179526366874?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/1554988179526366874/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=1554988179526366874' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/1554988179526366874'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/1554988179526366874'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2009/01/back-from-uganda.html' title='Back From Uganda'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-966945391600365376</id><published>2008-12-29T07:28:00.001-08:00</published><updated>2008-12-29T07:31:54.631-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='technology'/><category scheme='http://www.blogger.com/atom/ns#' term='.Net'/><title type='text'>MS Visual Studio.Net 2010 Experience 2</title><content type='html'>I feel like a kid with a new toy :-)&lt;br /&gt;I finally got the VB.Net and C# console working by making over 2 GB avialable to the VM.&lt;br /&gt;I also got the VS.Net 2010 Training Kit that have labs and samples for all the key technologies: C# 4.0, VB.Net 10.0, MEF etc.&lt;br /&gt;&lt;br /&gt;Anyone that want a copy can contact me: 076 824 3560. I'm base in Fishhoek, Cape Town. If you can bring 2 empty DVDs (dude its over 7 GB!) or a portable hard drive.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-966945391600365376?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/966945391600365376/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=966945391600365376' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/966945391600365376'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/966945391600365376'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2008/12/ms-visual-studionet-2010-experience-2.html' title='MS Visual Studio.Net 2010 Experience 2'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-7219524375729511699</id><published>2008-12-29T07:10:00.000-08:00</published><updated>2008-12-29T07:11:07.796-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.Net'/><title type='text'>Weekly Source Code: FTP Connection To A FTP Server 2008/12/29</title><content type='html'>Chris Pels published a video on how to create an FTP connection to an FTP server using the FtpWebRequest class in .Net.&lt;br /&gt;&lt;br /&gt;View the video &lt;a href="http://www.asp.net/learn/videos/video-448.aspx"&gt;here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-7219524375729511699?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/7219524375729511699/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=7219524375729511699' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/7219524375729511699'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/7219524375729511699'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2008/12/weekly-source-code-ftp-connection-to.html' title='Weekly Source Code: FTP Connection To A FTP Server 2008/12/29'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-2740070639702135306</id><published>2008-12-29T04:36:00.000-08:00</published><updated>2008-12-29T07:12:17.267-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='technology'/><category scheme='http://www.blogger.com/atom/ns#' term='.Net'/><title type='text'>MS Visual Studio.Net 2010 CPT Experience 1</title><content type='html'>&lt;p&gt;After shutting down all the Services I still find the VM being extreamly show! Looking around under the settings I find that the VM only allocate 256MB RAM (that memory get take from the host machine) !! No that doesn't work, Windows doesn't run within 256MB of RAM (unless your running Windows 98 or something really old) I increased the memory to 1.8GB (leaving +- 2GB from my host) and wow the speed is now normal! :-)&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Ok now it crash everytime I want to create a new VB.Net or C# console application. The only one that work fine is C++ (but I don't program in C++ that much - mainly C# and alittle of VB.Net)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-2740070639702135306?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/2740070639702135306/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=2740070639702135306' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/2740070639702135306'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/2740070639702135306'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2008/12/ms-visual-studionet-2010-cpt-experience.html' title='MS Visual Studio.Net 2010 CPT Experience 1'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-2438401472162268529</id><published>2008-12-28T23:43:00.000-08:00</published><updated>2008-12-29T00:38:51.842-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.Net'/><title type='text'>Visual Studio.Net 2010 CPT Experience</title><content type='html'>I finally got to download MS Visual Studio.Net 2010 CPT - that is pre-beta (like 2 years) release of the next version of MS Visual Studio.Net scheduled for release sometime in 2010 (exact date unknown).&lt;br /&gt;&lt;br /&gt;Yes bandwidth is expensive in SA but using Telkom ADSL, 4Mbps line,  &lt;a href="http://www.openweb.co.za/"&gt;Openweb &lt;/a&gt;10GB Local with Openbrowser and Opera web browser as my download manager I got to download all 7 GB on a Sunday afternoon/late evening!&lt;br /&gt;&lt;br /&gt;The installation took awhile to un-compress all 11 files (700 MB each) and then to setup the VirtualPC (using Virtual PC 2007 SP1)&lt;br /&gt;&lt;br /&gt;The installation went well but find that MS Visual Studio.Net IDE is very slow on my machine (Intel Core 2 Duo, 3GB RAM) - I guess the only way is to stop some of the services (like MS SQL Server etc) that get started by the VM.&lt;br /&gt;&lt;br /&gt;Also note that you need to change the date on the VM else the CPT will expire on 1 Jan 2009.&lt;br /&gt;&lt;br /&gt;For more information visit:&lt;br /&gt;&lt;br /&gt;&lt;span id="ctl00_MainPlaceHolder_Starter_BodyLabel"&gt;&lt;a href="http://tinyurl.com/GetCTP"&gt;http://tinyurl.com/GetCTP&lt;/a&gt;&lt;br /&gt;&lt;a href="http://tinyurl.com/VSFeedback"&gt;http://tinyurl.com/VSFeedback&lt;/a&gt;&lt;br /&gt;&lt;a href="http://tinyurl.com/CTPActivation"&gt;http://tinyurl.com/CTPActivation&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Something for me to play with while Im in Uganda (ok just alittle - I still got work!)&lt;br /&gt;&lt;br /&gt;Have fun! :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-2438401472162268529?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/2438401472162268529/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=2438401472162268529' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/2438401472162268529'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/2438401472162268529'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2008/12/visual-studionet-2010-cpt-expire.html' title='Visual Studio.Net 2010 CPT Experience'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-1267293067778234749</id><published>2008-12-24T05:06:00.000-08:00</published><updated>2008-12-24T05:08:03.640-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='technology'/><title type='text'>GizmoCall.com</title><content type='html'>Call directly from your web browser without installing any software... can call to a regular phone number (using cheap VOIP rates), to another Gizmo user or to a SIP number.&lt;br /&gt;&lt;br /&gt;Use the embed Gimzocall plugin below.&lt;br /&gt;&lt;br /&gt;&lt;embed src="https://www.gizmocall.com/gizmocall.swf?ver=3" width="240" height="430" wmode="transparent"&gt;&lt;/embed&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-1267293067778234749?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/1267293067778234749/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=1267293067778234749' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/1267293067778234749'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/1267293067778234749'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2008/12/gizmocallcom.html' title='GizmoCall.com'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-6606348666992588115</id><published>2008-12-21T11:15:00.000-08:00</published><updated>2008-12-21T11:20:04.753-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='technology'/><title type='text'>Telkom doBroadband 384kbps vs Telkom 4Mbps</title><content type='html'>About a week ago we upgraded from Telkom do Broadband with a speed of 384kbps, cap of 1GB (yes ladies and gents bandwidth in SA get capped unless your willing to spend R1000-R2000 on uncapped) to 4Mbps with a cap of 3GB. The speed increase is incredible!&lt;br /&gt;&lt;br /&gt;I reguraly watch &lt;a href="http://channel9.msdn.com"&gt;Channel 9&lt;/a&gt; to download a video normally took around 30+ minutes, it download in about 5 minutes.&lt;br /&gt;&lt;br /&gt;Tomorrow I'm preparting for my Uganda trip, more about that in a future blog (yes I know, I told you that before but good things come to those who wait hey...)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-6606348666992588115?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/6606348666992588115/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=6606348666992588115' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/6606348666992588115'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/6606348666992588115'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2008/12/telkom-dobroadband-384kbps-vs-telkom.html' title='Telkom doBroadband 384kbps vs Telkom 4Mbps'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-1613873599805504778</id><published>2008-12-17T06:43:00.001-08:00</published><updated>2008-12-17T07:51:50.107-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='.Net'/><title type='text'>Scott Hanselman Chat &amp; Wikipedia Goes Mobile</title><content type='html'>I came back from &lt;a href="http://www.hanselman.com/"&gt;Scott Hanselman's&lt;/a&gt; chat hosted by &lt;a href="http://sadeveloper.net/default.aspx"&gt;SA Developer .Net Group&lt;/a&gt; in South Africa, Cape Town.&lt;br /&gt;&lt;br /&gt;The chat was held at Microsoft offices, Scott talked about the &lt;a href="http://www.asp.net/mvc"&gt;ASP.NET MVC framework&lt;/a&gt;&lt;br /&gt;giving a very good demo on a new website: &lt;a href="http://www.nerddinner.com/"&gt;NerdDinner&lt;/a&gt; that you will notice still use the default ASP.NET MVC template.  After lunch (good food like always!) there was a Q&amp;amp;A session and a discussion.&lt;br /&gt;&lt;br /&gt;Next in the news: Wikipedia goes &lt;a href="http://mobile.wikipedia.org/"&gt;mobile&lt;/a&gt;! To try this later on my Samsung Omnia i900, Windows Mobile 6.1 Pro.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-1613873599805504778?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/1613873599805504778/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=1613873599805504778' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/1613873599805504778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/1613873599805504778'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2008/12/scott-hanselman-chat-wikipedia-goes.html' title='Scott Hanselman Chat &amp; Wikipedia Goes Mobile'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-7360243905720848237</id><published>2008-12-14T22:51:00.001-08:00</published><updated>2008-12-14T22:54:22.200-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.Net'/><title type='text'>Weekly Source Code: Using MySQL Database with Visual C# 2008 Express Edition 15/12/2008</title><content type='html'>David Bolton that manage the &lt;a href="http://cplus.about.com"&gt;C/C++/C# About.com website&lt;/a&gt; post a tutorial on how to use mySQL from MS Visual C# 2008 Express Edition.... The Express Edition is a free version of the Visual C# IDE (not the whole MS Visual Studio.Net suite)&lt;br /&gt;&lt;br /&gt;See the tutorial &lt;a href="http://cplus.about.com/od/howtodothingsinc/ss/mysqlnet.htm"&gt;here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-7360243905720848237?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/7360243905720848237/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=7360243905720848237' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/7360243905720848237'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/7360243905720848237'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2008/12/weekly-source-code-using-mysql-database.html' title='Weekly Source Code: Using MySQL Database with Visual C# 2008 Express Edition 15/12/2008'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-8092623698665589340</id><published>2008-12-10T23:39:00.000-08:00</published><updated>2008-12-10T23:45:13.014-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='technology'/><title type='text'>VOIPBuster vs Skype - Phone Calls</title><content type='html'>Looking into &lt;a href="http://www.voipbuster.com/"&gt;VOIPBuster&lt;/a&gt; vs &lt;a href="http://www.skype.com/"&gt;Skype&lt;/a&gt; for cheap VOIP calls expecially when I goto Uganda (more about that in a later post) I find that:&lt;br /&gt;&lt;br /&gt;If you buy VOIPBuster credit you get 120 days free period where you can make &lt;a href="http://www.voipbuster.com/en/free.html"&gt;free calls to countries&lt;/a&gt; unfortunatly for us Uganda or South Africa isn't :-( So nothing is going to be free.&lt;br /&gt;&lt;br /&gt;Comparing the prices:&lt;br /&gt;&lt;br /&gt;VOIP Buster:&lt;br /&gt;&lt;br /&gt;0.060 EUR = R0.797024 (Landline)&lt;br /&gt;0.170 EUR = R2.25728  (Mobile)&lt;br /&gt;&lt;br /&gt;Skype:&lt;br /&gt;&lt;br /&gt;Landline: R1.612&lt;br /&gt;Mobile: R1.612&lt;br /&gt;&lt;br /&gt;So VOIPBuster is cheaper for landline but Skype is cheaper for mobile.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.voipbuster.com/en/calling-rates.html"&gt;See VOIPBuster Rates&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.skype.com/intl/en/prices/callrates/?currency=ZAR#listing-U"&gt;See Skype Rates&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.xe.com/"&gt;To Convert EUR To ZAR&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-8092623698665589340?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/8092623698665589340/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=8092623698665589340' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/8092623698665589340'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/8092623698665589340'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2008/12/voipbuster-vs-skype-phone-calls.html' title='VOIPBuster vs Skype - Phone Calls'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-7959157365985148981</id><published>2008-12-09T23:07:00.000-08:00</published><updated>2008-12-09T23:09:56.280-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gaming'/><title type='text'>Black: Playstation 2 Game!</title><content type='html'>Yesterday I received my Black Playstation 2 game that I bought online from &lt;a href="http://www.take2.co.za"&gt;Take2&lt;/a&gt;&lt;br /&gt;Black is a first person shooter and OBOY the game got good graphics and action packed!&lt;br /&gt;&lt;br /&gt;I will write a review soon and also provide some videos.&lt;br /&gt;&lt;br /&gt;Meanwhile back to work and looking forward to playing again....&lt;br /&gt;&lt;br /&gt;O btw I ordered Hitman PS2 game aswell - its also a first person shooter!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-7959157365985148981?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/7959157365985148981/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=7959157365985148981' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/7959157365985148981'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/7959157365985148981'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2008/12/black-playstation-2-game.html' title='Black: Playstation 2 Game!'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-8819222267547108859</id><published>2008-12-09T00:23:00.000-08:00</published><updated>2008-12-09T00:27:44.196-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='personal'/><title type='text'>My 27th Birthday</title><content type='html'>Yesterday, 8 December 2008 was my 27th birthday... beside that I was at work having a normal day I also ate alot of cake!&lt;br /&gt;&lt;br /&gt;Last night my beautiful wife (Jolene De Villiers) took me out for dinner and a movie... we watched the new 007 movie: &lt;a href="http://www.24.com/entertainment/movies/?p=Reviews_Article&amp;amp;i=1023321"&gt;Quantum of Solace&lt;/a&gt; Alot of action but the ending was disappointing.&lt;br /&gt;&lt;br /&gt;Today my Black Playstation 2 game arrived so having some fun tonight :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-8819222267547108859?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/8819222267547108859/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=8819222267547108859' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/8819222267547108859'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/8819222267547108859'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2008/12/my-27th-birthday.html' title='My 27th Birthday'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-7095905643195003018</id><published>2008-12-05T00:58:00.000-08:00</published><updated>2008-12-05T01:41:24.289-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.Net'/><title type='text'>Scott Hanselman In South Africa!</title><content type='html'>Yes our favoarite super hero &lt;a href="http://www.hanselman.com/blog/"&gt;Scott Hanselman&lt;/a&gt; is coming to South Africa.&lt;br /&gt;You need to &lt;a href="http://dotnet.org.za/sadevelopercapetownevents/"&gt;RSVP&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I'm going to the 17 December 2008 event.&lt;br /&gt;&lt;br /&gt;See you there :-)&lt;br /&gt;&lt;br /&gt;Update:&lt;br /&gt;&lt;br /&gt;For those that aren't geeks, &lt;a href="http://www.hanselman.com/blog/"&gt;Scott Hanselman&lt;/a&gt; is a big .Net developer working for Microsoft in the USA... His one of the key players in the Microsoft .Net techonology. You can click on his name to read his bio, blog etc.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-7095905643195003018?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/7095905643195003018/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=7095905643195003018' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/7095905643195003018'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/7095905643195003018'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2008/12/scott-hanselman-in-south-africa.html' title='Scott Hanselman In South Africa!'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-8001887289853900651</id><published>2008-12-01T23:06:00.000-08:00</published><updated>2008-12-01T23:09:04.086-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Weekly Source Code: Get Cents</title><content type='html'>Part of making changes to the Java currency to &lt;a href="http://www.rgagnon.com/javadetails/java-0426.html" target="_blank"&gt;words code&lt;/a&gt; I pass in a double value parameter to the convert method (not a long) and add support for cents e.g. : $5.20 to equal "Five USD and Twenty cents".&lt;br /&gt;&lt;div class="Ih2E3d"&gt;&lt;br /&gt;An interesting problem I had was how do I get the cents part? e.g. $5.20 to get 20.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;Firstly I had to format the number to round off to the last 2 digits so something like $5.2555 will not work. To do this in Java you can use the &lt;a href="http://java.sun.com/javase/6/docs/api/java/text/DecimalFormat.html"&gt;DecimalFormat class&lt;/a&gt;.&lt;br /&gt;&lt;div class="Ih2E3d"&gt;&lt;br /&gt;To get the cents I wrote:&lt;br /&gt;&lt;br /&gt;double cents = new Double(new Double(number).doubleValue() - new Double(number).intValue()).&lt;wbr&gt;doubleValue();&lt;br /&gt;int iCents = (int) Math.round(cents * 100d);&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;The first line of code take the double value and subtract the integer value e.g. 5.20 - 5.0 = 0.20&lt;br /&gt;The second line format the remaining value 0.20 to be an integer e.g. 20&lt;br /&gt;&lt;br /&gt;Like always there are many ways in programming how this could be done and yes the above code works 100% since I wrote a very detail Unit test.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-8001887289853900651?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/8001887289853900651/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=8001887289853900651' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/8001887289853900651'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/8001887289853900651'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2008/12/weekly-source-code-get-cents.html' title='Weekly Source Code: Get Cents'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-2943017773663062788</id><published>2008-11-25T23:48:00.000-08:00</published><updated>2008-11-26T03:43:45.791-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MS Sucks'/><title type='text'>Windows Mobile 6.1 SMTP Error</title><content type='html'>Ooops Microsoft did it again!! everytime when I try to send email from my Samsung Omnia i900 with any of my email accounts and the email got attachments it fails with the error "The message(s) could not be sent. Check that you have network coverage and that your account information is correct. Then try sending again" off course you then think its your service provider (MTN in my case) but if your on WiFi its actually using your ADSL so its not your provider. This is actual a bug in the OS that got a fixed &lt;a href="http://www.tracyandmatt.co.uk/blogs/index.php/2008/10/15/windows-mobile-smtp-fix"&gt;here&lt;/a&gt;. Now I must apply this fix over lunch break and see if it actually does FIX the problem for real!&lt;br /&gt;&lt;br /&gt;O well another day of Microsoft sucks!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Update:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I applied the patch and it seam to have fixed the problem... Happy Days! :-)&lt;br /&gt;just until I find the next bug.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Update 2:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You can get the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=d9d71b2e-d2dd-44f2-86e5-1e53aad7fb7a&amp;amp;DisplayLang=en"&gt;official fix&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-2943017773663062788?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/2943017773663062788/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=2943017773663062788' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/2943017773663062788'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/2943017773663062788'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2008/11/windows-mobile-61-smtp-error.html' title='Windows Mobile 6.1 SMTP Error'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-8230020572196386953</id><published>2008-11-25T01:24:00.000-08:00</published><updated>2008-11-25T01:25:31.650-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.Net'/><title type='text'>LINQ Reference Documentation</title><content type='html'>See the &lt;a href="http://blogs.msdn.com/charlie/archive/2008/11/23/linq-reference-documentation.aspx"&gt;LINQ Reference Documentation&lt;/a&gt;, very handy!&lt;br /&gt;&lt;br /&gt;Its been awhile since I blogged, been crazy at work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-8230020572196386953?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/8230020572196386953/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=8230020572196386953' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/8230020572196386953'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/8230020572196386953'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2008/11/linq-reference-documentation.html' title='LINQ Reference Documentation'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-5342248935385209271</id><published>2008-11-11T23:05:00.000-08:00</published><updated>2008-11-11T23:06:20.122-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='technology'/><title type='text'>Video Chat In Gmail</title><content type='html'>Oboy! This is cool, see &lt;a href="http://mail.google.com/videochat"&gt;here&lt;/a&gt;!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-5342248935385209271?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/5342248935385209271/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=5342248935385209271' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/5342248935385209271'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/5342248935385209271'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2008/11/video-chat-in-gmail.html' title='Video Chat In Gmail'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-543594267516710758</id><published>2008-11-11T00:21:00.000-08:00</published><updated>2008-11-11T00:22:41.056-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='.Net'/><title type='text'>Visual Studio 2010 and the .NET Framework 4.0 Week!</title><content type='html'>It is worth the watch if your into the next release of MS Visual Studio.Net 2010.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://channel9.msdn.com/posts/VisualStudio/Visual-Studio-2010-and-the-NET-Framework-40-Week/"&gt;See it on Channel 9.&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-543594267516710758?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/543594267516710758/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=543594267516710758' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/543594267516710758'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/543594267516710758'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2008/11/visual-studio-2010-and-net-framework-40.html' title='Visual Studio 2010 and the .NET Framework 4.0 Week!'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-8977776488728963709</id><published>2008-11-09T23:51:00.000-08:00</published><updated>2008-11-09T23:53:31.966-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='.Net'/><title type='text'>Weekly Source Code: No SPAM Email Link In .Net</title><content type='html'>Web crawlers gather email addresses from your website that they then use to SPAM you. Web crawlers do this by reading the raw HTML to see if there are any email tags like a "mailto:".&lt;br /&gt;&lt;br /&gt;I wrote a sample program that I published to &lt;a href="http://code.msdn.microsoft.com/NoSPAMEmailLink"&gt;MSDN Code Gallery&lt;/a&gt; where an email address get shown to a website visitor as an image in the HTML's image tag, you can see Facebook as an example.&lt;br /&gt;&lt;br /&gt;The image tag then has an onclick event, when visitors click on the image an AJAX call fetches the email address (from a resource like a SOAP/RESTful web service) and then open the default email client.&lt;br /&gt;&lt;br /&gt;With this method the email address isn't in the HTML so the web crawler can't capture it.&lt;br /&gt;&lt;br /&gt;This show the power that AJAX bring.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-8977776488728963709?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/8977776488728963709/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=8977776488728963709' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/8977776488728963709'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/8977776488728963709'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2008/11/weekly-source-code-no-spam-email-link.html' title='Weekly Source Code: No SPAM Email Link In .Net'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-7357484598346191053</id><published>2008-11-06T23:41:00.000-08:00</published><updated>2008-11-06T23:45:52.049-08:00</updated><title type='text'>Google Docs Mobile</title><content type='html'>I use Google Docs alot to share my personal documents, share work documents or just to manage my daily TODO list (as complicated and endless as it is! ;-)&lt;br /&gt;&lt;br /&gt;You can access Google Docs via &lt;a href="http://docs.google.com/m"&gt;your mobile&lt;/a&gt; Wow! I was happy when I saw this since I don't like always having the laptop open if I just want to check something BUT (there is always alittle BUT) this is read only :-( Well it makes sense since mobile AJAX isn't support on all phones but it would've been a nice functionality expecially when I finally gonna get my Samsung Omnia i900.&lt;br /&gt;&lt;br /&gt;Anyway, enjoy and have a good weekend! :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-7357484598346191053?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/7357484598346191053/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=7357484598346191053' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/7357484598346191053'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/7357484598346191053'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2008/11/google-docs-mobile.html' title='Google Docs Mobile'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-9105367654759824165</id><published>2008-11-04T22:55:00.000-08:00</published><updated>2008-11-04T23:11:58.629-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='technology'/><title type='text'>Internet Over Bluetooth</title><content type='html'>Testing an application last night on my wife's ex &lt;a href="http://www.gsmarena.com/nokia_2760-1975.php"&gt;Nokia 2760&lt;/a&gt; phone using my bluetooth dongle (a &lt;a href="http://www.bluesoleil.com/products/index.asp?topic=bt_dongle&amp;amp;typeid=11"&gt;Bluesoleil Dongle&lt;/a&gt;) I found that it create a personal area network where I can access the Internet from the phone over bluetooth without GPRS. WOW this is cool!&lt;br /&gt;&lt;br /&gt;Btw, this week there isn't a weekly source code since I've been on leave on Monday and its been a crazy week back at work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-9105367654759824165?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/9105367654759824165/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=9105367654759824165' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/9105367654759824165'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/9105367654759824165'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2008/11/internet-over-bluetooth.html' title='Internet Over Bluetooth'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-7641568072649680818</id><published>2008-10-31T00:15:00.000-07:00</published><updated>2008-10-31T00:16:44.784-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='news'/><title type='text'>New Gmail Mobile v2.0</title><content type='html'>The new Gmail mobile client is avialable, you can download it by visiting m.google.com/mail on your phone.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-7641568072649680818?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/7641568072649680818/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=7641568072649680818' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/7641568072649680818'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/7641568072649680818'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2008/10/new-gmail-mobile-v20.html' title='New Gmail Mobile v2.0'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-2395521792889351526</id><published>2008-10-27T06:48:00.000-07:00</published><updated>2008-10-27T06:49:54.563-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='.Net'/><title type='text'>New .Net Logo</title><content type='html'>Following &lt;a href="http://twitter.com/NotAtPDC"&gt;NotAtPDC  &lt;/a&gt;&lt;br /&gt;I heard there's a new &lt;a href="http://blogs.msdn.com/sayanghosh/archive/2008/10/26/new-net-logo.aspx"&gt;.Net logo&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-2395521792889351526?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/2395521792889351526/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=2395521792889351526' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/2395521792889351526'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/2395521792889351526'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2008/10/new-net-logo.html' title='New .Net Logo'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-6937275414070834532</id><published>2008-10-27T00:12:00.000-07:00</published><updated>2008-10-27T00:20:14.898-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='.Net'/><title type='text'>Weekly Source Code: ASP.Net AJAX UpdatePanel And UpdateProgress</title><content type='html'>On the &lt;a href="http://www.vcc.co.za/"&gt;VCC website&lt;/a&gt; that I wrote, there is a &lt;a href="http://www.blogger.com/%28http://www.vcc.co.za/sermons.aspx"&gt;Sermons web page&lt;/a&gt; You will notice that when you select a month it displays a progress animation image at the bottom of the drop down box and within seconds the grid refreshs with the new sermons without reloading the entire web page... This is a good example of  an AJAX call that happens when you select the drop down box but did you know that I didn't write any Javascript code to get it working?&lt;br /&gt;&lt;br /&gt;To accomplish this I used ASP.Net AJAX in MS Visual Studio.Net 2008 with no Javascript or C# coding. ASP.Net AJAX is part of ASP.Net 3.5 but as a seprate download for ASP.Net 2.0 (MS Visual Studio.Net 2005).&lt;br /&gt;&lt;br /&gt;The magic is done by the &lt;asp:updatepanel&gt; control with the drop down box and the grid getting wrapped inside the  &lt;contenttemplate&gt; tag of &lt;asp:updatepanel&gt;... the drop down box is a &lt;asp:dropdownlist&gt; control and the grid is a &lt;asp:gridview&gt; control, so nothing special about the drop down box or the grid.&lt;br /&gt;&lt;div class="Ih2E3d"&gt;&lt;br /&gt;Also within the &lt;contenttemplate&gt; is the &lt;asp:updateprogress&gt; control that executes when the &lt;asp:updatepanel&gt; is busy updating the page, this gives feedback to the user that something is happening.&lt;br /&gt;&lt;/asp:updatepanel&gt;&lt;/asp:updateprogress&gt;&lt;/contenttemplate&gt;&lt;br /&gt;You must also add the &lt;asp:scriptmanager&gt; control since all ASP.Net AJAX pages requires this control.&lt;br /&gt;&lt;/asp:scriptmanager&gt;&lt;/div&gt;&lt;asp:updateprogress&gt;&lt;div class="Ih2E3d"&gt;&lt;br /&gt;Thats it! Nothing else required, no JavaScript code... no coding at all!&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;When the drop down box fire an event when the user chooses a new item the update panel handles the event a-synchronously , fetching the new updated grid and displaying it all the while the update progress controls indicates to the user the busy image.&lt;br /&gt;&lt;br /&gt;ASP.Net AJAX makes this easy for you, as a developer since it takes care of all the back-end stuff for you so it generates and handles the JavaScript code etc without you even knowing about it.&lt;/asp:updateprogress&gt;&lt;/asp:gridview&gt;&lt;/asp:dropdownlist&gt;&lt;/asp:updatepanel&gt;&lt;/contenttemplate&gt;&lt;/asp:updatepanel&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-6937275414070834532?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/6937275414070834532/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=6937275414070834532' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/6937275414070834532'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/6937275414070834532'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2008/10/weekly-source-code-aspnet-ajax.html' title='Weekly Source Code: ASP.Net AJAX UpdatePanel And UpdateProgress'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-6647947722608504228</id><published>2008-10-24T03:26:00.001-07:00</published><updated>2008-10-24T03:26:53.767-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='news'/><title type='text'>I'm On Twitter</title><content type='html'>Everybody thesedays are on Twitter so way not me?! Go visit &lt;a href="http://twitter.com/lenniedv" target="_blank"&gt;http://twitter.com/lenniedv&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-6647947722608504228?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/6647947722608504228/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=6647947722608504228' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/6647947722608504228'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/6647947722608504228'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2008/10/im-on-twitter.html' title='I&apos;m On Twitter'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-3434393200507535974</id><published>2008-10-23T01:37:00.000-07:00</published><updated>2008-10-23T01:39:10.605-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='technology'/><title type='text'>Next.... Windows 7</title><content type='html'>The next MS Windows version will be called &lt;a href="http://windowsvistablog.com/blogs/windowsvista/archive/2008/10/13/introducing-windows-7.aspx"&gt;Windows 7&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I believe, we all hope that this time MS will do a proper job than what they did with Windows Vista or allow us to always downgrade back to Windows XP :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-3434393200507535974?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/3434393200507535974/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=3434393200507535974' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/3434393200507535974'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/3434393200507535974'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2008/10/next-windows-7.html' title='Next.... Windows 7'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-1028532116203320800</id><published>2008-10-21T13:32:00.000-07:00</published><updated>2008-10-21T13:40:36.077-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Weekly Source Code: My AJAX Library</title><content type='html'>Back when &lt;a href="http://en.wikipedia.org/wiki/AJAX"&gt;AJAX&lt;/a&gt; first came out there wasn't any libraries - no ASP.Net AJAX etc. I was mainly doing classic ASP with VBScript development (yes I know - that sucks!)&lt;br /&gt;&lt;br /&gt;Most AJAX books and samples demonstrated using the &lt;a href="http://en.wikipedia.org/wiki/XMLHttpRequest"&gt;XMLHttpRequest object&lt;/a&gt; &lt;a href="http://en.wikipedia.org/wiki/XMLHttpRequest" target="_blank"&gt;&lt;/a&gt;are for making AJAX calls but the main problem was compatibility between the different web browsers - IE vs Firefox vs Safari vs Opera.&lt;br /&gt;&lt;div class="Ih2E3d"&gt;&lt;br /&gt;So I wrote my own &lt;a href="http://www.lenniedevilliers.net/validation_ajax.js"&gt;AJAX library&lt;/a&gt;, I mainly used it for validation and later to pull customer information into a HTML form if the customer already placed an order.&lt;br /&gt;&lt;br /&gt;To use it:&lt;br /&gt;&lt;br /&gt;Setup 1: Include the JavaScript file into your HTML page.&lt;br /&gt;&lt;br /&gt;&lt;div class="Ih2E3d"&gt; Setup 2: Call AjaxValidate function, this function has 3 parameters:&lt;br /&gt;&lt;ul&gt;&lt;li&gt; psWebPage: The back-end server side page to call.&lt;/li&gt;&lt;li&gt;psCode: Code that identifies the request, if you send more than one request to a back-end server side pagethen this can be used to identify the request so that the page handles different request. You can leave this blank if your page handles only 1 request.&lt;/li&gt;&lt;li&gt;psValue: The request value.&lt;/li&gt;&lt;/ul&gt; &lt;/div&gt;  Setup 3: When the result comes back it will call the setOutput JavaScript function that has 3 parameters:&lt;br /&gt;&lt;ul&gt;&lt;li&gt; sWebPage: The back-end server side page that was called.&lt;/li&gt;&lt;li&gt; sCode: The code sent to AjaxValidate function your JavaScript can process the request.&lt;/li&gt;&lt;li&gt; sResponseText: The response from the AJAX call. This can be HTML, plain text or even JSON.&lt;/li&gt;&lt;/ul&gt;  With the AJAX frameworks of today my library don't have much of a meaning since you can do alot of advance AJAX functionality.&lt;br /&gt;&lt;br /&gt;More about AJAX in the next Weekly Source Code.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; &lt;script language="javascript" src="validation_ajax.js"&gt;&lt;/&lt;/span&gt;&lt;wbr  style="font-family:courier new;"&gt;&lt;span style="font-family:courier new;"&gt;script&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Setup 2: Call AjaxValidate function, this function has 3 parameters:&lt;br /&gt;&lt;ul&gt;&lt;li&gt; psWebPage: The back-end server side page to call.&lt;/li&gt;&lt;li&gt;psCode: Code that identifies the request, if you send more than one request to a back-end server side pagethen this can be used to identify the request so that the page handles different request. You can leave this blank if your page handles only 1 request.&lt;/li&gt;&lt;li&gt; psValue: The request value.&lt;/li&gt;&lt;/ul&gt;  &lt;/div&gt;  Setup 3: When the result comes back it will call the setOutput JavaScript function that has 3 parameters:&lt;br /&gt;&lt;ul&gt;&lt;li&gt; sWebPage: The back-end server side page that was called.&lt;/li&gt;&lt;li&gt; sCode: The code sent to AjaxValidate function your JavaScript can process the request.&lt;/li&gt;&lt;li&gt; sResponseText: The response from the AJAX call. This can be HTML, plain text or even JSON.&lt;/li&gt;&lt;/ul&gt;  With the AJAX framworks of today my library don't have much of a meaning since you can do alot of advance AJAX functionality.&lt;br /&gt;&lt;br /&gt;More about AJAX in the next Weekly Source Code.&lt;/script&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/961885452063004235-1028532116203320800?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/1028532116203320800/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=1028532116203320800' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/1028532116203320800'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/1028532116203320800'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2008/10/weekly-source-code-my-ajax-library.html' title='Weekly Source Code: My AJAX Library'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-1185829045993657255</id><published>2008-10-21T12:31:00.000-07:00</published><updated>2008-10-21T12:33:29.379-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>C# From a Java Developer's Perspective</title><content type='html'>&lt;div class="Ih2E3d"&gt;When I was moving from years of experience in Java to my first C# project with no knowledge of the framework or even the language I found &lt;a href="http://www.25hoursaday.com/CsharpVsJava.html"&gt;this artical&lt;/a&gt;. It was very helpful to make the conversion from Java to the C# language especially since there's some differences that can bite you, when moving between them (like what I currently do on a daily basis).&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/961885452063004235-1185829045993657255?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/1185829045993657255/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=1185829045993657255' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/1185829045993657255'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/1185829045993657255'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2008/10/c-from-java-developers-perspective.html' title='C# From a Java Developer&apos;s Perspective'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-4518015295252424871</id><published>2008-10-17T00:53:00.001-07:00</published><updated>2008-10-17T00:56:49.828-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>What is Type Inference?</title><content type='html'>&lt;div class="Ih2E3d"&gt;You might ask, "Lennie, in your previous blog about how bad variants are... what is type inference? Isn't it also a variant...?." The answer is yes and no, type inference comes from dynamic languages (remember Ruby, Python? yes those ladies!) and was added to the C# 3.0&lt;br /&gt;language as part of the "var" keyword.&lt;br /&gt;&lt;br /&gt;Basically what it does is that when you declare a variable with the "var" keyword its determined that the type of the variable from the data you assign to it, e.g.:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;var firstName = "Lennie De Villiers"; // Hello, I'm a String type!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; var age = 12; // yebo, I'm an int type!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;but with type inference you can't change the type of the variable after its been assigned, e.g:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;var firstName = 12; // Ooops, invalid!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;With raw variants you can change the type of a variable all the time, like in the previous blog entry the MyNumber variable is a true variant since it is passed in as a number (probably a double) and then changed into a String type.&lt;br /&gt;&lt;br /&gt;Microsoft added the "var" keyword since with LINQ queries the type of a variable is unknown but only know after execution.&lt;br /&gt;&lt;br /&gt;Be careful of type inference since they're also bad and only should be used with LINQ queries when you execute them but afterwards (very important!) convert them to a proper known type else since you've the same problem where a developer looking at your code can't determine&lt;br /&gt;&lt;/div&gt;&lt;div class="Ih2E3d"&gt;the type of a variable - same problem with raw / true variants.&lt;br /&gt;&lt;br /&gt;So to recap, type inference:&lt;br /&gt;&lt;ul&gt;&lt;li&gt; Infer the type from the value assigned to it;&lt;/li&gt;&lt;li&gt; Can't change the type after first assignment (its forever a string, int etc)&lt;/li&gt;&lt;li&gt;Bad coding practice since you still don't know the type of the variable.&lt;/li&gt;&lt;/ul&gt; &lt;/div&gt;  True variants:&lt;br /&gt;&lt;ul&gt;&lt;li&gt; Bad coding practice since you still don't know the type of the variable.&lt;/li&gt;&lt;li&gt; Can change their type all the time, first a String then an int, then your PoolBoy class etc.&lt;/li&gt;&lt;/ul&gt;  My golden run:&lt;br /&gt;&lt;ul&gt;&lt;li&gt; Type inference only when executing LINQ queries but afterwards convert to a proper type.&lt;/li&gt;&lt;li&gt; No variants, they're just bad!&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-4518015295252424871?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/4518015295252424871/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=4518015295252424871' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/4518015295252424871'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/4518015295252424871'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2008/10/what-is-type-inference.html' title='What is Type Inference?'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-3486159895383420129</id><published>2008-10-16T12:15:00.000-07:00</published><updated>2008-10-16T12:17:03.278-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Variant Types Are Bad</title><content type='html'>I'm busy converting &lt;a href="http://www.ozgrid.com/VBA/CurrencyToWords.htm" target="_blank"&gt;http://www.ozgrid.com/VBA/&lt;wbr&gt;CurrencyToWords.htm&lt;/a&gt; to Java code but having problems since the original coder used variant type e.g. you don't know the type of the variables: MyNumber, DecimalPlace, Count etc looking at the variable declaration but only once you assign a value to it, it also doesn't use type inference (the var keyword in C#) meaning you can assign a string to the variable then later an integer... bad boy! So this makes conversions hard. Not just&lt;br /&gt;&lt;div&gt;that but what about maintenance?! If this code is used in a production environment what about the poor junior that must maintain it a year /&lt;span id="q_11d071bd9546bda8_4" class="WQ9l9c"&gt; &lt;/span&gt;decade from now (if VBA code is still running in 2020).&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-3486159895383420129?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/3486159895383420129/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=3486159895383420129' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/3486159895383420129'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/3486159895383420129'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2008/10/variant-types-are-bad.html' title='Variant Types Are Bad'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-433761617467475841</id><published>2008-10-14T23:53:00.000-07:00</published><updated>2008-10-14T23:54:17.228-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>C++ 0x Compiler</title><content type='html'>C++ 0x is the next version of C++ with some added language features, libraries etc. The C++ standard committee is planning to have it released around the end of the decade. The "0x" is because the year of release is unknown.&lt;br /&gt;&lt;br /&gt;The GCC 4.3+ compiler has &lt;a href="http://gcc.gnu.org/projects/cxx0x.html"&gt;support&lt;/a&gt; for some of the C++ 0x features, also some of the features was released as part of &lt;a href="http://en.wikipedia.org/wiki/Technical_Report_1"&gt;TR1&lt;/a&gt; &lt;a href="http://en.wikipedia.org/wiki/Technical_Report_1" target="_blank"&gt;&lt;/a&gt; in MS Visual C++.Net 2008. I will blog about TR1 and C++ 0x features in the future.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-433761617467475841?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/433761617467475841/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=433761617467475841' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/433761617467475841'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/433761617467475841'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2008/10/c-0x-compiler.html' title='C++ 0x Compiler'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-4706629872510769341</id><published>2008-10-13T00:20:00.001-07:00</published><updated>2008-10-13T00:21:14.123-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Weekly Code: Find Duplicates in SQL</title><content type='html'>Sometimes you need to check if there's duplicated rows in a SQL table, for this you can use the query:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt; SELECT field, COUNT(field) AS NumOccurrences&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt; FROM checkdup&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt; GROUP BY field&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt; HAVING (COUNT(field) &gt; 1)&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt; checkdup: This is the table name to check.&lt;/li&gt;&lt;li&gt; field: This is the field name to check.&lt;/li&gt;&lt;/ul&gt; This will return 2x columns, the first column is the duplicated data and second column is a count of how many times its duplicated.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-4706629872510769341?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/4706629872510769341/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=4706629872510769341' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/4706629872510769341'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/4706629872510769341'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2008/10/weekly-code-find-duplicates-in-sql.html' title='Weekly Code: Find Duplicates in SQL'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-7142784334834340462</id><published>2008-10-10T07:22:00.000-07:00</published><updated>2008-10-10T07:24:43.608-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>RGB Color Calculator</title><content type='html'>If you require the hex (hexidecimal) value of a RGB (Red, Green, Blue) color combination then &lt;a href="http://www.drpeterjones.com/colorcalc/"&gt;here&lt;/a&gt; is one you can use color calculator.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-7142784334834340462?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/7142784334834340462/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=7142784334834340462' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/7142784334834340462'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/7142784334834340462'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2008/10/rgb-color-calculator.html' title='RGB Color Calculator'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-6780203477852761485</id><published>2008-10-09T02:51:00.000-07:00</published><updated>2008-10-09T02:54:28.711-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Programming Language Wars</title><content type='html'>Normally I don’t agree or join language wars but: I programmed for 4 years in Java, VB (VB.net and VB 6), C++ and C#, PHP etc. The fact is that each language have advantages and disavandages, yes the .Net framework is more solid than the Java lib but Java is cross-platform to portable devices etc… VB is easy to code since it hide you from the details of the framework where with C# its more “C++ system style” of coding where its not so abstract like VB…. the point that i’m making is that anyone can go on how bad one language is over another etc but hey, be glad that we don’t live in the days of Assembler since that was bad! A language is a tool, use the tool that you prefer (its your own personal opnion) and have knowledge in, for example: I will not go write a complete website in a week using Ruby on Rails since I don’t know it but it doesn’t mean its a bad tool. Use the tool that suite the task at hand and what you prefer… damm if you want to write a website in Lisp then go for it!&lt;br /&gt;&lt;br /&gt;When it come to language wars, I don't care... I will even use Fortran if I must / want too!&lt;br /&gt;&lt;br /&gt;On the job market side you might want to consider your options since that is a total different story to use the language that your employer want etc.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-6780203477852761485?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/6780203477852761485/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=6780203477852761485' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/6780203477852761485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/6780203477852761485'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2008/10/programming-language-wars.html' title='Programming Language Wars'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-1858439347687956921</id><published>2008-10-07T23:55:00.000-07:00</published><updated>2008-10-07T23:57:30.883-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='.Net'/><title type='text'>Escaping Special Characters In C#</title><content type='html'>&lt;div class="Ih2E3d"&gt;When you add records into a database you need to escape special characters like the single quote (') else your insert statement might fail.&lt;br /&gt;&lt;br /&gt;After searching hard I found that C# does provide a method that does escaping by providing a string parameter and returning the escaped string, the surprise is that its not part of the String class but actually inside the &lt;a href="http://msdn.microsoft.com/en-us/library/system.security.securityelement.aspx"&gt;SecurityElement class&lt;/a&gt; thats part of the System.Security namespace... find the &lt;a href="http://msdn.microsoft.com/en-us/library/system.security.securityelement.escape.aspx"&gt;Escape method&lt;/a&gt;!Now I wonder... why did Microsoft add it to that namespace? :-( grrr....&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-1858439347687956921?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/1858439347687956921/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=1858439347687956921' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/1858439347687956921'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/1858439347687956921'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2008/10/escaping-special-characters-in-c.html' title='Escaping Special Characters In C#'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-3795855765223210815</id><published>2008-10-06T02:25:00.000-07:00</published><updated>2008-10-06T02:27:06.708-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Mono'/><title type='text'>Mono 2.0 Released!</title><content type='html'>Mono 2.0 as been released! Get it &lt;a href="http://www.mono-project.com/news/archive/2008/Oct-06.html"&gt;here.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/961885452063004235-3795855765223210815?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/3795855765223210815/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=3795855765223210815' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/3795855765223210815'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/3795855765223210815'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2008/10/mono-20-released.html' title='Mono 2.0 Released!'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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-961885452063004235.post-6895210189610783051</id><published>2008-10-04T01:37:00.000-07:00</published><updated>2008-10-04T01:39:38.130-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>Weekly Code: C#  ForEach Method In C++</title><content type='html'>&lt;div class="Ih2E3d"&gt;This week's source code is a C++ version of C#'s ForEach method available &lt;a href="http://codepad.org/v7oRd5jM"&gt;here&lt;/a&gt; The ForEach method isn't the foreach statement, C#'s &lt;a href="http://msdn.microsoft.com/en-us/library/bwabdf9z.aspx"&gt;ForEach method&lt;/a&gt; you pass a delegate to a method and it will execute the method for every element in the collection.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;The C++ version works similar where you pass it the vector collection and a function pointer, it will then execute the function passing in the vector. The function can then perform any action on the vector, in this case sample it change the values to 1.&lt;br /&gt;&lt;div class="Ih2E3d"&gt;&lt;br /&gt;Function pointers are powerful in C++ but yes they've a very error-prone ugly syntax.&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/961885452063004235-6895210189610783051?l=lenniedevilliers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenniedevilliers.blogspot.com/feeds/6895210189610783051/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=961885452063004235&amp;postID=6895210189610783051' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/6895210189610783051'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/961885452063004235/posts/default/6895210189610783051'/><link rel='alternate' type='text/html' href='http://lenniedevilliers.blogspot.com/2008/10/weekly-code-c-foreach-method-in-c.html' title='Weekly Code: C#  ForEach Method In C++'/><author><name>Lennie De Villiers</name><uri>http://www.blogger.com/profile/10415773294674948844</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>
