<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Posts | The End of the Tunnel</title><link>https://development--vigilant-hodgkin-644b1e.netlify.com/post/</link><atom:link href="https://development--vigilant-hodgkin-644b1e.netlify.com/post/index.xml" rel="self" type="application/rss+xml"/><description>Posts</description><generator>Source Themes Academic (https://sourcethemes.com/academic/)</generator><language>en-us</language><copyright>© 2019 Derek Murawsky</copyright><image><url>https://development--vigilant-hodgkin-644b1e.netlify.com/img/icon-32.png</url><title>Posts</title><link>https://development--vigilant-hodgkin-644b1e.netlify.com/post/</link></image><item><title>Rebuilding the Homestead’s DNS with Consul, DNSMasq, and Ansible</title><link>https://development--vigilant-hodgkin-644b1e.netlify.com/post/rebuilding-homestead-dns/</link><pubDate>Wed, 29 Aug 2018 12:05:52 -0400</pubDate><guid>https://development--vigilant-hodgkin-644b1e.netlify.com/post/rebuilding-homestead-dns/</guid><description>
&lt;p&gt;My friend Jason recently posted an update on his blog over at &lt;a href=&#34;https://peaksandprotocols.com/home-network-dns-infrastructure/&#34; target=&#34;_blank&#34;&gt;Peaks and Protocols&lt;/a&gt; about redoing his home network’s DNS setup. This reminded me that I really needed to do an update on my own recent DNS rebuild, which was based around &lt;a href=&#34;https://www.hashicorp.com/&#34; target=&#34;_blank&#34;&gt;Hashicorp&lt;/a&gt;‘s &lt;a href=&#34;https://www.consul.io/&#34; target=&#34;_blank&#34;&gt;Consul&lt;/a&gt;, &lt;a href=&#34;http://www.thekelleys.org.uk/dnsmasq/doc.html&#34; target=&#34;_blank&#34;&gt;DNSMasq&lt;/a&gt; and &lt;a href=&#34;https://www.ansible.com/&#34; target=&#34;_blank&#34;&gt;Ansible&lt;/a&gt; running on some &lt;a href=&#34;https://www.raspberrypi.org/&#34; target=&#34;_blank&#34;&gt;Raspberry Pi 3&lt;/a&gt;s. Overkill? Probably. But if you can’t have fun with your home network, what’s the point? On to the setup…&lt;/p&gt;
&lt;figure&gt;
&lt;a data-fancybox=&#34;&#34; href=&#34;images/homenet.png&#34; &gt;
&lt;img src=&#34;images/homenet.png&#34; alt=&#34;&#34; &gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;h2 id=&#34;consul&#34;&gt;Consul&lt;/h2&gt;
&lt;p&gt;
&lt;figure&gt;
&lt;a data-fancybox=&#34;&#34; href=&#34;images/consul-logo.png&#34; &gt;
&lt;img src=&#34;images/consul-logo.png&#34; alt=&#34;&#34; width=&#34;100&#34; &gt;&lt;/a&gt;
&lt;/figure&gt;
Consul started life as a distributed service locator and key-value store. It has grown significantly over the years and is now becoming a full-fledged service mesh. It allows for any server to register and provide one or multiple services, with simple config files or api calls. Further, Consul supports the idea of multiple locations natively and even has health checks. This means it will give you your local, healthy service endpoint.&lt;/p&gt;
&lt;p&gt;One of the main reasons I chose Consul is because it makes itself available via DNS as the .consul domain. Want to know where your git server is? dig git.service.consul. Your documentation hosted on a webserver somewhere? dig docs.service.consul. This makes finding a service you have running somewhere trivial, and means never having to update a DNS zone file again.&lt;/p&gt;
&lt;p&gt;Another reason, which I’m not using yet, is that it has a solid key-value store. This is great for storing configuration settings for distributed applications. There are a ton of tools that take advantage of this, and even provide dynamic reloading capabilities to the app when a key is changed in Consul.&lt;/p&gt;
&lt;h2 id=&#34;dnsmasq&#34;&gt;DNSMasq&lt;/h2&gt;
&lt;p&gt;In order to take advantage of Consul’s DNS features you need a DNS server that can point to Consul for just that domain, while passing through all other traffic to a normal DNS resolver. I chose DNSMasq for this because it is simple and well understood. There were some security issues with it last year, but they have since been addressed. I may migrate to &lt;a href=&#34;https://nlnetlabs.nl/projects/unbound/about/&#34; target=&#34;_blank&#34;&gt;unbound&lt;/a&gt; in the long run, but DNSMasq is fine for my use cases.&lt;/p&gt;
&lt;h2 id=&#34;ansible-putting-it-all-together&#34;&gt;Ansible &amp;amp; Putting it All Together&lt;/h2&gt;
&lt;figure&gt;
&lt;a data-fancybox=&#34;&#34; href=&#34;images/ansible-logo.png&#34; &gt;
&lt;img src=&#34;images/ansible-logo.png&#34; alt=&#34;&#34; width=&#34;100&#34; &gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;p&gt;Ansible is the glue that makes sure I can redo this config easily should something happen to the PIs. It is a configuration management system that just works, with minimal extra craziness. I could go on for days about Ansible, and probably should write a dozen posts on it alone, but there’s so much out there already that I don’t feel the need. Bottom line is, this is the tool that sets up Consul and DNSMasq for me, and ensures that I can reset everything to a known working state in the event of configuration drift.&lt;/p&gt;
&lt;p&gt;I used several modules to help get this project running quickly.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/idealista/consul-role&#34; target=&#34;_blank&#34;&gt;idealista-consul-role&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/Oefenweb/ansible-dnsmasq&#34; target=&#34;_blank&#34;&gt;oefenweb.dnsmasq&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/geerlingguy/ansible-role-ntp&#34; target=&#34;_blank&#34;&gt;geerlingguy.ntp&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I ended up having to change some of the roles around to suit the raspberry pi environment, but otherwise it was fairly easy. I created my own baseline role which updates and upgrades and installs some packages, including python and its tools. This base role also creates a user account for me and Ansible itself. The first time I ran it, I had to pass parameters to login as the default Raspbian user, but after that it can run using the Ansible user instead.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-yaml&#34;&gt;- name: Update Apt and Upgrade Packages
apt:
update_cache: yes
cache_valid_time: 3600
name: &amp;quot;*&amp;quot;
state: latest
tags:
- packages
- name: Install Baseline Apps
apt:
name: &amp;quot;{{ packages }}&amp;quot;
state: present
vars:
packages:
- python
- python-pip
- python3
- python3-pip
- virtualenv
- python3-virtualenv
- python-pip
- dnsutils
tags:
- packages
- name: Install pi base python packages
pip:
name: &amp;quot;{{ packages }}&amp;quot;
state: present
vars:
packages:
- python-consul
- hvac
- name: Create Ansible management user
user:
name: ansible
comment: Ansible system user
group: admin
state: present
- name: Create dmurawsky user
user:
name: dmurawsky
comment: Derek Murawsky
group: admin
state: present
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;For my group_vars, I created a DNS.yml file with the needed variables for consul and DNSMasq.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-yaml&#34;&gt;# Consul Configuration
consul_version: 1.2.2
#consul_package: consul_1.2.2_linux_arm.zip
consul_server: true
consul_agent: true
consul_ui: true
consul_server_nodes:
- 192.168.1.2
- 192.168.1.3
# Services #
consul_agent_services: true
consul_services_register:
# Register NTP in consul
- name: ntp
port: 123
tags:
- udp
- name: dns
port: 53
tags:
- udp
# Hashicorp Vault
vault_version: 0.10.4
vault_pkg: vault_{{ vault_version }}_linux_arm.zip
vault_pkg_sum: 384e47720cdc72317d3b8c98d58e6c8c719ff3aaeeb71b147a6f5f7a529ca21b
# DNSMasq
dnsmasq_dnsmasq_conf:
- |
port=53
bind-interfaces
server=8.8.8.8
server=8.8.4.4
dnsmasq_dnsmasq_d_files_present:
cache:
- |
domain-needed
bogus-priv
no-hosts
dns-forward-max=150
cache-size=1000
neg-ttl=3600
no-poll
no-resolv
consul:
- |
server=/consul/127.0.0.1#8600
homestead-murawsky-net:
- address=/usg.homestead.murawsky.net/192.168.1.1
- address=/ns1.homestead.murawsky.net/192.168.1.2
- address=/ns2.homestead.murawsky.net/192.168.1.3
# NTP
ntp_enabled: true
ntp_manage_config: true
ntp_area: &#39;us&#39;
ntp_servers:
- &amp;quot;0{{ ntp_area }}.pool.ntp.org iburst&amp;quot;
- &amp;quot;1{{ ntp_area }}.pool.ntp.org iburst&amp;quot;
- &amp;quot;2{{ ntp_area }}.pool.ntp.org iburst&amp;quot;
- &amp;quot;3{{ ntp_area }}.pool.ntp.org iburst&amp;quot;
ntp_timezone: America/New_York
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And finally, the simple site.yml file.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-yaml&#34;&gt;- name: Configure System Baselines
hosts: all
roles:
- { role: baseline, tags: [&#39;baseline&#39;]}
- name: Configure DNS hosts
hosts: dns
roles:
- { role: ntp, tags: [&#39;ntp&#39;] }
- { role: dnsmasq, tags: [&#39;dnsmasq&#39;] }
- { role: consul, tags: [&#39;consul&#39;] }
- { role: hashivault, tags: [&#39;hashivault&#39;] }
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;results&#34;&gt;Results&lt;/h2&gt;
&lt;p&gt;DNS resolution worked perfectly out of the gate as expected, but what about Consul?&lt;/p&gt;
&lt;p&gt;
&lt;figure&gt;
&lt;a data-fancybox=&#34;&#34; href=&#34;images/consul-screenshot.png&#34; &gt;
&lt;img src=&#34;images/consul-screenshot.png&#34; alt=&#34;&#34; width=&#34;600&#34; &gt;&lt;/a&gt;
&lt;/figure&gt;
Brilliant! Sure, the services that I have loaded are pretty simple and don’t really benefit from a service locator, but they’re examples of what is possible. Now I can register any new service by loading the consul agent onto the server and simply adding a definition file in the appropriate folder! This should make future expansion of services much easier.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; I currently have two consul servers. This is bad and not highly available. I have to get one more consul server online. Debating between another pi or putting on the home server.&lt;/p&gt;
&lt;h2 id=&#34;future-plans&#34;&gt;Future Plans&lt;/h2&gt;
&lt;p&gt;You’ll notice there’s no real security around the deployment above either. That needs to be fixed in terms of Consul ACLs, Vault, and password/key management for user accounts. There’s also a cool tool called &lt;a href=&#34;https://pi-hole.net/&#34; target=&#34;_blank&#34;&gt;pi-hole&lt;/a&gt; which is a dns level ad blocker that I want to integrate into my environment. I also plan on setting up Docker on my home server in the not too distant future to make it easier to host some fun services like &lt;a href=&#34;https://prometheus.io/&#34; target=&#34;_blank&#34;&gt;Prometheus&lt;/a&gt;, &lt;a href=&#34;https://grafana.com/&#34; target=&#34;_blank&#34;&gt;Grafana&lt;/a&gt;, &lt;a href=&#34;https://www.home-assistant.io/&#34; target=&#34;_blank&#34;&gt;HomeAssistant&lt;/a&gt;, and some other cool tools. I’ll also have to extend the network to my barn as the office is moving out there. Lastly, I want to build a portable lab that I can take with me when doing demos or presentation at local user groups.&lt;/p&gt;</description></item><item><title>Homestead Network Upgrades</title><link>https://development--vigilant-hodgkin-644b1e.netlify.com/post/homestead-network-upgrades/</link><pubDate>Sun, 22 Oct 2017 12:05:33 -0400</pubDate><guid>https://development--vigilant-hodgkin-644b1e.netlify.com/post/homestead-network-upgrades/</guid><description>&lt;p&gt;Despite coming from the networking side of IT, I tend to use regular consumer grade equipment at home. It typically just works, and I’m not looking for extreme reliability or features. I’ve been using hardware from Linksys, Netgear, and the other consumer network vendors for at least the last 10 years. Sometimes, though, things happen that make you reevaluate your previous life choices…&lt;/p&gt;
&lt;p&gt;For me, that thing was an email that I received from Verizon saying my router was infected with malware. Since I always take basic precautions like changing the default password and locking down external ports, I was a bit surprised. Turns out, there was a vulnerability in the firmware that had gone unpatched for months… In hindsight, I should not have been that surprised. At all. I thought I had purchased a flagship router that would be supported for at least a few years, but it didn’t look like any more patches were coming. Ever. I looked into trusty old &lt;a href=&#34;http://www.dd-wrt.com/&#34; target=&#34;_blank&#34;&gt;DD-WRT&lt;/a&gt; figuring that I could flash the router and at least get another year out of it, but apparently the R7000 has some performance issues with DD-WRT.&lt;/p&gt;
&lt;p&gt;After having issues like this a few times with generic consumer grade stuff over the years, no matter the vendor, I decided enough was enough. I researched available options in the enterprise hardware space (way too expensive and time consuming to set up), looked at open source alternatives (cheap, but time consuming, and not well integrated), and even looked at the more pro-level offerings from consumer manufacturers (underwhelming). After a few days, I decided on and purchased some &lt;a href=&#34;https://www.ubnt.com/&#34; target=&#34;_blank&#34;&gt;Ubiquiti&lt;/a&gt; hardware based on the many good reviews and a few personal recommendations from networking folks I respect.&lt;/p&gt;
&lt;figure&gt;
&lt;a data-fancybox=&#34;&#34; href=&#34;images/ubiquiti-logo.png&#34; &gt;
&lt;img src=&#34;images/ubiquiti-logo.png&#34; alt=&#34;&#34; width=&#34;150&#34; &gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;p&gt;Ubiquiti’s hardware is solid stuff, performance wise, and they have a very good reputation. The hardware is what I would call “Enterprise Lite”, meaning it’s not Cisco, but its perfect for small to medium businesses who just want things to work. Additionally, the &lt;a href=&#34;https://unifi-sdn.ubnt.com/&#34; target=&#34;_blank&#34;&gt;Unifi configuration system&lt;/a&gt; and dashboard is excellent, taking a significant configuration and support burden off of me.&lt;/p&gt;
&lt;p&gt;The initial hardware purchase was:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.ubnt.com/unifi-routing/unifi-security-gateway-pro-4/&#34; target=&#34;_blank&#34;&gt;Unifi Security Gateway Pro&lt;/a&gt; (&lt;a href=&#34;https://www.amazon.com/gp/product/B019PBEI5W&#34; target=&#34;_blank&#34;&gt;Amazon&lt;/a&gt;)- I definitely went overkill here. The &lt;a href=&#34;https://www.amazon.com/Ubiquiti-Unifi-Security-Gateway-USG/dp/B00LV8YZLK/&#34; target=&#34;_blank&#34;&gt;entry model USG&lt;/a&gt; is capable of routing gigabit at near wirespeed. However, I decided that I likes the extra ports for a few future projects, like the barn office.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.ubnt.com/unifi-switching/unifi-switch-8/&#34; target=&#34;_blank&#34;&gt;Unifi Switch 8, 60 Watt&lt;/a&gt; (&lt;a href=&#34;https://www.amazon.com/gp/product/B01MU3WUX1&#34; target=&#34;_blank&#34;&gt;Amazon&lt;/a&gt;)- Since the new network was not an all-in-one setup, I needed something to power the other devices around the house. This managed switch provided a lot more than just that, though. The VLANs will come in handy when we set up the home office.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.ubnt.com/unifi/unifi-ap-ac-pro/&#34; target=&#34;_blank&#34;&gt;Unifi AP AC Pro&lt;/a&gt; (&lt;a href=&#34;https://www.amazon.com/gp/product/B015PRO512&#34; target=&#34;_blank&#34;&gt;Amazon&lt;/a&gt;)- Another bit of overkill for home use, but this one was easier to justify than the firewall. Simply put, it has more power, and I need that given the 2′ thick stone walls in the farmhouse.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.ubnt.com/unifi/unifi-cloud-key/&#34; target=&#34;_blank&#34;&gt;Unifi Cloud Key&lt;/a&gt; (&lt;a href=&#34;https://www.amazon.com/gp/product/B017T2QB22&#34; target=&#34;_blank&#34;&gt;Amazon&lt;/a&gt;)- Though not strictly necessary, the Cloud Key allows you to run your network controller app on dedicated hardware. It can also be linked to the Unifi cloud portal allowing for a very convenient and secure hybrid cloud management platform.&lt;/li&gt;
&lt;/ul&gt;
&lt;figure&gt;
&lt;a data-fancybox=&#34;&#34; href=&#34;images/murawsky-homestead-physical.png&#34; &gt;
&lt;img src=&#34;images/murawsky-homestead-physical.png&#34; alt=&#34;&#34; width=&#34;300&#34; &gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;p&gt;The hardware wasn’t cheap, but surprisingly, it wasn’t much more than I paid for the R7000 two years ago. If I had chosen the regular USG, the price difference would have been negligible.&lt;/p&gt;
&lt;p&gt;As for the setup, it was easier than I thought. I racked the USG Pro, plugged in the switch, then the cloud key. Thankfully I had already run the line to the wireless AP so that was easy. I also threw in a Raspberry Pi server for fun. It took about 10 minutes to patch everything together. But what about the configuration?&lt;/p&gt;
&lt;p&gt;Well, thanks to the Unifi software on the Cloud Key, I was able to “adopt” the other devices and have them configured in no time at all. My basic single vlan setup was ready to go out of the box. All totaled, I had the network up and running in 20 minutes. Time vs the R7000? Maybe an extra 10 minutes.&lt;/p&gt;
&lt;figure&gt;
&lt;a data-fancybox=&#34;&#34; href=&#34;images/unifi-dash.png&#34; &gt;
&lt;img src=&#34;images/unifi-dash.png&#34; alt=&#34;&#34; width=&#34;600&#34; &gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;p&gt;What has it been like living with “Enterprise Lite” hardware at home? Fantastic. Having a useful dashboard that I can glance at to see the status of the home network is a perk I didn’t think I would care about, but I’ve used it several times already. The speed is true gigabit on wired, the wireless coverage is solid, and we don’t have random drops in connectivity anymore. And as for patches… I’ve already had two patches come through for stack. It’s a simple matter of hitting the upgrade button for the device, or setting up auto-upgrade. As far as I’m concerned, I’m never going back to consumer gear again.&lt;/p&gt;</description></item><item><title>Saving the Jeep</title><link>https://development--vigilant-hodgkin-644b1e.netlify.com/post/saving-the-jeep/</link><pubDate>Mon, 31 Jul 2017 12:05:19 -0400</pubDate><guid>https://development--vigilant-hodgkin-644b1e.netlify.com/post/saving-the-jeep/</guid><description>&lt;p&gt;There has been a 1979 Jeep CJ-7 in my family for nearly 40 years now. My Great-Uncle bought it new from the dealer, and it passed to my father, then my mother, and now to me. The Jeep has many fond memories associated with it. I can still remember the first time I road in it, with my uncle taking dad and me to the cabin. I remember when both my mom and dad were separately teaching me to drive and made me promise not to tell the other. I remember when, on one particular lesson, mom drove the Jeep off a steep embankment and I had to calm her down and get it out. Countless stories are wrapped up in that hunk of metal; precious memories that I wouldn’t trade for the world.&lt;/p&gt;
&lt;p&gt;Unfortunately life gets in the way sometimes. Dad passed away many years ago, and the Jeep became an occasional driver. Mom got sick a few years ago, and the Jeep was semi-permanently garaged. Recently, Mom passed after a long battle with cancer, and now the Jeep belongs to me. I don’t know much about cars, but I know keeping a vehicle in an unconditioned space for several years is bad for it. So what to do?&lt;/p&gt;
&lt;p&gt;I’m a fan of a show called &lt;a href=&#34;http://www.thesurvivalpodcast.com/&#34; target=&#34;_blank&#34;&gt;The Survival Podcast&lt;/a&gt; (TSP). In it, Jack Spirko, a renaissance prepper-cum-duck-farmer, talks about dozens of topics ranging from stocking a larder to bitcoin’s implications on the global economy. It’s a fantastically interesting show. TSP also has something called an &lt;a href=&#34;http://www.thesurvivalpodcast.com/about-tspc/meet-the-expert-council&#34; target=&#34;_blank&#34;&gt;Expert Council&lt;/a&gt;, comprised of subject matter experts from fields across the spectrum. One in particular stood out: &lt;a href=&#34;https://humblemechanic.com/&#34; target=&#34;_blank&#34;&gt;Charles Sanville, the Humble Mechanic&lt;/a&gt;. I thought if anyone could help and offer guidance, he could. So I sent the following email to Jack.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Question for:&lt;/strong&gt; Charles Sanville&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Question:&lt;/strong&gt; What should I do for an inherited 1979 CJ-7 that’s been garaged for the last 5 years and had some odd modifications done to it? It currently doesn’t run, but I’d like to keep it, and learn the basics of car maintenance and “restoration”.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Background:&lt;/strong&gt;
My great-uncle bought an odd CJ-7 new in 1979 from the dealer. It has&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A straight 6, automatic transmission (I think AMC 232?)&lt;/li&gt;
&lt;li&gt;Power steering&lt;/li&gt;
&lt;li&gt;Manual breaks&lt;/li&gt;
&lt;li&gt;All-time 4-wheel drive, Quadra-Trac, which makes the jeep really squirrely at speed).&lt;/li&gt;
&lt;li&gt;Less than 20,000 original miles&lt;/li&gt;
&lt;li&gt;Almost no rust&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Over the years, it passed on from my great-uncle, to my father, then my mother. It’s a family heirloom at this point, and I have many fond memories of going camping, hiking, and to our families cabin in upstate NY. Heck, I ever learned to drive in it! I really want to keep this vehicle for weekend/occasional driving, camping, and because it’s all I have left of my family at this point. I’d love for my son to learn to drive in it some day.&lt;/p&gt;
&lt;p&gt;There are a few known issues with the vehicle:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;My dad didn’t believe in modern emissions regulations and pulled most of those components. There are hoses the terminate in a bolt and hose clamp. The Jeep ran after these modifications, but I’d like to get it back to “normal” running mode so that it doesn’t potentially mess up the engine.&lt;/li&gt;
&lt;li&gt;Some of the control knobs inside come off.&lt;/li&gt;
&lt;li&gt;All four whitewalls are flat and don’t appear to hold air.&lt;/li&gt;
&lt;li&gt;The spare tire was side-mounted so a rear wooden cargo-box could be added. That box is now falling apart. Should I rebuild it or try to restore the spare tire to the rear?&lt;/li&gt;
&lt;li&gt;It’s in a garage in upstate NY, and I need to get it hauled to my garage in PA.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I’m an IT Architect/engineer who used to build a lot of sets for theater, so I’m competent with tools and woodworking, but I have almost no experience with cars. I’ve changed oil a few times and that’s about it.&lt;/p&gt;
&lt;p&gt;How do you get started with something like this? How do you figure out what was removed from the engine? Is a car this old worth restoring, or am I letting my sentimentality get in the way?
Any insight or advice you could provide would be greatly appreciated.
Sincerely,
-Derek M, in PA.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I sent it in wondering if the question was too specific for a followup on the show, but I figured it was worth a shot. A few weeks went by and no answer came, so I thought I’d have to figure it out on my own. Then, to my surprise, I heard my question on the air&amp;hellip;&lt;/p&gt;
&lt;p&gt;This is the start of a new series, documenting my Family’s 1979 CJ-7. Stay tuned for updates.&lt;/p&gt;</description></item><item><title>The Great Cleanup – Chicken Coop Restoration Part 2</title><link>https://development--vigilant-hodgkin-644b1e.netlify.com/post/chicken-coop-restoration-part-2/</link><pubDate>Sat, 04 Mar 2017 11:38:48 -0400</pubDate><guid>https://development--vigilant-hodgkin-644b1e.netlify.com/post/chicken-coop-restoration-part-2/</guid><description>&lt;p&gt;Welcome to Part 2 of the Coop Restoration series. In this post, I’ll go over the cleanup that I did this past weekend. The coop started out in rough shape. There were rolls of old insulation, mouse nests, mold… It had been used as a storage space for transient garbage for years. Below are some pictures after I pulled out the worst of the insulation. You can see some of the nest in the back left corner behind the cabinets and dog crate.&lt;/p&gt;
&lt;p&gt;
&lt;figure&gt;
&lt;a data-fancybox=&#34;&#34; href=&#34;images/IMG_20170220_195635.jpg&#34; &gt;
&lt;img src=&#34;images/IMG_20170220_195635.jpg&#34; alt=&#34;&#34; width=&#34;250&#34; &gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;figure&gt;
&lt;a data-fancybox=&#34;&#34; href=&#34;images/IMG_20170220_195645.jpg&#34; &gt;
&lt;img src=&#34;images/IMG_20170220_195645.jpg&#34; alt=&#34;&#34; width=&#34;250&#34; &gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;figure&gt;
&lt;a data-fancybox=&#34;&#34; href=&#34;images/IMG_20170220_195641.jpg&#34; &gt;
&lt;img src=&#34;images/IMG_20170220_195641.jpg&#34; alt=&#34;&#34; width=&#34;250&#34; &gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Once the big items were moved, sorted, and mostly thrown in the garbage, I did a preliminary sweep up. Turns out that half of the coop has unfinished hardwood floors! Bonus! After inspecting the chicken wire, I saw lots of rust, holes, and filth. There was no way to clean and reinforce it, so off it came. I also pulled off the old roosts and low panels as well.&lt;/p&gt;
&lt;p&gt;I debated pulling out the old flooring and walls, but there’s only so much I can do in two weeks. The plan right now will be to disinfect them thoroughly, and lay some washable &lt;a href=&#34;http://www.homedepot.com/p/EUCATILE-32-sq-ft-96-in-x-48-in-Hardboard-Thrifty-White-Tile-Board-HDDPTW48/205995949&#34; target=&#34;_blank&#34;&gt;hardboard over them&lt;/a&gt;. This is the same material that I’ll be using for the lower two feet of wall as it’s easily cleanable and a great draft blocker.&lt;/p&gt;
&lt;p&gt;After another sweep up, and vacuum, the place looked a lot better. The door was in pretty good shape, so that got left in place. I may have to pull it in the long run, though, as it currently swings inward and the wife and I are thinking about deep litter, but that’s an easy change at a later date.&lt;/p&gt;
&lt;p&gt;
&lt;figure&gt;
&lt;a data-fancybox=&#34;&#34; href=&#34;images/IMG_20170226_151548.jpg&#34; &gt;
&lt;img src=&#34;images/IMG_20170226_151548.jpg&#34; alt=&#34;&#34; width=&#34;250&#34; &gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;figure&gt;
&lt;a data-fancybox=&#34;&#34; href=&#34;images/IMG_20170225_124810.jpg&#34; &gt;
&lt;img src=&#34;images/IMG_20170225_124810.jpg&#34; alt=&#34;&#34; width=&#34;250&#34; &gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;figure&gt;
&lt;a data-fancybox=&#34;&#34; href=&#34;images/IMG_20170225_124814.jpg&#34; &gt;
&lt;img src=&#34;images/IMG_20170225_124814.jpg&#34; alt=&#34;&#34; width=&#34;250&#34; &gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Next up, in part 3: Framing and Re-Chicken-Wiring the coop!&lt;/p&gt;</description></item><item><title>To Export the Unexportable Key</title><link>https://development--vigilant-hodgkin-644b1e.netlify.com/post/export-unexportable-key/</link><pubDate>Wed, 01 Mar 2017 11:59:53 -0400</pubDate><guid>https://development--vigilant-hodgkin-644b1e.netlify.com/post/export-unexportable-key/</guid><description>
&lt;p&gt;Every now and then, you have to export a certificate in Windows, and someone forgot to check that little box to let you be able to do it… What is an enterprising SysAdmin to do? Enter &lt;a href=&#34;http://blog.gentilkiwi.com/mimikatz&#34; target=&#34;_blank&#34;&gt;Mimikatz&lt;/a&gt; (&lt;a href=&#34;https://github.com/gentilkiwi/mimikatz&#34; target=&#34;_blank&#34;&gt;source&lt;/a&gt;), a tool that lets you patch the Windows crypto api and do several cool (and frightening) things. The process is very simple.&lt;/p&gt;
&lt;h2 id=&#34;to-export-an-unexportable-private-key&#34;&gt;To Export an Unexportable Private Key:&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Create a temp directory&lt;/li&gt;
&lt;li&gt;Download the latest version of &lt;a href=&#34;https://github.com/gentilkiwi/mimikatz/releases/tag/2.1.0-20170227&#34; target=&#34;_blank&#34;&gt;Mimikatz&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Extract the appropriate version (32 or 64 bit) to the temp directory&lt;/li&gt;
&lt;li&gt;Open an admin command prompt&lt;/li&gt;
&lt;li&gt;Change to the temp directory&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;mimikatz&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Type &lt;code&gt;crypto::capi&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;And finally type &lt;code&gt;crypto::certificates /export&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;You’ll see all of the certificates in the MY store exported into the temp directory in pfx format. The default password is mimikatz. Want another cert store? Perhaps, the computer store? Simply &lt;code&gt;run crypto::certificates /export /systemstore:LOCAL_MACHINE&lt;/code&gt;. Check out the &lt;a href=&#34;https://github.com/gentilkiwi/mimikatz/wiki&#34; target=&#34;_blank&#34;&gt;github wiki&lt;/a&gt; for documentation on this and other cool features of this powerful tool.&lt;/p&gt;</description></item><item><title>Chicken Coop Restoration Part 1</title><link>https://development--vigilant-hodgkin-644b1e.netlify.com/post/chicken-coop-restoration-part-1/</link><pubDate>Tue, 28 Feb 2017 10:41:14 -0400</pubDate><guid>https://development--vigilant-hodgkin-644b1e.netlify.com/post/chicken-coop-restoration-part-1/</guid><description>
&lt;figure&gt;
&lt;a data-fancybox=&#34;&#34; href=&#34;images/homestead.png&#34; &gt;
&lt;img src=&#34;images/homestead.png&#34; alt=&#34;&#34; width=&#34;250&#34; &gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;p&gt;One of the wonderful things about our homestead is that we inherited several outbuildings. We have a large post-and-beam barn (40 x 60), equipment shed (16 x 24), storage shed (14 x 24 + lean-to), and a rather large chicken coop turned racing pigeon coop (14 x 24). Yes, you read that right. The previous owners really loved their racing pigeons and converted a perfectly good chicken coop into a palatial (for a pigeon) loft! Unfortunately, the barn is the only structure in good shape, having been rebuilt by the previous owner. The rest of the outbuildings are in various states of disrepair.&lt;/p&gt;
&lt;p&gt;Since we’re starting the new year off with a focus on sustainability, it’s time to look at our outbuildings and restore them to their former glory! Or at least, to a usable state. The first project will be to rebuild the chicken coop and get some birds in!&lt;/p&gt;
&lt;h2 id=&#34;about-the-chicken-coop&#34;&gt;About the Chicken Coop&lt;/h2&gt;
&lt;figure&gt;
&lt;a data-fancybox=&#34;&#34; href=&#34;images/coop-external.jpg&#34; &gt;
&lt;img src=&#34;images/coop-external.jpg&#34; alt=&#34;External view of coop&#34; width=&#34;600&#34; &gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;p&gt;The Coop is a semi-insulated structure, elevated on piers, with a door on the short end closest to the house. It has several windows along the south wall, electricity, and a freeze-proof yard hydrant, and is in desperate need of a paint job amongst other things. Inside, there are two large rooms separated by wall. Each of those rooms has a wired off coop area and an open area. The previous owners must really have loved their racing pigeons to build such a large structure for them!&lt;/p&gt;
&lt;figure&gt;
&lt;a data-fancybox=&#34;&#34; href=&#34;images/coop-current.png&#34; &gt;
&lt;img src=&#34;images/coop-current.png&#34; alt=&#34;Current layout of coop&#34; width=&#34;600&#34; &gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;h2 id=&#34;plan-for-the-chicken-coop&#34;&gt;Plan for the Chicken Coop&lt;/h2&gt;
&lt;p&gt;In addition to the basic cleanup of the building, the goal for the coop project is to make it able to hold a brooder in two weeks. As part of that, we want to do three main things: extend the interior coop wall to include the exterior chicken door, create removable roosting space, and build exterior-accessible nesting boxes.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;By extending just one section of the coop to include the exterior chicken door, we can keep more room for storage of supplies for the birds and other critters. If we end up running more birds than this space allows, I can always extend the entire wall.&lt;/li&gt;
&lt;li&gt;The roost space will be angled and removable. When brooding chicks, the roost will come out and the hover-brooder will go in the corner.&lt;/li&gt;
&lt;li&gt;Finally, having nesting boxes that we can access without having to go into the coop itself is just easier in the long run. I would very much like to have &lt;a href=&#34;https://bestnestbox.com/collections/all-of-our-products/products/large-front-rollaway-or-rear-rollaway-community-nest-box-reversible&#34; target=&#34;_blank&#34;&gt;roll-out nesting boxes&lt;/a&gt;, but they tend to be expensive and we already have enough expenses rehabbing the coop this year.&lt;/li&gt;
&lt;/ol&gt;
&lt;figure&gt;
&lt;a data-fancybox=&#34;&#34; href=&#34;images/coop-planned.png&#34; &gt;
&lt;img src=&#34;images/coop-planned.png&#34; alt=&#34;&#34; width=&#34;600&#34; &gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;p&gt;So, what do you think?&lt;/p&gt;
&lt;p&gt;Next Up, in part 2: The Great Cleanup!&lt;/p&gt;</description></item><item><title>My First Wine Kit – Winexpert World Vineyward Chilean Malbec</title><link>https://development--vigilant-hodgkin-644b1e.netlify.com/post/my-first-wine-kit/</link><pubDate>Mon, 21 Nov 2016 10:26:19 -0400</pubDate><guid>https://development--vigilant-hodgkin-644b1e.netlify.com/post/my-first-wine-kit/</guid><description>
&lt;figure&gt;
&lt;a data-fancybox=&#34;&#34; href=&#34;images/ready-to-go.jpg&#34; &gt;
&lt;img src=&#34;images/ready-to-go.jpg&#34; alt=&#34;&#34; width=&#34;225&#34; &gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;p&gt;I’ve brewed beer about a half a dozen times over the last few years. It’s not a hobby that I’m not particularly active in, but I do enjoy it once in a while. I’ve made ciders and ales a few times, even going as far as to make a Trippel once. The only thing I’ve bombed was a batch of mead which, for some reason, refused to ferment. Ah well, it was college. I blame distractions. Anyway, I thought it would be good to keep a journal of some of these activities. So here goes, my first foray into wine making: &lt;a href=&#34;http://www.winexpert.com/wine?brand[]=533&amp;amp;keywords=Chilean%20Malbec&amp;amp;v=list&amp;amp;p=details&#34; target=&#34;_blank&#34;&gt;The Winexpert World Vineyard Chilean Malbec&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;day-1-customer-appreciation-day-nov-20-2016&#34;&gt;Day 1 – Customer Appreciation Day (Nov 20, 2016)&lt;/h2&gt;
&lt;p&gt;It was Customer Appreciation Day at my local homebrew store, &lt;a href=&#34;http://www.keystonehomebrew.com/&#34; target=&#34;_blank&#34;&gt;Keystone Homebrew&lt;/a&gt;, so my wife, son, and I went down to see what they had. Aside from a bouncy-castle, crepe truck, and lots of samples, they had a great selection of wine kits. My wife, being a wine person, was really interested. However, she didn’t think it would be easy to do. Originally, we were going to get a 1 gallon demo kit to try out the whole process, but thanks to a very helpful sales guy, we realized just how simple the kit process was. We walked out with two kits: The &lt;a href=&#34;http://www.winexpert.com/wine?brand[]=536&amp;amp;keywords=Dessert%20Wine&amp;amp;v=list&amp;amp;p=details&#34; target=&#34;_blank&#34;&gt;Winexpert Speciale Dessert Wine&lt;/a&gt; and the &lt;a href=&#34;http://www.winexpert.com/wine?brand[]=533&amp;amp;keywords=Chilean%20Malbec&amp;amp;v=list&amp;amp;p=details&#34; target=&#34;_blank&#34;&gt;Winexpert World Vineyard Chilean Malbec&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;
&lt;figure&gt;
&lt;a data-fancybox=&#34;&#34; href=&#34;images/both-kits.jpg&#34; &gt;
&lt;img src=&#34;images/both-kits.jpg&#34; alt=&#34;&#34; width=&#34;600&#34; &gt;&lt;/a&gt;
&lt;/figure&gt;
After reading the directions for both kits, I decided to start with the Malbec. Both were surprisingly simple, but the malbec had one less step. We cleaned our equipment, hydrated the bentonite, poured the concentrate in, topped it up with bottled water, tested, and otherwise got the kit ready. The OG was 1.092-94, which is right where the directions said it should be. The kit is happily hanging out in the utility closet now. T-Minus 5-7 days to racking!&lt;/p&gt;
&lt;figure&gt;
&lt;a data-fancybox=&#34;&#34; href=&#34;images/malbec-wine-kit.jpg&#34; &gt;
&lt;img src=&#34;images/malbec-wine-kit.jpg&#34; alt=&#34;&#34; width=&#34;600&#34; &gt;&lt;/a&gt;
&lt;/figure&gt;</description></item><item><title>Authorized_Keys in Active Directory</title><link>https://development--vigilant-hodgkin-644b1e.netlify.com/post/authorized_keys-in-active-directory/</link><pubDate>Sat, 21 Nov 2015 17:09:02 -0400</pubDate><guid>https://development--vigilant-hodgkin-644b1e.netlify.com/post/authorized_keys-in-active-directory/</guid><description>
&lt;p&gt;Now that we are implementing more Linux systems, I’m noticing some of the pain points of keeping certain things in sync. A big annoyance, for example, is keeping our infrastructure and users’ SSH keys in sync across all of our machines. There are several methods currently available, but I had issues with each. I’ve listed the two main methods below.&lt;/p&gt;
&lt;h2 id=&#34;via-configuration-management&#34;&gt;Via Configuration Management&lt;/h2&gt;
&lt;p&gt;A very DevOpsy way of tackling the problem would be to us a configuration management system like Chef to keep the files updated. In fact, there are &lt;a href=&#34;https://www.chef.io/blog/2014/07/10/managing-users-and-ssh-keys-in-a-hybrid-world/&#34; target=&#34;_blank&#34;&gt;several examples&lt;/a&gt; of &lt;a href=&#34;https://forge.puppetlabs.com/tags/authorized-keys&#34; target=&#34;_blank&#34;&gt;this solution&lt;/a&gt; out there already. However, this seems a bit counter-intuitive to me. Why keep user account and related information in a config management system instead of a directory service? This is probably my Windows World bias, but &lt;a href=&#34;https://jumpcloud.com/blog/why-user-management-in-chef-and-puppet-is-a-mistake/&#34; target=&#34;_blank&#34;&gt;there are others that agree&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;via-scripts-dedicated-systems&#34;&gt;Via Scripts/Dedicated Systems&lt;/h2&gt;
&lt;p&gt;From simple &lt;a href=&#34;https://github.com/bronson/sshkeys&#34; target=&#34;_blank&#34;&gt;shell scripts&lt;/a&gt;, to &lt;a href=&#34;https://github.com/cloudtools/ssh-cert-authority&#34; target=&#34;_blank&#34;&gt;complex&lt;/a&gt; &lt;a href=&#34;http://sshkeybox.com/&#34; target=&#34;_blank&#34;&gt;systems&lt;/a&gt;, there are many ways to keep this data in sync. The simplest would appear to to be setting up NFS and pointing all users’ home directories there… But then you have to keep those NFS servers in sync and backed up across multiple sites, which can be problematic at scale.&lt;/p&gt;
&lt;h2 id=&#34;our-solution-ad-ldap-storage-of-ssh-keys&#34;&gt;Our Solution – AD/LDAP storage of SSH keys&lt;/h2&gt;
&lt;p&gt;To be up front, this was not my idea. There are many other folks who have &lt;a href=&#34;https://github.com/AndriiGrytsenko/openssh-ldap-publickey&#34; target=&#34;_blank&#34;&gt;implemented&lt;/a&gt; &lt;a href=&#34;https://code.google.com/p/openssh-lpk/&#34; target=&#34;_blank&#34;&gt;similar&lt;/a&gt; &lt;a href=&#34;http://itdavid.blogspot.com/2013/11/howto-configure-openssh-to-fetch-public.html&#34; target=&#34;_blank&#34;&gt;solutions&lt;/a&gt;. We are using this method specifically because we already have a robust AD infrastructure with all of our Linux authentication going through AD already (a post on this is soon to come). It probably doesn’t make sense for a group that already has a solid solution in, say, chef or puppet. For us, it did, and this is how we built it.&lt;/p&gt;
&lt;p&gt;First, we had to extend the Active Directory schema. This is not something for the faint of heart, but is also not something to be afraid of. I followed the procedure listed &lt;a href=&#34;https://www.balabit.com/sites/default/files/documents/scb-latest-guides/en/scb-guide-admin/html/proc-scenario-usermapping.html&#34; target=&#34;_blank&#34;&gt;here&lt;/a&gt; (after backing things up) and had everything ready to go in about 15 minutes. A note on the procedure: you do not need to use ADSIEdit to manage the custom attirbute afterwards. Just open AD Users and Computers and switch to the advanced view mode. Each item will then have an “attributes” tab in its properties page.&lt;/p&gt;
&lt;p&gt;Once the schema was extended, the fun began. OpenSSH supports a config variable called “AuthorizedKeysCommand”. This allows us to call an arbitrary script to pull the users authorized_keys file. This &lt;a href=&#34;http://serverfault.com/questions/653792/ssh-key-authentication-using-ldap&#34; target=&#34;_blank&#34;&gt;serverfault post&lt;/a&gt; got me going on creating a custom command, but the output of SED wasn’t clean enough. I whipped up the following script in perl to get everything working nicely. It binds to AD using a username and password and then pulls all sshPublicKey values from the specified user account.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-perl&#34;&gt;#!/usr/bin/perl
# Gets authorized keys from LDAP. Cleaner and supports any number of ssh keys, within reason.
# Requires Net::LDAP.
use Net::LDAP;
$BINDDN=&amp;quot;cn=service account,dc=example,dc=com&amp;quot;;
$BINDPW=&amp;quot;Password&amp;quot;;
$SEARCHBASE=&amp;quot;dc=example,dc=com&amp;quot;;
$SERVER=&amp;quot;domain or ip&amp;quot;;
$SearchFor=&amp;quot;samaccountname=$ARGV[0]&amp;quot;;
$ldap = Net::LDAP-&amp;gt;new( $SERVER ) or die &amp;quot;$@&amp;quot;;
$msg = $ldap-&amp;gt;bind( $BINDDN, password=&amp;gt; $BINDPW);
$result = $ldap-&amp;gt;search( base =&amp;gt; $SEARCHBASE,
filter =&amp;gt; $SearchFor,
);
while (my $entry = $result-&amp;gt;shift_entry) {
foreach ($entry-&amp;gt;get_value(&#39;sshPublicKey&#39;)){
print $_ , &amp;quot;\n&amp;quot;
} ;
}
$ldap-&amp;gt;unbind;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Once the script is created, it can be called by adding “AuthorizedKeysCommand /path/to/script” to the sshd_config file. I also had to set the script to run as root by using the “AuthorizedKeysCommandUser root” command.&lt;/p&gt;
&lt;h2 id=&#34;next-steps&#34;&gt;Next Steps&lt;/h2&gt;
&lt;p&gt;I want to improve this script in a few ways long-term…&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Since all of our Linux systems are part of our domain, there should be a way to have them bind to LDAP by using the machine’s Kerberos ticket. I don’t like using a username and password, but didn’t have the time to get the Kerberos bind working reliably.&lt;/li&gt;
&lt;li&gt;On the security front, this should be a TLS bind. No reason to have the data going over the wire cleartext.&lt;/li&gt;
&lt;li&gt;The script should not have to run as root…&lt;/li&gt;
&lt;li&gt;Cache the authorized_keys file on a per-user basis. We have a very robust AD infrastructure, but there is always a concern that it could become unavailable. The system’s resiliency would be greatly increased if it could cache the authorized_keys locally on a per-user basis, where sshd would normally look for it.&lt;/li&gt;
&lt;li&gt;Error Handling and Logging. It’s not fun, but it’s important. I wanted to get this solution out quickly, but it should be able to log to standard sources and handle some edge cases.&lt;/li&gt;
&lt;li&gt;Since the above is a lot of work, perhaps I can just improve a project like &lt;a href=&#34;https://github.com/jirutka/ssh-ldap-pubkey&#34; target=&#34;_blank&#34;&gt;ssh-ldap-pubkey&lt;/a&gt; to support Kerberos.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;external-links&#34;&gt;External Links&lt;/h2&gt;
&lt;p&gt;I found the following links quite helpful in generating this solution.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://serverfault.com/questions/653792/ssh-key-authentication-using-ldap&#34; target=&#34;_blank&#34;&gt;http://serverfault.com/questions/653792/ssh-key-authentication-using-ldap&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.balabit.com/sites/default/files/documents/scb-latest-guides/en/scb-guide-admin/html/proc-scenario-usermapping.html&#34; target=&#34;_blank&#34;&gt;https://www.balabit.com/sites/default/files/documents/scb-latest-guides/en/scb-guide-admin/html/proc-scenario-usermapping.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/jirutka/ssh-ldap-pubkey&#34; target=&#34;_blank&#34;&gt;https://github.com/jirutka/ssh-ldap-pubkey&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Flexible Email Alerts for Logstash</title><link>https://development--vigilant-hodgkin-644b1e.netlify.com/post/flexible-email-alerts-for-logstash/</link><pubDate>Fri, 13 Nov 2015 17:00:47 -0400</pubDate><guid>https://development--vigilant-hodgkin-644b1e.netlify.com/post/flexible-email-alerts-for-logstash/</guid><description>
&lt;figure&gt;
&lt;a data-fancybox=&#34;&#34; href=&#34;images/logstash-logo.png&#34; &gt;
&lt;img src=&#34;images/logstash-logo.png&#34; alt=&#34;&#34; width=&#34;100&#34; &gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;p&gt;My company currently does a lot of it’s debug logging via email&amp;hellip; This means that every time an unhandled exception occurs in production, qa, uat, or integration, we get an email. Thank goodness for custom email rules and single instance storage in Exchange. &lt;a href=&#34;http://farisnt.blogspot.com/2014/09/exchange-2010-2013-server-single.html&#34; target=&#34;_blank&#34;&gt;Oh wait&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I have been a proponent of &lt;a href=&#34;https://www.elastic.co/products/logstash&#34; target=&#34;_blank&#34;&gt;Logstash&lt;/a&gt; and the &lt;a href=&#34;https://www.elastic.co/webinars/introduction-elk-stack&#34; target=&#34;_blank&#34;&gt;ELK stack&lt;/a&gt; for quite a while now. It is a wonderfully flexible framework for centralizing, enriching, and viewing log data. This past week, I built a proof of concept for management and they loved it. However, many folks wanted to know how we could send out emails from the logging system. I pointed them at the &lt;a href=&#34;https://www.elastic.co/guide/en/logstash/current/plugins-outputs-email.html&#34; target=&#34;_blank&#34;&gt;Logstash email output plugin&lt;/a&gt;, but they weren’t convinced. They wanted to see some flexible routing capabilities that could be leveraged in any config file, for any log type. Thankfully, this was pretty easy to accomplish.&lt;/p&gt;
&lt;p&gt;Below I present a simple tag and filed based config for email notifications.&lt;/p&gt;
&lt;p&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-plaintext&#34; data-lang=&#34;plaintext&#34;&gt;# This config is designed to flexibly send out email notifications
# It *requires* certain fields to work
# Create a tag &amp;#34;SendEmailAlert&amp;#34;
# Required field emailAlert_to - the email address to send to
# Required field emailAlert_subject - The subject of the email
# Required field emailAlert_body - The body, defaults to %message
#
output {
if &amp;#34;SendEmailAlert&amp;#34; in [tags] {
email {
address =&amp;gt; &amp;#34;smtp.XXXXX.org&amp;#34;
username =&amp;gt; &amp;#34;XXXXX&amp;#34;
password =&amp;gt; &amp;#34;XXXXX&amp;#34;
via =&amp;gt; &amp;#34;smtp&amp;#34;
from =&amp;gt; &amp;#34;logstash.alert@XXXXXX.com&amp;#34;
to =&amp;gt; &amp;#34;%{emailAlert_to}&amp;#34;
subject =&amp;gt; &amp;#34;%{emailAlert_subject}&amp;#34;
body =&amp;gt; &amp;#34;%{emailAlert_body}&amp;#34;
}
}
} &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
As the comments indicate, all you need to do is tag a message with “SendEmailAlert” and add the appropriate fields and voila: flexible email notifications. In order to use it, a simple mutate is all that is needed.&lt;/p&gt;
&lt;p&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-plaintext&#34; data-lang=&#34;plaintext&#34;&gt;mutate {
add_tag =&amp;gt; [&amp;#34;SendEmailAlert&amp;#34;]
add_field =&amp;gt; {
&amp;#34;emailAlert_to&amp;#34; =&amp;gt; &amp;#34;user@XXXXX.com&amp;#34;
&amp;#34;emailAlert_subject&amp;#34; =&amp;gt; &amp;#34;Test Alert&amp;#34;
&amp;#34;emailAlert_body&amp;#34; =&amp;gt; &amp;#34;%{message}&amp;#34;
}
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
We could easily extend it further, but this has been fine for our POC thus far. We have also implemented similar notifications for Hipchat and PagerDuty.&lt;/p&gt;</description></item><item><title>What to do with an old Christmas tree farm?</title><link>https://development--vigilant-hodgkin-644b1e.netlify.com/post/what-to-do-with-a-christmas-tree-farm/</link><pubDate>Wed, 21 Oct 2015 16:42:36 -0400</pubDate><guid>https://development--vigilant-hodgkin-644b1e.netlify.com/post/what-to-do-with-a-christmas-tree-farm/</guid><description>
&lt;figure&gt;
&lt;a data-fancybox=&#34;&#34; href=&#34;images/christmas-trees-dense.jpg&#34; data-caption=&#34;It&amp;rsquo;s dark in there&amp;hellip;&#34;&gt;
&lt;img src=&#34;images/christmas-trees-dense.jpg&#34; alt=&#34;&#34; width=&#34;100&#34; &gt;&lt;/a&gt;
&lt;figcaption&gt;
It&amp;rsquo;s dark in there&amp;hellip;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;As the missus and I sit and talk about our new homestead and the directions that we are thinking about taking it, one problem keeps coming up: the old Christmas tree stand. You see, dear reader, our homestead used to be a Christmas tree farm back in the 80s. Unfortunatly, the previous owners decided not to keep the farm going and let the trees grow up. On the surface this may not appear to be an issue, that is, until you consider planting densities.&lt;/p&gt;
&lt;p&gt;Normal pine tree stands are planted at about 400-500 trees per acre. This allows for them to grow straight and healthy. Stands like that can be used for lumber and wood pulp and can net a good amount of money when they mature. However, Christmas tree farms are planted at 1,000 – 1,500 trees per acre. This is no problem if trees are kept small and regularly trimmed… Unfortunatly, that’s no the case here. Our stand is dense. It’s dark in there. This level of density leads to really unhealthy trees, and from the research I’ve been doing, it appears that there is not much that can be done.&lt;/p&gt;
&lt;p&gt;It seems that our options are limited to the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Leave it be – The trees will keep growing, and will start dying off. This will likely result in a bad situation for both domestic and wild animals, not to mention the lack of productivity of that patch of the homestead.&lt;/li&gt;
&lt;li&gt;Selective thinning – This would involve either getting a lumber/pulp company in to selectively harvest every other row of trees. This may not be an option because of the density. You can’t really get equipment in there. That means it might just be me with a chainsaw.&lt;/li&gt;
&lt;li&gt;Harvest the whole thing – This is the option that I really don’t like, but seems to be the best all around. It would net some cash from the sale of the wood and would allow us to plant a new, healthy, forest and silvopasture using permaculture principles. The main problem here would be handling the stumps and the time it would take for a new forest to establish itself.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In case anyone is interested, I’ve also compiled a few links on the topic.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Contending with Overgrown Christmas Trees – &lt;a href=&#34;http://blogs.oregonstate.edu/treetopics/2014/03/10/contending-overgrown-christmas-trees/&#34; target=&#34;_blank&#34;&gt;http://blogs.oregonstate.edu/treetopics/2014/03/10/contending-overgrown-christmas-trees/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Reddit Discussion on the topic – &lt;a href=&#34;https://www.reddit.com/r/forestry/comments/3gsdi3/harvesting_a_30_yearold_abandoned_christmas_tree/&#34; target=&#34;_blank&#34;&gt;https://www.reddit.com/r/forestry/comments/3gsdi3/harvesting_a_30_yearold_abandoned_christmas_tree/&lt;/a&gt;
&lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And here is a are some additional photos:&lt;/p&gt;
&lt;figure&gt;
&lt;a data-fancybox=&#34;&#34; href=&#34;images/christmas-trees-1.jpg&#34; data-caption=&#34;The stand is pretty tall&#34;&gt;
&lt;img src=&#34;images/christmas-trees-1.jpg&#34; alt=&#34;&#34; width=&#34;100&#34; &gt;&lt;/a&gt;
&lt;figcaption&gt;
The stand is pretty tall
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure&gt;
&lt;a data-fancybox=&#34;&#34; href=&#34;images/christmas-trees-2.jpg&#34; data-caption=&#34;Unhealthy&#34;&gt;
&lt;img src=&#34;images/christmas-trees-2.jpg&#34; alt=&#34;&#34; width=&#34;100&#34; &gt;&lt;/a&gt;
&lt;figcaption&gt;
Unhealthy
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure&gt;
&lt;a data-fancybox=&#34;&#34; href=&#34;images/christmas-trees-3.jpg&#34; data-caption=&#34;Unhealthy&#34;&gt;
&lt;img src=&#34;images/christmas-trees-3.jpg&#34; alt=&#34;&#34; width=&#34;100&#34; &gt;&lt;/a&gt;
&lt;figcaption&gt;
Unhealthy
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure&gt;
&lt;a data-fancybox=&#34;&#34; href=&#34;images/christmas-trees-dense.jpg&#34; data-caption=&#34;It&amp;rsquo;s dark in there&amp;hellip;&#34;&gt;
&lt;img src=&#34;images/christmas-trees-dense.jpg&#34; alt=&#34;&#34; width=&#34;100&#34; &gt;&lt;/a&gt;
&lt;figcaption&gt;
It&amp;rsquo;s dark in there&amp;hellip;
&lt;/figcaption&gt;
&lt;/figure&gt;</description></item><item><title>Finding a Home(stead)</title><link>https://development--vigilant-hodgkin-644b1e.netlify.com/post/finding-a-homestead/</link><pubDate>Sun, 12 Jul 2015 16:38:51 -0400</pubDate><guid>https://development--vigilant-hodgkin-644b1e.netlify.com/post/finding-a-homestead/</guid><description>
&lt;p&gt;Finding a place to call your own is quite a step in life. To me, it means you’re ready to settle in, put down some roots, and potentially create a legacy. After discussing various options with my wife, we decided now would be a good time to consider buying a home. I thought would document the reasons for a the move for posterity’s sake.&lt;/p&gt;
&lt;h2 id=&#34;investment&#34;&gt;Investment&lt;/h2&gt;
&lt;p&gt;The thing that started us down this path was a simple realization: we pay a lot out in rent, and it would be really nice to “invest” that money instead. My wife and I currently live in a nice townhouse, in a good planned development near Princeton, NJ. Though we live within our means, we still pay out quite a bit for rent. For that, we get three bedrooms (really one bedroom and two offices), access to a pool, and lots of restrictions (including a no-charcoal-grill policy).&lt;/p&gt;
&lt;p&gt;At the time, it made sense for us to move in to the development and not worry about anything. We could concentrate on paying off our debts, saving money, and helping my mother sell her old home in Queens, NY. Now that we’re done with all of that, though, it’s time to move on. Although many don’t consider a home an investment, putting equity in our pocket is certainly better than having it leave the family entirely.&lt;/p&gt;
&lt;h2 id=&#34;healthy-self-sufficient-lifestyle&#34;&gt;Healthy, Self-Sufficient Lifestyle&lt;/h2&gt;
&lt;p&gt;My wife and I have recently started to adopt a “healthy lifestyle”. For us, that means eating more natural foods with fewer carbs and processed junk. The first thing we realized after making these changes was that the cost of high-quality food adds up quick. Then next thing we noticed was that we really did feel a lot better, so the premium was worth it.&lt;/p&gt;
&lt;p&gt;Aside from food, we spend a lot of time commuting. Currently, my wife is commuting two hours, one way, by public transit, daily. This just isn’t healthy for so many reasons. I am in a better position, commuting a little over an hour one-way, by car, twice a day, but this takes quite a toll on us in many ways.&lt;/p&gt;
&lt;p&gt;We don’t eat until 8:30-9:00 PM most nights. When you go to bed at 10 PM, this is a really bad thing. Second, we don’t have time for each other. Having an hour, two if you’re lucky, to catch up with your significant other is a terrible way to live a life. I love my wife, it’s why I married her! Finally, we don’t have time for our hobbies. My wife is a bit luckier in this regard as her hobby, knitting, is portable. I have taken to listening to podcasts on my commute as no one wants to listen to a table saw going at 9:30PM.&lt;/p&gt;
&lt;h2 id=&#34;a-base-of-operations-with-a-sense-of-permanence&#34;&gt;A Base of Operations with a Sense of Permanence&lt;/h2&gt;
&lt;p&gt;Living in a development has taught me two things: I love having someone else mow the lawn / shovel snow, and I hate not having a back yard to do projects in. Even with two offices, there’s no place for a shop, garden, or sheep. Yes, you read that right: sheep.&lt;/p&gt;
&lt;p&gt;My wife is a knitter and she loves her hobby. She wants sheep, and I want her to be happy, so we need a place for sheep. My hobby is woodworking and building things. I’ve always been limited to a corner of a garage or basement, when I’ve been lucky enough to have a place at all. So room for a shop is a must for me. Finally there’s the garden. We had one in the past, and it was a wonderful experience. Now that we are focusing on healthier eating, what better way to get the best produce at the best prices than to grow it ourselves?&lt;/p&gt;
&lt;p&gt;So on to the home search!&lt;/p&gt;</description></item><item><title>Searching for Superfish using PowerShell</title><link>https://development--vigilant-hodgkin-644b1e.netlify.com/post/searching-for-superfish/</link><pubDate>Thu, 19 Feb 2015 16:34:26 -0400</pubDate><guid>https://development--vigilant-hodgkin-644b1e.netlify.com/post/searching-for-superfish/</guid><description>&lt;p&gt;Lenovo installed a piece of software that could arguably be called malware or spyware. Superfish, as &lt;a href=&#34;http://arstechnica.com/security/2015/02/lenovo-pcs-ship-with-man-in-the-middle-adware-that-breaks-https-connections/&#34; target=&#34;_blank&#34;&gt;this article&lt;/a&gt; indicates, installs a self-signed root certificate that is authoritative for everything. I wanted to be sure that this issue wasn’t present on any of our Lenovo systems, so I turned to PowerShell to help.&lt;/p&gt;
&lt;p&gt;I found a copy of the certificate on Robert David Graham’s github &lt;a href=&#34;https://github.com/robertdavidgraham/pemcrack/blob/master/test.pem&#34; target=&#34;_blank&#34;&gt;here&lt;/a&gt;. I pulled the thumbprint from the cert which appears to be: ‎c864484869d41d2b0d32319c5a62f9315aaf2cbd&lt;/p&gt;
&lt;p&gt;Now, some simple PowerShell code will let you run through your local certificate store and see if you have it installed.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-Powershell&#34; data-lang=&#34;Powershell&#34;&gt;Get-ChildItem -Recurse cert&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;:&lt;/span&gt;\LocalMachine\ |where {$_.Thumbprint &lt;span style=&#34;color:#f92672&#34;&gt;-eq&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;c864484869d41d2b0d32319c5a62f9315aaf2cbd&amp;#34;&lt;/span&gt;}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;You could just as easily replace the get-childitem with “Remove-Item -Path cert:\LocalMachine\root\c864484869d41d2b0d32319c5a62f9315aaf2cbd”, but I wanted to make sure the key wasn’t installed somewhere else.&lt;/p&gt;
&lt;p&gt;Now, to take it a step further, I use the AD commandlets and some more simple PowerShell to search all my systems for it.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-Powershell&#34; data-lang=&#34;Powershell&#34;&gt;Import-Module ActiveDirectory
$Cred = Get-Credential
$Computers = Get-ADComputer -Filter {enabled &lt;span style=&#34;color:#f92672&#34;&gt;-eq&lt;/span&gt; $true} | select Name
&lt;span style=&#34;color:#66d9ef&#34;&gt;foreach&lt;/span&gt; ($Computer &lt;span style=&#34;color:#66d9ef&#34;&gt;in&lt;/span&gt; $Computers) {
&lt;span style=&#34;color:#66d9ef&#34;&gt;try&lt;/span&gt;{
&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt;(test-connection -Count 1 -ComputerName $Computer.Name){
write-output (invoke-command -ComputerName $Computer.Name -Credential $Cred -ScriptBlock {Get-ChildItem -Recurse cert&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;:&lt;/span&gt;\LocalMachine\ |where {$_.Thumbprint &lt;span style=&#34;color:#f92672&#34;&gt;-eq&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;‎c864484869d41d2b0d32319c5a62f9315aaf2cbd&amp;#34;&lt;/span&gt;}})
}
}&lt;span style=&#34;color:#66d9ef&#34;&gt;catch&lt;/span&gt;{
Write-Error (&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;There was an issue connecting to computer $Computer : &amp;#34;&lt;/span&gt; + $_.Exception)
}
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Is it perfect? No. But it gets the job done in relatively short order.&lt;/p&gt;</description></item><item><title>A Hundred Domains and SHA-1 Depreciation</title><link>https://development--vigilant-hodgkin-644b1e.netlify.com/post/hundred-domains-sha1-deprication/</link><pubDate>Wed, 17 Sep 2014 16:27:17 -0400</pubDate><guid>https://development--vigilant-hodgkin-644b1e.netlify.com/post/hundred-domains-sha1-deprication/</guid><description>&lt;p&gt;Apparently I’ve been living under a rock for a while, because I didn’t know that SHA-1 was being phased out in the immediate future. Thank you, GoDaddy, for notifying me with a month and change to spare. As it turns out, Google will no longer be trusting certain SHA-1 signed SSL certificates with the release of Chrome 39, which is set for November. For details, see the following links.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://blog.chromium.org/2014/09/gradually-sunsetting-sha-1.html&#34; target=&#34;_blank&#34;&gt;Gradually Sunsetting SHA-1&lt;/a&gt; (Google)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://blogs.technet.com/b/pki/archive/2013/11/12/sha1-deprecation-policy.aspx&#34; target=&#34;_blank&#34;&gt;SHA1 Deprecation Policy&lt;/a&gt; (Microsoft)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://blog.mozilla.org/security/2014/09/08/phasing-out-certificates-with-1024-bit-rsa-keys/&#34; target=&#34;_blank&#34;&gt;Phasing out Certificates with 1024-bit RSA Keys&lt;/a&gt; (Mozilla)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Due to the fact that our clients often purchase their own SSL certificates, we have no internal records to check what algorithm was used to sign the certificates in use. So now we get to audit slightly over 100 domains to check and see what signature algorithm is in use. We could browse to each domain manually and take a look at their certificate but that would just take way too long. There were some web based tools around that could do it, but they also only worked on one site at a time.&lt;/p&gt;
&lt;p&gt;So, instead, I looked to PowerShell to see what could be done… Unfortunately, there was no native cmdlet to do anything like this! I did find a module that had a lot of great PKI-related functionality, the &lt;a href=&#34;https://pspki.codeplex.com/wikipage?title=Test-WebServerSSL&#34; target=&#34;_blank&#34;&gt;Public Key Infrastructure PowerShell&lt;/a&gt; module, but it, too, didn’t have the much-needed signature algorithm. However, it did provide a very robust base on which to build. Below is the solution I came up with.&lt;/p&gt;
&lt;p&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-Powershell&#34; data-lang=&#34;Powershell&#34;&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt; get-SSLSigningAlgorithm {
[&lt;span style=&#34;color:#66d9ef&#34;&gt;CmdletBinding&lt;/span&gt;()]
&lt;span style=&#34;color:#66d9ef&#34;&gt;param&lt;/span&gt;(
[&lt;span style=&#34;color:#66d9ef&#34;&gt;Parameter&lt;/span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;Mandatory&lt;/span&gt; = $true, &lt;span style=&#34;color:#66d9ef&#34;&gt;ValueFromPipeline&lt;/span&gt; = $true, &lt;span style=&#34;color:#66d9ef&#34;&gt;Position&lt;/span&gt; = 0)]
&lt;span style=&#34;color:#66d9ef&#34;&gt;[string]&lt;/span&gt;$URL,
[&lt;span style=&#34;color:#66d9ef&#34;&gt;Parameter&lt;/span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;Position&lt;/span&gt; = 1)]
[&lt;span style=&#34;color:#66d9ef&#34;&gt;ValidateRange&lt;/span&gt;(1,65535)]
&lt;span style=&#34;color:#66d9ef&#34;&gt;[int]&lt;/span&gt;$Port = 443,
[&lt;span style=&#34;color:#66d9ef&#34;&gt;Parameter&lt;/span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;Position&lt;/span&gt; = 2)]
&lt;span style=&#34;color:#66d9ef&#34;&gt;[Net.WebProxy]&lt;/span&gt;$Proxy,
[&lt;span style=&#34;color:#66d9ef&#34;&gt;Parameter&lt;/span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;Position&lt;/span&gt; = 3)]
&lt;span style=&#34;color:#66d9ef&#34;&gt;[int]&lt;/span&gt;$Timeout = 15000,
&lt;span style=&#34;color:#66d9ef&#34;&gt;[switch]&lt;/span&gt;$UseUserContext
)
$ConnectString = &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://$url`:$port&amp;#34;&lt;/span&gt;
$WebRequest = &lt;span style=&#34;color:#66d9ef&#34;&gt;[Net.WebRequest]&lt;/span&gt;::Create($ConnectString)
$WebRequest.Proxy = $Proxy
$WebRequest.Credentials = $null
$WebRequest.Timeout = $Timeout
$WebRequest.AllowAutoRedirect = $true
&lt;span style=&#34;color:#66d9ef&#34;&gt;[Net.ServicePointManager]&lt;/span&gt;::ServerCertificateValidationCallback = {$true}
&lt;span style=&#34;color:#66d9ef&#34;&gt;try&lt;/span&gt; {$Response = $WebRequest.GetResponse()}
&lt;span style=&#34;color:#66d9ef&#34;&gt;catch&lt;/span&gt; {}
&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; ($WebRequest.ServicePoint.Certificate &lt;span style=&#34;color:#f92672&#34;&gt;-ne&lt;/span&gt; $null) {
$Cert = &lt;span style=&#34;color:#66d9ef&#34;&gt;[Security.Cryptography.X509Certificates.X509Certificate2]&lt;/span&gt;$WebRequest.ServicePoint.Certificate.Handle
write-host $Cert.SignatureAlgorithm.FriendlyName;
} &lt;span style=&#34;color:#66d9ef&#34;&gt;else&lt;/span&gt; {
Write-Error $Error[0]
}
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
I’ll create a CSV of the domains that I need to check, and iterate over them in a for-each loop. That function will be used within the loop to check the sites, and the output will go into another CSV. We’ll use that to plan our re-keying.&lt;/p&gt;</description></item><item><title>Hide Disabled AD Accounts from the GAL using Powershell</title><link>https://development--vigilant-hodgkin-644b1e.netlify.com/post/hide-disabled-accounts-from-gal/</link><pubDate>Mon, 08 Sep 2014 16:23:48 -0400</pubDate><guid>https://development--vigilant-hodgkin-644b1e.netlify.com/post/hide-disabled-accounts-from-gal/</guid><description>&lt;p&gt;Our account decommission process involves disabling a user and moving them to a “Disabled Domain Accounts” OU. Well, it turns out that our previous admin never actually hid these mailboxes from the Global Address List (GAL), so many of our offshore partners have still been sending emails to them. I decided to start cleaning this up a bit today with the following:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-Powershell&#34; data-lang=&#34;Powershell&#34;&gt;Search-ADAccount -SearchBase &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;ou=Disabled Domain Accounts,dc=example,dc=local&amp;#34;&lt;/span&gt; -AccountDisabled -UsersOnly |Set-ADUser &lt;span style=&#34;color:#f92672&#34;&gt;-Replace&lt;/span&gt; @{msExchHideFromAddressLists=$true}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Another simple bit of PowerShell. The first command searches within the disabled account OU, and looks for disabled user accounts only. That output is piped into the second command which replaces the Exchange attribute that hides that account from the GAL.&lt;/p&gt;</description></item><item><title>How to clear all Workstation DNS caches from PowerShell</title><link>https://development--vigilant-hodgkin-644b1e.netlify.com/post/clear-dns-caches-powershell/</link><pubDate>Thu, 04 Sep 2014 16:20:07 -0400</pubDate><guid>https://development--vigilant-hodgkin-644b1e.netlify.com/post/clear-dns-caches-powershell/</guid><description>&lt;p&gt;I recently found myself in need of the ability to clear the DNS cache of all the laptops in my company. I found a very powerful and simple way to do so and thought I would share.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-powershell&#34;&gt;$c = Get-ADComputer -Filter {operatingsystem -notlike &amp;quot;*server*&amp;quot; }
Invoke-Command -cn $c.name -SCRIPT { ipconfig /flushdns }
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The first line queries Active Directory for all computers that are not servers. The second line simply invokes the normal windows command “ipconfig /flushdns” on all computers.&lt;/p&gt;
&lt;p&gt;This technique could be used to run any command across all workstations. Very powerful, and dangerous. Use at your own risk!&lt;/p&gt;</description></item><item><title>Expired Ad Users and Powershell</title><link>https://development--vigilant-hodgkin-644b1e.netlify.com/post/expired-ad-users-and-powershell/</link><pubDate>Mon, 02 Jun 2014 16:14:25 -0400</pubDate><guid>https://development--vigilant-hodgkin-644b1e.netlify.com/post/expired-ad-users-and-powershell/</guid><description>
&lt;h2 id=&#34;the-setup&#34;&gt;The Setup&lt;/h2&gt;
&lt;p&gt;I came into the office today and was bombarded with users not being able to access our TFS server. Now, before I get too far into this story, you have to understand: Technically I’m only responsible for client-facing infrastructure. However, over the years I’ve started wearing more of a devops hat because, apparently, I’m quite good at it. That means TFS is now largely my problem. Funny how that works, eh? Anyway, back to TFS.&lt;/p&gt;
&lt;p&gt;There were a few odd things about this issue: the oddest being that some of our off-shore developers were having no problems and others just couldn’t get in. The users with issues also couldn’t access the web portal. We (at least me) hadn’t made any changes to TFS in about a month, so I started to investigate.&lt;/p&gt;
&lt;p&gt;After a brief panic about SharePoint not being installed properly (Hey, I didn’t set up this system, I’m just its current keeper) I managed to trace the issue to network logons. Thank you Security log! Wait, what’s this? Turns out many, many users recently had their accounts marked as expired… Turns out we just implemented mandatory password rotation and guess what? Today – 90 days was the day that a large batch of offshore development accounts were created! So now I had to reset credentials on 35+ accounts, and I’ll be damned if I’m going to do that manually!&lt;/p&gt;
&lt;p&gt;Enter PowerShell!&lt;/p&gt;
&lt;h2 id=&#34;list-all-accounts-in-an-ou-that-have-expired-passwords&#34;&gt;List all accounts in an OU that have expired passwords&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-Powershell&#34; data-lang=&#34;Powershell&#34;&gt;Get-ADUser -searchbase &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;ou=contractors,dc=example,dc=com&amp;#34;&lt;/span&gt; -filter {Enabled &lt;span style=&#34;color:#f92672&#34;&gt;-eq&lt;/span&gt; $True} -Prop PasswordExpired | Where {$_.PasswordExpired } |select-object -property SAMAccountName,Name,PasswordExpired |format-table&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3 id=&#34;get-aduser&#34;&gt;Get-ADUser&lt;/h3&gt;
&lt;p&gt;SearchBase tells the Get-ADUser command to limit the search to a specific OU. This is very handy since I only have admin access to the one OU anyway. I filtered only for enabled accounts since trying to filter on PasswordExpired here didn’t work for some reason. I also explicitly called out the PasswordExpired property. This output was piped to the where-object commandlet.&lt;/p&gt;
&lt;h3 id=&#34;where-object&#34;&gt;Where-Object&lt;/h3&gt;
&lt;p&gt;This was where I filtered on the current object group. Since passwordExpired is a bool, no fanciness needed here. Then I piped the output to Select-Object.&lt;/p&gt;
&lt;h3 id=&#34;select-object&#34;&gt;Select-Object&lt;/h3&gt;
&lt;p&gt;I only cared about some specific data for the output. I used this to select the properties I needed. Finally, I piped to Format-Table to make everything display nicely.&lt;/p&gt;
&lt;h2 id=&#34;reset-passwords-for-accounts-in-an-ou-with-expired-passwords&#34;&gt;Reset passwords for accounts in an OU with expired passwords&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-Powershell&#34; data-lang=&#34;Powershell&#34;&gt;Get-ADUser -searchbase &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;ou=contractors,dc=example,dc=com&amp;#34;&lt;/span&gt; -filter {Enabled &lt;span style=&#34;color:#f92672&#34;&gt;-eq&lt;/span&gt; $True} -Prop PasswordExpired | Where {$_.PasswordExpired } | &lt;span style=&#34;color:#66d9ef&#34;&gt;ForEach&lt;/span&gt;-Object {Set-ADAccountPassword -Identity $_.SAMAccountName -NewPassword (ConvertTo-SecureString -AsPlainText &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Changeme1&amp;#34;&lt;/span&gt; -Force) }&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3 id=&#34;get-aduser-where-object&#34;&gt;Get-ADUser &amp;amp; Where-Object&lt;/h3&gt;
&lt;p&gt;These are the same as in the section above. We are filtering for enabled accounts in the contractors OU. This was piped to one of my favorite commands on earth: ForEach-Object.&lt;/p&gt;
&lt;h3 id=&#34;foreach-object&#34;&gt;ForEach-Object&lt;/h3&gt;
&lt;p&gt;This is, hands down, one of the handiest commands in PowerShell. Or any language for that matter. In this particular instance, we are running the Set-ADAccountPassword option for each object that we pass in. We pass the object’s SAMAccountName as the identity. We then create a new secure string password and pass that to -NewPassword. Then you hit enter and the magic runs!&lt;/p&gt;</description></item><item><title>Permaethos Pdc</title><link>https://development--vigilant-hodgkin-644b1e.netlify.com/post/permaethos-pdc/</link><pubDate>Fri, 23 May 2014 16:10:31 -0400</pubDate><guid>https://development--vigilant-hodgkin-644b1e.netlify.com/post/permaethos-pdc/</guid><description>&lt;p&gt;&lt;a href=&#34;https://www.linkedin.com/in/jackspirko&#34; target=&#34;_blank&#34;&gt;Jack Spirko&lt;/a&gt;, of &lt;a href=&#34;http://www.thesurvivalpodcast.com/&#34; target=&#34;_blank&#34;&gt;The Survival Podcast&lt;/a&gt; fame, is a visionary in many ways. His most recent endeavor is a little project called &lt;a href=&#34;http://permaethos.com/&#34; target=&#34;_blank&#34;&gt;PermaEthos&lt;/a&gt;, which aims to create a worldwide network of farms based on Permaculture Principles and Libertarian Ideals. As part of this effort, Jack and his team will be putting on an online PDC at the first PermaEthos farm. Needless to say, the wife and I are taking a PDC!&lt;/p&gt;
&lt;p&gt;For more information on the PermaEthos model, and how it came to be, listen to &lt;a href=&#34;http://www.thesurvivalpodcast.com/permaethos-model-3-0&#34; target=&#34;_blank&#34;&gt;Episode 1335 The PermaEthos Model 3.0&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;As part of this, I created a profile over at &lt;a href=&#34;http://permacultureglobal.com/&#34; target=&#34;_blank&#34;&gt;Permaculture Global&lt;/a&gt; to help track what I’ve done. If you’re on that network, feel free to connect with me!
&lt;a href=&#34;http://permacultureglobal.com/users/11929-derek-murawsky&#34; target=&#34;_blank&#34;&gt;Direct Link to Profile on Permaculture Global&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Learning to Cook</title><link>https://development--vigilant-hodgkin-644b1e.netlify.com/post/learning-to-cook/</link><pubDate>Mon, 18 Nov 2013 15:48:40 -0400</pubDate><guid>https://development--vigilant-hodgkin-644b1e.netlify.com/post/learning-to-cook/</guid><description>&lt;p&gt;A friend asked me at lunch today: “How do I learn to cook?” Since this question seems to come up a lot in my life, I figured I would write a post on the topic so I could easily answer the next person.&lt;/p&gt;
&lt;p&gt;I am passionate about cooking. I learned to cook from my mother at a very young age. She would always encourage me to help cut the vegetables, or stir the soup. Some of my earliest memories are of helping out in the kitchen (the others are of taking things, usually expensive, apart). For me, cooking developed naturally as I absorbed what my mother taught me. When I hit college, I started collecting cookbooks trying to improve on my skills in earnest. However, I quickly became disappointed in what the average cookbook had to teach.&lt;/p&gt;
&lt;p&gt;You see, the problem with most cookbooks is that they are just recipe collections. Sure, some good ones will give you a few brief pointers on how to knead bread, or broil a steak, but most are just a list of recipes that throw terms at the reader that they might not be familiar with. “Saute one cup of chicken, diced into one inch cubes”. What’s a saute? What’s a dice? What temperature? What pan? Do I cover it?&lt;/p&gt;
&lt;p&gt;Most folks think that they know the vocab, and throw the recipe together in a way that makes sense to them. This usually results in an edible meal that roughly approximates the recipe, so most people leave it at that. Presto! We’re cooking now! Never mind the fact that our ragu is now more of a vegetable stew and our bread is completely crumbly without any of that nice chewy texture we were looking for… Cooking not only throws an entirely new vocabulary at you, it also throws you a new grammar and syntax, which most books don’t even touch on. By following the average cookbook, we are merely parroting back what we are reading and failing to understand why we’re doing any of it. This isn’t how you learn.&lt;/p&gt;
&lt;p&gt;So how would I recommend you learn to cook? Learn the vocab, learn the grammar, and learn the syntax.&lt;/p&gt;
&lt;p&gt;The vocab is basic, and fairly easy. It’s not like you are becoming a doctor and need to learn latin. To take our earlier example, sauteing involves cooking meat in a pan with oil while braising uses some other water based liquid. Most folks at home braise meats unintentionally when they cover their frying pans. &lt;a href=&#34;http://www.amazon.com/gp/product/0470421355/&#34; target=&#34;_blank&#34;&gt;The Professional Chef&lt;/a&gt; and &lt;a href=&#34;http://www.amazon.com/gp/product/1579121659/&#34; target=&#34;_blank&#34;&gt;Jacques Pépin’s Complete Techniques&lt;/a&gt; do a great job of going over the vocabulary of cooking, while illustrating it with both recipes and pictures.&lt;/p&gt;
&lt;p&gt;Grammar is a bit more tricky. The rules are hinted at, and even discussed in a high level, in &lt;a href=&#34;http://www.amazon.com/gp/product/0470421355/&#34; target=&#34;_blank&#34;&gt;The Professional Chef&lt;/a&gt;. However, pick up a copy of &lt;a href=&#34;http://www.amazon.com/gp/product/1416571728/&#34; target=&#34;_blank&#34;&gt;Ratio: The Simple Codes Behind the Craft of Everyday Cooking&lt;/a&gt; and you will really get a feeling for the power of culinary grammar. For a full review of Ratio, &lt;a href=&#34;http://www.theendofthetunnel.org/2011/01/05/ratio-the-simple-codes-behind-the-craft-of-everyday-cooking/&#34; target=&#34;_blank&#34;&gt;see this article I wrote a while back&lt;/a&gt;. To summarize it, though, imagine knowing the base ratio for a cake and then being able to make any cake you can imagine. Then imagine changing the ratio of the exact same ingredients and coming out with a scone instead. This is the power of culinary ratios. They free you from recipes and let your imagination take flight.&lt;/p&gt;
&lt;p&gt;Finally come syntax, and this is one of the harder things to learn. Syntax, in the cooking world, is the fingerprint of a particular cuisine. More accurately, it is the flavorprint of a particular cuisine. What makes American BBQ unique when compared to, say, Vietnamese BBQ? If you look at the recipes, you will notice that it is all in the specific ingredients and flavoring agents that are available to each culture. Unfortunately though, no-one, to my knowledge, has written a good book on the flavor prints of the world. The only way to learn syntax is by reviewing recipe collections on specific cuisines, looking at the ingredients in ethnic markets, and analysing the flavors when you eat out at a restaurant that specializes in that type of cuisine. It may not be easy to learn syntax, but it can be fun and filling!&lt;/p&gt;
&lt;p&gt;Since this is an article on learning to cook, I want to share my favorite cooking show as well. &lt;a href=&#34;http://www.foodnetwork.com/good-eats/index.html&#34; target=&#34;_blank&#34;&gt;Good Eats&lt;/a&gt; is a fantastic show by the mad scientist of the culinary world, &lt;a href=&#34;http://altonbrown.com/&#34; target=&#34;_blank&#34;&gt;Alton Brown&lt;/a&gt;. It gives great examples of all of the above material and does so in a fascinating, highly entertaining way. Truth be told, Good Eats was one of the reasons I started looking in to the whys and wherefores of the cooking world. You can pick up the DVDs of the show on &lt;a href=&#34;http://www.amazon.com/s/?_encoding=UTF8&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;keywords=good%20eats&amp;amp;linkCode=ur2&amp;amp;qid=1384803970&amp;amp;rh=n%3A2625373011%2Cp_n_format_browse-bin%3A2650304011%2Ck%3Agood%20eats&amp;amp;rnid=2941120011&amp;amp;tag=theendofthetu-20&#34; target=&#34;_blank&#34;&gt;Amazon&lt;/a&gt;, and I’m sure you can find episodes streaming online if you look on the search engine of your choice.&lt;/p&gt;
&lt;p&gt;Was this article helpful? Did you find it interesting or disagree with it? Please post in the comments below!&lt;/p&gt;
&lt;p&gt;Edited to add: Turns out there are a few cheatsheets floating around on flavor profiles. &lt;a href=&#34;http://cookfearless.com/a-cheat-sheet-to-flavor-profiles/&#34; target=&#34;_blank&#34;&gt;Have a look&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Character</title><link>https://development--vigilant-hodgkin-644b1e.netlify.com/post/character/</link><pubDate>Tue, 13 Aug 2013 15:27:20 -0400</pubDate><guid>https://development--vigilant-hodgkin-644b1e.netlify.com/post/character/</guid><description>&lt;p&gt;When you look at dishonesty as a social disease, things get very interesting. I always believed that “The true test of a man’s character is what he does when no one is watching” (John Wooden), but perhaps there’s more to it than that. Character is also standing up for what you believe in the face of social pressure. Tricky double-edged sword, that is. However, it is worth careful consideration. This article gives some great food for thought along these lines.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.artofmanliness.com/2013/08/12/what-strengthens-and-weakens-our-integrity-part-iii-how-to-stop-the-spread-of-the-immorality-virus/&#34; target=&#34;_blank&#34;&gt;Art Of Manliness - What Strengthens and Weakens Our Integrity – Part III: How to Stop the Spread of the Immorality Virus&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Monitoring and Caching Dns</title><link>https://development--vigilant-hodgkin-644b1e.netlify.com/post/monitoring-and-caching-dns/</link><pubDate>Thu, 20 Jun 2013 15:18:48 -0400</pubDate><guid>https://development--vigilant-hodgkin-644b1e.netlify.com/post/monitoring-and-caching-dns/</guid><description>
&lt;figure&gt;
&lt;a data-fancybox=&#34;&#34; href=&#34;images/rabbit-hole-150.jpg&#34; &gt;
&lt;img src=&#34;images/rabbit-hole-150.jpg&#34; alt=&#34;&#34; &gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;p&gt;Had an interesting issue today. One of the production systems suddenly went dark, and we found out about it from the client. This is never a good way to start a Thursday. It turns out that the client was having DNS issues and the domain was no longer valid. Relatively simple fix, crisis averted…&lt;/p&gt;
&lt;p&gt;But why didn’t the monitoring system pick it up?&lt;/p&gt;
&lt;p&gt;We use &lt;a href=&#34;Dotcom-Monitor&#34; target=&#34;_blank&#34;&gt;Dotcom-Monitor&lt;/a&gt; to check each of our sites on a regular basis. The monitor actually logs in to each website to verify functionality. What in the DNS world could cause this issue in such a scenario? How about a caching nameserver? Turns out, to limit the stress on their nameserver, Dotcom Monitor set up a standard caching nameserver that keeps a record in cache until the record expires. So even though DNS was no longer working for this site, the monitor thought everything was A-OK.&lt;/p&gt;
&lt;p&gt;What can we do to fix this issue? Not much unfortunately. Dotcom Monitor will have to implement a change in their infrastructure which will likely increase the load on their DNS servers significantly. Since that’s not likely, it looks like I’ll have to build a service into our internal monitor (&lt;a href=&#34;http://www.zabbix.com/&#34; target=&#34;_blank&#34;&gt;Zabbix&lt;/a&gt; based) to check for the domain against the SOA for it.&lt;/p&gt;</description></item><item><title>Page Speed Score Wordpress</title><link>https://development--vigilant-hodgkin-644b1e.netlify.com/post/page-speed-score-wordpress/</link><pubDate>Wed, 12 Jun 2013 15:11:52 -0400</pubDate><guid>https://development--vigilant-hodgkin-644b1e.netlify.com/post/page-speed-score-wordpress/</guid><description>
&lt;figure&gt;
&lt;a data-fancybox=&#34;&#34; href=&#34;images/screenshot.jpg&#34; &gt;
&lt;img src=&#34;images/screenshot.jpg&#34; alt=&#34;&#34; width=&#34;250&#34; &gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;p&gt;After configuring W3 Total Cache and playing around with google’s free PageSpeed Insights tool, I was able to increase The End of the Tunnel’s score from 49 to 96! This is impressive to me because this site currently runs on the basic DreamHost shared environment plan. No dedicated servers, no fancy configurations, just good cache management. Fantastic!&lt;/p&gt;</description></item><item><title>Flush Dns Cache for Single Domain</title><link>https://development--vigilant-hodgkin-644b1e.netlify.com/post/flush-dns-cache-for-single-domain/</link><pubDate>Tue, 11 Jun 2013 15:05:15 -0400</pubDate><guid>https://development--vigilant-hodgkin-644b1e.netlify.com/post/flush-dns-cache-for-single-domain/</guid><description>&lt;p&gt;I was working on the site today and ran into an issue: Our caching DNS server (Windows 2008) was holding on to the old webserver’s IP. This wasn’t a problem for me locally as I used the old hosts file trick to point to the new server. However, this meant I couldn’t show other folks the site until either the cache was completely flushed or the record expired.&lt;/p&gt;
&lt;p&gt;A little googling later, and I found this little command from &lt;a href=&#34;ServerFault&#34; target=&#34;_blank&#34;&gt;ServerFault&lt;/a&gt;.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;dnscmd dnsserver.local /NodeDelete ..Cache whatever.com &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;/Tree&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;/f&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;
/tree Specifies to delete all of the child records.
/f Executes the command without asking &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; confirmation.&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This allows you to clear just a small portion of the cache, as you define it. Pretty handy!&lt;/p&gt;</description></item><item><title>Of Floors and Friends</title><link>https://development--vigilant-hodgkin-644b1e.netlify.com/post/of-floors-and-friends/</link><pubDate>Tue, 05 Jun 2012 14:59:57 -0400</pubDate><guid>https://development--vigilant-hodgkin-644b1e.netlify.com/post/of-floors-and-friends/</guid><description>&lt;p&gt;This past week, several of my friends and I went to the cabin to do some much needed renovations. I will be documenting these renovations over the next few posts and will link them here when finished.&lt;/p&gt;
&lt;figure&gt;
&lt;a data-fancybox=&#34;&#34; href=&#34;images/img_1217.jpg&#34; data-caption=&#34;Four of the five key players in this tale of triumph.&#34;&gt;
&lt;img src=&#34;images/img_1217.jpg&#34; alt=&#34;&#34; &gt;&lt;/a&gt;
&lt;figcaption&gt;
Four of the five key players in this tale of triumph.
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;Putting up a Storage Shed&lt;/li&gt;
&lt;li&gt;Living Room Demolition&lt;/li&gt;
&lt;li&gt;Jacking up the Cabin&lt;/li&gt;
&lt;li&gt;Foundation Work&lt;/li&gt;
&lt;li&gt;New Living Room floor&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Ratio Book Review</title><link>https://development--vigilant-hodgkin-644b1e.netlify.com/post/ratio-book-review/</link><pubDate>Wed, 05 Jan 2011 14:31:51 -0400</pubDate><guid>https://development--vigilant-hodgkin-644b1e.netlify.com/post/ratio-book-review/</guid><description>&lt;p&gt;Originally posted on the &lt;a href=&#34;http://zombiehunters.org/forum/viewtopic.php?f=11&amp;amp;t=74669&amp;amp;p=1638686#p1638686&#34; target=&#34;_blank&#34;&gt;Zombie Squad&lt;/a&gt; Forum on Wed Jan 05, 2011 1:02 am&lt;/p&gt;
&lt;figure&gt;
&lt;a data-fancybox=&#34;&#34; href=&#34;images/ratio-cover.jpg&#34; data-caption=&#34;Ratio: The Simple Codes Behind the Craft of Everyday Cooking, by Michael Ruhlman&#34;&gt;
&lt;img src=&#34;images/ratio-cover.jpg&#34; alt=&#34;Cover of Ratio book&#34; width=&#34;150&#34; &gt;&lt;/a&gt;
&lt;figcaption&gt;
Ratio: The Simple Codes Behind the Craft of Everyday Cooking, by Michael Ruhlman
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;I’ve been cooking for most of my life, even though my definition of cooking has changed considerably over the years. When I was young, cooking meant helping my mother in the kitchen with whatever she would let me do. It started out with holding a spoon here and there, to stirring the pots, to actually cutting up the veggies. Cooking was listening to what my mother told me to do, and following her instructions closely. As I grew, cooking became more complicated. I found cook books and cooking shows, which opened up an entirely new world! All of a sudden I had recipes to follow instead of just my mother’s words of wisdom. This evolution continued as I learned to “customize” recipes. Take a little from one recipe, a little from another, maybe change up some spices here and there… This led to some culinary triumphs, like the oddly delicious scrambled pancake, and many culinary failures; pancakes should never have tendrils. The evolution continued as I realized there were different techniques for cooking. I purchased the Culinary Institute of America’s &lt;a href=&#34;https://www.amazon.com/Professional-Chef-Culinary-Institute-America/dp/0470421355/&#34; target=&#34;_blank&#34;&gt;The Professional Chef&lt;/a&gt; and worked my way through bits and pieces of it to broaden my horizons and skill base. I watched shows like &lt;a href=&#34;http://www.altonbrown.com/&#34; target=&#34;_blank&#34;&gt;Alton Brown&lt;/a&gt;‘s &lt;a href=&#34;http://www.foodnetwork.com/good-eats/index.html&#34; target=&#34;_blank&#34;&gt;Good Eats&lt;/a&gt; and began learning how ingredients actually worked together. I started to see the patterns in recipes and come up with some of my own. But I was still basing my culinary work on existing recipes in one way or another.&lt;/p&gt;
&lt;p&gt;Then I came across a list of &lt;a href=&#34;http://online.wsj.com/article/SB10001424052748704107204575039311414125360.html?mod=WSJ_Opinion_TOPRightCarousel&#34; target=&#34;_blank&#34;&gt;Alton Brown’s favorite cook books&lt;/a&gt;. Some of the items on the list were familiar, the first one was my mother’s culinary bible &lt;a href=&#34;http://www.amazon.com/gp/product/0743246268&#34; target=&#34;_blank&#34;&gt;The Joy of Cooking&lt;/a&gt;. Others were just plain intriguing, like this book called Ratio. Math? In cooking? My inner engineer just had to know more…&lt;/p&gt;
&lt;p&gt;Eventually, Ratio was ordered, made its way into my mailbox, my book pile, and my hands. Let me start by saying that Ratio is not a cookbook in the classic sense: it does not contain a list of recipes. In fact, ratio has only a handful of recipes in the whole book. Ratio is, as its title suggests, about ratios. More specifically, it is about the fundamental ratios that exist in the world of cooking. Why is this important? Allow me to quote from the first paragraph of ratio. “When you know a culinary ratio, it’s not like knowing a single recipe, it’s instantly knowing a thousand.” Ratio is primordial culinary power, pure and simple.&lt;/p&gt;
&lt;p&gt;Ratio’s author, Michael Ruhlman gives each ratio in its own chapter, where he discusses some of the nuances of the ratio. In the bread section, for example, he details kneading, yeasts, and a few ways to expand on the basic ratio. Each chapter then has some example recipes using the ratio, and a few final notes. Every section of this unassuming little tome is packed with useful information. Even it’s cover is a useful chart of the continuum of dough, from bread to crepes. Ratio is a true eye-opener. Want to bake bread? Five parts flour to three parts water. Salt and yeast are encouraged, but optional. Five to three and you will have bread. All bread, of any kind starts with this simple ratio. Want pie dough? 3:2:1 flour, fat, water. Crepes? 1:1:.5 Liquid, Egg, Flour. Stocks? 3:2 Water, Bones. Mayonnaise, not the clunky, bland store-bought mayo, but deliciously creamy and flavorful mayonnaise? 20:1+1 Oil, liquid, yolk. Ratio is the culinary world at its simplest and most elegant.&lt;/p&gt;
&lt;p&gt;Ratio by itself won’t do the average person much good, I suppose. You have to have an appreciation for cooking and a desire to understand why it works the way it does. If you like your TV dinners luke-warn, Ratio is not for you. If, on the other hand, you want to learn the most fundamental parts of actual cooking, if you want to expand your horizons past simple recipes, if you want to grow as a cook and not just be a follower, Ratio may well be your path to enlightenment.&lt;/p&gt;</description></item><item><title>Review of the September 19th, 2009 Appleseed Shoot in Saratoga Springs, NY</title><link>https://development--vigilant-hodgkin-644b1e.netlify.com/post/review-of-appleseed-shoot-sept-19th/</link><pubDate>Mon, 21 Sep 2009 17:08:51 -0400</pubDate><guid>https://development--vigilant-hodgkin-644b1e.netlify.com/post/review-of-appleseed-shoot-sept-19th/</guid><description>&lt;p&gt;Originally posted on the &lt;a href=&#34;http://zombiehunters.org/forum/viewtopic.php?p=1079588&amp;amp;sid=2243713d58c9c16f7417a1e430359723#p1079588&#34; target=&#34;_blank&#34;&gt;Zombie Squad Forum&lt;/a&gt; on Mon Sep 21, 2009 3:39 pm&lt;/p&gt;
&lt;p&gt;“Shooters, Your 2 minute preparation period has begun!”&lt;/p&gt;
&lt;p&gt;The chill from the night is still in the air as I lay down on an old carpet remnant and examine my loaned Ruger &lt;sup&gt;10&lt;/sup&gt;&amp;frasl;&lt;sub&gt;22&lt;/sub&gt;. Chamber flag out, wrap the sling around my arm “hasty” and lie down… The sun shines at a shallow angle and warms me. It also creates some glare in the tech-100 sights. I focus on the target and dry fire a few times. Wait, this isn’t right. I remember the training from earlier: align the sites, create the site picture, control my breathing, focus on the front site, get into the shooters bubble, squeeze the trigger, and follow through… I run it all through my head. So much to internalize!&lt;/p&gt;
&lt;p&gt;“Shooters, your two minute preparation period has ended. Load!”&lt;/p&gt;
&lt;p&gt;Two minutes up already! I take the rotary magazine and insert it into the &lt;sup&gt;10&lt;/sup&gt;&amp;frasl;&lt;sub&gt;22&lt;/sub&gt;. I hear the soft click of it locking into place and I rack the bolt. Thoughts run around in my mind, I try to calm myself and get back into my natural point of aim and the shooter’s bubble… Shimmy to the left, shimmy to the right… my hand steadies as if by magic. Ah, there it is!&lt;/p&gt;
&lt;p&gt;The line boss gives the final command, “Fire!”, and the line erupts with dozens of little snaps of 22 and the occasional loud bang of a larger caliber. I turn the safety off and squeeze the trigger. My Ruger mews to life, sending it’s tiny .22lr down range at the target. I call the shot, low and to the left. The smell of gunpowder hangs in the air throughout the day…&lt;/p&gt;
&lt;p&gt;All totaled, we launched 716 rounds of ammunition down range over the course of two days. Two folks were awarded a rifleman patch that weekend. Though I was not one of them, my shooting improved significantly, going from a 120 to a 180. Using my own rifle, it will be even higher. I’ve learned what to practice, how to practice, why to practice. I want to become a Rifleman. I want to teach others. This is only the beginning. I think I just woke up.&lt;/p&gt;
&lt;p&gt;The morning commute to Appleseed
&lt;figure&gt;
&lt;a data-fancybox=&#34;&#34; href=&#34;images/enroute-to-shoot.jpg&#34; &gt;
&lt;img src=&#34;images/enroute-to-shoot.jpg&#34; alt=&#34;Beautiful hills of Saratoga, NY&#34; &gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Teaching the group
&lt;figure&gt;
&lt;a data-fancybox=&#34;&#34; href=&#34;images/teaching-the-group.jpg&#34; &gt;
&lt;img src=&#34;images/teaching-the-group.jpg&#34; alt=&#34;Group gathering on the line for instruction&#34; &gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Proper sitting position
&lt;figure&gt;
&lt;a data-fancybox=&#34;&#34; href=&#34;images/proper-sitting-position.jpg&#34; &gt;
&lt;img src=&#34;images/proper-sitting-position.jpg&#34; alt=&#34;Instructor demonstrates proper sitting position&#34; &gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Proper standing position
&lt;figure&gt;
&lt;a data-fancybox=&#34;&#34; href=&#34;images/proper-standing-position.jpg&#34; &gt;
&lt;img src=&#34;images/proper-standing-position.jpg&#34; alt=&#34;Instructor demonstrates proper standing position&#34; &gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Battle scars
&lt;figure&gt;
&lt;a data-fancybox=&#34;&#34; href=&#34;images/battle-scars.jpg&#34; &gt;
&lt;img src=&#34;images/battle-scars.jpg&#34; alt=&#34;Hot brass can cause battle scars&#34; &gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;And the sun shown down…
&lt;figure&gt;
&lt;a data-fancybox=&#34;&#34; href=&#34;images/the-sun-is-bright.jpg&#34; &gt;
&lt;img src=&#34;images/the-sun-is-bright.jpg&#34; alt=&#34;The sun was very bright&#34; &gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;If an &lt;a href=&#34;https://appleseedinfo.org/&#34; target=&#34;_blank&#34;&gt;Appleseed shoot&lt;/a&gt; comes around your area. Go. You won’t regret it. This group and these events get the official seal of awesomeness.&lt;/p&gt;</description></item><item><title>Wiggys Ftrss Review</title><link>https://development--vigilant-hodgkin-644b1e.netlify.com/post/wiggys-ftrss-review/</link><pubDate>Wed, 04 Feb 2009 15:33:20 -0400</pubDate><guid>https://development--vigilant-hodgkin-644b1e.netlify.com/post/wiggys-ftrss-review/</guid><description>
&lt;p&gt;Updates at the bottom of this post.&lt;/p&gt;
&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;http://www.wiggys.com/&#34; target=&#34;_blank&#34;&gt;Wiggy’s&lt;/a&gt; makes a line of top notch synthetic sleeping bags right here in the good old US of A. They carry a &lt;a href=&#34;https://www.wiggys.com/wiggys-guarantee/&#34; target=&#34;_blank&#34;&gt;lifetime warranty&lt;/a&gt;, keep their warranty even after machine washing, and don’t appear to loose their loft when compressed. All bags come with a compression sack and Lamilite pillow. A particularly nice feature is that you can combine two bags into the Flexible Temperature Range Sleep System, or FTRSS.&lt;/p&gt;
&lt;p&gt;Wiggy’s uses an insulation called &lt;a href=&#34;https://www.wiggys.com/why-lamilite&#34; target=&#34;_blank&#34;&gt;Lamilite&lt;/a&gt;. Lamilite is their proprietary blend of “a 5.5 denier continuous filament fiber which has been coated with a silicone finish”. &lt;a href=&#34;http://www.backpacking.net/sleeping.html#wiggy01&#34; target=&#34;_blank&#34;&gt;It has been reported&lt;/a&gt; by &lt;a href=&#34;http://www.freezedryguy.com/articles/wiggys.sleeping.bag.html#Anchor-MEMORANDUM-49575&#34; target=&#34;_blank&#34;&gt;many users&lt;/a&gt; to provide considerable warmth when wet, however it is heavier than some other synthetics available and doesn’t compress as well.&lt;/p&gt;
&lt;h2 id=&#34;overbag-https-www-wiggys-com-specials-ftrss-overbag-mummy-style-sleeping-bag&#34;&gt;&lt;a href=&#34;https://www.wiggys.com/specials/ftrss-overbag-mummy-style-sleeping-bag/&#34; target=&#34;_blank&#34;&gt;Overbag&lt;/a&gt;&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;The Overbag is a +35 degrees F rated mummy style bag. It is available in four sizes; 33 inches wide in the torso and 82 inches long (regular regular) (weight 2 lbs.), 36 inches wide and 82 inches long (regular wide body) (weight 2 lbs.), 33 inches wide and 92 inches long (long regular) (weight 2 lbs.), and 36 inches wide and 92 inches long (long wide body) (weight 3 lbs.). Please note the larger size for the Overbag, so it will fit comfortably over any of the other bags when the FTRSS is created. Also note that a larger roomier bag is necessary for warm weather use.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;figure&gt;
&lt;a data-fancybox=&#34;&#34; href=&#34;images/overbag-all-colors.jpg&#34; &gt;
&lt;img src=&#34;images/overbag-all-colors.jpg&#34; alt=&#34;All overbag color options&#34; &gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;p&gt;Price is $190 (Additional 20% discount as of 2/2/09)
Available in Black, Purple, Olive Drab, and Blue. Mine is Black.&lt;/p&gt;
&lt;h2 id=&#34;super-light-https-www-wiggys-com-specials-super-light-mummy-style-sleeping-bag&#34;&gt;&lt;a href=&#34;https://www.wiggys.com/specials/super-light-mummy-style-sleeping-bag/&#34; target=&#34;_blank&#34;&gt;Super Light&lt;/a&gt;&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;The Super Light is a 0 degree F rated mummy style bag. It is available in four sizes; 31 inches wide in the torso and 80 inches long (regular regular) (weight is 4 lbs.), 34 inches wide and 80 inches long (regular wide body) (weight is 4 lbs.), 31 inches wide and 90 inches long (long regular) (weight 4 lbs.), and 34 inches wide and 90 inches long (long wide body) (weight 5 lbs.).
When the Overbag is added to the Super Light the temperature rating becomes -40 degrees F. When both bags are combined you have the Super Light FTRSS.
The Super Lt. has proven to be our most popular bag, both with the Armed Forces and Civilian markets.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;figure&gt;
&lt;a data-fancybox=&#34;&#34; href=&#34;images/super-light-mummy.jpg&#34; &gt;
&lt;img src=&#34;images/super-light-mummy.jpg&#34; alt=&#34;All super-light core bag color options&#34; &gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;p&gt;Price is $218.00 (Additional 20% discount as of 2/2/09)
Available in Purple, Black, and Olive Drab. Mine is Olive Drab&lt;/p&gt;
&lt;h2 id=&#34;photos&#34;&gt;Photos&lt;/h2&gt;
&lt;p&gt;My core bag, a Wiggy’s Super Light. Laid out in all its wrinkled glory.
&lt;figure&gt;
&lt;a data-fancybox=&#34;&#34; href=&#34;images/wiggys-laid-out.jpg&#34; &gt;
&lt;img src=&#34;images/wiggys-laid-out.jpg&#34; alt=&#34;Wiggy&amp;#39;s main bag laid out&#34; &gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Wiggy’s. Made in the USA.
&lt;figure&gt;
&lt;a data-fancybox=&#34;&#34; href=&#34;images/wiggys-made-in-america.jpg&#34; &gt;
&lt;img src=&#34;images/wiggys-made-in-america.jpg&#34; alt=&#34;Wiggy&amp;#39;s made in america label&#34; &gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Overbag, over the core bag.
&lt;figure&gt;
&lt;a data-fancybox=&#34;&#34; href=&#34;images/overbag-over-core.jpg&#34; &gt;
&lt;img src=&#34;images/overbag-over-core.jpg&#34; alt=&#34;Overbag on top of main bag&#34; &gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;The two bags nested, but not attached.
&lt;figure&gt;
&lt;a data-fancybox=&#34;&#34; href=&#34;images/two-bags-nested.jpg&#34; &gt;
&lt;img src=&#34;images/two-bags-nested.jpg&#34; alt=&#34;Two bags nested into each-other&#34; &gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Showing the Overbag’s draft tube.
&lt;figure&gt;
&lt;a data-fancybox=&#34;&#34; href=&#34;images/overbag-draft-tube.jpg&#34; &gt;
&lt;img src=&#34;images/overbag-draft-tube.jpg&#34; alt=&#34;Draft tube inside overbag&#34; &gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Starting the zippering process. You can see how beefy the zippers are here.
&lt;figure&gt;
&lt;a data-fancybox=&#34;&#34; href=&#34;images/starting-the-zip.jpg&#34; &gt;
&lt;img src=&#34;images/starting-the-zip.jpg&#34; alt=&#34;Starting to zip the bags together&#34; &gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;The two bags are now joined and I’m trying to give a semblance of scale. That’s a LMF Spork in my hand.
&lt;figure&gt;
&lt;a data-fancybox=&#34;&#34; href=&#34;images/lmf-spork-for-scale.jpg&#34; &gt;
&lt;img src=&#34;images/lmf-spork-for-scale.jpg&#34; alt=&#34;LMF Spork inside bags for scale&#34; &gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;FTRSS Laid out. It’s Beefy.
&lt;figure&gt;
&lt;a data-fancybox=&#34;&#34; href=&#34;images/ftrss-laid-out.jpg&#34; &gt;
&lt;img src=&#34;images/ftrss-laid-out.jpg&#34; alt=&#34;The complete FTRSS laid out&#34; &gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;That’s me holding up the bag. I’m 6’6″ tall, 250 lbs, and about 2′ broad at the shoulders. The door behind me is a standard height door. I was trying to hold the bag off the floor and failing. These bags in Large/Wide are Huge!
&lt;figure&gt;
&lt;a data-fancybox=&#34;&#34; href=&#34;images/me-holding-bag.jpg&#34; &gt;
&lt;img src=&#34;images/me-holding-bag.jpg&#34; alt=&#34;Me holding the opened bag&#34; &gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;FTRSS all Packed up into one compression sack. No, it’s not very tiny.
&lt;figure&gt;
&lt;a data-fancybox=&#34;&#34; href=&#34;images/all-packed-up.jpg&#34; &gt;
&lt;img src=&#34;images/all-packed-up.jpg&#34; alt=&#34;The complete FTRSS packed up&#34; &gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 id=&#34;comments-on-the-system&#34;&gt;Comments on the system&lt;/h2&gt;
&lt;p&gt;What can I say? I like the system so far and recommend it to anyone who needs a single good bag or a great sleep system. Packing the FTRSS can be challenging as it’s actually two sleeping bags, but if you’re going cold weather camping this is a lifesaver. I’ve used the Overbag extensively during this past summer. It works as both a blanket and a sleeping bag with only one real downside: The extra zippers inside can get annoying. I’ve only had a chance to test the Super Light a few times and never down to 0. It is a very comfortable bag and definitely kept me extra toasty down to 20 which is the coldest I’ve gone out with it.
I’m going to test the FTRSS during the &lt;a href=&#34;http://zombiehunters.org/forum/viewtopic.php?f=38&amp;amp;t=37166&amp;amp;st=0&amp;amp;sk=t&amp;amp;sd=a&#34; target=&#34;_blank&#34;&gt;NNY09WCT&lt;/a&gt; this year in the Adirondacks. Last year I used a cheap zero bag inside another zero bag and still needed a blanket.&lt;/p&gt;
&lt;h2 id=&#34;test-results-added-feb-27-2009&#34;&gt;Test Results: (added Feb 27, 2009)&lt;/h2&gt;
&lt;p&gt;It didn’t get nearly as cold on this years winter trip, only around 0. I wish I had thought to take the FTRSS apart and just use the 0 bag for the trip. Ah well, maybe later this month… Here are my observations:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The Wiggy’s FTRSS did not cut it by itself in a Hennessey Hammock. The insulation got severely compacted underneath me and my backside started to get cold after 10 minutes. This was what I expected to happen, but it was worth doing and knowing. In order to use this setup to bug out, you’ll need the Hennessey &lt;a href=&#34;http://hennessyhammock.com/catalogue.html#Anchor-ACCESSORIES-49575&#34; target=&#34;_blank&#34;&gt;winter kit&lt;/a&gt; to add more insulation under you.&lt;/li&gt;
&lt;li&gt;Night one was spent on a bed made of two wool blankets and a &lt;a href=&#34;http://www.thermarest.com/product_detail.aspx?pID=43&amp;amp;cID=1&#34; target=&#34;_blank&#34;&gt;Z-lite&lt;/a&gt; from Thermarest. I was completely comfortable temperature wise with no cold spots. In fact, I was overheating a bit.&lt;/li&gt;
&lt;li&gt;Night two was spent on an &lt;a href=&#34;http://www.outdoorresearch.com/site/downmats.html&#34; target=&#34;_blank&#34;&gt;Exped DownMat&lt;/a&gt;&amp;hellip; I had the best night sleep of my camping career that night. The FTRSS was nice and toasty (again almost too warm) and the DownMat provided incredible comfort and insulation. Many thanks to WoodsWalker for suggesting this thing. It’s amazing.&lt;/li&gt;
&lt;li&gt;My one complaint on the system is how the hood draws closed. It takes a bit of messing around to get the hoods to draw closed properly and sometimes the overbag’s hood gets lost. Not a big deal once you get the hang of it, though. Always keep the overbag’s hood slightly drawn. Once you’re in for the night, pull the inner bag drawstring first, then finish closing the overbag up.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Finally, there’s one feature I forgot to mention on all Wiggy’s bags. If you need to get out of the bag in a hurry, just give the zipper a yank upwards. It unlocks the zipper and you can get out of your bag in less than two seconds. Takes a bit of practice but it works very well.&lt;/p&gt;</description></item></channel></rss>