tag:blogger.com,1999:blog-15653738257402594692024-03-18T03:47:52.545-06:00Slick ITIT Made EasyChokdiihttp://www.blogger.com/profile/02880211667247259820noreply@blogger.comBlogger121125tag:blogger.com,1999:blog-1565373825740259469.post-77029368831186822142017-08-12T23:12:00.001-06:002017-08-12T23:12:44.323-06:00Windows 10 Space Issues<p>After a couple of years of being out in the wild, Windows 10 is finally coming into its own. I have a lot of mixed feelings about the OS overall to be honest, and I do feel that Microsoft is officially using its install base as guinea pigs for their own personal debugging as the OS just doesn’t feel as stable as past iterations of Windows, but with all that being said Windows 10 is slowly moving into a position of dominance. As with other versions of windows, Microsoft has moved to deploying large updates with what is essentially an image of the OS and migrating settings into it and with that one will notice large chunks of space disappearing from their SSD unexpectedly. </p> <p>Just recently I popped open my drive and noticed a nice hearty blue line showing a nice plump C:\ drive. </p> <p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsbT9UK-cnyX7BCU8D3swDubWC-YrMebikSjk5ELTzuhw9e8bgei1f-7NGjqhR-odgbrYP39zgRt4uHYf2w6XBzR0m6uytm4RfE0_k31tHQLqgICY_yGtnZSFl7XdY6ha65RXOnoLIW3M/s1600-h/image3"><img width="634" height="117" title="image" style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" alt="image" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgR18sEBwuIRITdH4taJtKbZvndAh2sdxQvJR6UOXtJQVrKPOw6Vnnii-938ttELTDuaZbw_l7UqH88p4AiULNn3AkuDCxf6Dys77GFt0_7otVSHm23mgIMqtPZk7g6AQQFEHrg00twe4I/?imgmax=800" border="0"></a></p> <p>I keep tabs on my drives, and needless to say its rather annoying to see a full 18 Gbs of space disappear overnight. Of course I knew that it was an update, but realized that many people probably do wonder where their space has gone and what they can do about it. Looking below, one can see a windows.old file. This is where the windows update has stored your old OS as the new update image was deployed. It is also this folder that allows one to roll back an update, so please keep that in mind if you are thinking about getting rid of this. </p> <p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJip8cTr4IaCsPyCJp0VegHVe4E9K5yEE-3aQ8lSv80aDHOcIYk8TUTplYF4hLJPaSPqj304JauLe1wDkTCa8GOmiyLGRruVpCOJdzBvf_XEZu7n14N4SAo4rfLNNfrsZZfOrcQqDz3Gs/s1600-h/image7"><img width="177" height="83" title="image" style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" alt="image" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipAvJs6iilZzT9l9tfNJx11CuEj9uyF-rnUHVtASk5a5fh3EZUm_JoPCbcELQne8UvUIAwAM0-mOZeDhL7Ohg8_hDMNVwxw9Rc4vCgugkhHveeGmAHtm5psIWx9bXoBPD9efV09Bhgh4k/?imgmax=800" border="0"></a></p> <p>So at first glance, a person might think they can simply delete this file, but since this folder contains operating systems files, Windows will prevent you from deleting this and you will get a message like: Folder Access Denied<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgzztp5h00TKbJFZEAoMMJy-JkV5SPP2cWrjW1aSP6EUbT7bRC05N4SNYCvH7QXhh-QJ62uHKme14jL65UBkVnTWuwAnRtxQfTOsyQ2W-ebQXhEAGspnURplpFw8w3mzsnfKnoHd2vdcE/s1600-h/image11"><img width="375" height="217" title="image" style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" alt="image" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmAcc4cr1reToPqa2rCBv_vsUH1ralbe-gBn0u2ehXfR5PlSQu1E7wpXg4mSGs2SmKr9OgbcUF8_VW6p9m4jyyZwmCl9qdxx6JJbnY_X620_8Z1lCvDz2ekDz6bp3u2YIMDJZohvIHn6g/?imgmax=800" border="0"></a></p> <p>Now, you could go ahead and just add yourself to the permissions and propagate them etc. That would be rather time consuming though and you will often still have issues with files that seemingly don’t delete and “linger”. Instead, what you will want to do is use disk cleanup (start – Windows Administrative Tools – disk cleanup) and then select Clean Up System Files</p> <p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnfzm6ts_kxHY9beCoNoWTp_RcoHg9dZKmlRl5rj1BhwOOFUzuUTkTnGfvA46yplE1bus10UwBD1vphUw3gF1FhjI13v17uYNPUnc9xmXw0tS2xcr87pcGvxiVicbuhjkxMWSaS5vq__k/s1600-h/image25"><img width="335" height="420" title="image" style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" alt="image" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwAL3a0DfWQAXc62pnCjpDdvWcxudGlvDb1ONWi_Q3n3DOAUYpCODa02o_mXHc-p12GxSek9I43V-vJWwCYuEZJhZGEjNruJfnhkOXiUgkmY-bwCPTsz1m9SNI6we9s__JYjNqgXd0AYY/?imgmax=800" border="0"></a></p> <p>Choose Previous Windows Installations.</p> <p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwqT4MeEXwp7OZ3dEGzhdEOV2A0Anr41kt-loUubHyNMhaQq-_L0vSKXFQFq__eBdnawwb_Vt3hsyUe5VERx1R8BT91rY0RZtPSOqtd5bCufP2un7uBwtLR-XRhpKvTAyaj-B8-LQFC6A/s1600-h/image20"><img width="338" height="53" title="image" style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" alt="image" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZr6iZrJX0bzuFSGGXMez-shzodQJAXZyQY9W8XFvoagpJSwPp5PTjo5KJ-0I8LK7lQyF2El6dzdltjhSyiacd9Q04YivJhYHkb8IM4unUZxkQAgtSnTAwjzqaoRGYVfk8CJ0q9qaUDRo/?imgmax=800" border="0"></a></p> <p>And then hit OK. Follow the prompts. The utility will prompt you to say yes to not being able to undo the update. If you are sure you want to do this, go ahead and hit yes. <p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhB9_ZkTbzupJ69-BMc69hsOmvu98FjPgegMxFgosjUOT_5EXg_UKjJed0H-HdTWMH052XUAiwUh53tfeRjqQwjpmZdmUGycKab6NmtmZq9A-T9pFSVIlfFxSw5fEXBkyvdN_pwCmhu9c0/s1600-h/image24"><img width="335" height="157" title="image" style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" alt="image" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpvF0YZUTsOpAU_MEdRvAHIfIbsO_9DDyWWjn9Y3TYPHFLin_XVji_1x66JHYqVHWfo8427FElq3Abm_H7sSLS8jUIVt9x21a6wAy7d1PFtiVrwE7-yKsJRv1eGXk39lKiDhse4bFwf00/?imgmax=800" border="0"></a></p> <p>It’ll take a few minutes, and soon you will have reclaimed your SSD and will have deleted Windows.old . </p> <p><br></p> <p>Enjoy</p> <p>Matt</p>Chokdiihttp://www.blogger.com/profile/02880211667247259820noreply@blogger.com9tag:blogger.com,1999:blog-1565373825740259469.post-80210148031758732972016-04-15T09:05:00.001-06:002016-04-15T09:05:07.261-06:00Crossed OWA Sessions<p>OWA has become one of the most coveted features in any Exchange installation. The ability to safely and securely access email from any web browser is hugely convenient and loved by all. However, the backend behind OWA, while normally straightforward, can present some configuration challenges for large organizations. Seemingly innocuous settings on load balancers, can have a huge impact on the operation of OWA, which as a web service is performing a bit of magic in delivering mail from multiple mailbox servers to users. </p> <p>One particularly problematic issue is when using a load balancing infrastructure in front of OWA to balance users across multiple CAS servers. Under certain circumstances, load balancers can actually cause OWA sessions to be crossed so that users log in and briefly see another user’s mailbox contents for a finite but definitely tangible amount of time. While the breach may not be long, it is real and in some cases the errant user will even bee able to navigate the mailbox of the other user. </p> <p>The issue arises in the way many load balancers cache content to improve performance in website loads and will be more prominent with large deployments with thousands of users rather than small deployments where caching of content will be at a lower volume. The load balancer in these cases actually caches chunks and sections of users mailboxes and the links etc, contained therein are logged in on the CAS server itself, so the load balancer, in an attempt to speed up the load time, will deliver another users content to a session without regard to the fact that the content in question needed to be authenticated to be accessed. Users will often not realize until it is too late, that they are in another users mailbox thanks to the malfunctioning load balancing infrastructure. Its easy to see how this scenario is problematic. </p> <p>I haven’t seen this specific scenario addressed clearly and in plain language with most load balancers, and is for that reason that this post exists. Many load balancers will have a list of optimal settings, but its easy to see how these can be overlooked by administrators, who are used to deploying load balancing infrastructure for other static content and don’t realize the potential for these crossed sessions in OWA. </p> <p>The solution, and this applies to nearly any load balancer out there, is simple. Any settings related to caching content of sessions or optimization needs to be disabled unless the load balancer you are working on has specifically stated that it has integrated settings for OWA. Ensure that no part of the OWA sessions are being cached on the device, and if you had it enabled and now need to disable, run whatever command is necessary to flush the cache after you are done. </p> <p>Hope this post can help save someone hours of troubleshooting this issue as it is obscure. </p> <p>Cheers. </p>Chokdiihttp://www.blogger.com/profile/02880211667247259820noreply@blogger.com5tag:blogger.com,1999:blog-1565373825740259469.post-29532124443137509122013-10-12T21:31:00.001-06:002013-10-13T01:00:35.666-06:0070-410 Installing and Configuring Windows Practice Questions<p>So I have recently undertaken the endeavour to upgrade my Microsoft cert and attain the full MCSE Server 2012 Server Infrastructure designation. As part of this, I thought it would be helpful to our loyal readers if I included some tips tricks and practice questions that I find useful along the way. With that, please find the first set of 5 unveiled here. What better project to take for a rainy Vancouver winter that to brush up on all of my IT skills.</p> <p>Hope you find them useful!</p> <p>Lets get started:</p> <p>1. Of the following, which of these methods is the primary method for transmitting IPv6 traffic across an IPv4 network.</p> <blockquote> <p>a. Subnetting</p> <p>b. Extraction</p> <p>c. Supernetting</p> <p>d. Tunneling</p></blockquote> <p>2. Which of the following tools would you use to bulk add and later modify active directory objects</p> <blockquote> <p>a. LDAP Data Interchange Format Directory Exchange (LDIFDE.exe)</p> <p>b. Comma-Separated Value Directory Exchange (CSVDE.exe)</p> <p>c. netdom.exe</p> <p>d. djoin.exe</p></blockquote> <p>3. Which powershell command is correct in syntax and function for adding computer objects in active directory. </p> <blockquote> <p>a. new-ADComputer –Name <computer name> –path <distinguished name></p> <p>b. new activedirectoryobject –computer <name> –distinguishedpath <path></p> <p>c. add-ADComputer –Name <computer name> –path <distinguished name></p> <p>d. netadd computer –ADForest –name</p></blockquote> <p>4. Which tool is best suited for deploying settings in a security template to all computers in an AD DS domain.</p> <blockquote> <p>a. Security Templates snap-in</p> <p>b. Group Policy Object Editor</p> <p>c. Group Policy Management Console</p> <p>d. Active Directory Users and Computers </p></blockquote> <p>5. To create a passthrough disk in Hyper-V, the disk must be taken _____________.</p> <p> </p> <p>Answers:</p> <p>1. d 2. a 3. a 4. c 5. offline</p> Chokdiihttp://www.blogger.com/profile/02880211667247259820noreply@blogger.com5tag:blogger.com,1999:blog-1565373825740259469.post-35228582661682029302013-10-12T13:25:00.001-06:002013-10-12T13:37:17.505-06:00Hyper-V on Windows Server 2012<p>Enterprise IT managers and techs all over have become increasingly familiar with names such as Xen, Open Xen, KVM, Virtual Box, VMWare and Hyper-V as the virtualization revolution swings in. With buzz words floating around like Public Cloud, Private Cloud, Hybrid Cloud, IaaS and PaaS, it is no wonder that many professionals don’t know which way to turn for their virtualization needs. In the past, VMWare was definitely the dominant player in the data center whereas the market share for SMB’s has been fragmented with those very same names above. While Hyper-V has always had a good reputation, their has been a fierce battle for supremacy in the virtualization market and the stakes are high. Not unlike a Bill O’Reilly vs. Jon Stewart debate, advocates of both platforms come out swinging when the virtues of either is questioned. I have never hidden my preference for Hyper-V and with Server 2012 the *LOVE* only grows stronger. Read on for all of the goodness. <p>So what is it exactly that now puts Hyper-V at the front of the pack? Quite simply the most convincing of all arguments is the economics one. Hyper-V now offers a built-in feature set that is robust enough for the data center and flexible enough for even a small business at a cost that is significantly less than VMWare. The bang-for-the-buck factor is undeniable and frankly has brought a new level of fervor and excitement to the virtualization realm. Going with Hyper-V means you might have an extra 20K in your pocket for that IT department barbecue, camp out and paintball weekend you always wanted, or if you are in one of those countries where extra money in the budget means a real party – knock yourself out! <p>While I don’t want to sound like I am the script writer for the latest ShamWow commercial, I can say honestly that there is likely not a business in existence that couldn’t benefit from some of the new features that have been bought to the table with Hyper-V’s latest iteration. <p>At a glance, we have:<br>-multiple and simultaneous VM migration and failover<br>-live migration of storage<br>-Hyper-V Replica for entire site replication and failover<br>-Hyper-V extensible switch<br>-Support for high availability using non-shared storage and notably SMB<br>-Improved NUMA memory management <p>...and many many more under-the-hood improvements to make Hyper-V more performant, robust, and reliable. All of this is essentially included with your Windows server licence and with the Windows Server 2012 Datacenter edition you get unlimited virtualization rights. No longer is Hyper-V just cheaper, it is often a cut above VMWare. It is also something that is designed according to Windows style guidelines and is intuitive and easy to manage for IT support staff already familiar with Windows server. (If they turn this into a Metro App, I will pull the article immediately. Please tell me why we need the ability to play Angry Birds on a server designed to be managed remotely from Powershell?) Anyway, the switch to server 2012, even in a data center environment, is compelling for sure. <p>Anyway, as I play with more of these features in the lab, you can look forward to more insight on each. I look forward to sharing this all with you in the form of writeups and training videos. <p>Cheers! <p>Matt</p> Chokdiihttp://www.blogger.com/profile/02880211667247259820noreply@blogger.com4tag:blogger.com,1999:blog-1565373825740259469.post-87212107565959276192012-08-08T21:23:00.001-06:002012-08-08T21:23:52.357-06:00Windows 8–A Catastrophe or Sheer Genius?<p>Well, here we are back again and just in time as we are on the cusp of the next Windows revolution? Or are we? Others are voicing some concerns and seem to feel that we may instead be on the cusp of the next Windows revolt? So, where do we really stand with all of this? Let’s take an objective look…..</p> <p>But first, a small digression. As of late, I find myself apologizing more that writing on the blog as updates became more and more scarce. I hoping to improve that a bit, so hopefully more content will be appearing on here on a regular basis. Now, on to the good stuff. </p> <p>Windows 8 is surely going to be the most controversial Windows release of all time. That is clear. While many will point to major changes in Windows 95, Windows XP, and Vista, never before has the UI been revamped in such a radical and unfamiliar way. Undoubtedly, many consumers will be left somewhat bewildered when they try and perform routine tasks like “opening My Computer” or “launching the Control Panel” The fact is, the operating system now relies on some fairly subtle gestures to perform some of these routine actions. Admittedly, when I installed the Developer Preview, I actually called up Paul and we both had simultaneous and mutually identical reactions and with a gasp we exclaimed “What have they done?” The truth is, I hated it when I first started using it and quickly uninstalled and replaced it with Ubuntu – which at the time was looking like it might be my next new OS. At this point I let my interest in Windows 8 sit, digest, regurgitate and I thought evaporate. Whew….glad it went away. </p> <p>News of the consumer preview was to follow. I had to check it out. I installed it on a Dell Latitude D620 (read – old hardware). The computer booted and it was sluggish and performing poorly. The screen resolution was terrible. I knew that the video driver was obviously and issue, but this particular model of Dell only has Windows XP drivers available from Dell. My attempts to force those drivers onto the system resulted in all sorts of system errata. Windows update did not return any results for a good driver either. I then went to Windows catalog and began the hunt for a driver with a similar PCI dev/hardware Id. After some hunting, I found a Windows 7 driver. To my delight, this installed. Alright, reboot time….</p> <p>As the machine spun down, I was expecting the old laptop to groan under the weight of the new and beta quality OS. Much to my surprise, the OS booted in a fashion that was shocking to say the least. It was as if the laptop now had an SSD drive installed it booted so fast. Was this for real? </p> <p>The speed of Windows 8, truthfully, is nothing less than phenomenal. Despite fumbling my way around the new desktop, it was shocking to see the speed at which applications were launching. Anecdotally, this laptop, despite its age, was orders of magnitude faster than Windows 7, Windows XP, and the Ubuntu install running on it previously. Magnificent. But speed alone wasn’t going to win me over. Lucky for me a true test for the OS was about to present itself and even better yet, the test subject was a non-geek, common salary man. </p> <p>To be continued……. </p> Chokdiihttp://www.blogger.com/profile/02880211667247259820noreply@blogger.com51tag:blogger.com,1999:blog-1565373825740259469.post-49274372970266262972011-10-12T21:03:00.001-06:002011-10-12T21:17:43.527-06:00Hot New iPhone Game – Gem Shock<p> </p> <p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhv7f_hCSplhuqTD9ecMph5brVKNwxNn4G7IjMxix0B6rm734OjulNa9C3nGKiQFU21Vv_h05wJWek3ELoyqBIxWhffpQUN_i8SeQkbB6yMR1qvn9SHZZisJS780uAoIifBI0Zr2_qsdwA/s1600-h/title%25255B2%25255D.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="title" border="0" alt="title" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLv5PU7MLyPTOmRXKa9eFh5U2K1CHYjefuWrxmYZRKjQLxrZpwlzsmByhrmXViT0GfLhDhQSLWk8gXd5AO-5ZtJ3LSwka1XgOvyTIU4vbehSbtk2zaLEx1sLuE-mHEWL3BCos9TcWx6ms/?imgmax=800" width="164" height="244" /></a></p> <p>For those of you that come to our blog regularly, you would know that we have never done a game review before. This isn’t because we don’t game or because we have anything against game reviews themselves, but it is more because games are usually so well covered by other sites that anything we would say would be totally redundant. </p> <p>It is with pleasure, however, that I bring our readerships attention to a great new game that I have heard about and been playing.</p> <p>Gem Shock is one of those extremely simple but yet extremely addictive games. It really reminds me of Tetris in its sheer simplicity and potential for addiction. It is great.  Manoeuvring your Gem through the electrified walls while pushing yourself to race against the clock and fighting to get that steady hand you need to win  really is stupefyingly fun! </p> <p>The game is only $0.99 and is a hoot. Check it out on the itunes app store today and have a go at it…I sure haven’t regretted my purchase!</p> <p>Here’s a link for the so inclined – Gem Shock:</p> <p><a title="http://itunes.apple.com/us/app/gem-shock/id463681052?mt=8" href="http://itunes.apple.com/us/app/gem-shock/id463681052?mt=8">http://itunes.apple.com/us/app/gem-shock/id463681052?mt=8</a></p> Chokdiihttp://www.blogger.com/profile/02880211667247259820noreply@blogger.com90tag:blogger.com,1999:blog-1565373825740259469.post-79605951496557677782011-03-15T19:30:00.001-06:002011-03-15T19:30:12.562-06:00DNS Issues with Server 2008 R2<p>RFC 2671. This shouldn’t mean much of anything to most of us. This RFC Code, however, can literally mean hours and hours of frustration and troubleshooting if you have created a Server 2008 R2 domain.</p> <p>Developed in 1999, Extension mechanisms for DNS aka eDNS, were designed to allow for increased functionality of the DNS protocol. They were also critical to the implementation of DNS Security Extensions (DNSSEC). Nevertheless, the protocol hasn’t really caught on and there are still thousands of devices – even ones produced today – that are not really fully compliant with the standards laid out in RFC 2671. </p> <p>Naturally, the Internet itself is a inter-connected network that is literally running on loads of old and obsolete equipment. So, it comes as no surprise that there are going to be a few problems arising from the fact that Windows Server 2008 R2, when set up as a DC with the DNS role installed and set to perform recursive lookups, has this extension to DNS enabled by default. </p> <p>Not everyone, fortunately, will have issues with this as there are of course DNS servers out there that will respond properly to this type of query and respond with the IP address requested. However, if you happen to be running DNS queries against one that is non-compliant, you will end up with extremely patchy Internet service for your whole domain. </p> <p>To check if this is an issue for your domain, you are going to have to run a few tests. </p> <p>Open network monitor, and look at the DNS queries that you are getting. If they look like the picture below, you are probably encountering this issue. </p> <p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhi9NHBh8gNx5SLtQLuKjo_fnAVkTEQRg9LeTeFzvTttEMdiO8rrO2p0LdJYA1jI5QjsVunooSOB38P3KMwl1thiGS5kR_Gf4Eelt2owWaMILjJvxI20NE59QBYhO9cYiRjTn3TLS7xrnc/s1600-h/dnserror%5B4%5D.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="dnserror" border="0" alt="dnserror" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnCGDAR8sJXDXFDCDYyk6GuUZPh8DIwwt4R9CyM2r__xvT_wcYYAxWoL92EwQaCWkqAvqnNoeGIEISlgsrKV9jwyDeaOpwqnvN4d0XKIQktpOirg_M05tgOjJyTBsDo5iZ8L65x6v_s2E/?imgmax=800" width="717" height="102"></a></p> <p>The fix, luckily, is very simple. Simply disable eDNS and re-enable it at some point in the future when acceptance of this protocol is a little higher. </p> <p>Open up a cmd prompt and elevate it (right click on it and run it as an administrator). Then run the following command.</p> <p>dnscmd /config /EnableEDNSProbes 0 <p>This should take effect immediately. <p>I sincerely hope that this helps a few of you out there that are just starting to deploy Server 2008 R2 now that SP1 is out. <p>Cheers! <p>Matt</p> Chokdiihttp://www.blogger.com/profile/02880211667247259820noreply@blogger.com8tag:blogger.com,1999:blog-1565373825740259469.post-21616455860521310552011-03-14T21:29:00.001-06:002011-03-14T21:30:18.293-06:00Outlook 2010 Auto Complete Cache Corruption<p>A while back, I had written a fairly complete article on restoring the Outlook auto complete cache and working with .NK2 files. Well, just when we thought that we could all return home in a victorious Napoleonic march, our enemy defeated, our pals down in Redmond reminded us all of Waterloo. </p> <p>Outlook 2010, has completely done away with .NK2 files and has unfortunately replaced it with a system that seems far from bulletproof. My recent experiences, along with thousands of others on the net, suggests that the new system is rather prone to corruption and cannot be easily fixed.</p> <p>But first, in a bid to dispel some of the misinformation out there, let me briefly go over how the new system works. </p> <p>Users first using Outlook 2010, or syncing it to an active sync device are immediately going to notice a new set of contacts called suggested contacts that has been auto created upon opening a new mail account. Inside, they will quickly notice that it is populated with email addresses of people whom they may not even remember having contact with. One soon realizes that this is a contact list that is being generated based on emails that have been sent out and incoming emails that do not have a proper contact in Outlook. This idea, actually, seems to make a lot of sense as it is an easily backed up way of managing all of those contacts that were previously stored in the Auto complete cache’s .NK2 file. It would be easy to come to the conclusion that this is the same thing as the .nk2 cache and this is what populates it. This, however, is wrong. While it does store similar information, there is in fact a new .dat file that has taken the place of the venerable .NK2 file, but now has a GUID attached to it that is,ostensibly,l generated based on characteristics of the profile. Apparently, this file can be transferred around just as was done with .NK2 files, but you would have to rename it with the exact same corresponding GUID for it to work. Definitely, not as slick as the simple renaming it to the name of the profile as in previous versions of Outlook. This won’t, however, be an issue if you have transitioned to Exchange 2010 as the file is actually stored on the Exchange server and synced back down to the client allowing for your auto complete cache to follow you as part of a new profile on a second computer. Again, this is a great idea if it weren’t for the apparent instability of the file itself. </p> <p>I have been able to find very little information on the causes of the issue, and nothing at all from Microsoft, but it appears that this file syncs itself back to the Exchange server upon closing Outlook. However, if for some reason, Outlook does not close cleanly, it appears to cut short the write of this data which subsequently corrupts the file. It is at this point extremely difficult to correct the situation. </p> <p>The file is located at %appdata%\Local\Microsoft\Outlook\RoamCache and will be the file labeled Stream_Autocomplete_<GUID>.dat. As I stated, I have yet to come across anything that immediately fixes the issue in all cases, but here are a few things to try. </p> <p>First, to verify that you are having the issue in question, you will a.) have an auto-complete cache that isn’t working and b.) a Stream_Autocomplete file that is 0 bytes in size and stays that way despite adding data to the autocomplete cache during a session. With this issue, your cache will work during the duration of Outlook being opened, but then when you close outlook and reopen it, all of the data is lost. </p> <p>Anyway, here are some methods that are known to work. </p> <p><strong>1. Delete the auto-cache data through the provided menu interface provided in Outlook. To do this, </strong></p> <blockquote> <p><strong>1. </strong>In Outlook 2010, <em>Click</em> the <strong>File </strong>menu and <em>Select</em> <strong>Options</strong>. <p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLclYl3sInZAkBDDwQAT7IOmHvHU0hK1wE2NJDyjAqFpXXNom7XhBnnRLeGgkdNRAV7F7wOVEdHSYQ5hAqUu3Xx19L0RB_QqsWm6-d6Ik_f9d1XjmNo1NwTXwVWIU8BHwU5nxQVDUrpp0/s1600-h/step1%5B3%5D.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="step1" border="0" alt="step1" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIm_gOH_3nInOXLbBeEhsSOLC7VtO3MyvpzVvpIdkkWuBGYhxTtcvWfHKk9LKt1iQYymJyzT8Uu9GVNttRkuP9wAxKlRE2T83XRv7cJfm4HMb9w1zrOGNb44DVTAs5jKBGiGsg36IYXeo/?imgmax=800" width="155" height="350"></a> <p><strong>2. </strong>In the Outlook Options window <em>Click</em> the <strong>Mail </strong>tab. <p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjT0PF4l7Q1hs6RHum0O2H4rhXA1RMJPzwl5sBNpvWCnuhzu9aRgYujNFKSLMOYM2AzFK4bHDMHYNwEXHZvccVHNCwelykM320BPeJ-x77H5Q2pFyQZ4Q20_8uWyv7RzFTbGcncYlNUkZg/s1600-h/step2%5B2%5D.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="step2" border="0" alt="step2" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaAd4Cq9UOiA2rut3qrK_8CHhmz8fzBiE0Qqu8s8pmOsXL1pm5WN98qDYl_YL_uhuoWB6gt3z0ptW8FzKUdfTACm45313J7Hzl0DJtahB90Jy_SWY8p52XG5DOkocri7cH_OCIbFmYejc/?imgmax=800" width="171" height="216"></a> <p><strong>3. </strong>Scroll down roughly halfway until you see Send messages.<em> Uncheck</em> the <strong>Use Auto-Complete List to suggest names when typing in the To, Cc, and Bcc lines </strong>box. <p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWyFuoe8V_b1ZXt5n4Ew4lpvfJ1TtAi2zHesYzet84aPBZe3fKjucCjj3Nc_Dx-td_49GqfXARsa-_mEJ8suHZMoJcoROOu4x6I8Ahb8UQvEQDPeGy-MLW_zTItT1I66w-KVgWm02A6so/s1600-h/step3%5B3%5D.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="step3" border="0" alt="step3" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEga_ZhJahVpj8GIpFyu1GWA4e_fIusXwWdPlCtsyKQnAVOwPm0lR2E3PyJWrQy54HI_jKMNGc3jDqm7FxRO47jqzRIUxezh7MhR-gEt6TZxE908SOl_1YYZnuS1Gjc_dDpw5NcOf-VtOMI/?imgmax=800" width="454" height="197"></a></p></blockquote> <p><strong>2. The second method is to manually delete the file mentioned above. Make sure and close outlook before you do this, as it will have a lock on the file and prevent you from doing so otherwise. This method is really the same as what happens above, but some people have actually reported that the file did not delete as it was supposed to from the GUI. </strong> <p><strong>3. Rename then whole Roam Cache folder and reopen outlook.</strong> <p><strong>4. Disable cached exchange mode and try methods 1,2, or 3 above and repeat until the file starts to grow in size.</strong> <p>And please, if anyone else has any more information on the actual root cause of this, please comment below so we can all get through this. There are many possible culprits, but I suspect that over time we will find that it is one particular add-on or program that is causing the vast majority of cases. <p>Cheers! Chokdiihttp://www.blogger.com/profile/02880211667247259820noreply@blogger.com36tag:blogger.com,1999:blog-1565373825740259469.post-23448908707400026262010-11-22T00:07:00.001-07:002010-11-27T02:37:36.819-07:00Easy URL Rewriting With ASP.NET Routing<p>URL rewriting is a great way to avoid the problems typically associated with the standard .NET way of building web apps.  Take this typical URL, for example:</p> <blockquote> <p>http://www.site.com/displaycategory.aspx?category=tools</p> </blockquote> <p>Most ASP.NET solutions wind up having URLS that look like this.  It works, but there are problems with these types of URLs:</p> <ul> <li>They’re long and ugly. </li> <li>They make things look complicated and scary to typical end users. </li> <li>They don’t let power users understand and navigate the site through modifying the URL. </li> <li>Search engines don’t like them </li> <li>Inner workings of your code are exposed, which could lead to security issues. </li> <li>URLs are tied to the specific implementation </li> </ul> <p>What you really want is to have that same web page handling requests, but accessed through an URL like this:</p> <blockquote> <p>http://www.site.com/categories/tools</p> </blockquote> <p>There are two great tools in the ASP.NET world to rewrite URLS: The IIS URL Rewrite module, and the System.Web.Routing functionality built into the framework.  Unfortunately, they both have serious drawbacks.</p> <p>The URL Rewrite module snaps into IIS and lets you configure rewriting without touching any code.  It’s worth researching this tool a bit, because depending on what you’re trying to accomplish, it might suit your needs exactly.  But, it does suffer some serious drawbacks for .NET developers:</p> <ul> <li>The URL Rewrite module must be installed on the server. </li> <li>Visual Studio is not aware of URL Rewrite. </li> <li>URL Rewrite doesn’t work with the ASP.NET Development Server built into Visual Studio; you have to build and debug your application through IIS. </li> <li>You can only configure rewrites through the limited URL Rewrite scheme; you can’t write code. </li> </ul> <p>ASP.NET Routing doesn’t suffer from these drawbacks, but while it’s far more powerful, it’s also far more complicated to set up.  It does require code changes, and when used in the traditional manner, it requires each page in your site to be rewritten to use the Routing architecture.  This means a lot of work.  But, there’s a very easy way to harness the power of Routing and use it much like you would the URL Rewrite module.</p> <h3>Enable routing for your application</h3> <p>The first thing you’ll need to do is map a page route within your application.  This is done through code.  The Global.asax class contains a method called Application_Start which is run whenever your application starts, so it’s an ideal place for this.  Find this method, and add this code:</p> <div id="codeSnippetWrapper"> <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"><span style="color: #008000">// Register routing</span><br />System.Web.Routing.RouteCollection routes = System.Web.Routing.RouteTable.Routes;<br />routes.Ignore(<span style="color: #006080">"{resource}.axd/{*pathInfo}"</span>);<br />routes.MapPageRoute(<span style="color: #006080">"Generic Routing"</span>, <span style="color: #006080">"{page}/{*id}"</span>, <span style="color: #006080">"~/routing.aspx"</span>);</pre>
<br /></div>
<p>There are three important arguments to the MapPageRoute call: a friendly name for the route you’re adding (call it whatever you’d like), the format of the URL that’s going to be caught, and the path to the ASP.NET page you’d like to handle matching URLs.  In this example, we’re going to catch URLs of the style used as an example at the top of this page, but you could easily change this to work with an MVC pattern or anything else you need.  Of course, you’re not limited to just one mapping, but that’s all we need for this example.  The asterisk is used to indicate that the {id} part of the URL pattern could contain slashes. The call to .Ignore prevents requests to WebResource.axd from being caught by your routing.</p>
<h3>Build your routing pages</h3>
<p>Now, add a page called “routing.aspx” to your project, and add this code to Page_Load:</p>
<div id="codeSnippetWrapper">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"><span style="color: #008000">// Get routing data</span><br /><span style="color: #0000ff">string</span> page = (<span style="color: #0000ff">string</span>)<span style="color: #0000ff">this</span>.RouteData.Values[<span style="color: #006080">"page"</span>];<br /><span style="color: #0000ff">string</span> id = (<span style="color: #0000ff">string</span>)<span style="color: #0000ff">this</span>.RouteData.Values[<span style="color: #006080">"id"</span>];<br /><br /><span style="color: #008000">// Transfer to appropriate page</span><br /><span style="color: #0000ff">if</span> (page == <span style="color: #006080">"categories"</span>)<br /> Server.Transfer(<span style="color: #0000ff">string</span>.Format(<span style="color: #006080">"~/displaycategory.aspx?category={0}"</span>, id));<br /><span style="color: #0000ff">else</span> <span style="color: #0000ff">if</span> (page == <span style="color: #006080">"titles"</span>)<br /> Server.Transfer(<span style="color: #0000ff">string</span>.Format(<span style="color: #006080">"~/displaytitle.aspx?title={0}"</span>, id));<br /></pre>
<br /></div>
<p>You can see what’s going on here: the code gathers the values that were used to built the URL, checks to see which page should handle the request, and then forwards the request on the the proper page.  In this example, we also remap requests to URLs like this:</p>
<blockquote>
<p>http://www.site.com/titles/ExampleTitle</p>
</blockquote>
<p>From this point forward, you can configure as many rewrites as you’d like through this one little bit of code.  Because this is code, though, you can modify this to suit whatever needs you may have.  If you wanted, you could even write this to draw data from an XML file so you don’t need to touch code to edit your URL mappings.</p>
<p>Really, this is the best of both worlds: easy to configure, drop-in URL rewriting that will work with any existing solution that doesn’t require anything to be installed, works with Visual Studio, and lets you write code wherever you need a bit more complexity.</p> Paulhttp://www.blogger.com/profile/16712770722605767823noreply@blogger.com12tag:blogger.com,1999:blog-1565373825740259469.post-9339996698118795872010-11-21T13:45:00.000-07:002010-11-21T13:45:25.630-07:00Choosing Between C# and VB<p>Here’s a question most .NET developers have to deal with: C# or VB?</p> <p>This can be a pretty heated debate; people love to defend the tools they love.  Once you get down to work, though, both languages are very similar.  They both have access to the same libraries and tools, they both have full support from Microsoft and enormous developer communities, and they both get the job done well.</p> <p>But there are differences.  Let’s look at some of the more important ones:</p> <h3>C# Only: Better syntax</h3> <p>Let’s face it: C-style syntax is better than BASIC-style syntax.  You just can’t argue this one.  BASIC is too wordy; C lets you focus on what matters: your code.  Sure, both languages have code generation and IntelliSense and code snippets, and yes, you can come up with examples where VB code is shorter and more elegant than C#.  But for the most part, it’s pretty hard to argue that VB syntax is designed for experienced developers.</p> <p>This isn’t as big a deal as you might think.  There’s no scenario where C# syntax is much faster to code in than VB syntax (assuming you have Visual Studio to back you up). But, C# is just a tiny bit faster in 500 different ways, and it adds up.  There are other factors to consider in choosing a language, of course, but this remains a very compelling argument.</p> <h3>C# Only: More advanced development community</h3> <p>VB is generally easier for new developers to pick up, and often allows faster development.  This might sound like an advantage to VB, but there’s a huge counter-argument: the C# community tends to be more advanced than the VB community, and is often more respected.  An experienced developer who prefers VB might have a hard time convincing others that VB can sometimes be a better choice, but a developer who <em>only </em>knows VB will be laughed right out of the room.</p> <p>If you’re trying to decide on a single language to learn, don’t.  You need to understand at least half a dozen languages and technologies to get anything done in the real world: HTML, CSS, Java(script), XML, SQL, C(++), and more. And if you’re going to be a .NET developer, learn C# <em>and</em> VB.</p> <h3>C# Only: Unsafe code</h3> <p>The .NET world is wonderful, but sometimes you need to drop back to the frightening world of direct memory management.  You can usually accomplish the same tasks in VB through managed code, and even in the pre-.NET world, VB could still read and write to locations in memory directly, but there’s no getting around the fact that C# is a better choice if you can’t imagine a world without pointers.</p> <h3>C# Only: Checked / Unchecked</h3> <p>C# also lets you control exactly when overflows and underflows are caught and when they’re ignored.  In the managed world, it’s pretty tough to argue that overflow can actually be useful, but there’s a lot of legacy code – and legacy developers – out there who depend on things working they way they always have.</p> <h3>C# Only: Iterators</h3> <p>C# also lets you work with iterators.  Sure, VB knows how to iterate, but C# has a bit of extra power and flexibility here.  Check this out:</p> <div id="codeSnippetWrapper"> <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"><span style="color: #0000ff">public</span> IEnumerator<<span style="color: #0000ff">string</span>> GetEnumerator()<br />{<br /> <span style="color: #0000ff">foreach</span> (<span style="color: #0000ff">string</span> s <span style="color: #0000ff">in</span> strings)<br /> {<br /> <span style="color: #0000ff">yield</span> <span style="color: #0000ff">return</span> s;<br /> }<br />}</pre>
<br /></div>
<p>Iterators essentially let a function return values in the middle of the function.  This is a great tool, and one that’s hard to get used to not having when coding under VB.</p>
<h3>C# Only: Refactoring</h3>
<p>Only C# includes refactoring support build right into the IDE.  These are a collection of extra tools and commands that make development easier and faster, and C# developers are often shocked to learn that VB doesn’t include these features.  True, there are enhanced refactoring add-ins available for both languages that do a better job than what’s built into the C# IDE, but you can’t beat having something ready to go right out of the box.</p>
<h3>VB Only: Handles and WithEvents</h3>
<p>In C#, you have to hook up events through code.  Sure, there’s designer support available, but it makes for a more complicated project.  In VB, the Handles keyword does all this work for you.  When it comes to creating a UI for your application, this is a really big deal and makes VB developers significantly more productive: things are simpler, and you just don’t have to write as much code.  When it comes to writing business logic and other UI-less code, this doesn’t really matter very much.</p>
<h3>VB Only: With</h3>
<p>VB offers the With structure.  Not only is this convenient, it also improves performance.  Take this bit of C# code:</p>
<div id="codeSnippetWrapper">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet">System.Text.StringBuilder sb = <span style="color: #0000ff">new</span> StringBuilder();<br />sb.AppendLine(<span style="color: #006080">"FileName: "</span> + System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName);<br />sb.AppendLine(<span style="color: #006080">"Memory size: "</span> + System.Diagnostics.Process.GetCurrentProcess().MainModule.ModuleMemorySize.ToString());<br />sb.AppendLine(<span style="color: #006080">"Entry point: "</span> + System.Diagnostics.Process.GetCurrentProcess().MainModule.EntryPointAddress);<br />sb.AppendLine(System.Diagnostics.Process.GetCurrentProcess().MainModule.FileVersionInfo.IsDebug.ToString());</pre>
<br /></div>
<p>And now look at it under VB:</p>
<div id="codeSnippetWrapper">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"><span style="color: #0000ff">Dim</span> sb = <span style="color: #0000ff">New</span> System.Text.StringBuilder<br /><span style="color: #0000ff">With</span> System.Diagnostics.Process.GetCurrentProcess.MainModule<br /> sb.AppendLine(<span style="color: #006080">"File name: "</span> + .FileName)<br /> sb.AppendLine(<span style="color: #006080">"Memory size: "</span> + .ModuleMemorySize)<br /> sb.AppendLine(<span style="color: #006080">"Entry point: "</span> + .EntryPointAddress)<br /> sb.AppendLine(<span style="color: #006080">"Debug: "</span> & .FileVersionInfo.IsDebug)<br /><span style="color: #0000ff">End</span> With</pre>
<br /></div>
<p>That’s just less code.  Less code is easier to write, read, and maintain.</p>
<p>This example might be a little contrived:  in the real world, you’d just declare a new variable (and give it a short name).  My point, though, is that with VB, you don’t have to do this.</p>
<h3>VB Only: My</h3>
<p>The My class is pure convenience.  There’s nothing under My that can’t be found elsewhere in the framework, but it makes it very easy to access a lot of calls in the framework that were previously difficult to find and use.  Have a look at this:</p>
<div id="codeSnippetWrapper">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"><span style="color: #0000ff">Try</span><br /> <span style="color: #0000ff">If</span> My.User.IsInRole(ApplicationServices.BuiltInRole.Administrator) <span style="color: #0000ff">Then</span><br /> My.Computer.Network.DownloadFile(<span style="color: #006080">"http://server.com/data.xml"</span>, <span style="color: #006080">"C:\"</span>)<br /> <span style="color: #0000ff">Else</span><br /> My.Computer.Network.DownloadFile(<span style="color: #006080">"http://server.com/data.xml"</span>, My.Computer.FileSystem.SpecialDirectories.Desktop)<br /> <span style="color: #0000ff">End</span> <span style="color: #0000ff">If</span><br /> My.Computer.Audio.PlaySystemSound(Media.SystemSounds.Beep)<br /><span style="color: #0000ff">Catch</span> ex <span style="color: #0000ff">As</span> Exception<br /> My.Application.Log.WriteException(ex)<br /> My.Computer.Audio.PlaySystemSound(Media.SystemSounds.Exclamation)<br /><span style="color: #0000ff">End</span> Try</pre>
<br /></div>
<p>C# can do all this, of course, but it’s going to take more code.  That said, a lot of the functionality under My is just there to help beginners find what they’re looking for.  There are a few things here that are invaluable (such as the My.Settings class), but generally, C# developers won’t miss this too much.</p>
<h3>VB Only: XML / Date Literals</h3>
<p>Date literals have been around in VB forever, and while it’s debatable how often you should be hardcoding dates in code, it’s still nice to have the option (although it’s too bad the illogical American MM/dd/yyyy format is used).  XML literals, on the other hand, are a huge leap forward.  Once you work with XML in VB for a while, going back to C# will be pretty painful.  Have a look at this code, for example:</p>
<div id="codeSnippetWrapper">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"><span style="color: #0000ff">Dim</span> allScreens = From s <span style="color: #0000ff">In</span> Screen.AllScreens<br /> <span style="color: #0000ff">Select</span> <Screen><br /> <Device><%= s.DeviceName %></Device><br /> <Width><%= s.Bounds.Width %></Width><br /> <Height><%= s.Bounds.Height %></Height><br /> <BitsPerPixel><%= s.BitsPerPixel %></BitsPerPixel><br /> </Screen><br /><br /><span style="color: #0000ff">Dim</span> document = <?xml version=<span style="color: #006080">"1.0"</span> encoding=<span style="color: #006080">"utf-8"</span>?><br /> <Screens><br /> <%= allScreens %><br /> </Screens><br /><br />document.Save(<span style="color: #006080">"screens.xml"</span>)<br /></pre>
<br /></div>
<p>That’s insanely, ridiculously simple.  And the IntelliSense support here is amazing; you really have to try it to understand how beneficial this is.  If you work with XML much, this is a really compelling reason to pick VB over C#.</p>
<h3>VB Only: Late-binding and COM</h3>
<p>This is another big one.  VB allows developers to use late-binding.  Essentially, this means a developer can call a member on a variable declared simply as Object.  At run-time, the compiler looks at the object, and if the call makes sense, it runs.  If it doesn’t make sense, an error occurs.  In the theoretical world of pure managed code and beautifully designed classes, using such a feature would be considered poor code.  In the real world, though, it’s nice to have this option available.  And where it really makes a world of difference is when you’re working with COM objects.  Again, let’s compare.  Here’s some VB code that automates Microsoft Word a bit:</p>
<div id="codeSnippetWrapper">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"><span style="color: #0000ff">With</span> CreateObject(<span style="color: #006080">"Word.Application"</span>)<br /> <span style="color: #0000ff">With</span> .Documents.Add()<br /> .Range.Text = Clipboard.GetText()<br /> .SaveAs2(<span style="color: #006080">"clipboard.docx"</span>)<br /> .Close()<br /> <span style="color: #0000ff">End</span> <span style="color: #0000ff">With</span><br /> .Quit()<br /><span style="color: #0000ff">End</span> With</pre>
<br /></div>
<p>And here’s the same code in C# (brace yourself!):</p>
<div id="codeSnippetWrapper">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"><span style="color: #0000ff">object</span> app = Activator.CreateInstance(Type.GetTypeFromProgID(<span style="color: #006080">"Word.Application"</span>));<br />app.GetType().InvokeMember(<span style="color: #006080">"Visible"</span>, System.Reflection.BindingFlags.SetProperty, <span style="color: #0000ff">null</span>, app, <span style="color: #0000ff">new</span> <span style="color: #0000ff">object</span>[1] { <span style="color: #0000ff">true</span> });<br /><span style="color: #0000ff">object</span> docs = app.GetType().InvokeMember(<span style="color: #006080">"Documents"</span>, System.Reflection.BindingFlags.GetProperty, <span style="color: #0000ff">null</span>, app, <span style="color: #0000ff">null</span>);<br /><span style="color: #0000ff">object</span> doc = docs.GetType().InvokeMember(<span style="color: #006080">"Add"</span>, System.Reflection.BindingFlags.InvokeMethod, <span style="color: #0000ff">null</span>, docs, <span style="color: #0000ff">null</span>);<br /><span style="color: #0000ff">object</span> range = doc.GetType().InvokeMember(<span style="color: #006080">"Range"</span>, System.Reflection.BindingFlags.InvokeMethod, <span style="color: #0000ff">null</span>, doc, <span style="color: #0000ff">null</span>);<br />range.GetType().InvokeMember(<span style="color: #006080">"Text"</span>, System.Reflection.BindingFlags.SetProperty, <span style="color: #0000ff">null</span>, range, <span style="color: #0000ff">new</span> <span style="color: #0000ff">object</span>[1] { Clipboard.GetText() });<br />doc.GetType().InvokeMember(<span style="color: #006080">"SaveAs2"</span>, System.Reflection.BindingFlags.InvokeMethod, <span style="color: #0000ff">null</span>, doc, <span style="color: #0000ff">new</span> <span style="color: #0000ff">object</span>[1] { <span style="color: #006080">"clipboard.docx"</span> });<br />doc.GetType().InvokeMember(<span style="color: #006080">"Close"</span>, System.Reflection.BindingFlags.InvokeMethod, <span style="color: #0000ff">null</span>, doc, <span style="color: #0000ff">null</span>);<br />app.GetType().InvokeMember(<span style="color: #006080">"Quit"</span>, System.Reflection.BindingFlags.InvokeMethod, <span style="color: #0000ff">null</span>, app, <span style="color: #0000ff">null</span>);</pre>
<br /></div>
<p>As you can see, working with COM in this fashion is really, really painful under C#.  In fact, only through reflection is this even possible!  This has been improved somewhat with the recent addition of the dynamic type in C# 4.0, if you’re able to take advantage of the latest version.</p>
<h3>VB Only: Implicit Conversions</h3>
<p>In C#, all type conversions must be performed explicitly.  In VB, most simple conversions are performed automatically by the compiler.  This means you can add 2 and 2.0, and it means you don’t need to type .ToString() anywhere near as often.  It can save a lot of time, but can also cause bugs if the conversion wasn’t expected.  Note that you don’t want to give this feature to new developers; they will only get themselves into trouble with it.  It’s great to have conversions done implicitly, but only if you already understand what’s going on under the hood.</p>
<h3>VB Only: Better IntelliSense and Error List</h3>
<p>In VB, the IDE is much faster at updating IntelliSense, the Error list, and other tools.  Under C#, you often need to rebuild your project to update the Error list and certain other features.  And, IntelliSense is just all-around better under VB.  This might not seem like a drastic difference, but it saves you a second or two countless times a day.  You’ll certainly notice this when moving between the languages frequently.</p>
<h3>Other Differences</h3>
<p>I think that’s about it for major features available in only one language.  There are a plethora of other small arguments to make, but none that really have much of an overall impact on choosing a language.  There are, of course, many other major differences that don’t really have a clear advantage one way or the other.  Namespaces are handled differently.  VB offers project-level Imports, while C# is better at helping you manage file-level ‘using’ statements.  C# offers static classes, while VB offers Modules.  Commenting works differently.</p>
<h3>Recommendations</h3>
<p>There is one area where C# is really the only sensible choice:</p>
<ul>
<li>Unsafe code </li>
</ul>
<p>There are three areas where VB has a clear advantage over C#:</p>
<ul>
<li>Working with COM (although C# 4.0 narrows the gap)</li>
<li>Working with XML </li>
<li>Developing UI </li>
</ul>
<p>Outside of these areas, it all comes down to personal preference.  C# has the better syntax and a more advanced community, while VB offers a range of features and aids not available to C#.</p>
<p>But remember: it’s not about the tool.  It’s about what you do with it.</p> Paulhttp://www.blogger.com/profile/16712770722605767823noreply@blogger.com8tag:blogger.com,1999:blog-1565373825740259469.post-42871233537781905982010-11-20T19:19:00.001-07:002010-11-25T19:58:28.290-07:00OneNote not syncing–Windows Phone 7<p>It’s finally here, and it seems that it is getting better and better each and every day! While the new Windows Phone 7 does follow an Apple-like model by excessively locking down the device, it does seem that underneath all of that new shininess is the ability to get under the hood and tweak the device just like any other Windows based device ever created. </p> <p>Overall, I love my LG Optimus Quantum, but I do have to report one small glitch that I have encountered and give our readers some pointers on how to fix this. </p> <p align="center"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZM-mGllQ7SkJIs6DqMg2DphUFfw4SUgyJuFsyezVTVmb2io0F9hp2uFQiXLSxSBtZ8hUhtfJxAKMZt9DsV-xrNIrY6Wrv0grCIHZG3E-ipPgs-kMeRX8PHn_dfMr__jS3l7k6uV44jj8/s1600-h/LG_Quantum_Windows_Phone_721%5B5%5D.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="LG_Quantum_Windows_Phone_721" border="0" alt="LG_Quantum_Windows_Phone_721" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNfkvJZu2vy4m-5HsMgEi_0SOvFR-tpACZg_6P5E6Y46KvvaYeGNoD65sMhtxyg4P6jHTiQHK0-HBO4NmYuGz7QJq1XdT6lJvXRi5qbmjVk5Z9W5i33DCB1vkh6FuwGV9AvfNDcMn6Who/?imgmax=800" width="244" height="193" /></a></p> <p>One of the first things I noticed on the device was the beautifully integrated Office 2010 components that can be set to automatically sync to the Windows Sky Drive. I have always loved OneNote and to have a fairly complete version of this running on a smart phone is a god send.  Unfortunately, it isn’t as intuitive as it may look. </p> <p>By default, when you set up a Windows Phone 7, it asks you for a live ID to which it will sync itself up to. With OneNote, it will create a default OneNote notebook called Personal (Web) . Logging in to your Skydrive, you will also see this notebook. </p> <p>I wasn’t a fan of this as I like to create custom notebooks and I really didn’t want my default location for my saved noted to go to Personal (Web) (whoever chose this name for the default notebook should be tarred and feathered and or sent to Guantanamo). I proceeded to delete that notebook. It is at this point that my brand new phone started generating errors and barking at me saying it couldn’t sync, and that the default location for saving unfiled notes was gone. The phone gave the helpful suggestion of creating a new location for these, however, there seemed to be no apparent way of creating a new notebook that would sync and allow itself to become the default.  The obvious solution would be to log into the Skydrive account and create a new notebook called Personal (web) and everything would be happy again..? Right? Well, no , not exactly.  I struggled for a long time and was almost ready to wipe the phone when I decided to browse to office.live.com on the phones browser.  What I saw there was actuallysome other notebooks that I thought I was having trouble syncing.  If you open one of these from here, they will automatically be added to your phone and you can then select one of these as your default notebook. This will entirely fix the sync issue. </p> <p>This is really counter-intuitive and Microsoft doesn’t seem to tell anyone that they have to do this anywhere. Instead on their Windows Phone 7 site, they warn people about deleting the default with no mention of what to do if you have done this.  This is also the method you will need to use to add your own existing OneNote notebooks to the phone. </p> <p>Again, I love the phone, but Microsoft will hopefully start making things like this a little clearer. It’s not that any of this was difficult, it’s just that it was by complete happenstance that I found the answer to my problem.  </p> <p>Hope this helps someone out there. </p> Chokdiihttp://www.blogger.com/profile/02880211667247259820noreply@blogger.com5tag:blogger.com,1999:blog-1565373825740259469.post-16635922456009121192010-11-01T22:33:00.001-06:002010-11-01T22:33:20.813-06:00Speed up the Visual Studio Development Web Server<p>Here’s a fix to a problem many people don’t realize they’re having!  When you debug a web site project in Visual Studio, by default, a simple little web server called ‘Visual Studio Development Web Server’ (previously known as Cassini) fires up so you can test your site with whatever browser or tools you want:</p> <p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbaLX_H8hXokXobhD3jmMhS3MgtldKgRxf9ySkUnmw6pX_FSt3d_nc-eOk6YZe4VWoEYyNaA_9R00GOP6O5bRUZ4Hw_pmAlYJPQBijZFpvbr3dK9IUMS83pxCb-07USh1q6BcwzajCcWrE/s1600-h/image%5B2%5D.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_Ca1qiVg_csY/TM-UjHoSGKI/AAAAAAAAAMQ/-rE2vyhTeLU/image_thumb.png?imgmax=800" width="425" height="99" /></a></p> <p>You’d think that since this tiny little web server runs on the local machine, everything should be pretty speedy, right?</p> <p>Well, it’s not.  Sometimes, it kind of works.  Sometimes, it times out.  And here’s the problem: IPv6.  I hate this technology.  Sure, it might be necessary, but it’s a pain-in-the-ass over-engineered solution that is going to cause everybody a LOT of grief over the next few years. By default, Windows tries to use IPv6 first.  Why?  Because it’s so much more awesome, I guess.  Unfortunately, the web server built into Visual Studio doesn’t play nice with IPv6.</p> <p>I offer you several fixes here.  Pick the one you hate least!  Note that these fixes can on occasion be a bit finicky; you may have to restart your browsers, flush DNS caches, restart your computer, or scream and curse for a while.</p> <h3>The Quick Fix</h3> <p>When you start your project, your browser will be sent to an address like this (the port number will be random):</p> <blockquote> <p><a href="http://localhost:1805/">http://localhost:1805/</a></p> </blockquote> <p>Simply change localhost to 127.0.0.1, so the address looks something like this (leaving the original port number):</p> <blockquote> <p><a href="http://127.0.0.1:1805/">http://127.0.0.1:1805/</a></p> </blockquote> <p>Remember to include the ‘http://’ in the URL you type here.  Ugly, yes, but it works instantly, you don’t need to reconfigure anything, and you don’t need admin access.  The down side is that you have to do this every time you launch the project.</p> <h3>The Easy Fix</h3> <p>Want to fix this issue permanently?  The best way is to edit your hosts file, which you’ll find here:</p> <blockquote> <p>%WINDIR%\System32\drivers\etc\hosts</p> </blockquote> <p>Towards the bottom, you’ll find this line:</p> <blockquote> <p>#    127.0.0.1       localhost</p> </blockquote> <p>Uncomment this line by removing the ‘#’.  Then save the file.</p> <p>There’s another line right after this that mentions ‘::1’; leave this one the way it is.  This file is protected, so the easiest way to save it is to save a copy to your desktop and then move this copy to the original location; this way Windows offers you the opportunity elevate and overwrite rather than simply give you a ‘read only’ error.</p> <p>This fix should instantly take care of the problem machine-wide.  In theory, this shouldn’t break anything – IPv6 is still turned on, and resolution still works – but if this is a server, you might want to test things through.</p> <h3>The Browser-Specific Fixes</h3> <p>There are options within some browsers to disable IPv6.  Doesn’t seem like the best way of going about solving this problem, but hey, you do what you gotta do.</p> <p>In Firefox, browse to about:config and toggle the network.dns.disableIPv6 preference:</p> <p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitv308xHZCXqOMawdd03dOuh6ZgG1S4lhC4p12B_DddoG7DH0H4MC8_jDnIXJkMaR3RdTwrRYuH3v1Tg1Ji3Hg4EQ63N6mR1tySAQLbPduZc4nXTqnwwSJ1EbDIp2lVmGIijWUlzCz-iLN/s1600-h/image%5B5%5D.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_Ca1qiVg_csY/TM-UkE_cITI/AAAAAAAAAMY/-URCdlLDteY/image_thumb%5B1%5D.png?imgmax=800" width="565" height="300" /></a></p> <p>In Chrome, start the browser with the “--disable-ipv6” argument.  Note that the dashes are a bit awkward; you have to get this exactly right.  See our (outdated) article <a href="http://www.slickit.ca/2009/02/google-chrome-on-windows-7.html">Google Chrome on Windows 7</a> for more details on making this change in your shortcuts.</p> <h3>Other Fixes</h3> <p>There are other ways of fixing this out there.  These include various ways of disabling IPv6, registry hacks, and editing the web.config file.  None of these are particularly ideal, unless you know exactly what you’re doing (in which case, why are you reading this?).  Note that disabling IPv6 (as some existing articles out there will tell you to do) will break things!</p> Paulhttp://www.blogger.com/profile/16712770722605767823noreply@blogger.com3tag:blogger.com,1999:blog-1565373825740259469.post-52203882275111487172010-09-15T21:17:00.001-06:002010-09-16T13:08:11.643-06:00Fix: Cannot import the following key file<p>Here’s another quick fix for a small issue you may encounter when upgrading your project to Visual Studio 2010.  You may find that the import works okay, but when you go to compile, you get the following error message:</p> <blockquote> <p>Cannot import the following key file: keyfile.pfx. The key file may be password protected. To correct this, try to import the certificate again or manually install the certificate to the Strong Name CSP with the following key container name: VS_KEY_0123456701234567</p> </blockquote> <p>The cause of the error is exactly as Visual Studio described: it can’t open the key file it needs to access because the key file is password protected.  The suggested fix, however, is not likely to set you on the right path.  In fact, Visual Studio should really just fix this itself.  In previous versions, it would.  Remember you’d occasionally get a password prompt when opening a project for the first time?</p> <p>Well, all we need to do to fix this is trigger Visual Studio to ask you for the password.  Then, it will do its thing and you’ll be set.  Try this:</p> <ol> <li>Open Project Properties. <br /></li> <li>Click on the Signing section. <br /></li> <li>Where it says ‘Choose a strong name key file:’, reselect the current value from the drop-down box: <br /> <br /><a href="http://lh4.ggpht.com/_Ca1qiVg_csY/TJGMU8_fUAI/AAAAAAAAALg/4Yskircl0gc/s1600-h/image%5B10%5D%5B2%5D.png"><img style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image[10]" border="0" alt="image[10]" src="http://lh4.ggpht.com/_Ca1qiVg_csY/TJGMVe5hjKI/AAAAAAAAALk/sp0TbM4b-Og/image%5B10%5D_thumb.png?imgmax=800" width="625" height="480" /></a> <br /></li> <li>Visual Studio will now prompt you for the password.  Enter it. <br /> <br /><a href="http://lh6.ggpht.com/_Ca1qiVg_csY/TJGMV_4xIMI/AAAAAAAAALo/tO1b39R_b-0/s1600-h/image%5B14%5D.png"><img style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjK_dTWKcsFk5Jx_pUliJRWrjJnEcTt77Iz-Ki31UWZHvBdThQtMfgOOq47zCwhAQ29CfWASDOH_ZQtyj8Emx4g3wN8WC_II_HuDFQ4Ka1UQv_wzkzvw8NwNGlF42ORet-g9FpjGQvpSQ2t/?imgmax=800" width="304" height="134" /></a> <br /></li> <li>You might get another error message: <br /> <br />”An attempt was made to reference a token that does not exist” <br /> <br />If so, just ignore it. <br /></li> <li>Click the ‘Change Password” button: <br /> <br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnZ4rZuB1qAuT4_DFwFz88_lIoCbh4hFNMumg1PcsY2MJnT_rgk_MoPKqJ918D70zQhaD4AQ32q6L7y-lFpLm0OSA0oXZ_-ufNdpTFQBLK27LD8nJsPek2ZOZL0M8e2NVCZt677tM7Ejay/s1600-h/image%5B17%5D.png"><img style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_Ca1qiVg_csY/TJGMXFZYwWI/AAAAAAAAAL0/Hjw73AGS5FI/image_thumb%5B5%5D.png?imgmax=800" width="359" height="248" /></a> <br /></li> <li>Enter the original password in all three boxes and click OK. If you’d like to change your password (or if your old password doesn’t meet complexity requirements), you can do so now. <br /></li> <li>Repeat for each key file in your project. <br /></li> <li>Save your project and do a rebuild. </li> </ol> <p>Of course, there are less empirical ways of solving this, but they involve using the signtool.exe application and messing around with the certificate store.  This might not be the most impressive way of solving this problem, but it seems to work.</p> Paulhttp://www.blogger.com/profile/16712770722605767823noreply@blogger.com9tag:blogger.com,1999:blog-1565373825740259469.post-15355935332611609432010-09-15T13:14:00.001-06:002010-09-15T13:14:23.427-06:00Fix IE9 Address Bar Search<p>So the IE9 beta is out.  The rest of the Internet is busy reviewing it today, so I won’t bother.  I will, however, show you how to fix one little problem.  It has to do with a little-used feature that I happen to use from time to time: searching.</p> <p>IE8 had separate text boxes for entering an URL and entering a search query.  This made it simple for developers, but it kind of sucked for users.  Really, by 2010 I kind of thought my web browser would know how to figure out the difference between <a href="http://www.microsoft.com/msdn">www.microsoft.com/msdn</a> and “Microsoft MSDN” and choose whether to navigate directly or search accordingly.  Google Chrome really upped the game here: there’s one box, and it always seems to know exactly what you want to do.  It’s still the best implementation of an address bar out there, in my opinion, but IE9 is certainly catching up.</p> <p>Under IE9, if you type an address, it works.  Wonderful.  But if you type something that’s not clearly an address, one of two things happens.  Either you’re brought to a search results page (from Bing, Google, or whoever else you’ve chosen to use) or – if there’s a really obvious ‘best’ search result – you’re taken right to the site you obviously wanted to go to.  This sounds nice, but when I type something that’s not an address, I want search results.  If I wanted to go to <a href="http://www.linux.org">www.linux.org</a>, that’s what I would have typed, so why doesn’t “linux” take me to my search results page where I can click on the Wikipedia article?</p> <p>Luckily, this behavior can easily be changed.  When I first started looking into this, I expected something ugly… maybe even as bad as writing my own search provider.  But the solution is really simple.  Obscure, perhaps.  But simple.  Here’s how:</p> <p>Click the “Tools” button (the gear at the top right of the window), and then click “Manage add-ons”:</p> <p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyWEPw6RIAXMxYJVasKuZgDPMAr8DsU-AFc_QY3nanrfigPbsGc1j0zZvejrDBN2DjrNJGxs6HBd0Bz1QtqEzTpd-DuZgm2SzRAEAifv6fkP0N_VNzhLn_NJjI2LsvS0EEd-PL8V953ye4/s1600-h/image%5B2%5D.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_Ca1qiVg_csY/TJEbCgzdGvI/AAAAAAAAALU/55r_-ruHJdo/image_thumb.png?imgmax=800" width="744" height="484" /></a></p> <p>Now click on “Search Providers”, and then select Google (or Bing, or whatever else you use):</p> <p><a href="http://lh6.ggpht.com/_Ca1qiVg_csY/TJEbDKrYBzI/AAAAAAAAALY/vcbaXYLfd-Q/s1600-h/image%5B11%5D.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_Ca1qiVg_csY/TJEbDk6EVqI/AAAAAAAAALc/oHnYJ8sBE_0/image_thumb%5B3%5D.png?imgmax=800" width="747" height="466" /></a></p> <p>See the “Disable top result in address bar” link I highlighted?  Click it.  Then click Close.  That’s it!  Now, you’ll always get search results (unless you typed an address, in which case it will go where you told it to).</p> <p>When I first ran into this, I started to rant a bit.  But after figuring this one out, I have to admit that Microsoft got it right.  They set up the default setting the way the unwashed masses will like it, they made it nicely configurable for those who want it to work a specific way, and they kept the details out of the way until needed.</p> Paulhttp://www.blogger.com/profile/16712770722605767823noreply@blogger.com13tag:blogger.com,1999:blog-1565373825740259469.post-20917886093247715142010-09-12T14:33:00.001-06:002010-09-12T14:33:21.038-06:00Choosing a .NET Framework Version<p>Whether you’re starting a new project or just releasing a new version of a tried-and-true application that’s been around forever, one major decision you need to make – and make right – is the framework version you choose to target.  This is more complicated a question today than ever before, but since the release of .NET 4, there are good choices available regardless of your scenario.  Here’s a quick guide:</p> <h3>.NET 1.0</h3> <p>This is now completely obsolete.  Don’t use this for new projects.  Ever.  If you’re supporting an application that uses this, at LEAST upgrade to 1.1, and ideally, 2.0.  It’s generally that not hard, and the 1.0 release of .NET has some ugly little surprises hidden away, just waiting for the opportunity to ruin your week.  Microsoft no longer supports this version, and yes, there are serious bugs.</p> <p><strong>When to use:</strong></p> <ul> <li>Never.</li> </ul> <p><strong>When to upgrade:</strong></p> <ul> <li>Long, long ago.</li> </ul> <h3>.NET 1.1</h3> <p>This is pretty old.  Don’t use this for anything new, and avoid active development on this platform. It’s still safe to use, though, so feel free to maintain code running on this for another few years.  In fact, this was the first version of .NET to be included with an OS (Windows Server 2003), so Microsoft will continue to support this until 2015 at least.</p> <p><strong>When to use:</strong></p> <ul> <li>Your application must support Windows NT 4.0.</li> <li>Maintaining applications for which active development has ceased.</li> </ul> <p><strong>When to upgrade:</strong></p> <ul> <li>Immediately, if active development continues.</li> <li>In the next few years, if long-term support is required.</li> </ul> <h3>.NET 2.0</h3> <p>I love this release.  This is when .NET came of age, and it’s still used all over the place.  As I’ll describe below, there are even reasons why you might want to base new development on this release.  Sure, it might not have all the fancy new features the newer releases include, but the core functionality is rock solid, and everything you need for a simple, timeless, reliable application is there.  It’s the last .NET release to run on Windows 2000, and if will even work under Windows 98 (do people still use that?).  The installer is just over 20 MB, and installation is pretty painless, but most modern computers out there will have this installed already.  Upgrading from .NET 1.x to 2.0 is usually pretty smooth.</p> <p>This is also a great version of the framework to choose if you’ll be supporting Mono (which allows your code to run on a variety of devices and operating systems, including Linux and MacOS).</p> <p><strong>When to use:</strong></p> <ul> <li>Your application must support Windows 98, Windows ME, or Windows 2000.</li> <li>You want to avoid requiring .NET Framework updates as part of your deployment process as much as reasonably possible.</li> <li>Maintaining applications built on .NET 2.0 or earlier.</li> <li>Your application must run under Mono.</li> </ul> <p><strong>When to upgrade:</strong></p> <ul> <li>Active development continues, and you want access to features available only in newer versions of .NET.</li> </ul> <h3>.NET 3.0</h3> <p>This is where things start to get ugly.  .NET 3.0 is actually not a full release of the .NET Framework.  It’s really just .NET 2.0 plus some new technologies thrown in (WPF, WCF, WF and a few other oddities).  This version was included with Windows Vista, but was never really popular with developers.  Unless you know exactly why this is the version you need, you should avoid this one.  It’s just… weird.</p> <p><strong>When to use:</strong></p> <ul> <li>You require features not available in .NET 2.0, AND your application must not require Framework updates, AND your application will only run on Windows Vista or newer.</li> <li>Maintaining applications built on .NET 3.0.</li> </ul> <p><strong>When to upgrade:</strong></p> <ul> <li>Now, if active development continues (unless you really know why you’re using 3.0)</li> </ul> <h3>.NET 3.5</h3> <p>The Beast.  I really hate this release.  This version continues the weird existence of 3.0.  It’s really just good old .NET 2.0, plus a bunch of changes and additions.  As a developer, there’s a lot of new stuff here since 2.0 (LINQ is introduced, WCF and WPF are a bit more usable, ASP.NET includes AJAX support, and there are a bunch of other new toys and language improvements to play with).  But administrators have learned to <em>hate </em>this release.  The installer is over 230MB, can take HOURS to run, and often requires several reboots.  Automated deployment is an absolute joke; it’s probably easier to upgrade the entire OS than get this release out over group policy (see <a title="http://msdn.microsoft.com/en-us/library/cc160717(VS.90).aspx" href="http://msdn.microsoft.com/en-us/library/cc160717(VS.90).aspx">http://msdn.microsoft.com/en-us/library/cc160717(VS.90).aspx</a>, and check out the bitching in the comments).  I was involved in an upgrade project where updating one single server turned into an overnight ordeal, and pushing updates through group policy, WSUS, or any other modern management software was abandoned in favour of walking around to each and every machine.</p> <p>This was the latest version of .NET for several years, and it presented a real dilemma for developers: a) stick with the tried and true .NET 2.0 and make do without any enhancements introduced since 2007, b) move to 3.5 and deal with the endless problems associated with the upgrade, deployment, and support processes, hoping the next version wouldn’t be even worse, or c) abandon all hope, give up on .NET, and move to a different development platform.  I struggled with this dilemma for a couple years myself – and don’t forget, this was the Windows Vista era.  Microsoft seemed to be losing ground on all fronts, alternatives looked better than ever, and the future was really tough to call.  I spend serious time playing around with alternatives to .NET, and decided I’d give Microsoft one more release to make things right.  If they didn’t, I would have to start moving away from Microsoft technologies.</p> <p>As I said: this one is The Beast.</p> <p><strong>When to use:</strong></p> <ul> <li>You require features not available in .NET 2.0, AND your application must not require Framework updates, AND your application will only run on Windows 7.</li> <li>Maintaining applications built on .NET 3.5.</li> </ul> <p><strong>When to upgrade:</strong></p> <ul> <li>Now, if active development continues (unless you really know what you’re doing and you don’t care about the pain you cause your users and administrators).</li> </ul> <h3>.NET 3.5 Client Profile</h3> <p>This was an attempt to deal with the horrific 3.5 framework size and updating process.  The Client Profile is a subset of .NET that includes just the functionality typically required for client applications, and does not include any server functionality.  Unfortunately, it doesn’t do much to solve the original problems, and brings a new range of pesky little quirks.  Also, there’s a good chance you’ll run into a situation in the middle of development that requires a feature not available under the Client Profile.  I generally advise ignoring this one.</p> <p><strong>When to use:</strong></p> <ul> <li>You must use .NET 3.5, and are certain you require only the reduced functionality included in this release.</li> </ul> <p><strong>When to upgrade:</strong></p> <ul> <li>Now, if active development continues.</li> <li>Upgrading to the full version of .NET 3.5 is usually about three clicks, so feel free to do this if you run into a Client Profile-specific problem.</li> </ul> <h3>.NET 4.0</h3> <p>The latest, the greatest, and a long-overdue upgrade everybody should get behind.  This is the first true update to the CLR since .NET 2.0 was released.  It includes all the developer magic released in 3.5, adds more toys and polish, brings some very welcome language improvements, improves performance and security, makes WCF usable, makes WPF almost bearable, and generally makes life much happier for everyone.  Use it.  Love it.  Preach it.</p> <p>The full installer for .NET 4.0 is less than 50 MB, and there’s also a web installer that will download just the required components.  Installation is generally pretty painless, but can occasionally require a reboot.  You can also get this update through Windows Update or WSUS.  Side-by-side installation with previous versions works, and works well.</p> <p><strong>When to use:</strong></p> <ul> <li>You don’t need to support pre-WinXP machines.</li> <li>You don’t mind requiring your users to install a (simple and easy) framework update.</li> </ul> <p><strong>When to upgrade:</strong></p> <ul> <li>Not for close to a decade at least, I’m guessing.  This is the one to go with if you hear people start to talk about ‘Future Proofing’.</li> </ul> <p>It’s not always a good idea to change tools in the middle of a project, so depending on your restraints, you might not be able to make the leap right away.  But upgrading between .NET Framework versions is usually easy, and .NET 4.0 is well worth it.  Do note that your clients will need to have Server 2003 or Windows XP available (with certain service pack requirements).</p> <h3>.NET 4.0 Client Profile</h3> <p>The Client Profile is also available under .NET 4.0, although the installation package is only about 10MB smaller.  I don’t really see the point to this, but it’s there if you want it.  It might be wise to start development under the Client Profile so you have the option to go both ways, and then move to the full version of .NET 4.0 if the need arises.  Or, you could just ignore it.</p> <p><strong>When to use:</strong></p> <ul> <li>Hell if I know.</li> </ul> <p><strong>When to upgrade:</strong></p> <ul> <li>You need something not available in the Client Profile.  Luckily, this is still a three-click task.</li> </ul> <p>Of course, if you have a specific scenario that you think calls for a different version than this guide might suggest, go nuts.  Just be sure you know what you’re getting yourself into, and don’t forget: you might finish developing your application, but you’ll never finish supporting it, so be sure you consider deployment and security as part of your selection.</p> Paulhttp://www.blogger.com/profile/16712770722605767823noreply@blogger.com2tag:blogger.com,1999:blog-1565373825740259469.post-46371561159662701792010-09-12T12:43:00.001-06:002010-09-12T12:43:23.636-06:00Quick Fix: “Find in Files” Button is Disabled<p>Okay, so this is a pretty simple one.  Perhaps I should have figured it out way, way faster than I did, and perhaps nobody else will ever have trouble with this, but I never promised to be helpful.  <a href="http://www.slickit.ca/2009/02/and-so-it-begins.html">Or did I?</a></p> <p>Anyway, here’s a pretty common scenario (around here, at least):</p> <ol> <li>Fire up Visual Studio 2010.</li> <li>Hit CTRL + SHIFT + F to bring up the Find and Replace dialog in “Find In Files” mode.</li> <li>Type a keyword that will bring up the area in your project you want to work with.</li> <li>Hit Enter.</li> <li>Wait.</li> <li>Finally notice that nothing is happening.</li> <li>Hit Enter again.</li> <li>And again.</li> <li>Mumble “What the hell…?”</li> <li>Reach for your mouse.</li> <li>Notice the “Final All” button is disabled.</li> <li>Say “What the hell?” a bit louder.</li> <li>Click the button anyway.  (Nothing happens.)</li> <li>Stare at monitor with angry / confused expression.</li> </ol> <p><a href="http://lh4.ggpht.com/_Ca1qiVg_csY/TI0fSPDaacI/AAAAAAAAALI/BwdRc0yYoso/s1600-h/image%5B11%5D.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_Ca1qiVg_csY/TI0fSrsXDFI/AAAAAAAAALM/wtK_60n3jc0/image_thumb%5B8%5D.png?imgmax=800" width="326" height="430" /></a></p> <p>Here’s the problem: in Visual Studio 2010, the “Find All” button isn’t enabled until you’ve opened a text file of some description.  Once this happens, it will stay enabled until you close Visual Studio, even if you don’t have any documents open.  Yeah, it’s a bug.</p> <p>Here’s a workaround:</p> <ol> <li>Open any text document (code file, XML file, whatever).</li> <li>Hit CTRL + SHIFT + F to re-open the Find and Replace dialog.</li> </ol> <p>If you’re looking for a quick keyboard fix, try CTRL + N, ENTER, CTRL + SHIFT + F, CTRL + F4.</p> <p>And please, if this helps you, leave a comment and let me know.  I’d really like to hear that I’m not the only person this bothers.</p> Paulhttp://www.blogger.com/profile/16712770722605767823noreply@blogger.com15tag:blogger.com,1999:blog-1565373825740259469.post-37645790454454970242010-09-12T11:49:00.001-06:002010-09-12T11:49:50.794-06:00Visual Studio is Getting Expensive<p>Microsoft has made a lot of mistakes in its day, but one thing it’s always done right is to treat developers like royalty.  Giving developers really compelling reasons to choose Microsoft ensures that enterprises and consumers keep choosing Microsoft too, because that’s where all the programs are.</p> <p>One of the best ways Microsoft does this is with Visual Studio.  It is the best development suite on the planet, bar none.  It lets developers make better products in less time, and it makes them not hate their jobs.  It keeps programming ‘fun’.  And traditionally, Microsoft has practically given this away.  Sure, if you walk into a store and look for a shrink-wrapped copy of Visual Studio, it’s pricy.  But nobody does that.  Through the Empower program, MSDN subscriptions, and more, Microsoft has kept Visual Studio very affordable, and takes off all the restrictions placed on mere mortals.  Which is good: developers are probably the least likely bunch of people to pirate software, and they don’t have time to worry about things like licenses and product activation.  They’re not using these products.  They’re building on them so other people can use them.</p> <p>But this is changing.</p> <p>Now, developers have to choose to either live with an ‘inferior’ version of Visual Studio, or pick which ‘Team’ edition to go with.  I’m sure the marketing department was really proud of the work they did identifying their market segments, but you know what?  That doesn’t work with developers.  Am I a Software Architect?  A Database Developer?  A Test Engineer?  It really depends on which day it is, but most often, I’m all of these.  And I really don’t like having to choose which features I want to live without, because this is exactly what is happening here.</p> <p>Sure, I could go for the uber-premium ‘Team Suite’ edition, which does have it all.  But that costs many, many thousands, which is well beyond what any mere mortal can afford.  In fact, it’s a pretty good part of an annual salary most places in the world.  Visual Studio is great, but it ain’t that great.</p> <p>And worse: the usual channels that developers used to avoid paying retail are slowly being closed, or at least weakened: most of these offerings no longer come with the top-tier edition.  More and more software is unavailable to developers through MSDN subscriptions (such as the Expression products), and often, developers can’t even get into beta programs.  I develop solutions that use Microsoft Office every day, and I didn’t see the web-enabled versions of these until public release. </p> <p>All of this is happening at a time when the alternatives are getting harder and harder to ignore.  Macs are becoming a significant market segment again, much of the Linux world has rallied behind the fantastic Ubuntu distribution, and the development tools for non-Microsoft platforms are getting pretty damn good.  Sure, I’d rather use Visual Studio.  But by the time I’m paying more on Visual Studio than my rent, I think I can probably learn to live with Eclipse.  And if I do that, my products probably won’t require Windows anymore.  And if they don’t, neither will my customers.</p> <p>I really hope Microsoft wakes up here.  These higher prices probably look good on a balance sheet; I’m sure the developer tools division at Microsoft is pulling in huge amounts of cash.  But this is a strategically damaging way of increasing revenue: you get a relatively small, yet concrete and immediate, gain in one corner, but you’re slowly, surely, weakening your entire foundation.</p> <p>Microsoft: give us developers a break.  Try going in the other direction: give us more for less.  We’ll respond in kind.</p> Paulhttp://www.blogger.com/profile/16712770722605767823noreply@blogger.com3tag:blogger.com,1999:blog-1565373825740259469.post-80340762094527146182010-07-31T22:31:00.001-06:002010-07-31T22:34:55.683-06:00Configuring Windows 7 AppLocker<p>Today, we have decided to post a video that will briefly go over how to use Windows 7 AppLocker. This is a great new Windows 7 feature that will make securing individual machines a lot easier. </p> <p>Click below to learn more! You will want to follow along on your own computer to better see the settings as the video is small. </p> <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:5248ade9-5c67-490b-ab3f-3444ae392cd3" class="wlWriterEditableSmartContent"><div id="2f1a3f0d-2d2c-4456-ad69-28835d051107" style="margin: 0px; padding: 0px; display: inline;"><div><a href="http://www.youtube.com/watch?v=CS3vKT0wOOw&hl=en_US&fs=1" target="_new"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxhHh_lW8EGgCpgjl8_8VBjuKbs03MaeScnEwyKBcwanYN62Z0D1gFLh8aBvaI0eBBP4pLkdD8zL3J_DGb6xHytxERCuChhtILJQXki2bSXbqoJLSmmyhf3f6maClWQ8J8V3dMJSHj-Ds/?imgmax=800" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('2f1a3f0d-2d2c-4456-ad69-28835d051107'); downlevelDiv.innerHTML = "<div><object width=\"425\" height=\"355\"><param name=\"movie\" value=\"http://www.youtube.com/v/CS3vKT0wOOw&hl=en_US&fs=1&hl=en\"><\/param><embed src=\"http://www.youtube.com/v/CS3vKT0wOOw&hl=en_US&fs=1&hl=en\" type=\"application/x-shockwave-flash\" width=\"425\" height=\"355\"><\/embed><\/object><\/div>";" alt=""></a></div></div></div> Chokdiihttp://www.blogger.com/profile/02880211667247259820noreply@blogger.com2tag:blogger.com,1999:blog-1565373825740259469.post-14624707456200474612010-07-30T21:27:00.001-06:002010-07-30T21:27:32.277-06:00Offline Installer for Windows Live Essentials<p>I constantly find myself amazed at just how good some of the free applications included with Windows Live essentials are. I particularly like the movie maker which is easily as good as any of Mac’s offerings. </p> <p>That being said, I am also constantly amazed at how annoying the online installs of some of these free programs can be – especially if you are installing the package on multiple PCs. </p> <p>However, in the case of Windows Live Essentials, Ed Bott recently published a link to the offline installer on ZD Net for all to use.  Please find the link below</p> <p> <a href="http://g.live.com/1rebeta4_all/en/wlsetup-all.exe" target="_blank">Windows Live Essentials Offline</a></p> <p>For those of you that have never used this package, I strongly encourage you to check it out. In fact, I have written all of these blog post’s on the Windows Live Writer and it is an essential tool for the maintenance of this website.</p> <p>Enjoy the link folks!</p> Chokdiihttp://www.blogger.com/profile/02880211667247259820noreply@blogger.com0tag:blogger.com,1999:blog-1565373825740259469.post-16922956228713888292010-07-30T20:37:00.001-06:002010-07-30T20:42:12.079-06:00Working with the Auto-Complete Cache<p>“Fire!!” “Earthquake!!” “Tornado!!” – all of these desperate screams for help pale in comparison to the shriek heard from end users after getting a new mail profile. As the words “Hey, my contacts are gone!!” come bellowing down the hall, many techies simply feel like packing up, retiring and heading for a more rewarding career – perhaps that of a trash collector or road sweeper. Truly, the world has come to en end if [insert_name_annoying_user_here]  has lost his contacts! </p> <p>Or, maybe not. While it is true that there are few things that both irk and are more readily noticed than a missing auto-complete cache, the file itself is fairly easily managed. With a little bit of extra work, you will be able to avoid many of the pitfalls that plague IT administrators after a profile switch and you will also be able to help end users clean up or reset their cache completely. </p> <p>Before we get going, however, it is worth noting that the auto-complete cache is simply that – a cache. As such, it has very little offered by Microsoft in terms of editing it and in Microsoft’s eyes is more of a temporary data repository rather than some sort of proper database. Don’t expect to get stellar support from Microsoft should this become corrupt – the official line is that all addresses should be kept in your address book or outlook contacts. As a matter of principle, I must admit that I too agree with this advice. </p> <p>Nevertheless, users expect their cache to be manageable so let’s dive in and look at what can be done with this. </p> <p>The cache itself is implemented in the form of a file that has the .NK2 extension and is named after the name of your outlook profile. By default, this name is likely going to be “outlook.nk2”, but be aware of other names. In Vista and Windows 7, you will find this located at:</p> <p><strong>“C:\ Users\<i>UserName</i>\AppData\Roaming\Microsoft\Outlook”</strong>    </p> <p>in Windows XP      </p> <p><strong>“C:\ Documents and Settings\<i>UserName</i>\Application Data\Microsoft\Outlook”</strong>       </p> <p>In order to see this file, you will have to ensure that you have enabled the display of hidden files and folders.  (Learn how:<a href="http://www.bleepingcomputer.com/tutorials/tutorial62.html" target="_blank">Show Hidden Files</a>) </p> <p><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="nk2" border="0" alt="nk2" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGg9fODMbFskSRU6S4kWSBDxLdFUVJr2Qa7IOtwvqjnqTMBhwM1xgv2rNWXS6VObYDFwGzF_GDO50nHExsoy6sCTklWmnLBA1Ok_C0NisPGM6dHwYsr8l7EWvaiOpiJYhfFN4mQ-fyJL4/?imgmax=800" width="419" height="254" /> </p> <p>So, once you have the directory open, it is likely that you will not see an auto-complete cache in that folder. Outlook only creates this after an email is sent and Outlook is closed and re-opened, so go ahead and send a test message to yourself, or whoever you see fit. This will cause an entry to be written to the .NK2 when Outlook is closed and reopened. After doing this, ensure that Outlook remains closed as having Outlook open will put a lock on this file and prevent you from renaming it.     </p> <p>Now, take not of the name of the new .NK2 file. You will have to find the previous one from the old profile, move it to the new directory and rename it to the exact name of the new .NK2 file you have created. Go ahead and rename the new one to profilename.bak. Rename the old .Nk2 file to the name of the newly created one. Finally, reopen outlook and you should have all of the old auto-complete entries available. </p> <p>Now, given this information, one of the easiest ways of creating a brand new .NK2 cache should the old one be corrupt, is to simply follow the procedure above and just rename the .NK2 file. </p> <p>Another useful tidbit, is that individual entries in an an auto-complete cache can be deleted by simply hovering over the entry in the drop down and pressing the delete key while it is highlighted. </p> <p><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="autocomplete" border="0" alt="autocomplete" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvnzJUMhQ_1HlRZF-X4Te79t9tPpln0VQhTTjsFi3IqxrJlN0Pb5WeEjJSqfRAhR3_ir4tBRbql0jPC7vDdwb7OnqrX0y3yxMZvk_0h4MMMa719krFt3OqqU8zUG9l6LVL7IJDafMwV_w/?imgmax=800" width="449" height="248" /> </p> <p>In Outlook 2010, Microsoft has also added a red X with which you may delete the entry by clicking on it. You can also get a brand new cache in Outlook 2010 by using the <b>Outlook.exe /CleanAutoCompleteCache</b> switch. Simply cut and paste this into the run box and you will end up with a brand new cache. </p> <p>If you need more extensive editing capabilities of the .NK2 cache there are several free and relatively cheap editors out there that will allow the import of entries and correction in an easy to use editor. </p> <p>So don’t worry about finding a pair of overalls just yet for your new career, there really are ways of dealing with the auto-complete cache.  I hope this little tutorial helps!</p> <p>Cheers!</p> Chokdiihttp://www.blogger.com/profile/02880211667247259820noreply@blogger.com3tag:blogger.com,1999:blog-1565373825740259469.post-91211102949117120742010-06-16T23:00:00.001-06:002010-06-16T23:01:59.040-06:00Hosting and the Cloud<p>Hello folks.</p> <p> It really seems like an eternity since I updated this blog. I have been busy implementing some projects at work and Paul spent a fair chunk of time gallivanting around Europe and South America.  While I am sure that Paul has had a good chance brush up on his French and Spanish, I have spent a good chunk of my time brushing up on DFS logs and learning more about The Cloud. </p> <p>Much has been written about the cloud and both the media and the big players in the IT industry seem to be having a virtual orgy espousing the virtues of server-less IT environments.I jumped in to this love fest at first too, but that was with great naivety – I was but a virgin in this game. </p> <p>I know better now and let me tell you – don’t party in the cloud until you are sure you know what you are getting yourself into. While many of the benefits that big players like Microsoft and Google promote are true, they often fail to mention how difficult the actual logistics of moving into the cloud can be.  There are some real gotchas to watch out for. Put your party hats on boys.</p> <p>Let’s take the example of a hosted exchange environment and dissect it a little. It seems like a great idea. The ability to take your email anywhere; no need for a VPN; 99.9 percent uptime and no menacing exchange limits or management to perform. All of this is true, but the question is, how do you get the data there?</p> <p>Many organizations have spent years building up complex linkages in their exchange environment and to that end have enormous amounts of email behind all of that. There are public folders, contacts, resource mailboxes and a plethora of other oddities.  Quite simply, users don’t often realize how complex their environment is and will easily consent to changes to the environment without actually realizing what the change itself means. This leads to disappointment when the new environment is rolled out and a lot of headaches for IT support staff who were assured that everything was “kosher” before the transition. </p> <p>Then, there is the logisitcs of actually moving data in the first place. The tools that exist for importing and exporting mail are quite labour intensive and demand that the user be pulled away from their computer. It can take literally hundreds of hours to export pst files, re-import them and then to have that data spool down again and rebuild a users cached mail file. In theory, there would seem to be many tools at one’s disposal for doing this, but at the end of the data these tools prove utterly unreliable for the large mail stores of today’s users. For instance, it is not implausible to run across mailboxes that are over 15 GBs in size today. How do you even manage getting such a mailbox into the cloud? How do you deal with exporting it. All of these operations actually require exporting mail to a .pst file. Exmerge is of little use since it breaks the files into 2Gb chunks. So, you are left with actually exporting this out of outlook and having to babysit it to ensure that it completes. Then you have to physically open the users new mailbox in outlook and import that data back in. Given average Internet speeds for small businesses, you are looking at a 4 or 5 day process just for one mailbox. The logistics are a nightmare. This definitely isn’t the no-strings-attached fun you were promised on Craigslist.  </p> <p>Now, after all of that data is finally up in the cloud, what happens when this all breaks? You are completely at the mercy of some company in New York that has very little accountability to the end customer. I guarantee you that they will not feel the same sense of urgency that your own personal systems administrator feels when exchange has issues. Sure, it is more reliable – but let’s be honest. Everybody has some downtime.</p> <p>Anyway, this was all a bit of a ramble, but I guess my point in all of this here is to make sure you carefully evaluate whether a hosted or int he cloud solution is really right for your business and if you do decide to take the plunge carefully audit and where possible purge the amount of data that will need to be uploaded. Then ensure that your users understand the transition plan 100 per cent and make sure that the expectations of the outcome are crystal clear. Do not promise that an environment will look identical to the in-house exchange. Just promise that there will be a way of accessing data that is needed in a timely fashion. Both your users and IT team will reap the rewards of this careful planning and management of expectations. </p> <p>Thanks for the read!</p> <p>Cheers….</p> <p>Matt</p> Chokdiihttp://www.blogger.com/profile/02880211667247259820noreply@blogger.com3tag:blogger.com,1999:blog-1565373825740259469.post-55602517742890951622010-04-22T18:34:00.001-06:002010-04-22T18:37:34.578-06:00My SBS CALS Have Disappeared<p> </p> <p>So here I ask, is there anything more intensely irritating than a boy dragging his nails across a dry dusty chalkboard? Probably not, but I must admit, every time I open up a licence manager on a SBS Server and look at CALS, I get that same feeling of impending rage. </p> <p>Let’s just say it; SBS 2003 CALS were a total pain and completely useless.  Yes, I understand that Microsoft wanted to protect their best interests and needed to make sure that the SBS package wasn’t used inappropriately, but surely it did not warrant a system so maddening. </p> <p>So, with my thoughts on this known, you can imagine how I felt when one of my client’s SBS Servers for whatever reason decided to drop its licence database. </p> <p>This shouldn’t be such a big deal, except for the fact that nobody could find any records regarding these CALS and even calling Microsoft was futile. The previous IT firm did not document anything and it was not completely clear how they even purchased the CALS in the first place. </p> <p>After discussing it with Microsoft and being told that they were “escalating” the issue, I set out to see if there was a technical solution to my problem.  I poked around and found that the licence database itself is implemented in two tiny files. These are: autolicstr.cpa and licstr.cpa. </p> <p>Apparently, there is an automatic backup created of the licstr.cpa which is the main licence database.  The easiest way of fixing this is to copy these two files out of the C:\windows\system32 directory, use NTbackup and back them up to a file and then use the restore wizard in SBS licence manager to recover them from the file. </p> <p>If you get an error message that the CALS are no longer useable, simply write down the keys that are shown in the licence manager, re-enter them and phone Microsoft to re-validate. Naturally, you should take the time to properly document the CALS and back them up using the backup licence function in the licence manager, so that you will never have to deal with this again.</p> <p>This little trick sure made my day, and I hope it helps some of you as well!</p> <p>Cheers!!!!</p> Chokdiihttp://www.blogger.com/profile/02880211667247259820noreply@blogger.com2tag:blogger.com,1999:blog-1565373825740259469.post-82386248586950581392010-03-17T21:29:00.001-06:002010-03-17T21:30:57.075-06:00Outlook 2007 Inbox Renamed<p>We’ve been a little shy on updates lately folks. It has been a busy time of year, Paul is down in South America having the time of his life, and spring is fast approaching. Still none of this excuses our lack of writing and definitely doesn’t excuse the brevity of this post. </p> <p>Nonetheless, this is all I have to offer for now. </p> <p>A few days ago, one of my clients called me up and said that his Outlook 2007 inbox had suddenly been renamed to image001.jpg.  I have seen a lot of strange things, but this I really had to see. </p> <p>As my log me in session connected and I focussed on the tiny text on my laptop screen, there it was. image001.jpg. This was indeed bizarre. I wasn’t really sure where to begin with this. The issue, in fact, doesn’t affect the end user in any way nor does it impede the normal flow of mail. But still, it is an annoyance.  </p> <p>Historically, I have had great luck with the various switches that can be used to launch Outlook. So, I started digging in a bit, and sure enough I found a switch /resetfoldernames. </p> <p>I was a little worried about running some random switch that I knew very little about, but again, past experience has been really good with these Outlook commands and away I went with it.  5 seconds later and the problem is gone. </p> <p>So, for thos of you that have never used an outlook switch, here is the procedure. Open the run dialog box and enter the following command. </p> <p>Outlook.exe /resetfoldernames</p> <p>I always like to start this with outlook closed so that it opens one new instance of the program. </p> <p>If anyone knows why this happens, I would love to hear about it. Please post your comments below. </p> <p>Cheers!</p> Chokdiihttp://www.blogger.com/profile/02880211667247259820noreply@blogger.com6tag:blogger.com,1999:blog-1565373825740259469.post-84640498435500236332010-01-30T22:55:00.001-07:002010-01-30T22:55:42.931-07:00Fixing RSS Feeds in Outlook 2010 Beta 2<p>I love RSS.  I can't believe I'm saying this, because for years, I never really 'got' it.  I knew how it worked technically, I saw how it could possibly be useful, but I just never really cared enough to actually use it, and I couldn't imagine why anyone else ever would, either. </p> <p>That is, until Outlook added RSS support. </p> <p>For me, Outlook is always running.  I manage half my life through that program, in fact (the other being OneNote, which I like even better).  And as I’ve mentioned before, I really dislike the current state of the web, where each web site is most like a program, with its own interface and quirks and learning curve, not to mention bugs, advertisements, distractions, and security issues.  So if I can take the content from the sites I love and read that content in a program I already know, I’m a happy man.</p> <p>Outlook lets me do just that:</p> <p><a href="http://lh3.ggpht.com/_Ca1qiVg_csY/S2UbPQLYmJI/AAAAAAAAAKM/b2bbEKxUM30/s1600-h/image%5B18%5D.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_Ca1qiVg_csY/S2UbQetQQBI/AAAAAAAAAKQ/Zq5-a6bUjCk/image_thumb%5B8%5D.png?imgmax=800" width="372" height="373" /></a> </p> <p>By default, Outlook creates a folder for each feed to keep things organized, but I’ve changed that to have everything delivered into my RSS Feeds folder.  Outlook keeps every article around until I choose to delete it, shows me which I’ve read, and lets me manage them just like any other Outlook item.  I can even forward interesting stories to friends just like an e-mail.  You can also see Outlook keep an archive of all our Slick IT articles here, which is a very easy way of having a complete backup and searchable offline reference of all our content.  Happily, the feeds I choose to read are saved in my .PST file, so I don’t have to re-add them every time I rebuild my machine or reinstall Outlook.</p> <h3>The Problem</h3> <p>When I upgraded to Outlook 2010 Beta 2, however, the magic stopped.  Everything looked okay… my RSS Feeds folder was still there, the articles I hadn’t yet read were working just fine, but I wouldn’t get any new articles delivered.  It wouldn’t sync.  I’d hit Send / Receive all day, but the RSS Feeds just wouldn’t update.  I even checked under Accounts, where they seem to show up:</p> <p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifkn3bTtnX4j2WAn3Dp1bOaGaa6QOK-XYuFNga1_ROvXWJmme-1A-wHwvovvn2v_3fN33OAMmfoDMxLjqLakh0Dljnzk2zC2VWVYSAUNrrvade7Sq32247Vo3ZScAsKMdXqaHKGjvOcoP2/s1600-h/image%5B20%5D.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_Ca1qiVg_csY/S2UbRtI0NkI/AAAAAAAAAKY/0QxXzVHQFjc/image_thumb%5B10%5D.png?imgmax=800" width="312" height="255" /></a> </p> <p>But despite this, Outlook wouldn’t actually check them.</p> <h3>The Solution</h3> <p>It turns out to be quite an easy fix.  Here’s what worked for me:</p> <ol> <li>Using Internet Explorer, add a new feed.  If you’re using IE now, just click the View Feeds button on the toolbar and then click “Subscribe to this feed”: <br /><a href="http://lh5.ggpht.com/_Ca1qiVg_csY/S2UbSYZ-9RI/AAAAAAAAAKc/Io85c-Y9Q48/s1600-h/image%5B19%5D.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_Ca1qiVg_csY/S2UbTOOMNEI/AAAAAAAAAKg/Dzfm2iRl0U4/image_thumb%5B9%5D.png?imgmax=800" width="383" height="304" /></a> <br /></li> <li>Under the File menu, choose Open, and then click Import: <br /><a href="http://lh6.ggpht.com/_Ca1qiVg_csY/S2UbT5-t0bI/AAAAAAAAAKk/I2icj_VSBOM/s1600-h/image%5B24%5D.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_Ca1qiVg_csY/S2UbUieQLNI/AAAAAAAAAKo/kPF_fbnwM3k/image_thumb%5B12%5D.png?imgmax=800" width="372" height="373" /></a> <br /></li> <li>Choose “Import RSS Feeds from the Common Feed List” and click Next: <br /><a href="http://lh3.ggpht.com/_Ca1qiVg_csY/S2UbVSRI7tI/AAAAAAAAAKs/q6sCaPfLbdU/s1600-h/image%5B27%5D.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_Ca1qiVg_csY/S2UbVziilSI/AAAAAAAAAKw/aOKqUOdfJ28/image_thumb%5B13%5D.png?imgmax=800" width="451" height="344" /></a> <br /></li> <li>Check the feed you just added and click Next: <br /><a href="http://lh6.ggpht.com/_Ca1qiVg_csY/S2UbWsQSzDI/AAAAAAAAAK0/ofJhbrxLeoQ/s1600-h/image%5B30%5D.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_Ca1qiVg_csY/S2UbXexJXtI/AAAAAAAAAK4/SviJybhQsDc/image_thumb%5B14%5D.png?imgmax=800" width="489" height="368" /></a> <br /></li> <li>Click finish, and then try another Send / Receive.  You should find all your old feeds now begin to synchronize.  You’ll only have to do this once, and you can now remove the feed you just added.  But, if you just added Slick IT, why would you?</li> </ol> <p>Hope this helps!</p> Paulhttp://www.blogger.com/profile/16712770722605767823noreply@blogger.com21tag:blogger.com,1999:blog-1565373825740259469.post-10511652898147844402010-01-28T11:32:00.001-07:002010-01-28T11:32:05.242-07:00The Fall of DomainPeople<p>Like many of you, I manage a few domains.  Mostly, these are on behalf of clients, and as such, great support and reliability are more important to me than rock-bottom prices.  I want to keep all my domains with the same registrar, under one account, and since many of my domains are .ca, this somewhat limits my choice in registrars.</p> <p>Well, let me summarize this lengthy article with a few choice words of wisdom:</p> <blockquote> <p><strong>Never use DomainPeople for anything.  If you’re using them now, run away.</strong></p> </blockquote> <p>For years, I’ve used <a href="http://www.domainpeople.com/">DomainPeople</a>.  They have been around forever, they promise 24/7 tech support that’s easy to reach (no waiting on hold), and they offer a good selection of “value-added” services, such as DNS hosting, e-mail forwarding, and so on.  Their prices might not be the cheapest, but they’re not quite as astronomical as a couple others you probably know about.  And, keep in mind, this goes back a few years, to a time when GoDaddy wasn’t an option, Network Solutions didn’t do .ca domains (or perhaps was even more expensive than it is today), and generally, the world of domain registration was a very different place.</p> <p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIeo48Y4GQ1swZmaTliGotXQhe890cgLNd3Vl5ReXDOLPr4XC04tNt-Og9afDeaOQd0ZnJdIxxseGEOTmyuez9B1-Bjt_Ap-P3ypVJFGHnQZLrLwEWw6WcnbaJntP7pvW6PoWkNy238UgK/s1600-h/image%5B2%5D.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_Ca1qiVg_csY/S2HYJP7QpBI/AAAAAAAAAKI/u6Jp6FhKgxE/image_thumb.png?imgmax=800" width="141" height="79" /></a> </p> <p>By the time 2009 rolled around, DomainPeople’s site and control panel was looking a bit dated.  There had been essentially no change for years in either the function or the design of their services.  But that’s okay.  It all worked.  Sure, they weren’t the most dynamic and aggressively-growing company out there, but I didn’t want that.  I just wanted a good, stable registrar.  I didn’t mind putting up with a quirky interface from the 90’s so long as they delivered where it counts.  And for years, they did.  Mostly.  And when they didn’t, it was easy to reach them by phone and have everything sorted out.</p> <p>Until everything changed.</p> <h3>The Full Story</h3> <p>Let’s do this chronologically.</p> <p><strong>January 11, 2010:</strong> The first sign of change arrives.  I receive an e-mail (well, five, actually… but DomainPeople has never been particularly organized when it comes to that sort of thing) describing some upcoming changes to their control panel.  Here’s essentially what they had to say:</p> <ul> <li>Within two weeks, your account will be automatically upgraded.</li> <li>You will gain access to new features.</li> <li>Your username and password will not change.</li> <li>An auto-renew feature has been added.  If you choose to keep a card on file with us, we’ll renew any domain automatically before it expires.</li> <li>You will no longer be able to access the control panel on a per-domain basis using the domain’s password.  If you don’t want all your domains to be accessible by your master account password only, you must remove them from your master account within the next two days.</li> </ul> <p>Okay, so fair enough.  New features are coming, and there’s nothing I need to do.  Wonderful!  Now, in the back of my mind, I was thinking “gee, it’s a good thing I don’t need to provide my clients with access to their domain control panel, because then I’d have only two days to set up new accounts for each and every domain, provide my clients with the new login information, and then lose the ability to manage the domains myself without keeping track of dozens of user accounts, hoping none of my clients changed their passwords”.  This should have set off a few alarms… I’m sure many of their customers were caught off-guard by this, and I doubt many of them actually responded to this in the two days DomainPeople gave.  But it didn’t affect me, there was nothing I needed to do, and I was looking forward to having a snazzy new interface with new features, so I didn’t much care.</p> <p><strong>Friday, January 15, 2010</strong>: I receive close to 10 e-mails from DomainPeople, all of which are notices of pending auto-renewals.  I also receive two notices of auto-renewal failures.  This is all a bit odd, but I figure that since I haven’t provided a credit card, this is just their auto-renewal system trying its best to do its thing.  It’s a bit odd that I was given no notice of pending auto-renewal for the two failed attemps, but that’s okay.  So far, none of this means anything; it’s just a bit of weird e-mail related to a feature I’m not using.</p> <p><strong>Saturday, January 16, 2010</strong>: I receive two notices of pending domain expiry.  This is weird… these are different domains.  I would have expected more auto-renewal notices.  So do domains renew automatically, or not?  Still, I put this down to glitches in the deployment of their new system.  Again, none of it affected me at the moment.</p> <p><strong>Sunday, January 17, 2010</strong>: Another five notices of auto-renewal failures.  This is getting a bit ridiculous.  By the way, at this time I was on a small island off the west coast, and due to a recent windstorm, had no power or Internet.  But this is all okay, because I don’t need to do anything.  I thought.</p> <p><strong>Monday, January 18, 2010</strong>: The calls start.  I’m not quite sure why so many of my clients have no e-mail or websites working at the moment, but my first thought is that it must be related to the power outage.  What weird, vital, forgotten thing do I have running through my workstation?  It’s tough to diagnose, of course, when all you have is a cell phone (thank God for Windows Mobile, and no, there is no iPhone App for that), but by that afternoon, I was eventually able to trace things back to a DNS issue.  Well, for the clients having trouble, I use DomainPeople for their DNS.  So, I call them.</p> <p>They answer quickly.  This is a good sign.  I explain the problem, and they admit that yes, there was an issue transferring zone files to their new system, but there are technicians working on it right now, and the problem should be fixed in a couple hours.  So, I leave them to do their thing.  The notices of renewal failures and upcoming renewals continue.</p> <p><strong>Tuesday, January 19, 2010</strong>: Still no fix.  And still no power, unfortunately.  So, I call again.  I’m given pretty much the same story.  They’re aware of the issue, they’re working on it, and it should be fixed soon.  I’m also asked for a list of ‘high priority’ domains, which they promise to take care of right away.  After asking a few more questions, I find out that these issues would have started on Friday, and yes, many other customers are affected.  I’m a bit discouraged at this point… four days of downtime on a simple DNS server, and no estimated time of resolution?  This is not the DomainPeople I had grown to love and trust.  Still, shit happens, and it sounds like they’re doing everything they can to fix it, so I hang up feeling pretty lucky I’m not a DomainPeople admin today.</p> <p>By the end of that day, I realize how much as gone wrong: no DNS for any of the domains they serve, no e-mail forwarding, nothing.  Web sites are down, e-mail is broken, and still, there’s no estimated time of resolution.</p> <p><strong>Wednesday, January 20, 2010</strong>: Still broken.  And another surprise: a bunch of my domains have auto-renewed!  How odd. I call tech support, and learn that there is a senior technician working on the issue, but this person will not accept my call or provide any further details to Tier 1 tech support.  No estimated time of resolution is available.  Apparently, I should just hang up, wait, and eventually, it will be fixed.</p> <p>I inquire about the domain auto-renewals.  Well, it turns out that one of my clients had called DomainPeople directly, and was told the issue was caused by a domain name about to expire (this was entirely false), and if she didn’t renew the domain immediately, it would be gone forever.  In a panic, my client provided her credit card to renew the affected domain name.  Big mistake.  This didn’t fix the problem, of course, but it did allow the auto-renewal system to renew many domain names to her credit card.  The tech support representative was not sympathetic, but did suggest I call their billing department.</p> <p>Billing agreed with my assessment, but didn’t see anything wrong.  I was told that the auto-renew process was explained in an e-mail, and that the system was working properly.  I should have turned off auto-renew if I didn’t want this to happen.  Well, here are the problems with that:</p> <ul> <li>Notice of pending auto-renewals were first given only on Friday, the 15th.  This is, by the way, the same day everything went down and the first auto-renewal failure notices started to come in.  No credit card was on file at this time.</li> <li>DomainPeople did not have authorization from me – the accountholder and domain registrant – to make changes to the billing configuration of my account.</li> <li>DomainPeople did not have authorization from the cardholder to charge the credit card for the amounts or services billed.</li> </ul> <p>Eventually, the billing representative was able to see this.  The new system, however, does not have the ability to remove a credit card that has been added, and the charges could not be removed, but only reversed and then applied to a different credit card.</p> <p>So, at this point, DomainPeople has told my client the downtime was due to an expired domain (entirely untrue), has charged my client (without authorization) with the renewal of many other domains (none of which were immediately about to expire), and has still not fixed the technical issues.  No one is able to offer any additional help.</p> <p>I then track down a manager at DomainPeople who listens patiently to my tale of woe, takes a bunch of information, and promises to have both the technical and billing issues resolved as soon as he can make it happen.  He promises to stay in touch with me, and tells me to expect a call from him the next morning.</p> <p><strong>Thursday, January 21, 2010</strong>: Still broken.  And no call from tech support or the manager I was working with.  I do, however, have a message from the billing department advising me that auto-renew has been turned off, they’re working on the refund, and I should call to provide a bit more information.  I do, and a told that they will be able to process the reversal in the next day or so.</p> <p>However, the technical issues still exist.  And worse, the tech support department has no record of anything even being wrong.  Nobody is working on this.  The senior technician responsible for this problem is ‘not available’.  The manager I spoke with earlier is ‘not in today’.  And nobody knows anything.  I’m encouraged to open a ticket using their web site.</p> <p>Again, I battle my way to a senior staff member who seems to be in a position to help things.  He is very friendly, understanding, and promises to get things resolved immediately.  He takes my contact information, a list of the domains in question, the support ticket numbers I have been provided, and other details.  He then tells me he will call back as soon as he’s able to get things resolved.</p> <p><strong>Friday, January 22, 2010:</strong> Still broken.  I’ve heard back from billing, and they are pleased to say they were able to reverse the charges.</p> <p>But not a word from tech support or either of the higher level people I was working with.  I’m told to sit tight, that technicians are working on this, and I will be called.</p> <p><strong>Saturday, January 23, 2010:</strong> Still broken.  Still no word.  I’m out of town and unable to do much except for call to see what’s happening.  I don’t learn much.  This marks one week since my clients had working e-mail.  I do not look good to them.</p> <p><strong>Sunday, January 24, 2010</strong>: Still broken.  Still no word.  Another call, but no more answers.  Only empty promises.  Nobody I’ve spoken with earlier is around, and nobody else seems to be in a position to help.</p> <p><strong>Monday, January 25, 2010</strong>: Still broken.  Still no word.  Things are getting really critical at this point.  I’m starting to ask myself how I’ve let things go over a week.  I could have transferred the domain to a different registrar twice over by now, at least.</p> <p>I call tech support.  No changes have been made.  They have no record of any word being done on this.  The tickets I provide have all been marked as resolved, one by the original senior-level technical working on my account.  This technician still refuses to speak with me directly, and does not return the messages I have left for him.  Neither of the two managers I spoke with are available, nor have they returned my calls.  I leave additional messages, explaining how I cannot wait any longer, and this issue, one way or another, must be resolved.  I am yet again promised immediate action.</p> <p>I have also now come up with a strategy on moving away from DomainPeople.  It’s not pretty, or fast, but it will work.</p> <p><strong>Tuesday, January 26, 2010</strong>: Still broken.  Still no word.  At this point, I’m done with DomainPeople.  It’s been over 10 days since this problem arose, and I am no closer to fixing anything than when I started.  I’m going to reconfigure my DNS elsewhere and point my domains to these new nameservers.  I’ll also reconfigure e-mail forwarding, avoiding DomainPeople’s services and servers entirely.  This will all take time, of course, but a couple more days of downtime followed by a guaranteed resolution that I can control looks much better than anything DomainPeople could offer at this point.  There’s only one thing that could break this: in the unlikely event that someone at DomainPeople is still working on this, they might see the changes I make to my nameservers and undo them.</p> <p>So, I call.  Nobody knows anything about my issues, and nobody cares.  All tickets are closed.  There is no one able to help.  Nothing.</p> <p>I leave a message, stating that no one at DomainPeople must edit my nameservers, or do anything else with any of my domains, without first talking with me, directly, over the phone.  I’m assured this will be the case, but I don’t think the representative actually does anything.</p> <p>I begin the process of rebuilding DNS records elsewhere.</p> <p><strong>Wednesday, January 27, 2010:</strong> Still broken.  Still no word.  Everything on my end is now set to go, though, and I’m just waiting for the nameserver changes to propagate.</p> <p><strong>Thursday, January 28, 2010:</strong>  All my domains are now working!  This is because I moved all services away from DomainPeople, though… still no word from them, of course.</p> <h3>The Aftermath</h3> <p>If I look back, here’s what I see: for many, many years, I have a great relationship with DomainPeople.  I pay them thousands of dollars, they provide me with everything I need to offer quick and reliable service to my clients.  And then one day, the world explodes.  With no useful warning whatsoever, they break half my domains, charge one of my clients’ credit cards with a long series of unauthorized charges, and offer no assistance whatsoever in fixing anything.  For over a week, they do nothing to fix the problems they have created.  They do not return calls.  Ultimately, I am held hostage by a company who doesn’t care and doesn’t respond, and I am left to my own devices to find a way to escape and restore service to my clients.</p> <p>It’s important to realize that I was never rude or hostile with anyone at DomainPeople.  Every time I called, it was always easy to find someone to speak with.  When I spoke with managers, they were all very understanding and promised to do everything they could to resolve the matter.  And while all this sounds good, the fact remains: they didn’t fix what they broke.</p> <p>Hosting domains and running DNS is not hard.  These are the fundamental parts of the Internet designed to withstand nuclear assault.  There’s just about nothing that needs to be done here.  And there’s absolutely no reason why this should have broken.  That it did, and for so long, is enough to stay away from DomainPeople alone.</p> <p>But to have a large,  legitimate company (who charges premium rates for their services in exchange for promised reliability and support) completely ignore a customer like this and not work towards resolving these issues is entirely unacceptable.</p> <p>So, everyone: be warned!  Go to great lengths to avoid DomainPeople, because you do not want to go through what I did to learn this.</p> <p>And, of course, if anyone has a recommendation for a new registrar that does .CA domains, offers DNS hosting and e-mail forwarding, and actually helps out when there’s a problem, please leave a comment!</p> Paulhttp://www.blogger.com/profile/16712770722605767823noreply@blogger.com28