<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Infrastructure on Andrew Healey</title><link>https://healey.io/categories/infrastructure/</link><description>Recent content in Infrastructure on Andrew Healey</description><generator>Hugo -- gohugo.io</generator><language>en-US</language><copyright>© 2026 Andrew Healey</copyright><lastBuildDate>Mon, 24 Aug 2026 13:43:43 -0500</lastBuildDate><atom:link href="https://healey.io/categories/infrastructure/index.xml" rel="self" type="application/rss+xml"/><item><title>Wifi 8 is coming in 2028 with concepts coming out now</title><link>https://healey.io/writing/wifi-8-is-coming-in-2028-with-concepts-coming-out/</link><pubDate>Mon, 24 Aug 2026 13:43:43 -0500</pubDate><guid>https://healey.io/writing/wifi-8-is-coming-in-2028-with-concepts-coming-out/</guid><description>&lt;p&gt;Wifi 8 is coming in 2028 with concepts coming out now. The IEEE is calling it &amp;ldquo;Ultra High Reliability,&amp;rdquo; something that&amp;rsquo;s a welcome shift, especially for those battling the usual challenges in manufacturing.&lt;/p&gt;&#10;&lt;p&gt;Anyone running a plant or warehouse knows the problem hasn&amp;rsquo;t been throughput since maybe the very earliest installs. Instead, it&amp;rsquo;s usually the scan gun that drops mid-pallet, the handheld that clings to a far access point instead of roaming, or the sensor that goes quiet behind a rack of steel. And on top of that, we keep adding devices (sensors, handhelds, IoT, displays) to these environments to feed our incessant thirst for more data.&lt;/p&gt;</description></item><item><title>When I started building agentic workflows in n8n, I kept running into performance and token consumption problems processing formats like epub, pdf, and the ms office *.docx/pptx/xlsx</title><link>https://healey.io/writing/when-i-started-building-agentic-workflows-in-n8n-i-kept/</link><pubDate>Wed, 05 Aug 2026 08:48:01 -0500</pubDate><guid>https://healey.io/writing/when-i-started-building-agentic-workflows-in-n8n-i-kept/</guid><description>&lt;p&gt;When I started building agentic workflows in n8n, I kept running into performance and token consumption problems processing formats like epub, pdf, and the ms office *.docx/pptx/xlsx. Stripping them down to markdown was the obvious fix since the content mattered more than the form.&lt;/p&gt;&#10;&lt;p&gt;I ended up with a node to process each format into markdown. It dramatically improved accuracy and let me run the better models without sacrificing my credit card (and marriage) over to the token gods, or to use local models without brown outs or melted cables at home.&lt;/p&gt;</description></item><item><title>Hugo Pipeline</title><link>https://healey.io/writing/hugo-pipeline/</link><pubDate>Fri, 13 Feb 2026 23:25:22 -0600</pubDate><guid>https://healey.io/writing/hugo-pipeline/</guid><description>&lt;p&gt;This rebuild has been a long time coming. I finally carved out some time to work through my Obsidian -&amp;gt; Forgejo -&amp;gt; GitHub -&amp;gt; Cloudflare Pages pipeline.&lt;/p&gt;&#10;&lt;p&gt;Obsidian has become my Personal Knowledge Management platform. Editing all the content in the same place I take notes, brainstorm, and organize my life really is a comfortable setup.&lt;/p&gt;&#10;&lt;p&gt;Forgejo has become my playground for automations without incurring the personal costs or data sovereignty concerns over on GitHub. Since this is where my projects live, it only makes sense to keep it there.&lt;/p&gt;</description></item><item><title>Recent ThinkPad X1 Carbons replaced the right Ctrl key with a "Copilot" key.</title><link>https://healey.io/writing/recent-thinkpad-x1-carbons-replaced-the-right-ctrl-key/</link><pubDate>Sat, 07 Feb 2026 18:55:14 -0600</pubDate><guid>https://healey.io/writing/recent-thinkpad-x1-carbons-replaced-the-right-ctrl-key/</guid><description>&lt;p&gt;Recent ThinkPad X1 Carbons replaced the right Ctrl key with a &amp;ldquo;Copilot&amp;rdquo; key. But instead of implementing it as a single, remappable scancode like any sane manufacturer would, they hardwired an absolute mess into the firmware.&lt;/p&gt;&#10;&lt;p&gt;What actually happens when you press it:&lt;/p&gt;&#10;&lt;p&gt;The embedded controller fires a rapid sequence:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Left Shift down (0x2a)&lt;/li&gt;&#10;&lt;li&gt;Left Win/Meta down (0xe05b)&lt;/li&gt;&#10;&lt;li&gt;F23 down (0xe06e)&lt;/li&gt;&#10;&lt;li&gt;F23 up (0xe0ee)&lt;/li&gt;&#10;&lt;li&gt;Left Meta up (0xe0db)&lt;/li&gt;&#10;&lt;li&gt;Left Shift up (0xaa)&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;It&amp;rsquo;s a hardwired Win+Shift+F23.&lt;/p&gt;</description></item><item><title>Weekend Project: Clustering My Digital Chaos</title><link>https://healey.io/writing/weekend-project-clustering-my-digital-chaos/</link><pubDate>Thu, 25 Dec 2025 15:31:15 -0600</pubDate><guid>https://healey.io/writing/weekend-project-clustering-my-digital-chaos/</guid><description>&lt;p&gt;🔧 Weekend Project: Clustering My Digital Chaos. Spent the weekend scratching a curiosity itch: Could I wire together my Hostinger VPS, an Oracle Cloud free tier instance, and a node in my Proxmox homelab into a single container orchestration cluster? Yes. Uncloud made it entirely too easy.&lt;/p&gt;&#10;&lt;p&gt;No Kubernetes config nightmares. Just Docker hosts, WireGuard mesh networking, and some weekend tinkering. Surpising simple too. I can now move container workloads between a $4/month VPS, Oracle&amp;rsquo;s always-free tier, and the old SFF PC humming away in the closet, all talking securely over the public internet.&amp;quot;&lt;/p&gt;</description></item><item><title>Optional USB Device in Virtual Machine Manager</title><link>https://healey.io/writing/optional-usb-device-in-virtual-machine-manager/</link><pubDate>Tue, 13 Sep 2022 20:49:59 -0500</pubDate><guid>https://healey.io/writing/optional-usb-device-in-virtual-machine-manager/</guid><description>&lt;p&gt;To make a USB Host Device optional on startup within KVM, edit the XML and add &lt;code&gt;startupPolicy=&amp;quot;optional&amp;quot;&lt;/code&gt; to the source node. This will ensure your usb stick, yubikey, or whatever, it won&amp;rsquo;t stop your VM from booting if it isn&amp;rsquo;t present.&lt;/p&gt;&#10;&lt;p&gt;Example:&lt;/p&gt;&#10;&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-xml" data-lang="xml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;hostdev&lt;/span&gt; &lt;span class="na"&gt;mode=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;subsystem&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;usb&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;managed=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;yes&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;source&lt;/span&gt; &lt;span class="na"&gt;startupPolicy=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;optional&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;vendor&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;0x1050&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;product&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;0x0402&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;/source&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;address&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;usb&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;bus=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;0&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;port=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;4&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;/hostdev&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</description></item><item><title>Application Guard Testing with Virt-Manager</title><link>https://healey.io/writing/application-guard-testing-with-virt-manager/</link><pubDate>Mon, 23 May 2022 11:40:11 -0500</pubDate><guid>https://healey.io/writing/application-guard-testing-with-virt-manager/</guid><description>&lt;p&gt;Received a BSOD with error code 0xc0000225 on a Windows 10 (and 11) VM when enabling the Hyper-V role to do some testing with Microsoft Defender Application Guard. This VM runs on a Rocky Linux host and I typically use Virt-Manager to handle my VMs.&lt;/p&gt;&#10;&lt;p&gt;Two changes were necessary to get nested Hyper-V working with virt-manager:&lt;/p&gt;&#10;&lt;p&gt;&lt;code&gt;virt-xml &amp;lt;VM-NAME&amp;gt; --edit --cpu host-passthrough&lt;/code&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;code&gt;sudo modprobe kvm\_intel nested=1&lt;/code&gt;&lt;/p&gt;&#10;&lt;blockquote&gt;&lt;p&gt;&lt;em&gt;Note: &lt;code&gt;kvm\_amd&lt;/code&gt; for AMD processors&lt;/em&gt;&lt;/p&gt;&#10;&lt;/blockquote&gt;</description></item><item><title>dns.msftncsi.com DNS Requests Every Few Seconds</title><link>https://healey.io/writing/excessive-dns-msftncsi-com-requests/</link><pubDate>Sun, 18 Feb 2018 16:04:28 -0600</pubDate><guid>https://healey.io/writing/excessive-dns-msftncsi-com-requests/</guid><description>&lt;p&gt;Over the weekend, I updated my wireless router to the latest revision of &lt;a href="https://asuswrt.lostrealm.ca/" target="_blank" rel="noreferrer"&gt;ASUSWRT-Merlin&lt;/a&gt;. I also decided to update my &lt;a href="http://dietpi.com/" target="_blank" rel="noreferrer"&gt;DietPi&lt;/a&gt; &lt;a href="https://pi-hole.net/" target="_blank" rel="noreferrer"&gt;Pi-hole&lt;/a&gt; to their latest builds. Due to a &lt;a href="http://dietpi.com/phpbb/viewtopic.php?f=10&amp;amp;t=2645" target="_blank" rel="noreferrer"&gt;full code rewrite of Dietpi, it meant a complete rebuild&lt;/a&gt; for that system. The release of ASUSWRT-Merlin also suggested resetting to factory defaults due to some major changes. Everything was about to be new again.&lt;/p&gt;&#10;&lt;p&gt;Once I got everything rebuilt and running, I noticed requests coming from my firewall to my dietpi every 10 seconds or so for dns.msftncsi.com. I immediately assumed this was some Microsoft telemetry noise on my network from MS NLA. However, the queries were coming directly from my firewall which seemed odd. Another search led me to &lt;a href="https://discourse.pi-hole.net/t/excessive-requests-for-dns-msftncsi-com/556/6" target="_blank" rel="noreferrer"&gt;a post on the Pi-hole discourse&lt;/a&gt;. After I ran nvram show | grep dns_probe, it was clear I found the culprit.&lt;/p&gt;</description></item><item><title>Update Lync Notes With Twitter Status</title><link>https://healey.io/writing/update-lync-notes-with-twitter-status/</link><pubDate>Mon, 02 Feb 2015 22:17:30 -0600</pubDate><guid>https://healey.io/writing/update-lync-notes-with-twitter-status/</guid><description>&lt;p&gt;Tired of seeing &lt;em&gt;What&amp;rsquo;s happening now?&lt;/em&gt; in the Lync client. Sick of seeing the same old status update because you or your colleagues never pulled down that holiday message or #GoHawks update? Well, I was sick of it. I wanted a quick and dirty way to automate updating the Lync status message (aka ProfileNote).&lt;/p&gt;&#10;&lt;p&gt;After hours of scouring the internet and messing with multiple twitter libraries and outdated twitter code, I ran across this gem by Github: &lt;a href="https://github.com/MyTwitter/MyTwitter" target="_blank" rel="noreferrer"&gt;MyTwitter.psm1&lt;/a&gt;. While it was meant to post to twitter, a bit of hacking and this was born. Coupled with some other Lync Client work I&amp;rsquo;ve done, I had a workable solution.&lt;/p&gt;</description></item><item><title>Windows 10 Enterprise Build 9926 Tweaks</title><link>https://healey.io/writing/windows-10-enterprise-build-9926-tweaks/</link><pubDate>Mon, 26 Jan 2015 15:46:36 -0600</pubDate><guid>https://healey.io/writing/windows-10-enterprise-build-9926-tweaks/</guid><description>&lt;p&gt;A couple tweaks I found necessary for the new 9926 build of Windows 10.&lt;/p&gt;&#10;&lt;p&gt;1. Windows Update failed with error 0x80070057 preventing the install of update KB3034229. The Fix:&lt;/p&gt;&#10;&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-vb.net" data-lang="vb.net"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Windows&lt;/span&gt; &lt;span class="n"&gt;Registry&lt;/span&gt; &lt;span class="n"&gt;Editor&lt;/span&gt; &lt;span class="n"&gt;Version&lt;/span&gt; &lt;span class="n"&gt;5&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;00&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;HKEY_LOCAL_MACHINE&lt;/span&gt;&lt;span class="o"&gt;\&lt;/span&gt;&lt;span class="n"&gt;SOFTWARE&lt;/span&gt;&lt;span class="o"&gt;\&lt;/span&gt;&lt;span class="n"&gt;Microsoft&lt;/span&gt;&lt;span class="o"&gt;\&lt;/span&gt;&lt;span class="n"&gt;WindowsUpdate&lt;/span&gt;&lt;span class="o"&gt;\&lt;/span&gt;&lt;span class="n"&gt;UX&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;&amp;#34;IsConvergedUpdateStackEnabled&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;dword&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;00000000&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;HKEY_LOCAL_MACHINE&lt;/span&gt;&lt;span class="o"&gt;\&lt;/span&gt;&lt;span class="n"&gt;SOFTWARE&lt;/span&gt;&lt;span class="o"&gt;\&lt;/span&gt;&lt;span class="n"&gt;Microsoft&lt;/span&gt;&lt;span class="o"&gt;\&lt;/span&gt;&lt;span class="n"&gt;WindowsUpdate&lt;/span&gt;&lt;span class="o"&gt;\&lt;/span&gt;&lt;span class="n"&gt;UX&lt;/span&gt;&lt;span class="o"&gt;\&lt;/span&gt;&lt;span class="n"&gt;Settings&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;&amp;#34;UxOption&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;dword&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;00000000&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;p&gt;2. Only two size options for the updated start menu. Regular or maximized. This fix allows resizing of start menu to a custom size. However, it reverts the start menu back to the pre-9926 build style. Wish there was a compromise. I ended up just setting this to 1 and living with the lack of resize options.&lt;/p&gt;</description></item><item><title>Update Lync Client Location with IP GeoLocation</title><link>https://healey.io/writing/update-lync-client-location-with-geolocation/</link><pubDate>Sun, 25 Jan 2015 23:07:17 -0600</pubDate><guid>https://healey.io/writing/update-lync-client-location-with-geolocation/</guid><description>&lt;p&gt;I regularly bounce around on different networks and vpn connections. I got tired of manually setting the location in Lync and found myself just ignoring it altogether. After doing some poking around, I decided to throw a powershell script together to just do the dirty work for me.&lt;/p&gt;&#10;&lt;p&gt;The script uses &lt;a href="http://www.telize.com/" target="_blank" rel="noreferrer"&gt;Telize&lt;/a&gt; for geoip data and &lt;a href="http://myip.dnsomatic.com/" target="_blank" rel="noreferrer"&gt;DNSOMatic&lt;/a&gt; Telize for the external IP. The script requires the Microsoft.Lync.Model.dll from the Lync 2013 SDK (15.0.4603.1000 as of this post). You can find the &lt;a href="http://www.microsoft.com/en-us/download/details.aspx?id=36824" target="_blank" rel="noreferrer"&gt;Lync Client 2013 SDK here&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>SBS 2011: DistrubutedCOM Error 10016</title><link>https://healey.io/writing/sbs-2011-distributedcom-eventid-10016-fixed/</link><pubDate>Fri, 16 Dec 2011 19:04:49 -0600</pubDate><guid>https://healey.io/writing/sbs-2011-distributedcom-eventid-10016-fixed/</guid><description>&lt;p&gt;On your SBS 2011 server, do you find a lot of DCOM errors in your System Event Log? These are relatively common on SBS boxes. Microsoft&amp;rsquo;s guidance is that these can be safely ignored. However, when an error is reported, I expect it to be something that should be investigated. If it can be ignored, it shouldn&amp;rsquo;t be reporting it as an error. Fortunately, there is a fix for these.&lt;/p&gt;</description></item><item><title>C# Express - Create a Dummy or Placeholder Windows Service for Monitoring</title><link>https://healey.io/writing/c-express-create-a-dummy-or-placeholder-windows-service-for-monitoring/</link><pubDate>Fri, 14 Oct 2011 19:01:06 -0500</pubDate><guid>https://healey.io/writing/c-express-create-a-dummy-or-placeholder-windows-service-for-monitoring/</guid><description>&lt;p&gt;The IT ecosystem is rich with &lt;a href="http://en.wikipedia.org/wiki/Network_monitoring" target="_blank" rel="noreferrer"&gt;network monitoring systems&lt;/a&gt; (NMS). Each NMS has different capabilities, costs, and purposes in life. It is commonplace for me to come into a business that has invested in an NMS that doesn&amp;rsquo;t fit all their needs. You might ask, &amp;ldquo;What does this have to do with creating a Windows service?&amp;rdquo; Here is the scenario that brought this up.&lt;/p&gt;&#10;&lt;p&gt;A client has a monitoring solution for their Windows servers and some basic network up/down stats. Their internet connection had been flaky for a month or two. As we worked with their ISP, their connection continued to stay up but latency would spike and often drop packets. The monitoring never sees the link as down but the level of service is degraded and mostly unusable. The ISP can quickly reset the ports and fix the issue, but we want to know right when this happens to minimize downtime.&lt;/p&gt;</description></item><item><title>IsConnectible: My vbScript Ping Method</title><link>https://healey.io/writing/isconnectible-my-vbscript-ping-method/</link><pubDate>Thu, 15 Sep 2011 13:23:52 -0500</pubDate><guid>https://healey.io/writing/isconnectible-my-vbscript-ping-method/</guid><description>&lt;p&gt;Whenever I am doing large sweeps of the network that require connecting to a large number of workstations (e.g. file copy, wmi query, etc.), I prefer to check to see if I can even see the system. This avoids waiting for (WMI) timeouts and also aids in troubleshooting failures. If the file copy failed, why? Well, if I can&amp;rsquo;t ping it or it can&amp;rsquo;t be resolved, I would like to know right away and move on to the next host.&lt;/p&gt;</description></item><item><title>Installing Exchange 2010 Service Pack 1 Fails At Mailbox Role: Database is mandatory on UserMailbox.</title><link>https://healey.io/writing/installing-exchange-2010-service-pack-1-fails-at-mailbox-role-database-is-mandatory-on-usermailbox/</link><pubDate>Thu, 14 Jul 2011 20:08:39 -0500</pubDate><guid>https://healey.io/writing/installing-exchange-2010-service-pack-1-fails-at-mailbox-role-database-is-mandatory-on-usermailbox/</guid><description>&lt;p&gt;In a recent incident, an Exchange server had a complete volume failure during testing. Exchange 2010 was reinstalled but when installing Service Pack 1, it failed upgrading the Mailbox Role. Upon reviewing the log, I found the following line:&lt;/p&gt;&#10;&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Database is mandatory on UserMailbox. Property Name: Database&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;p&gt;The error doesn&amp;rsquo;t explain the problem very well but it is basically saying that there is a UserMailbox without a database, which should never happen. The failure of the volume and subsequent reinstall of 2010 left the arbitration mailboxes (and one or two user mailboxes) orphaned. Most of the suggestions to resolve this problem list doing things like deleting the system mailboxes and running &amp;ldquo;setup.com /PrepareAD&amp;rdquo;. After looking around, I was able to parse together a few other options and find a fix.&lt;/p&gt;</description></item><item><title>Exchange 2007+: Aliases have invalid data</title><link>https://healey.io/writing/exchange-2007-aliases-have-invalid-data/</link><pubDate>Mon, 11 Jul 2011 01:45:15 -0500</pubDate><guid>https://healey.io/writing/exchange-2007-aliases-have-invalid-data/</guid><description>&lt;p&gt;Twice in the past two weeks, I have come across Exchange 2003 to Exchange 2007 migrations which went uncompleted. In both cases, I received the following error(s) when trying to view the properties of a recipient with spaces in its alias or when viewing the properties of the offline address book:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;The properties on have invalid data. If you click OK, default values will be used instead and will be saved if you do not change them before hitting Apply or OK on the property page. If you click cancel, the object will be displayed read-only and corrupted values will be retained. The following values have invalid data: Alias.&lt;/li&gt;&#10;&lt;li&gt;WARNING: Object has been corrupted and it is in an inconsistent state. The following validation errors have been encountered: WARNING: is not valid for Alias.&lt;/li&gt;&#10;&lt;li&gt;Set- : is not valid for Alias.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Exchange 2003 would allow an administrator to put spaces in the Alias attribute. That poses a problem for 2007 which is strict about the characters it allows in this attribute. In Exchange 2007 the following characters are considered valid: Strings formed with characters from a to z (uppercase or lowercase), digits from 0 to 9, !, #, $, %, &amp;amp;, &amp;lsquo;, *, +, -, /, =, ?, ^, _, `, {, |, } or ~. But, no spaces.&lt;/p&gt;</description></item><item><title>vbScript: Adding and Removing a Domain Group to a Local Group</title><link>https://healey.io/writing/vbscript-adding-and-removing-a-domain-group-to-a-local-group/</link><pubDate>Fri, 08 Jul 2011 17:57:42 -0500</pubDate><guid>https://healey.io/writing/vbscript-adding-and-removing-a-domain-group-to-a-local-group/</guid><description>&lt;p&gt;Yes, I still use vbscript. Someday, I&amp;rsquo;ll get to work in an environment where everything is upgraded. Until then, I have to rely on the tried and true vbscript.&lt;/p&gt;&#10;&lt;p&gt;One of the most common uses of a Group Policy startup script is for adding users to the local admin group. Just google it and you will find hundreds of scripts doing just that, batch files, posh, vbscript, perl, etc. I wrote the script below because I wanted the flexibility to reuse this script at any client and for any group (not just Administrators but Remote Desktop Users or Power Users).&lt;/p&gt;</description></item><item><title>Microsoft IT Environment Health Scanner</title><link>https://healey.io/writing/microsoft-it-environment-health-scanner/</link><pubDate>Wed, 11 May 2011 11:00:10 -0500</pubDate><guid>https://healey.io/writing/microsoft-it-environment-health-scanner/</guid><description>&lt;p&gt;Most people have a fear of taking their vehicle to the mechanic for even the simplest tasks just to find out they need their transfunctioner adjusted because of wear to the driver&amp;rsquo;s side steering widget.  For many in the SMB market, that same fear can be found in their technology investments.  &amp;ldquo;Did that last IT guy wrap our SQL server in duct tape and tie it to the web server with shoe string?&amp;rdquo;  The reality is often not that bad, but it can be unsettling not knowing.&lt;/p&gt;</description></item><item><title>Office 365 Deployment Readiness Tool Beta Released</title><link>https://healey.io/writing/office-365-deployment-readiness-tool-beta-released/</link><pubDate>Mon, 09 May 2011 10:00:34 -0500</pubDate><guid>https://healey.io/writing/office-365-deployment-readiness-tool-beta-released/</guid><description>&lt;p&gt;On Friday (May 6th), Microsoft released the &lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=e9f82c2a-0e3d-4a1b-9a09-9da97167b622" target="_blank" rel="noreferrer"&gt;Enterprise Beta Readiness Tool&lt;/a&gt; for &lt;a href="http://www.microsoft.com/en-us/office365/" target="_blank" rel="noreferrer"&gt;Office365&lt;/a&gt;. As the name implies, this tool is meant to do a quick readiness check on your environment.  Upon execution, it will automatically extract the files to C:\office365reskit and launch the app within IE. If you system has IE locked down, this may be problematic or at least require the acknowledgement of a few warnings. As it&amp;rsquo;s running, it collects information (be patient) from your organization&amp;rsquo;s network into its temp directory (C:\office365reskittmp). The files within this directory are plain text and offer an interesting look into the environment. Unfortunately, once the test completes, the utility analyzes and consolidates these temp files and deletes the originating files, leaving a technical person with much to be desired.&lt;/p&gt;</description></item><item><title>vbScript: Tweaking Power Settings (disabling hibernate and standby)</title><link>https://healey.io/writing/vbscript-tweaking-power-settings-disabling-hibernate-and-standby/</link><pubDate>Tue, 03 May 2011 12:59:12 -0500</pubDate><guid>https://healey.io/writing/vbscript-tweaking-power-settings-disabling-hibernate-and-standby/</guid><description>&lt;p&gt;As is often the case in IT, when you need to push out that software package or migrate that computer to a new domain, it isn&amp;rsquo;t on the network.  This has come up several times in the past year and I wanted to share my solution.  Now, this isn&amp;rsquo;t the &amp;ldquo;greenest&amp;rdquo; solution because this will ensure your clients never go into a power saving mode.  However, it can be a temporary fix for a project.  It can also be adapted to force standby or hibernate at specific thresholds.&lt;/p&gt;</description></item><item><title>.Net Classes within VBScript: Doing Randomness and Arrays the Easy Way</title><link>https://healey.io/writing/net-classes-within-vbscript-doing-randomness-and-arrays-the-easy-way/</link><pubDate>Wed, 20 Apr 2011 13:35:49 -0500</pubDate><guid>https://healey.io/writing/net-classes-within-vbscript-doing-randomness-and-arrays-the-easy-way/</guid><description>&lt;p&gt;Back in 2007, the Microsoft Scripting Guys posted a article titled &amp;ldquo;&lt;a href="http://technet.microsoft.com/en-us/library/2007.01.heyscriptingguy.aspx" target="_blank" rel="noreferrer"&gt;Hey, Scripting Guy! Be Careful What You Say.&lt;/a&gt;&amp;rdquo; This article changed everything in the way I scripted because it should how simply you can access some .Net classes through COM callable wrappers. The two they focus on are &amp;ldquo;&lt;code&gt;System.Random&lt;/code&gt;&amp;rdquo; and &amp;ldquo;&lt;code&gt;System.Collections.ArrayList&lt;/code&gt;&amp;rdquo;.&lt;/p&gt;&#10;&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-vb.net" data-lang="vb.net"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;Set&lt;/span&gt; &lt;span class="n"&gt;objRandom&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;CreateObject&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;System.Random&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;Set&lt;/span&gt; &lt;span class="n"&gt;objArrList&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;CreateObject&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;System.Collections.ArrayList&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&#10;&lt;h2 class="relative group"&gt;ArrayList&#10; &lt;div id="arraylist" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#arraylist" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;When scripting in AD, Exchange or even the desktop, I am consistently working with arrays. Adding items and sorting arrays always required custom functions, overly wordy statements or re-dimensioning. This made working with arrays cumbersome. Their example for sorting the non-.net way:&lt;/p&gt;</description></item><item><title>Aggregate and Translate: Moving to Google Reader</title><link>https://healey.io/writing/aggregate-and-translate-moving-to-google-reader/</link><pubDate>Sat, 09 Apr 2011 16:15:03 -0500</pubDate><guid>https://healey.io/writing/aggregate-and-translate-moving-to-google-reader/</guid><description>&lt;p&gt;For years, I have been bouncing between &lt;a href="http://www.rssowl.org/" target="_blank" rel="noreferrer"&gt;RSSOwl&lt;/a&gt;, &lt;a href="http://www.feedreader.com/" target="_blank" rel="noreferrer"&gt;FeedReader&lt;/a&gt; and &lt;a href="http://www.feeddemon.com/" target="_blank" rel="noreferrer"&gt;FeedDemon&lt;/a&gt;.  I have built the ultimate feed list for the technologies, blogs and news sources I care about.  The real beauty of RSS is it enables one to quickly get up to date on news and industry trends without wasting time.  New posts are there, you pick the ones that interest you, star or share the ones you care about and ignore the rest.  &lt;strong&gt;While many of my peers are wasting their time hitting all their favorite sites and going page by page, I have already read it and moved on to real work.&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>vbScript: Quickly determine architecture</title><link>https://healey.io/writing/vbscript-quickly-determine-architecture/</link><pubDate>Tue, 20 Jul 2010 13:10:11 -0500</pubDate><guid>https://healey.io/writing/vbscript-quickly-determine-architecture/</guid><description>&lt;p&gt;I&amp;rsquo;ve been using a routine to determine 64-bit v 32-bit workstations for some time checking the registry for the &lt;code&gt;PROCESSOR\_ARCHITECTURE&lt;/code&gt; in the &lt;code&gt;HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment&lt;/code&gt; path. However, this was proving to be error prone. So, I just gave up that method altogether since all Windows x64 editions have a &amp;ldquo;&lt;code&gt;%SystemDrive%Program Files (x86)&lt;/code&gt;&amp;rdquo; directory. This makes it just a quick and easy call the &lt;code&gt;folderexists&lt;/code&gt; method of the &lt;code&gt;filesystemobject&lt;/code&gt;.&lt;/p&gt;&#10;&lt;p&gt;The only downside is that can&amp;rsquo;t be used remotely but since most of my scripts are used in local policies, this shouldn&amp;rsquo;t be an issue.&lt;/p&gt;</description></item><item><title>Installing Java via Script and Group Policy</title><link>https://healey.io/writing/installing-java-via-script-and-group-policy/</link><pubDate>Fri, 16 Jul 2010 12:39:14 -0500</pubDate><guid>https://healey.io/writing/installing-java-via-script-and-group-policy/</guid><description>&lt;p&gt;Due to some software requirements, there was a need to get JRE 1.5.0_09 rolled out across our enterprise. The requirements were pretty straight forward:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Only install on client operating systems (Windows 2000, Windows XP, Windows Vista and Windows 7)&lt;/li&gt;&#10;&lt;li&gt;Detect the versions of Java installed. If 1.5.0_09 is installed, exit.  If 1.5.0_08 or less was installed, install this version.  If it has a newer version, do nothing.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;The best way of determining the Java versions is to look in %program files%.  On 64-bit machines, this is &amp;ldquo;C:program files (x86)Java&amp;rdquo;.  On 32-bit, this is &amp;ldquo;C:program filesJava&amp;rdquo;.  The script accounts for this.&lt;/p&gt;</description></item><item><title>Powershell: Getting the IP Address, FQDN and MAC Address of Each Domain Controller</title><link>https://healey.io/writing/powershell-getting-the-ip-address-fqdn-and-mac-address-of-each-domain-controller/</link><pubDate>Thu, 01 Apr 2010 12:49:19 -0500</pubDate><guid>https://healey.io/writing/powershell-getting-the-ip-address-fqdn-and-mac-address-of-each-domain-controller/</guid><description>&lt;p&gt;I was asked to get a baseline for generating reports within AD.  The two important pieces of information which were required to generate these reports were the ip address and FQDN of each domain controller.  The script would then connect to each individual system to gather data.  While I was at it, I added the MAC Address just to see what other pieces of data would be useful out of the &lt;a href="http://msdn.microsoft.com/en-us/library/aa394217%28VS.85%29.aspx" target="_blank" rel="noreferrer"&gt;Win32_NetworkAdapterConfiguration&lt;/a&gt; class.&lt;/p&gt;</description></item><item><title>Powershell: Using PoSH to Search Across Multiple Domains in Forest</title><link>https://healey.io/writing/powershell-using-posh-to-search-across-multiple-domains-in-forest/</link><pubDate>Mon, 25 Jan 2010 14:52:07 -0600</pubDate><guid>https://healey.io/writing/powershell-using-posh-to-search-across-multiple-domains-in-forest/</guid><description>&lt;p&gt;I was recently asked to get a quick report of all Windows 7 computers within a multi-domain AD forest.  After banging my head into the keyboard for a while, I finally figured it out.  The script below should do the trick.&lt;/p&gt;&#10;&lt;p&gt;Also, if you use the OperatingSystemVersion attribute, you will find that Server 2008 R2 shares version &amp;ldquo;6.1 (7600)&amp;quot;.  So, the best way to find Windows 7 only, is to search for &amp;ldquo;Windows 7*&amp;rdquo; with the wildcard character against the OperatingSystem attribute.  That will ensure all Windows 7 versions are returned and will exclude Server 2008 R2 from your results.&lt;/p&gt;</description></item><item><title>Logon Script: Move Local PST Files To Network Share</title><link>https://healey.io/writing/logon-script-move-local-pst-files-to-network-share/</link><pubDate>Wed, 14 Oct 2009 22:25:05 -0500</pubDate><guid>https://healey.io/writing/logon-script-move-local-pst-files-to-network-share/</guid><description>&lt;p&gt;So, my buddy (and former co-worker) called me yesterday for some help with a script he put together.  His script checked the local profile in Outlook for any PST files that were stored locally.  If it found any, it would them move them to the users home space.  We tried and tried to get the script to work properly but it never seemed to work 100%.  Being that he is a good friend and this would be useful at work, I decided to take the work he had put in and get the thing working.&lt;/p&gt;</description></item><item><title>Fedora 11 Beta: First Reactions</title><link>https://healey.io/writing/fedora-11-beta-first-reactions/</link><pubDate>Sat, 28 Mar 2009 14:22:39 -0500</pubDate><guid>https://healey.io/writing/fedora-11-beta-first-reactions/</guid><description>&lt;p&gt;It seems like just yesterday that I got home from Iraq and refreshed my laptop (Dell Latitude D610).  I ran Fedora 8 the entire time I was in Habbaniyah.  After getting home, I was excited to get a chance to skip 9 and go right to Fedora 10.  I didn&amp;rsquo;t use it long before I got a new laptop (Dell Latitude D630).  Linux never made it on the new laptop.  After I read a review of Fedora 11 Beta, I figured it was worth a shot.  I downloaded Gparted LiveCD, opened up 20GB of space and popped in the DVD.  I split this posting into three sections: the good, the mediocre and the ugly.&lt;/p&gt;</description></item><item><title>SNMP In A Windows Environment</title><link>https://healey.io/writing/snmp-in-a-windows-environment/</link><pubDate>Thu, 12 Mar 2009 14:57:55 -0500</pubDate><guid>https://healey.io/writing/snmp-in-a-windows-environment/</guid><description>&lt;p&gt;The difficult part with managing SNMP via Group Policy is that SNMP is not installed by default. The first step is to install SNMP on all the machines you want to monitor via SNMP. This can be managed a couple ways. The simplest method that I have used is the one &lt;a href="http://www.zenoss.com/community/docs/howtos/install-snmp-on-windows-remotely/" title="Zenoss recommends" target="_blank" rel="noreferrer"&gt;Zenoss recommends&lt;/a&gt;. If you only have a couple of machines to install SNMP on, it may be easier just to go into the Add/Remove Programs &amp;ndash;&amp;gt; Add/Remove Windows Components &amp;ndash;&amp;gt; Management and Monitoring Tools &amp;ndash;&amp;gt; Simple Network Monitoring Protocol.&lt;/p&gt;</description></item><item><title>List All User Object Attributes in Active Directory Schema.. Whew!</title><link>https://healey.io/writing/list-all-user-object-attributes-in-active-directory-schema-whew/</link><pubDate>Wed, 28 Jan 2009 11:20:41 -0600</pubDate><guid>https://healey.io/writing/list-all-user-object-attributes-in-active-directory-schema-whew/</guid><description>&lt;p&gt;Here is a little script I put together for one of our developers here at work. Feel free to use, abuse, change, tweak, fix, etc.&lt;/p&gt;&#10;&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-vb.net" data-lang="vb.net"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;&amp;#39;* Script name: List All Attributes.vbs&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;&amp;#39;* Created on: 01/28/2009&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;&amp;#39;* Author: Andrew J Healey&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;&amp;#39;* Purpose: Exports all attributes from the user object type within&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;&amp;#39;* the Active Directory schema.&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;&amp;#39;* Usage: cscript /nologo &amp;#34;list all attributes.vbs&amp;#34; &amp;gt; Attributes.csv&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;&amp;#39;* History: Andrew J Healey 01/28/2009&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;&amp;#39;* - Created script&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;&amp;#39;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;Option&lt;/span&gt; &lt;span class="n"&gt;Explicit&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;&amp;#39;Declarations&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;Dim&lt;/span&gt; &lt;span class="n"&gt;objUserClass&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;Set&lt;/span&gt; &lt;span class="n"&gt;objUserClass&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;GetObject&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;LDAP://schema/user&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;Dim&lt;/span&gt; &lt;span class="n"&gt;objSchemaClass&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;Set&lt;/span&gt; &lt;span class="n"&gt;objSchemaClass&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;GetObject&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;objUserClass&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Parent&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;wscript&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;echo&lt;/span&gt; &lt;span class="n"&gt;chr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;34&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;Mandatory&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;chr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;34&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;,&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; _&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&#9;&#9; &lt;span class="n"&gt;chr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;34&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;Name&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;chr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;34&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;,&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; _&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&#9;&#9; &lt;span class="n"&gt;chr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;34&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;Syntax&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;chr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;34&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;,&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; _&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&#9;&#9; &lt;span class="n"&gt;chr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;34&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;Single/Multi Valued&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;chr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;34&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;Call&lt;/span&gt; &lt;span class="n"&gt;GetAttributes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;objUserClass&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;MandatoryProperties&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;objSchemaClass&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="k"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;Call&lt;/span&gt; &lt;span class="n"&gt;GetAttributes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;objUserClass&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;OptionalProperties&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;objSchemaClass&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="k"&gt;False&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;Private&lt;/span&gt; &lt;span class="k"&gt;Sub&lt;/span&gt; &lt;span class="nf"&gt;GetAttributes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;z&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&lt;span class="k"&gt;Dim&lt;/span&gt; &lt;span class="n"&gt;strAttribute&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&lt;span class="c"&gt;&amp;#39;Loop through all attributes&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&lt;span class="k"&gt;For&lt;/span&gt; &lt;span class="k"&gt;Each&lt;/span&gt; &lt;span class="n"&gt;strAttribute&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&#9;&lt;span class="k"&gt;Dim&lt;/span&gt; &lt;span class="n"&gt;strOut&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;strOut&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&#9;&lt;span class="c"&gt;&amp;#39;Compares whether the attribute is mandatory or optional&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&#9;&lt;span class="c"&gt;&amp;#39;Prints whether mandatory/optional and name of attribute&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&#9;&lt;span class="k"&gt;If&lt;/span&gt; &lt;span class="n"&gt;z&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;True&lt;/span&gt; &lt;span class="k"&gt;then&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&#9;&#9;&lt;span class="n"&gt;strOut&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;strOut&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;chr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;34&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;Yes&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;chr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;34&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;,&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; _&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&#9;&#9;&#9;&#9;&#9;&#9; &lt;span class="n"&gt;chr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;34&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;strAttribute&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;chr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;34&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;,&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&#9;&lt;span class="k"&gt;Else&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&#9;&#9;&lt;span class="n"&gt;strOut&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;strOut&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;chr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;34&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;No&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;chr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;34&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;,&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; _&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&#9;&#9;&#9;&#9;&#9;&#9; &lt;span class="n"&gt;chr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;34&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;strAttribute&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;chr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;34&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;,&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&#9;&lt;span class="k"&gt;End&lt;/span&gt; &lt;span class="k"&gt;If&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&#9;&lt;span class="c"&gt;&amp;#39;Get the attributes syntax: i.e. Integer, String, NumericString, etc.&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&#9;&lt;span class="k"&gt;Dim&lt;/span&gt; &lt;span class="n"&gt;objAttribute&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;Set&lt;/span&gt; &lt;span class="n"&gt;objAttribute&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;GetObject&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Property&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;strAttribute&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&#9;&lt;span class="n"&gt;strOut&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;strOut&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;chr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;34&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;objAttribute&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Syntax&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;chr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;34&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;,&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&#9;&lt;span class="c"&gt;&amp;#39;Determines whether column holds multi or single values&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&#9;&lt;span class="k"&gt;If&lt;/span&gt; &lt;span class="n"&gt;objAttribute&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;MultiValued&lt;/span&gt; &lt;span class="k"&gt;Then&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&#9;&#9;&lt;span class="n"&gt;strOut&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;strOut&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;chr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;34&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;Multi&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;chr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;34&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&#9;&lt;span class="k"&gt;Else&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&#9;&#9;&lt;span class="n"&gt;strOut&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;strOut&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;chr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;34&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;Single&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;chr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;34&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&#9;&lt;span class="k"&gt;End&lt;/span&gt; &lt;span class="k"&gt;If&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&#9;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&#9;&lt;span class="c"&gt;&amp;#39;Print string to screen. Each line its own CSV.&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&#9;&lt;span class="n"&gt;wscript&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;echo&lt;/span&gt; &lt;span class="n"&gt;strOut&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&#9;&lt;span class="n"&gt;strOut&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Empty&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&lt;span class="k"&gt;Next&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&lt;span class="k"&gt;Set&lt;/span&gt; &lt;span class="n"&gt;objAttribute&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;Nothing&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#9;&lt;span class="n"&gt;strAttribute&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Empty&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;End&lt;/span&gt; &lt;span class="k"&gt;Sub&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</description></item><item><title>Fedora 10. Two days later...</title><link>https://healey.io/writing/fedora-10-two-days-later/</link><pubDate>Mon, 01 Dec 2008 20:29:03 -0600</pubDate><guid>https://healey.io/writing/fedora-10-two-days-later/</guid><description>&lt;p&gt;So, I found a way to download, burn and install &lt;a href="http://fedoraproject.org/" target="_blank" rel="noreferrer"&gt;Fedora&lt;/a&gt;. This normally wouldn&amp;rsquo;t be a big deal but I&amp;rsquo;m roaming house to house until Rose and I find somewhere to live. I survived Iraq with Fedora 8 and I really wanted to try out the latest. I really enjoyed 8. It was stable and served me well on my journey.&lt;/p&gt;&#10;&lt;p&gt;But, being the geek I am, I couldn&amp;rsquo;t resist but install the latest and greatest. And, two days later, I have no regrets. I can honestly say that this is the best distribution I have tried. I used &lt;a href="http://www.ubuntu.com/" target="_blank" rel="noreferrer"&gt;Ubuntu 8.10&lt;/a&gt; as soon as I got home to see what had changed on the &lt;a href="http://www.debian.org/" target="_blank" rel="noreferrer"&gt;Debian&lt;/a&gt; front. I wasn&amp;rsquo;t all that impressed. While it operated smooth, it was missing a few bits which I really wanted. It was lacking the latest OpenOffice.org, Mono and Eclipse and it excluded the Empathy IM package which I wanted to try. It also didn&amp;rsquo;t have a ready-to-go NetBeans installation in its repositories.&lt;/p&gt;</description></item><item><title>Don't Fear the OOP</title><link>https://healey.io/writing/dont-fear-the-oop/</link><pubDate>Mon, 28 Jul 2008 18:16:47 -0500</pubDate><guid>https://healey.io/writing/dont-fear-the-oop/</guid><description>&lt;p&gt;One of my biggest hurdles I have come across since taking on Java is really getting my head wrapped around the OOP (object oriented programming) idea. Most of my previous experience with visual basic and php was procedural programming. Because of this, my mind is stuck thinking in those terms.&lt;/p&gt;&#10;&lt;p&gt;All the e-books I have been going over describe OOP as something that &amp;ldquo;should&amp;rdquo; be easy to grasp. A class is a classification of an object. An object is a noun, like a dog, that can be described attributes or fields: four legs, two ears, two eyes, brown, tail, etc. A method is how that dog interacts with other objects: playFetch(), catchFrisbee(), peeOnLeg(), etc.&lt;/p&gt;</description></item><item><title>Software for CTARNG</title><link>https://healey.io/writing/software-for-ctarng/</link><pubDate>Thu, 19 Jun 2008 00:47:12 -0500</pubDate><guid>https://healey.io/writing/software-for-ctarng/</guid><description>&lt;p&gt;The other day I was contacted by a Cpt Miller with the Connecticut Army National Guard (CTARNG). It turns out that the entire CTARNG uses the program I wrote called &lt;a href="http://sourceforge.net/projects/adumass" target="_blank" rel="noreferrer"&gt;Active Directory UserMod Assistant&lt;/a&gt;. Cpt Miller needed some modifications made to make it work in his environment. I was able to help him out with his mods. It was a bit odd getting a request like that in Iraq. He didn&amp;rsquo;t know I was here but it was nice knowing that the program I wrote is helping out the Military.&lt;/p&gt;</description></item><item><title>DevCon: Rescan for Hardware automatically</title><link>https://healey.io/writing/devcon-rescan-for-hardware-automatically/</link><pubDate>Thu, 13 Mar 2008 12:46:47 -0500</pubDate><guid>https://healey.io/writing/devcon-rescan-for-hardware-automatically/</guid><description>&lt;p&gt;I&amp;rsquo;ve been having a strange issue with a PCMCIA card on my wife&amp;rsquo;s computer. Every time the machine is rebooted, you are required to &amp;ldquo;Scan for Hardware Changes&amp;rdquo; in device manager.&lt;/p&gt;&#10;&lt;p&gt;It does not automatically detect that the PCMCIA card is still plugged in. After searching high and low for a solution, I thought about seeing if I could write a script that would automatically run a hardware scan at logon.&lt;/p&gt;</description></item><item><title>AD UserMod Assistant 9.0</title><link>https://healey.io/writing/ad-usermod-assistant-90/</link><pubDate>Thu, 06 Dec 2007 22:13:20 -0600</pubDate><guid>https://healey.io/writing/ad-usermod-assistant-90/</guid><description>&lt;p&gt;I finally got around to a new release of Active Directory UserMod Assistant -&amp;gt; &lt;a href="http://sourceforge.org/projects/adumass/" target="_blank" rel="noreferrer"&gt;adumass&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;This was a major release as it fixed some pretty serious bugs and also greatly improved the UI and back end code. I also added a few functions for data validation.&lt;/p&gt;&#10;&lt;p&gt;Thanks to all those that have helped and submitted support requests. The next version should have a translation pack for those users that want to help with translations.&lt;/p&gt;</description></item><item><title>Fedora 8</title><link>https://healey.io/writing/fedora-8/</link><pubDate>Thu, 08 Nov 2007 09:39:51 -0600</pubDate><guid>https://healey.io/writing/fedora-8/</guid><description>&lt;p&gt;I&amp;rsquo;m finally getting my systems ready for my upcoming deployment. Today, &lt;a href="http://fedoraproject.org/" target="_blank" rel="noreferrer"&gt;Fedora 8&lt;/a&gt; was released. It took me a bit to find an FTP server that had actually sync&amp;rsquo;d (ftp.fi.muni.cz). And once I did, I was surprised to find it still had a bit of bandwidth to give. The mirrors have progressively become bogged down throughout the day, but I got my copy. No bittorrent at work so that&amp;rsquo;s my only option.&lt;/p&gt;</description></item><item><title>VBScript: Delete Files Older Than One Hour</title><link>https://healey.io/writing/vbscript-delete-all-files-older-than-one-hour/</link><pubDate>Thu, 04 Oct 2007 01:08:32 -0500</pubDate><guid>https://healey.io/writing/vbscript-delete-all-files-older-than-one-hour/</guid><description>&lt;p&gt;So, I am constantly looking for ways of automating tasks. Too many admins do not take advantage of scripting and scheduled tasks/cron. Just this last week, I was implementing a new print server. Besides just building up the new server, I wanted to actually offer the users something new and useful.&lt;/p&gt;&#10;&lt;p&gt;I&amp;rsquo;ve been wanting to setup a network pdf printer for quite some time. I have played around with setting up a &lt;a href="http://www.novell.com/coolsolutions/feature/17636.html" target="_blank" rel="noreferrer"&gt;network PDF printer using cups&lt;/a&gt;. However, we seem to be so MS centric these days that I decided to use &lt;a href="http://www.pdfforge.org/products/pdfcreator" target="_blank" rel="noreferrer"&gt;PDFCreator&lt;/a&gt;&amp;rsquo;s print server. It was really a piece of cake. Just install the server portion, &lt;a href="http://www.pdfforge.org/node/560" target="_blank" rel="noreferrer"&gt;setup the service&lt;/a&gt;, create a share and watch the PDF&amp;rsquo;s spool.&lt;/p&gt;</description></item></channel></rss>