<?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-4193594047334486267</id><updated>2012-01-22T22:39:09.194+02:00</updated><category term='c#'/><category term='OSPF'/><category term='Network'/><category term='outlook'/><category term='webbrowser'/><category term='email'/><category term='MikroTik'/><category term='Cisco'/><category term='RouterOS'/><category term='image'/><category term='remove duplicates'/><category term='event handler'/><category term='context menu'/><category term='array list'/><category term='memory leak'/><title type='text'>Idiots guide to ICT engineering</title><subtitle type='html'>networking, code snippets, PACS, RIS and other random IT stuff.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://ict-engineer.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4193594047334486267/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://ict-engineer.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>g</name><uri>http://www.blogger.com/profile/15711438418975605162</uri><email>noreply@blogger.com</email><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>21</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4193594047334486267.post-1398408599211410154</id><published>2011-09-28T11:10:00.003+02:00</published><updated>2011-09-28T11:39:54.592+02:00</updated><title type='text'>How to point Trend OfficeScan clients to new server</title><content type='html'>After losing our Trend OfficeScan/WSUS/Intranet/App server in an unfortunate idiot accident our department was left with the scattered remains. We had to install OfficeScan on a new server and update the client machines to reflect the new hostname and port settings. A quick and dirty solution was to use PsExec and execute the Trend IpXfer.exe tool. And Im all about quick and dirty :) First I copied the IpXfer tool to our domain controller netlogon folder. This will ensure that clients choose the closest DC to execute IpXfer.&lt;div&gt;I then ran the following command : psexec \\* -u &lt;b&gt;domain\administrator&lt;/b&gt; -p &lt;b&gt;yourpw&lt;/b&gt; "&lt;b&gt;\\domain.co.za\netlogon\trend client update\ipxfer.exe&lt;/b&gt;" -s &lt;b&gt;trendserverip &lt;/b&gt;-p &lt;b&gt;8080&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;PsExec will now merrily enumerate your domain and update your OfficeScan clients. Don't worry if you see an "Error code 0 exit" error, the clients should still update. You have the option of specifying a file with a list of IPs or single hosts if the big bang approach is too cavalier for you.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Hope this saves someone some time...sometime.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4193594047334486267-1398408599211410154?l=ict-engineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ict-engineer.blogspot.com/feeds/1398408599211410154/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4193594047334486267&amp;postID=1398408599211410154' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4193594047334486267/posts/default/1398408599211410154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4193594047334486267/posts/default/1398408599211410154'/><link rel='alternate' type='text/html' href='http://ict-engineer.blogspot.com/2011/09/how-to-point-trend-officescan-clients.html' title='How to point Trend OfficeScan clients to new server'/><author><name>g</name><uri>http://www.blogger.com/profile/15711438418975605162</uri><email>noreply@blogger.com</email><gd:image 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-4193594047334486267.post-7865865885548297805</id><published>2011-09-14T16:14:00.002+02:00</published><updated>2011-09-14T16:17:41.747+02:00</updated><title type='text'>Best colour laser printer for printing x-rays?</title><content type='html'>Does anyone out there have experience in implementing a paper printing solution for a busy radiology department? Any pitfalls to avoid? I'm currently looking at a couple of options,  notably Xerox and HP but if you can make any other suggestions I would really appreciate it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4193594047334486267-7865865885548297805?l=ict-engineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ict-engineer.blogspot.com/feeds/7865865885548297805/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4193594047334486267&amp;postID=7865865885548297805' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4193594047334486267/posts/default/7865865885548297805'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4193594047334486267/posts/default/7865865885548297805'/><link rel='alternate' type='text/html' href='http://ict-engineer.blogspot.com/2011/09/best-colour-laser-printer-for-printing.html' title='Best colour laser printer for printing x-rays?'/><author><name>g</name><uri>http://www.blogger.com/profile/15711438418975605162</uri><email>noreply@blogger.com</email><gd:image 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-4193594047334486267.post-4951389109051029955</id><published>2011-03-15T15:05:00.002+02:00</published><updated>2011-03-15T15:13:35.582+02:00</updated><title type='text'>iPad iOS 4.3 update problems</title><content type='html'>I recent got an iPad for a work project - as if I was going to pay for it myself... Today I tried to update its iOS version to 4.3. After numerous failed attempts through iTunes (kept on getting a 9006 unspecified error of some sorts), I found a link to a &lt;a href="http://techie-buzz.com/how-to/how-to-update-ios-4-3-itunes-manually.html"&gt;forum&lt;/a&gt; where many fellow South Africans complained about the same issue. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I followed the instructions and finally got iOS upgraded. You can download the 4.3 file from:&lt;/div&gt;&lt;div&gt;&lt;a href="http://appldnld.apple.com/iPhone4/041-0329.20110311.Cvfre/iPad1,1_4.3_8F190_Restore.ipsw"&gt;http://appldnld.apple.com/iPhone4/041-0329.20110311.Cvfre/iPad1,1_4.3_8F190_Restore.ipsw&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;One thing to note though, the update will download a .zip file. Simply rename the extension to .ipsw and proceed with the manual update.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4193594047334486267-4951389109051029955?l=ict-engineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ict-engineer.blogspot.com/feeds/4951389109051029955/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4193594047334486267&amp;postID=4951389109051029955' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4193594047334486267/posts/default/4951389109051029955'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4193594047334486267/posts/default/4951389109051029955'/><link rel='alternate' type='text/html' href='http://ict-engineer.blogspot.com/2011/03/ipad-ios-43-update-problems.html' title='iPad iOS 4.3 update problems'/><author><name>g</name><uri>http://www.blogger.com/profile/15711438418975605162</uri><email>noreply@blogger.com</email><gd:image 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-4193594047334486267.post-1660979368416349655</id><published>2011-02-07T22:02:00.002+02:00</published><updated>2011-02-07T22:08:32.338+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='outlook'/><category scheme='http://www.blogger.com/atom/ns#' term='image'/><category scheme='http://www.blogger.com/atom/ns#' term='email'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>C# &amp; Outlook: Insert image in email body</title><content type='html'>&lt;div&gt;Haven't posted in a while...I blame it on being lazy. Which is not a bad thing, I always maintain a lazy IT guy is a damn effective IT guy. But I'm veering off topic now.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Figured something out today that might be useful. As you may know there are a few ways of sending mail with your C# app. You can use straight SMTP or you can integrate with various other email clients. The nice feature of the latter method being you'll have a record of the email in your Sent Items. By the way I use Outlook 2007 so for the purpose of this article. Setting up the basic integration is pretty easy so I'm gonna skip that - have a look at http://support.microsoft.com/kb/310262 for info on how it works. Make sure you use an HTML body type. My problem was getting an image (in my case, logo) into the body of the email. It turned out to be as easy as referencing an image in the file system in an img tag, for example:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;&amp;lt;img src="" + Application.StartupPath + "\Images\logo.png" + "" align='baseline' border='0' /&amp;gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Till next time, whenever that may be.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4193594047334486267-1660979368416349655?l=ict-engineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ict-engineer.blogspot.com/feeds/1660979368416349655/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4193594047334486267&amp;postID=1660979368416349655' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4193594047334486267/posts/default/1660979368416349655'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4193594047334486267/posts/default/1660979368416349655'/><link rel='alternate' type='text/html' href='http://ict-engineer.blogspot.com/2011/02/havent-posted-in-while.html' title='C# &amp; Outlook: Insert image in email body'/><author><name>g</name><uri>http://www.blogger.com/profile/15711438418975605162</uri><email>noreply@blogger.com</email><gd:image 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-4193594047334486267.post-8293963218707374966</id><published>2010-10-15T15:28:00.003+02:00</published><updated>2010-10-15T15:41:03.652+02:00</updated><title type='text'>Visual Studio Express hangs!</title><content type='html'>I run VS C# 2010. For some reason my IDE started hanging for 2 minutes every time I start to debug as well as when I exit my app. I didn't encounter any problems when running the app from install. Before I Googled it, I just deleted the contents of the debug and release folders which sorted out the problem. My guess is vshost, used during debugging, somehow got corrupted. &lt;div&gt;Hope it works for you.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4193594047334486267-8293963218707374966?l=ict-engineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ict-engineer.blogspot.com/feeds/8293963218707374966/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4193594047334486267&amp;postID=8293963218707374966' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4193594047334486267/posts/default/8293963218707374966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4193594047334486267/posts/default/8293963218707374966'/><link rel='alternate' type='text/html' href='http://ict-engineer.blogspot.com/2010/10/visual-studio-express-hangs.html' title='Visual Studio Express hangs!'/><author><name>g</name><uri>http://www.blogger.com/profile/15711438418975605162</uri><email>noreply@blogger.com</email><gd:image 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-4193594047334486267.post-935493004159856368</id><published>2010-10-14T20:06:00.003+02:00</published><updated>2010-10-14T20:35:24.607+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='context menu'/><category scheme='http://www.blogger.com/atom/ns#' term='event handler'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>Building a C# context menu at runtime</title><content type='html'>&lt;div&gt;&lt;span class="Apple-style-span"&gt;I know this is a very basic topic, but I'm pretty sure someone will find a use for it.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;This example takes a result set (res.Rows) and builds a context menu with hyperlinks loaded in the tag property. When you click on the menu item, it that loads the link in a webbrowser control. Remember to set the context menu property of the control you want to associate the menu with. The code is self-explanatory.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;foreach (DataRow r in res.Rows)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;       ToolStripMenuItem mnuItem = new ToolStripMenuItem();&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;       mnuItem.Text = r[1].ToString();&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;       mnuItem.Tag = @"http://serverIP/website/" + r[3].ToString();&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;       mnuItem.Image = Properties.Resources.ImageName;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;       mnuItem.Click += new EventHandler(ContextMenuItemClick);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;       cmnuOptions.Items.Add(mnuItem);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;private void ContextMenuItemClick(object sender, EventArgs e)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;       ToolStripMenuItem clicked = sender as ToolStripMenuItem;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;       webReferral.Navigate(clicked.Tag.ToString());&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;       &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;}&lt;/span&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/4193594047334486267-935493004159856368?l=ict-engineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ict-engineer.blogspot.com/feeds/935493004159856368/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4193594047334486267&amp;postID=935493004159856368' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4193594047334486267/posts/default/935493004159856368'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4193594047334486267/posts/default/935493004159856368'/><link rel='alternate' type='text/html' href='http://ict-engineer.blogspot.com/2010/10/i-know-this-is-very-basic-topic-but-im.html' title='Building a C# context menu at runtime'/><author><name>g</name><uri>http://www.blogger.com/profile/15711438418975605162</uri><email>noreply@blogger.com</email><gd:image 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-4193594047334486267.post-3364121967578673375</id><published>2010-10-14T15:16:00.004+02:00</published><updated>2010-10-16T22:40:12.606+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='memory leak'/><category scheme='http://www.blogger.com/atom/ns#' term='webbrowser'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>.Net Webbrowser control memory leak</title><content type='html'>If you are wondering why your .net webbrowser controls are drilling your RAM, then this article is for you. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/ieextensiondevelopment/thread/88c21427-e765-46e8-833d-6021ef79e0c8"&gt;http://social.msdn.microsoft.com/Forums/en-US/ieextensiondevelopment/thread/88c21427-e765-46e8-833d-6021ef79e0c8&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Mike_T2E's code did the trick for me.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4193594047334486267-3364121967578673375?l=ict-engineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ict-engineer.blogspot.com/feeds/3364121967578673375/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4193594047334486267&amp;postID=3364121967578673375' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4193594047334486267/posts/default/3364121967578673375'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4193594047334486267/posts/default/3364121967578673375'/><link rel='alternate' type='text/html' href='http://ict-engineer.blogspot.com/2010/10/net-webbrowser-control-memory-leak.html' title='.Net Webbrowser control memory leak'/><author><name>g</name><uri>http://www.blogger.com/profile/15711438418975605162</uri><email>noreply@blogger.com</email><gd:image 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-4193594047334486267.post-5595739935112150655</id><published>2009-10-18T23:22:00.001+02:00</published><updated>2009-10-18T23:22:57.137+02:00</updated><title type='text'>NGN Hacked!</title><content type='html'>&lt;p&gt;Sunday night and I'm casually browsing the net and decided to check up on my mates' golf handicaps. This is what I stumbled on...&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_zrmta3SNusE/StuHJ6Ox-AI/AAAAAAAAAB8/1ItQquPPk_A/untitled%5B3%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" alt="untitled" src="http://lh6.ggpht.com/_zrmta3SNusE/StuHLyr_x0I/AAAAAAAAACA/qV5FljKqy7c/untitled_thumb%5B1%5D.jpg" width="215" height="252" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The National Golf Network website (&lt;a href="http://www.ngn.co.za"&gt;www.ngn.co.za&lt;/a&gt;) was hacked! NGN currently holds the contract to manage golf handicaps for the South African Golf Association. They have been under pressure of late, with rival companies bidding for the soon to be expired contract. This rather embarrassing situation obviously doesn't do their reputation any good.&lt;/p&gt;  &lt;p&gt;I hope the damage is limited to defacing only and that the central handicap database remains untouched. Although, I could do with a lower handicap myself...&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4193594047334486267-5595739935112150655?l=ict-engineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ict-engineer.blogspot.com/feeds/5595739935112150655/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4193594047334486267&amp;postID=5595739935112150655' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4193594047334486267/posts/default/5595739935112150655'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4193594047334486267/posts/default/5595739935112150655'/><link rel='alternate' type='text/html' href='http://ict-engineer.blogspot.com/2009/10/ngn-hacked.html' title='NGN Hacked!'/><author><name>g</name><uri>http://www.blogger.com/profile/15711438418975605162</uri><email>noreply@blogger.com</email><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://lh6.ggpht.com/_zrmta3SNusE/StuHLyr_x0I/AAAAAAAAACA/qV5FljKqy7c/s72-c/untitled_thumb%5B1%5D.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4193594047334486267.post-8668966778110174164</id><published>2009-09-29T09:00:00.001+02:00</published><updated>2009-09-29T09:00:49.256+02:00</updated><title type='text'>Happy Holidays – The Google Trends Experiment</title><content type='html'>&lt;p&gt;We picked up on an interesting trend while playing around with Google Trends today. And to be honest I am not at all surprised with the results…&lt;/p&gt;  &lt;p&gt;We were comparing the search popularity of a few programming languages when I noticed a marked decrease in searches around the holiday periods for all languages. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_zrmta3SNusE/SsGwktkD6PI/AAAAAAAAABs/F-OQhtEhjts/s1600-h/1%5B2%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="1" border="0" alt="1" src="http://lh5.ggpht.com/_zrmta3SNusE/SsGwl3qMDkI/AAAAAAAAABw/QmCO3lZWfaw/1_thumb.png?imgmax=800" width="244" height="175" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Low and behold, what happens when you add Porn to the mix…&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_zrmta3SNusE/SsGwm1SBSII/AAAAAAAAAB0/Pa1rAXkeCfY/s1600-h/2%5B2%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="2" border="0" alt="2" src="http://lh4.ggpht.com/_zrmta3SNusE/SsGwn9Lb19I/AAAAAAAAAB4/YIym9bU8QH8/2_thumb.png?imgmax=800" width="244" height="183" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Now we know what programmers do when they are on leave!   &lt;br /&gt;Get some sun dudes!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4193594047334486267-8668966778110174164?l=ict-engineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ict-engineer.blogspot.com/feeds/8668966778110174164/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4193594047334486267&amp;postID=8668966778110174164' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4193594047334486267/posts/default/8668966778110174164'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4193594047334486267/posts/default/8668966778110174164'/><link rel='alternate' type='text/html' href='http://ict-engineer.blogspot.com/2009/09/happy-holidays-google-trends-experiment.html' title='Happy Holidays – The Google Trends Experiment'/><author><name>g</name><uri>http://www.blogger.com/profile/15711438418975605162</uri><email>noreply@blogger.com</email><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://lh5.ggpht.com/_zrmta3SNusE/SsGwl3qMDkI/AAAAAAAAABw/QmCO3lZWfaw/s72-c/1_thumb.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4193594047334486267.post-653723353349737660</id><published>2009-07-15T14:23:00.001+02:00</published><updated>2009-07-15T14:23:14.295+02:00</updated><title type='text'>Google Adsense now in Rands</title><content type='html'>&lt;p&gt;This would probably mean that you can see your Adsense earning in your local currency wherever you may be. Awesome, just makes it look like so much more. $1 US = R8.15 South African Rand. Now if you were living in Zimbabwe… $1 US = Z$ 442.60 Zimbabwe Dollar!&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4193594047334486267-653723353349737660?l=ict-engineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ict-engineer.blogspot.com/feeds/653723353349737660/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4193594047334486267&amp;postID=653723353349737660' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4193594047334486267/posts/default/653723353349737660'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4193594047334486267/posts/default/653723353349737660'/><link rel='alternate' type='text/html' href='http://ict-engineer.blogspot.com/2009/07/google-adsense-now-in-rands.html' title='Google Adsense now in Rands'/><author><name>g</name><uri>http://www.blogger.com/profile/15711438418975605162</uri><email>noreply@blogger.com</email><gd:image 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-4193594047334486267.post-3455446040163072267</id><published>2009-07-03T10:31:00.001+02:00</published><updated>2009-07-03T10:31:26.521+02:00</updated><title type='text'>Custom Application Deployment through Active Directory</title><content type='html'>&lt;p&gt;I write various custom apps for our SME (Small to Medium Enterprise) to try and make our users’ lives easier. And make mine difficult in the process… I use C# Express Edition 2008 which doesn’t give you the ability to create a install project. You can publish the project but I find it very limiting plus you can’t create an msi package to roll out with Active Directory. &lt;/p&gt;  &lt;p&gt;This got me started on an app to manage distribution of my custom apps better. I created a wizard interface that lets you create a “Project” and a generic remote path (I use the c$ share e.g. \\hostname\c$\projectname\). Next, browse and select the files associated with the project ie. executable, dlls, etc. In my case, I just link to the files in my Visual Studio created project “release” folder. Finally, the app gets a list of domain computers and you can select which hosts to roll out to. All the information is stored in a textfile.   &lt;br /&gt;The main interface lets you select a saved project and verify if the associated files (File.Exists) and hosts (with Ping) are available. If you are happy just click Deploy and Bobs your uncle. The files will copy to the selected hosts and you have the option of creating Desktop and Startup shortcuts. And you can do all this without even having to explain to a user how to run an installation… &lt;/p&gt;  &lt;p&gt;I am not going to publish this app yet purely because its customized for my organisation and I don’t have time to write the app flexible enough. I will however send *edited* source code to anybody that could find it useful, just leave a comment.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4193594047334486267-3455446040163072267?l=ict-engineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ict-engineer.blogspot.com/feeds/3455446040163072267/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4193594047334486267&amp;postID=3455446040163072267' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4193594047334486267/posts/default/3455446040163072267'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4193594047334486267/posts/default/3455446040163072267'/><link rel='alternate' type='text/html' href='http://ict-engineer.blogspot.com/2009/07/custom-application-deployment-through.html' title='Custom Application Deployment through Active Directory'/><author><name>g</name><uri>http://www.blogger.com/profile/15711438418975605162</uri><email>noreply@blogger.com</email><gd:image 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-4193594047334486267.post-4496677656077132588</id><published>2009-07-01T09:40:00.001+02:00</published><updated>2009-07-01T09:46:12.684+02:00</updated><title type='text'>C# Context Menu on ListViewItem</title><content type='html'>&lt;p&gt;The problem when assigning a context menu directly to a ListView control is that the menu show everywhere on the control. This can be quite irritating if you just want it to show when you rightclick on a listviewitem. Below is example code to overcome the problem. Assign a contextmenu to the listview control and create a menuitem. In this example the listview contains a list of network host names/IPs, on rightclick it will show a context menu to browse to the c$ share of the host. I know its not the most elegant solution, but it works. Just note, the menu location offsets may need some tweaking.&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;       private void &lt;/span&gt;lvwHosts_MouseUp(&lt;span style="color: blue"&gt;object &lt;/span&gt;sender, &lt;span style="color: #2b91af"&gt;MouseEventArgs &lt;/span&gt;e)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: #cc001f"&gt;//Check if right clicked on a ListView Item&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: blue"&gt;if &lt;/span&gt;((lvwHosts.SelectedItems.Count != 0) &amp;amp;&amp;amp; (e.Button == &lt;span style="color: #2b91af"&gt;MouseButtons&lt;/span&gt;.Right))&lt;br /&gt;            {&lt;br /&gt;                &lt;span style="color: #cc001f"&gt;//Create a new point relative to form and listview locations + offset&lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Point &lt;/span&gt;mousePoint = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Point&lt;/span&gt;();&lt;br /&gt;                mousePoint.X = &lt;span style="color: blue"&gt;this&lt;/span&gt;.Location.X + lvwHosts.Location.X + e.Location.X + 25;&lt;br /&gt;                mousePoint.Y = &lt;span style="color: blue"&gt;this&lt;/span&gt;.Location.Y + lvwHosts.Location.Y + e.Location.Y + 55;&lt;br /&gt;                &lt;br /&gt;                &lt;span style="color: #cc001f"&gt;//Show context menu &lt;br /&gt;                &lt;/span&gt;cmnBrowse.Show(mousePoint);&lt;br /&gt;                &lt;span style="color: #cc001f"&gt;//Change text of current menu item to relevant path&lt;br /&gt;                &lt;/span&gt;cmnBrowse.Items[0].Text = &lt;span style="color: #17a22d"&gt;@&amp;quot;Browse to \\&amp;quot; &lt;/span&gt;+ &lt;br /&gt;                    lvwHosts.SelectedItems[0].Text + &lt;span style="color: #17a22d"&gt;@&amp;quot;\c$&amp;quot;&lt;/span&gt;;&lt;br /&gt;                &lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: blue"&gt;private void &lt;/span&gt;browseToCToolStripMenuItem_Click(&lt;span style="color: blue"&gt;object &lt;/span&gt;sender, &lt;span style="color: #2b91af"&gt;EventArgs &lt;/span&gt;e)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: blue"&gt;string &lt;/span&gt;path = sender.ToString();&lt;br /&gt;            &lt;span style="color: #cc001f"&gt;//Remove the &amp;quot;Browse to&amp;quot; substring&lt;br /&gt;            &lt;/span&gt;path = path.Remove(0, 10);&lt;br /&gt;            &lt;span style="color: #cc001f"&gt;//Start explorer&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Process&lt;/span&gt;.Start(&lt;span style="color: #13a61b"&gt;&amp;quot;explorer.exe&amp;quot;&lt;/span&gt;,path);&lt;br /&gt;        }&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4193594047334486267-4496677656077132588?l=ict-engineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ict-engineer.blogspot.com/feeds/4496677656077132588/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4193594047334486267&amp;postID=4496677656077132588' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4193594047334486267/posts/default/4496677656077132588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4193594047334486267/posts/default/4496677656077132588'/><link rel='alternate' type='text/html' href='http://ict-engineer.blogspot.com/2009/07/c-context-menu-on-listviewitem.html' title='C# Context Menu on ListViewItem'/><author><name>g</name><uri>http://www.blogger.com/profile/15711438418975605162</uri><email>noreply@blogger.com</email><gd:image 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-4193594047334486267.post-7785042134206741160</id><published>2009-01-27T11:39:00.001+02:00</published><updated>2009-01-27T11:39:31.809+02:00</updated><title type='text'>QoS curveball</title><content type='html'>&lt;p&gt;This is one of those random head scratchers that can frustrate you for a day, and if you are lucky enough to solve the mystery, make you go &amp;quot;What the hell!!??&amp;quot;.&lt;/p&gt;  &lt;p&gt;We have a hybrid VOIP system, which basically connects existing POTS infrastructure to IP Gateways handling inter-branch communication on IP infrastructure. We installed our first pure IP phones at a new branch last week. Unfortunately we had to connect these phones to a very basic switch. The telecomms company involved with the installation gave our IT Dept a call, saying they cannot access the IP phone's web interface from a PC connected on the same switch. Huh? Ping? Nope. Ok try another workstation on the same switch. Success. Huh? Try first workstation again. Nope. WTF!!! Try from a server on another switch at the same branch. Success. Try from the router connected to that same switch. FAIL. Damn....&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_zrmta3SNusE/SX7WR0U5RCI/AAAAAAAAABc/qxS3snm8tVw/com%20problem%5B2%5D.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="132" alt="com problem" src="http://lh3.ggpht.com/_zrmta3SNusE/SX7WSgNqHGI/AAAAAAAAABg/2xsejY1vZHA/com%20problem_thumb.jpg" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;We were baffled. To cut a long story short, I managed to get comms up and running after disabling Layer 2 QoS on the Siemens admin interface.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_zrmta3SNusE/SX7WTgJqDFI/AAAAAAAAABk/-olqTi_aorI/cfg%5B2%5D.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="143" alt="cfg" src="http://lh4.ggpht.com/_zrmta3SNusE/SX7WUfdYreI/AAAAAAAAABo/pI1_3AuBA74/cfg_thumb.jpg" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I dont know how this will affect voice quality yet. In a low volume environment such as ours I'm sure it should be just fine. The other option is of course to buy a proper QoS switch....   &lt;br /&gt;The thing is, I still cant figure out why certain workstations (standard XP Pro) were able to communicate with the IP phone while others couldn't. Maybe someone has can shed some light?&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4193594047334486267-7785042134206741160?l=ict-engineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ict-engineer.blogspot.com/feeds/7785042134206741160/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4193594047334486267&amp;postID=7785042134206741160' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4193594047334486267/posts/default/7785042134206741160'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4193594047334486267/posts/default/7785042134206741160'/><link rel='alternate' type='text/html' href='http://ict-engineer.blogspot.com/2009/01/qos-curveball.html' title='QoS curveball'/><author><name>g</name><uri>http://www.blogger.com/profile/15711438418975605162</uri><email>noreply@blogger.com</email><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://lh3.ggpht.com/_zrmta3SNusE/SX7WSgNqHGI/AAAAAAAAABg/2xsejY1vZHA/s72-c/com%20problem_thumb.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4193594047334486267.post-9012476069777603226</id><published>2009-01-20T22:31:00.001+02:00</published><updated>2009-01-20T22:31:06.312+02:00</updated><title type='text'>ASP.net and AJAX made simple</title><content type='html'>&lt;p&gt;Our practice is just about ready to make the BIG decision on a proposed PACS implementation. So before the PACS tidal wave drowns our little IT Department, I managed to find something interesting to keep me occupied.    &lt;br /&gt;This week I stumbled across a website offering a host of video tutorials on Microsoft ASP.net's AJAX implementation. Now I know very well that this is nothing new, but its still new to me! During my undergrad studies we had a 6 month course on ASP.net which I passed by the skin of my teeth, to this day I still don't know how seeing as though I barely studied for the exam...So my ASP skills is rusty to say the least. &lt;/p&gt;  &lt;p&gt;Luckily Joe Stagner and his team from Microsoft has done an excellent job making it really easy with step by step instructional videos to create rich data driven web apps. Although I am a big fan of Open Source, doing most of my recent web dev in PHP and MySQL, it is still very useful to know what's out there in order to chose which platform best suits your needs.&lt;/p&gt;  &lt;p&gt;I compiled a short list of tools you'll need to get cracking:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&amp;#160;&lt;a href="http://www.microsoft.com/express/download/" target="_blank"&gt;Microsoft Visual Studio Web Developer Express Edition SP1&lt;/a&gt; (includes AJAX extensions bundled with .NET Framework 3.5)&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/express/download/" target="_blank"&gt;Microsoft SQL Server 2005 Express Edition&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.codeplex.com/AjaxControlToolkit" target="_blank"&gt;AJAX Control Toolkit&lt;/a&gt; - Contains controls and extensions.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.asp.net/learn/ajax-videos/" target="_blank"&gt;ASP.NET AJAX Video Tutorials&lt;/a&gt; - Excellent resource make yourself more familiar with the platform.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://asp.net/ajax/ajaxcontroltoolkit/samples/" target="_blank"&gt;Control Samples&lt;/a&gt; - Useful to play around with the functionality.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Have fun!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4193594047334486267-9012476069777603226?l=ict-engineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ict-engineer.blogspot.com/feeds/9012476069777603226/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4193594047334486267&amp;postID=9012476069777603226' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4193594047334486267/posts/default/9012476069777603226'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4193594047334486267/posts/default/9012476069777603226'/><link rel='alternate' type='text/html' href='http://ict-engineer.blogspot.com/2009/01/aspnet-and-ajax-made-simple.html' title='ASP.net and AJAX made simple'/><author><name>g</name><uri>http://www.blogger.com/profile/15711438418975605162</uri><email>noreply@blogger.com</email><gd:image 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-4193594047334486267.post-303813535395786793</id><published>2009-01-16T14:01:00.004+02:00</published><updated>2009-01-16T14:37:27.255+02:00</updated><title type='text'>Easy SMS integration for your application</title><content type='html'>&lt;p&gt;&lt;a href="http://www.vodazone.co.za/" target="_blank"&gt;Vodacom Developer Zone&lt;/a&gt; has an awesome product suite to integrate SMS capability into your applications. And its so easy to use, and thats what I'm all about ;)&lt;/p&gt;  &lt;p&gt;Using their common gateway you can send SMSs via:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;HTTP/S &lt;/li&gt;    &lt;li&gt;XML &lt;/li&gt;    &lt;li&gt;COM Object &lt;/li&gt;    &lt;li&gt;FTP &lt;/li&gt;    &lt;li&gt;SMPP &lt;/li&gt;    &lt;li&gt;SMTP &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I needed to write a C# app exposing the COM Object to send our patients reminders about appointments, seeing as though our current RIS is archaic and does not integrate SMSs. This quickly grew to three-application suite including a version to send account payment advices, with my Comms Edition facilitating easy internal staff communications through a group manager. See image below (Click to enlarge):&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_zrmta3SNusE/SXB3CteZTTI/AAAAAAAAABM/RbSDb5azkSw/sms%5B6%5D.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="164" alt="sms" src="http://lh5.ggpht.com/_zrmta3SNusE/SXB3DlTeNNI/AAAAAAAAABY/Wd5JcVEOW6w/sms_thumb%5B2%5D.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The SMS classes support a wide variety of features including batch sending and delivery reports. SMS credits are purchased through Clickatell for about US$0.03 per SMS (33 South African cents), with discounts applicable on larger bundle purchases. &lt;/p&gt;  &lt;p&gt;And the code? Easy of course!  &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;1. Declare the SMS object: &lt;/p&gt;  &lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 93.61%; cursor: text; color: #f4f4f4; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; height: 42px; background-font-family: consolas, 'Courier New', courier, monospace"&gt;   &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 60.6%; color: #f4f4f4; border-top-style: none; line-height: 12pt; padding-top: 0px; border-right-style: none; border-left-style: none; height: 25px"&gt;&lt;span style="color:#000000;"&gt;SMS_COMAPILib.SMS oSMS =&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt;&lt;span style="color:#000000;"&gt; SMS_COMAPILib.SMS();&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;style type="text/css"&gt;&lt;br /&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt; font-size: small;&lt;br /&gt; color: black;&lt;br /&gt; font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt; background-color: #ffffff;&lt;br /&gt; /*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt; background-color: #f4f4f4;&lt;br /&gt; width: 100%;&lt;br /&gt; margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;style type="text/css"&gt;&lt;br /&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt; font-size: small;&lt;br /&gt; color: black;&lt;br /&gt; font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt; background-color: #ffffff;&lt;br /&gt; /*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt; background-color: #f4f4f4;&lt;br /&gt; width: 100%;&lt;br /&gt; margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;p&gt;2. Send the SMS: &lt;/p&gt;&lt;div    style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px;  padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 93.72%; cursor: text;  max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; height: 56px; background-font-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:#f4f4f4;"&gt;&lt;br /&gt; &lt;pre   style="padding-right: 0px; padding-left: 0px;  padding-bottom: 0px; margin: 0em; overflow: visible; width: 83.85%;  border-top-style: none; line-height: 12pt; padding-top: 0px; border-right-style: none; border-left-style: none; height: 23pxfont-size:8pt;color:#f4f4f4;"&gt;&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; &lt;span style="color:#000000;"&gt;msgID = oSMS.SendMsg&lt;/span&gt;(&lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;&lt;span style="color:#000000;"&gt;, smsNow, cellNow);&lt;/span&gt; &lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;The boolean states whether to use your session id, &lt;strong&gt;smsNow&lt;/strong&gt; is the message and &lt;strong&gt;cellNow&lt;/strong&gt; is the mobile number. The method returns a MessageID handy to generate a delivery report.&lt;/p&gt;&lt;p&gt;3. Get delivery report:&lt;/p&gt;&lt;div    style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px;  padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 96.35%; cursor: text;  max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; height: 59px; background-font-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:#f4f4f4;"&gt;&lt;br /&gt; &lt;pre   style="padding-right: 0px; padding-left: 0px;  padding-bottom: 0px; margin: 0em; overflow: visible; width: 99.11%;  border-top-style: none; line-height: 12pt; padding-top: 0px; border-right-style: none; border-left-style: none; height: 31pxfont-size:8pt;color:#f4f4f4;"&gt;&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; &lt;span style="color:#000000;"&gt;queryResult = oSMS.QueryMsg(msgID, SMS_COMAPILib.eSMSAPIorCLI_ID.SMS_API_ID);&lt;/span&gt; &lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4193594047334486267-303813535395786793?l=ict-engineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ict-engineer.blogspot.com/feeds/303813535395786793/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4193594047334486267&amp;postID=303813535395786793' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4193594047334486267/posts/default/303813535395786793'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4193594047334486267/posts/default/303813535395786793'/><link rel='alternate' type='text/html' href='http://ict-engineer.blogspot.com/2009/01/easy-sms-integration-for-your.html' title='Easy SMS integration for your application'/><author><name>g</name><uri>http://www.blogger.com/profile/15711438418975605162</uri><email>noreply@blogger.com</email><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://lh5.ggpht.com/_zrmta3SNusE/SXB3DlTeNNI/AAAAAAAAABY/Wd5JcVEOW6w/s72-c/sms_thumb%5B2%5D.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4193594047334486267.post-1652472443322505135</id><published>2009-01-06T16:20:00.002+02:00</published><updated>2009-01-08T09:04:27.793+02:00</updated><title type='text'>Agfa Impax Demo a Hit</title><content type='html'>&lt;p&gt;The PACS market in South Africa is growing quite steadily, and we should see a lot more practices go digital in the near future. My exposure to enterprise level PACS software is limited to be honest. I have worked with Conquest as well as &lt;a href="http://www.clearcanvas.ca" target="_blank"&gt;ClearCanvas&lt;/a&gt;, the latter being a very promising open source project. Read more on &lt;a href="http://pacsworld.blogspot.com/" target="_blank"&gt;PACSWorld&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;Our practice recently got Agfa's Impax 6.3.1 PACS server on demo for a month. We are still on analog equipment for the most part. I was hooked from day one. The configurability is mindblowing, the interface easy to use and the administration is a piece of pie!Some of the features I like:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;A specific user's settings will &amp;quot;follow&amp;quot; that user on a per modality basis. In other words, if I change my toolsets for MRI's today at a specific workstation, those exact settings will apply on any other workstation I log into&lt;/li&gt;    &lt;li&gt;Drag and drop tool configurations&lt;/li&gt;    &lt;li&gt;User and group manager is very intuitive and extensive&lt;/li&gt;    &lt;li&gt;The toolset available to radiologists and referring physicians is huge&lt;/li&gt;    &lt;li&gt;Security includes LDAP (Active Directory) account mapping&lt;/li&gt;    &lt;li&gt;Image streaming is pretty efficient&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I will add some more items to this list as I go along&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4193594047334486267-1652472443322505135?l=ict-engineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ict-engineer.blogspot.com/feeds/1652472443322505135/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4193594047334486267&amp;postID=1652472443322505135' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4193594047334486267/posts/default/1652472443322505135'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4193594047334486267/posts/default/1652472443322505135'/><link rel='alternate' type='text/html' href='http://ict-engineer.blogspot.com/2009/01/agfa-impax-demo-hit.html' title='Agfa Impax Demo a Hit'/><author><name>g</name><uri>http://www.blogger.com/profile/15711438418975605162</uri><email>noreply@blogger.com</email><gd:image 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-4193594047334486267.post-3573699626685970508</id><published>2009-01-05T10:13:00.003+02:00</published><updated>2009-01-05T10:20:16.738+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Network'/><category scheme='http://www.blogger.com/atom/ns#' term='OSPF'/><category scheme='http://www.blogger.com/atom/ns#' term='RouterOS'/><category scheme='http://www.blogger.com/atom/ns#' term='MikroTik'/><category scheme='http://www.blogger.com/atom/ns#' term='Cisco'/><title type='text'>OSPF integration on Cisco and MikroTik RouterOS</title><content type='html'>&lt;p&gt;A while ago our IT Department implemented a wireless WAN solution to replace the Diginet fixed line infrastructure we had. The wireless equipment includes &lt;a href="http://www.poynting.co.za/" title="Poynting Antennas"&gt;Poynting&lt;/a&gt; antennas and &lt;a href="http://www.mikrotik.com/"&gt;MikroTik&lt;/a&gt; router boards running their RouterOS software. The bandwidth we getting is roughly 20-30 Mbps, as opposed to 64/128 Kbps we had on fixed line...(yeah I know!!). The reality of living in South Africa is that bandwidth is pretty damn expensive as one company owns the monopoly. Hopefully Neotel will be challenging that soon.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Anyway back to the topic. On completion of the wireless project our Cisco and RouterOS routing tables were a crazy mixture of EIGRP and static routes. To solve this issue I decided to merge all our routing to OSPF as both platforms support it, and its way better than RIP. It was a leap of faith as I have a lot of experience with Cisco but I have never done a multi-vendor implemention.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;To my surprise it was a walk in the park! A couple of config lines and OSPF started doing its thing. The great thing about using Winbox with RouterOS is that you can see inactive routes as they appear in the routing table. This allowed me to verify that all the OSPF routes were correct before disabling the static routes.We now have a scalable network with dynamic fail-over and little administrative overhead. I added some screenshots and the basic Cisco OSPF config, but if you need any advise on a similar project I will be glad to assist where I can.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;b&gt;#Cisco OSPF Config&lt;/b&gt;&lt;br /&gt;router ospf 100&lt;br /&gt;log-adjacency-changes&lt;br /&gt;network 192.168.1.0 0.0.0.255 area 0&lt;br /&gt;network 192.168.100.0 0.0.0.3 area 0&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;p&gt;#RouterOS config with Winbox&lt;/p&gt;&lt;/b&gt;&lt;br /&gt;&lt;p&gt;&lt;img src="http://img134.imageshack.us/img134/812/ospf1og4.jpg" alt="ospf1.JPG" height="371" width="701"/&gt;&lt;img src="http://img360.imageshack.us/img360/1580/ospf2pc6.jpg" alt="ospf2.JPG" height="370" width="702"/&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4193594047334486267-3573699626685970508?l=ict-engineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ict-engineer.blogspot.com/feeds/3573699626685970508/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4193594047334486267&amp;postID=3573699626685970508' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4193594047334486267/posts/default/3573699626685970508'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4193594047334486267/posts/default/3573699626685970508'/><link rel='alternate' type='text/html' href='http://ict-engineer.blogspot.com/2009/01/ospf-integration-on-cisco-and-mikrotik.html' title='OSPF integration on Cisco and MikroTik RouterOS'/><author><name>g</name><uri>http://www.blogger.com/profile/15711438418975605162</uri><email>noreply@blogger.com</email><gd:image 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-4193594047334486267.post-1797663978976725753</id><published>2008-12-30T12:18:00.008+02:00</published><updated>2008-12-31T12:30:53.301+02:00</updated><title type='text'>Brilliant Ajax Calendar</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_zrmta3SNusE/SVn5LyKr3AI/AAAAAAAAAAU/f3_baKxWcPc/s1600-h/cal.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 249px;" src="http://2.bp.blogspot.com/_zrmta3SNusE/SVn5LyKr3AI/AAAAAAAAAAU/f3_baKxWcPc/s320/cal.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5285529618536455170" /&gt;&lt;/a&gt;&lt;br /&gt;I am developing an in-house PHP leave scheduler and needed a datepicker /calendar control.&lt;div&gt;My Google searches brought me to &lt;a href="http://dev.base86.com/scripts/vista-like_ajax_calendar_version_2.html"&gt;Vista-like AJAX Calendar Version 2&lt;/a&gt; and I must say its by FAR the best one if have ever come across. Looks amazing, very easy to use and extremely customizable, even for a PHP beginner such as myself. Well done to the developers!!!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;One thing I have to mention, initially I ran across a problem where the dates did not display correctly. This was caused by incorrect IIS user rights, so if you run into similar problems just make sure your rights are correct (iwam/iusr).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Oh and please make sure you have declared the html namespace because it changes the way your browser renders your page. To be very honest I have never paid much attention to it, untill this morning when I realised IE7 is way more sensitive than Chrome!!!&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/4193594047334486267-1797663978976725753?l=ict-engineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://dev.base86.com/scripts/vista-like_ajax_calendar_version_2.html' title='Brilliant Ajax Calendar'/><link rel='replies' type='application/atom+xml' href='http://ict-engineer.blogspot.com/feeds/1797663978976725753/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4193594047334486267&amp;postID=1797663978976725753' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4193594047334486267/posts/default/1797663978976725753'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4193594047334486267/posts/default/1797663978976725753'/><link rel='alternate' type='text/html' href='http://ict-engineer.blogspot.com/2008/12/brilliant-ajax-calender.html' title='Brilliant Ajax Calendar'/><author><name>g</name><uri>http://www.blogger.com/profile/15711438418975605162</uri><email>noreply@blogger.com</email><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/_zrmta3SNusE/SVn5LyKr3AI/AAAAAAAAAAU/f3_baKxWcPc/s72-c/cal.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4193594047334486267.post-5233672940689050155</id><published>2008-11-04T18:01:00.002+02:00</published><updated>2008-11-04T18:19:13.397+02:00</updated><title type='text'>Faulty Network Cabling</title><content type='html'>I spent most of my Monday night with our network cabling contractors trying to fix one of the strangest networking issues i have ever experienced. We ran 5 points to a new office, using cabling supplied by a company called &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Yodata&lt;/span&gt; we never used before. After the installation, our contractors tested the points as per usual and everything seemed fine. While they packed up and left, myself and a &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_1"&gt;colleague&lt;/span&gt; moved 2 workstations to their new locations, only to find Windows complaining that the network cable is unplugged... After more testing (the cable tester only tests continuity) we eventually figured out the (brand new out of the box) cable is completely poked. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I still don't know exactly what why we dont get any comms across, tonight we are installing new cabling. That works.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4193594047334486267-5233672940689050155?l=ict-engineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ict-engineer.blogspot.com/feeds/5233672940689050155/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4193594047334486267&amp;postID=5233672940689050155' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4193594047334486267/posts/default/5233672940689050155'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4193594047334486267/posts/default/5233672940689050155'/><link rel='alternate' type='text/html' href='http://ict-engineer.blogspot.com/2008/11/faulty-network-cabling.html' title='Faulty Network Cabling'/><author><name>g</name><uri>http://www.blogger.com/profile/15711438418975605162</uri><email>noreply@blogger.com</email><gd:image 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-4193594047334486267.post-3290131465793649724</id><published>2008-11-03T14:34:00.007+02:00</published><updated>2008-11-03T14:56:10.966+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='array list'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><category scheme='http://www.blogger.com/atom/ns#' term='remove duplicates'/><title type='text'>How to: Remove Duplicates from C# ListBox</title><content type='html'>&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;i must admit i quite a lazy coder so if i can find a method online that i can bend to my will im stoked. every now and again i have to write my own unfortunately...&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;this is a simple snippet to remove duplicates from a ListBox in C# using an ArrayList. i run this method everytime i add new items.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;use it, dont use it....&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 102, 255);"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;private &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 102, 255);"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;void &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;CheckDuplicates()&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; {&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;            int r = ListBox.Items.Count;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;            ArrayList newList = new ArrayList();&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;            //Load all Items into temp array&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;           string[] temp = new string[r];&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;            for (int i = 0; i &lt; r; i++)&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;            {&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;                temp[i] = ListBox.Items[i].ToString();&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;            }&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;            //Add unique items to new ArrayList&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;            foreach (string ts in temp)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;            {&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;                if (!newList.Contains(ts))&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;                {&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;                    newList.Add(ts);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;                }&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;            }&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;            ListBox.Items.Clear();&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;            foreach (string ns in newList)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;            {&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;                ListBox.Items.Add(ns.ToString());&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;            }&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  }&lt;/span&gt;&lt;/span&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/4193594047334486267-3290131465793649724?l=ict-engineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ict-engineer.blogspot.com/feeds/3290131465793649724/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4193594047334486267&amp;postID=3290131465793649724' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4193594047334486267/posts/default/3290131465793649724'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4193594047334486267/posts/default/3290131465793649724'/><link rel='alternate' type='text/html' href='http://ict-engineer.blogspot.com/2008/11/how-to-remove-duplicates-from-c-listbox.html' title='How to: Remove Duplicates from C# ListBox'/><author><name>g</name><uri>http://www.blogger.com/profile/15711438418975605162</uri><email>noreply@blogger.com</email><gd:image 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-4193594047334486267.post-8705532761160287778</id><published>2008-11-03T12:35:00.003+02:00</published><updated>2008-11-03T14:21:27.892+02:00</updated><title type='text'>First Post</title><content type='html'>hi&lt;div&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;ive&lt;/span&gt; been threatening to start a blog for a while now, so I finally took the leap today.&lt;/div&gt;&lt;div&gt;the reason &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;im&lt;/span&gt; doing this is mainly to post interesting problems and solutions i encounter, and if i can help one guy out there stuck on the same &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;arb&lt;/span&gt; problem i would be stoked :)&lt;/div&gt;&lt;div&gt;in my line of work as an IT professional im required to "engineer" quite a number of strange IT solutions, hopefully someone can benefit from my experience.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;i know my way around networks pretty well, and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;im&lt;/span&gt; a semi skilled C# developer so most of my posts will be in these fields.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;k im on my way to lunch, ill start adding some content soon.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4193594047334486267-8705532761160287778?l=ict-engineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ict-engineer.blogspot.com/feeds/8705532761160287778/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4193594047334486267&amp;postID=8705532761160287778' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4193594047334486267/posts/default/8705532761160287778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4193594047334486267/posts/default/8705532761160287778'/><link rel='alternate' type='text/html' href='http://ict-engineer.blogspot.com/2008/11/first-post.html' title='First Post'/><author><name>g</name><uri>http://www.blogger.com/profile/15711438418975605162</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>
